1c idarə olunan forma seçimi. Bəzi seçimlərlə siyahı formasını necə açmaq olar? Konfiquratorda seçimi təyin etmək

Kod 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Qəbul edildi";
DirectoryList.Selection.Status.Set();

1C 8.2 üçün:
Əvvəlcədən müəyyən edilmiş seçimlə siyahı formasını açmağın bir neçə yolu var. Gəlin onlara ardıcıllıqla baxaq:

1. Birinci üsul ondan ibarətdir ki, formanı açarkən Seçim forması parametrini təyin edə və bu parametrlə siyahı formasını aça bilərsiniz. Seçim parametri strukturu təmsil edir. Elementlərin adları seçimin aparıldığı sahələrin adlarına uyğundur və dəyərlər seçim dəyərlərini ehtiva edir. Bu, dinamik siyahı idarə olunan forma genişləndirmə variantıdır. Yəni, o, əsas atributu Dinamik Siyahı tipli atribut olan formalar üçün mövcuddur, məsələn, siyahı formaları və seçim formaları.

Formanı açarkən göstərilən sahəyə əsasən seçim ediləcək.
Code 1C v 8.2 UP // Məsələn, aşağıdakı nümunədə 333-ə bərabər olan Nömrə sahəsi ilə hesab-fakturaların siyahısı açılır.
Seçim Dəyəri = Yeni Struktur("Nömrə", "333");
SelectionParameters = Yeni Struktur ("Seçim", SelectionValue);

OpenForm("Sənəd. Qəbz Faturası. Siyahı Forması", Seçim Seçimləri);

// Məsələn, aşağıdakı nümunə fakturaların siyahısını açır
// Podratçı tərəfindən “ASC Buynuzlar və Dırnaqlar” sahəsinə bərabər seçilməklə.
Seçim Dəyəri = Yeni Struktur (“Qarşı tərəf”, “ASC Buynuzlar və Dırnaqlar”);
SelectionParameters = Yeni Struktur ("Seçim", SelectionValue);
OpenForm("Sənəd. Qəbz Faturası. Siyahı Forması", Seçim Seçimləri);

2. Siyahı formasını parametrlərsiz aça bilərsiniz:
Code 1C v 8.2 UE OpenForm("Sənəd. Qəbz Faktura. Siyahı Forması");

Və sonra, fakturaların siyahısı üçün formanın hadisə idarəedicisində CreatedOnServer zaman, formanın əsas atributu olan dinamik siyahıda seçim yaradan kodu yazın:
Kod 1C v 8.2 UP &OnServer

Seçim Elementi = List.Selection.Elements.Add(Type("DataComposition Seçim Elementi"));
SelectionElement.LeftValue = NewDataCompositionField("Nömrə");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Prosedurun Sonu

&Serverdə
OnServer yaradılarkən prosedur (Uğursuzluq, StandardProcessing)
Seçim Elementi = Siyahı.Seçim.Elementlər.Əlavə(Növ
(“DataCompositionSelectionElement”));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = Doğrudur;
SelectionElement.RightValue = 150000;
Prosedurun Sonu

Üstünlüklər bu üsul Bu Müqayisə Görünüşüdür seçim üçün birinci halda olduğu kimi təkcə Bərabər deyil, həm də Daha çox, Az və s.

Ancaq bu metodun da çox əhəmiyyətli bir çatışmazlığı var: bu seçim ilə forma həmişə açılacaqdır. Onu haradan çağırırdılarsa. Buna görə də bu forma əsas kimi təyin edilməməlidir. Və buna baxmayaraq, bu, əsasdırsa, seçimi quraşdırmadan əvvəl bu formanın haradan açıldığını bir növ təhlil etmək lazımdır. Məsələn, forma parametrlərinin təhlili.

3. Nəhayət, seçim şərti dinamik siyahı üçün məlumatları seçən xüsusi sorğuya yerləşdirilə bilər. Məsələn, elementlər siyahısında vurğulanan elementi ehtiva edən fakturaların siyahısını açmalıyıq.

Bunu etmək üçün, maddələrin siyahısı şəklində bir əmr və müvafiq düyməni yaradın Qəbul fakturaları.

Bu əmr üçün icra işləyicisini aşağıdakı kimi dolduraq:
Kod 1C v 8.2 UP &OnClient
Prosedur QəbzləriFaturalar (Əmr)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

Prosedurun Sonu

Bu işləyicidə biz fakturaların siyahısı üçün formanı alırıq və element siyahısındakı cari elementə keçidi FilterByProduct forma parametrinə keçirik və bu parametrlə formanı açırıq.

Daha sonra sənədlərin siyahısı üçün forma yaradacağıq: Qəbul faktura və onu açarkən formanın parametri kimi istifadə edəcəyimiz FilterBy Product forma atributunu yaradacağıq. İndi List formasının əsas atributunun xassələri palitrasını açaq. ArbitraryRequest bayrağını təyin edin və Siyahı parametrləri sətirində klikləyin Açıq.

Sorğu sahəsinə aşağıdakı sorğu mətnini daxil edin:
Kod 1C v 8.2 UP SEÇİM
Sənəd Qəbz Faktura nömrəsi,
Sənəd Qəbzi Faktura.Tarix
FROM
Document.ReceiptInvoice DocumentReceiptInvoice AS
HARADA
Sənəd Qəbzi Faktura.Məhsullar.Məhsul = &Məhsul

Sorğuda biz FilterBy Item faktura siyahısı forma parametrində olan element siyahısındakı cari sətirə keçid alacaq Maddə parametrindən istifadə edirik. Bunu etmək üçün OnOpen siyahısı forma hadisə idarəedicisində Məhsul sorğusu parametrinin dəyərini təyin etmək üçün kod yazacağıq:
Kod 1C v 8.2 UP
&OnClient
Açılış Proseduru (Uğursuzluq)

List.Parameters.SetParameterValue("Məhsul", FilterByProduct);

Prosedurun Sonu

Budur Siyahı.Seçimlər List atributu üçün dinamik siyahı sorğusu parametrlərinin siyahısıdır. Məhsul parametrinin dəyəri FilterByProduct forma parametrinin dəyərinə bərabər təyin edilir.

Nəticədə, maddələrin siyahısı şəklində Qəbul fakturaları düyməsini klikləməklə, biz yalnız vurğulanan maddələri ehtiva edən fakturaların siyahısını alacağıq. Bu an nomenklatura siyahısında.

Məlumat saytdan götürülüb

1C-də idarə olunan formalar üzrə seçim 8.3

Məqalədə 1C 8.3 idarə olunan formalarda seçimi quraşdırmaq variantları müzakirə olunacaq. Dinamik siyahı üçün seçim statik və ya dinamik olaraq təyin edilə bilər istifadəçi interfeysi və ya konfiqurator. Aşağıdakı bütün seçim variantlarını nəzərdən keçirəcəyik.

  • Konfiquratorda seçimi təyin etmək

İstifadəçi rejimində seçimin qurulması

Cədvəl və ya dəyərlər ağacından fərqli olaraq dinamik siyahı hər hansı siyahıları ehtiva edən formaları həyata keçirmək üçün daha uyğun bir həlldir, çünki Dinamik siyahı seçim, sahələrin qruplaşdırılması və çeşidlənməsi ilə işləmək üçün ən geniş alət çeşidini təqdim edir. Bu seçim istifadəçi rejimində və ya konfiquratorda işləyərkən təyin edilə bilər, prinsip eynidir.

Müəssisə rejimində seçimi qurmaq üçün "Siyahını fərdiləşdir" əmrinə zəng etməlisiniz.

Bir pəncərə açılacaq.


"Seçim" nişanı cari siyahıda olan sahələrin siyahısını təqdim edir. Filtrləyəcəyimiz siyahı sahələrini seçin. Bu, iki dəfə klikləmək və ya sürüklə və buraxma funksiyasından istifadə etməklə edilə bilər.


Müqayisə növünü və dəyərini təyin edirik, "Redaktəni bitir" düyməsini basın, seçim qurulur.


Siz müəssisə rejimində seçimi qurduğunuz zaman siyahı formasında avtomatik olaraq sürətli seçim sahələri yaradılır.


1C platformasının avtomatik olaraq sürətli seçim sahələri yaratması üçün konfiquratorda bir forma hazırlayarkən istifadəçi parametrləri qrupunu göstərməlisiniz.


Bu seçim yalnız dinamik siyahının çevik fərdiləşdirilməsinə imkan verən cari istifadəçi üçün saxlanacaq. Bununla belə, tapşırıq sistemin bütün istifadəçiləri üçün müəyyən bir siyahı üçün sabit seçim etməkdirsə, biz bunu yalnız konfiqurator vasitəsilə həll edə bilərik.

Konfiquratorda seçimi təyin etmək

Konfiquratorda işləyərək iki növ dinamik siyahı seçimini təyin edə bilərik - sabit və dinamik. Sabit seçim bir dəfə konfiqurasiya edilə bilər, sistemdəki hər hansı bir məlumatdan asılı olaraq dinamik və ya proqramatik təyin edilə bilər.

Sabit seçimin konfiquratorda qurulması prinsipi yuxarıda təsvir edilən istifadəçi rejimində qurulmasından fərqlənmir. Seçimi təyin etmək üçün dinamik siyahı parametrlərini açmalıyıq.


Bir pəncərə açılacaq.


Seçim istifadəçi rejimində olduğu kimi qurulur.

“İstifadəçi parametrlərinə daxil et” seçimi konfiquratordakı seçim dəstinin “Siyahını fərdiləşdir” menyu elementi vasitəsilə istifadəçi rejimində mövcud olub-olmamasını müəyyən edir.


Dinamik (proqram təminatı) seçimi

Çox vaxt, məsələn, seçim formasını açarkən, seçimlə idarə olunan formanı açmalı olduğumuz zaman seçimi proqramlı şəkildə təyin etməyə ehtiyac yaranır. Formaya parametr ötürülür və bu parametr əsasında seçim qurulur. Bunun ümumi nümunəsi kataloq elementlərinin sahibi tərəfindən seçilməsidir.

Metodlar

Hazırlanan konfiqurasiyada BSP “Əsas Funksionallıq” alt sistemi varsa, dinamik siyahıda proqram seçimi standart metoddan istifadə etməklə quraşdırıla bilər:

GeneralPurposeClientServer.SetDynamicListSelectionElement()

Bu metodun imzası:

Dinamik Siyahı Növ: DynamicList – Seçimi təyin etmək istədiyiniz siyahı.

Sahənin Adı Növ: Sətir – Seçimi təyin etmək istədiyiniz sahə.

RightValue Növ: İxtiyari – Seçim dəyəri (İstəyə görə. Defolt dəyər: Müəyyən edilməmiş. Qeyd: Əgər Undefined keçsəniz, dəyər dəyişdirilməyəcək).

Baxış müqayisəsi Növ: DataComposition Müqayisə Növü – Seçim Şərti.

Performans Növ: String – Məlumat kompozisiya elementinin təmsili (İstəyə görə. Defolt dəyər: Müəyyən edilməmişdir. Əgər qeyd olunarsa, yalnız göstərilən təsviri olan istifadə bayrağı çap olunur (heç bir dəyər çap olunmur). Təmizləmək üçün boş sətir ötürülməlidir ki, dəyər yenidən çap olunsun.)

İstifadəsi Növ: Boolean – Bu seçimi istifadə etmək üçün işarələyin (Könüllü. Defolt: Müəyyən edilməmiş).

Ekran rejimi Növ: ItemDisplayModeDataCompositionSettings – Bu seçim istifadəçiyə necə göstərilir. Mümkün dəyərlər:

  • Element Ekran ModuData Layout Parametrləri. Sürətli Giriş – Qrupda sürətli parametrlər siyahıdan yuxarı.
  • Element Ekran ModuData Layout Parametrləri Normal – Siyahı parametrlərində (Daha çox alt menyuda).
  • ElementDisplayModeDataCompositionSettings.Inaccessible – İstifadəçinin bu seçimi dəyişməsinin qarşısını alın.

IdentifierUserSettings Növ: String – Bu seçim üçün unikal identifikator (İstifadəçi parametrləri ilə əlaqə saxlamaq üçün istifadə olunur).

Seçim dəyərini silmək üçün standart metoddan istifadə etməlisiniz:

Ümumi MəqsədliClientServer. RemoveGroupElementsSelectionDynamicList()

Bu metodun imzası:

Dinamik Siyahı Növ: DynamicList – seçimi təyin etmək istədiyiniz forma atributu.

Sahənin Adı Növ: Sətir – tərtibat sahəsinin adı (qruplar üçün istifadə edilmir).

Performans Növ: String – Düzəldici sahənin təmsili.

Sistemdə BSP yoxdursa, DataComposition Field obyektindən istifadə etməklə seçimi müstəqil qurmaq olar.

Seçim Elementi = List.Selection.Elements.Add(Type("DataComposition Seçim Elementi")); Selection Element.LeftValue = NewDataCompositionField("Ad"); Seçim Elementi.Müqayisə Tipi = DataTərkibi Müqayisə Tipi.Equal; Seçim Element.DisplayMode = ElementDisplayModeDataCompositionSettings.QuickAccess; // Əlavə Seçim Elementi RightValue = "İvanov";

Bu seçim “Tam ad” = “İvanov” dəyərinin olduğu sətirləri seçəcəkdir.

Məntiqi “AND”, “OR”, “NOT” istifadə etmək üçün DataCompositionSelectionElementGroup məlumat növü nəzərdə tutulub.

Seçim Qrupu = List.Selection.Elements.Add(Növ ("Məlumat Kompozisiyasının Seçim Elementləri Qrupu")); SelectionGroup.GroupType = DataCompositionSelectionElementGroupType.GroupOR; Seçim Elementi = Seçim Qrupu. Elementlər. Əlavə et(Növ("Məlumat Kompozisiyasının Seçim Elementi")); Selection Element.LeftValue = NewDataCompositionField("Ad"); Seçim Elementi.Müqayisə Tipi = DataTərkibi Müqayisə Tipi.Equal; Selection Element.RightValue = "İvanov"; Seçim Elementi = Seçim Qrupu. Elementlər. Əlavə et(Növ("Məlumat Kompozisiyasının Seçim Elementi")); Selection Element.LeftValue = NewDataCompositionField("Ad"); Seçim Elementi.Müqayisə Tipi = DataTərkibi Müqayisə Tipi.Equal; SelectionElement.RightValue = "Petrov";

Bu seçim "Tam ad" = "İvanov" və ya "Petrov" dəyərinin olduğu sətirləri seçəcəkdir.

Dinamik siyahıda seçim dinamik siyahı sorğusunun mətnini dəyişdirməklə də həyata keçirilə bilər. Bu seçim dinamik siyahı "xüsusi sorğu" vasitəsilə hazırlandıqda işləyir.


Bunun üçün sorğu mətninə “HARADA DOĞRU” şərtini əlavə edin...


Göründüyü kimi, bu yanaşma kodun yazılması baxımından daha yığcamdır. Necə daha çətin şərtlər biz cədvəl hissəsində seçim qurmaq istəsək, Məlumat Kompozisiyasının Seçilməsi Elementi vasitəsilə seçimdən istifadə etməklə seçim nə qədər çətin olacaq. Bununla belə, sorğu mətninin dəyişdirilməsi nümunəsinin çatışmazlıqları var - bu tətbiq kod dəyişikliklərinə davamlı deyil. Məsələn, siz belə bir tətbiq etdiniz və unutmusunuz, lakin gələcəkdə WHERE (SİFARİŞ, QRUP) sonra hansısa operator əlavə edərək sorğu mətnini dəyişdirmək istəyirsinizsə, proqram kodunda aşağıdakıları ehtiva etdiyini xatırlamalısınız:

List.QueryText = List.QueryText + " And DirectoryUsers.Full Name V(""İvanov"",""Petrov"")";

Bu nəzərə alınmazsa, səhv olacaq, lakin bunun qarşısını almaq üçün onu başqa bir tətbiqə dəyişə bilərsiniz. Sorğu mətninə aşağıdakı şərti əlavə edirik:

HARADA (&Seçim Quraşdırılmamış və ya DirectoryUsers.Name IN (&İcazə VerilənAd))

List.Parameters.SetParameterValue("SelectionSet", Tam Adı.Quantity() > 0); List.Parameters.SetParameterValue("İcazə Verilən Tam Ad", Tam Ad);

Burada tam ad massivdir.

Gördüyünüz kimi, 10-a qarşı 2 kod sətri. Hansı metodun seçiləcəyi konkret tətbiq tapşırığından asılıdır.

Üçün 1s-də seçim ilə seçim formasını açın 8.2(müntəzəm formalar), bəzi hərəkətləri yerinə yetirməliyik. Əvvəlcə onu alacağıq. Bundan sonra seçimi təyin edəcəyik və onu proqramlı şəkildə açacağıq, burada bir kod nümunəsi var:

Bir neçə dəyəri olan 1C 8.2 giriş sahəsindəki formada seçim

Yuxarıdakı nümunədə baxdıq seçim formasında seçimi necə təyin etmək olar xüsusi dəyəri ilə. İndi bir neçə dəyəri əvəz etməli olduğunuz bir vəziyyətə baxaq, bu, məsələn, massiv və ya sorğu nəticəsindən yüklənməmiş ola bilər. Bu, 1c giriş sahəsində seçimdirçoxlu mənaları ilə.

Əvvəlcə seçim formasını alırıq, parametrlərdə "Element" (sahibi) keçirik, seçim rejimi bayrağını təyin edirik. Sonra dəyərlər siyahısı və massiv yaradırıq, qeyd edirik ki, siyahıda müqayisə növünü təyin edərkən seçim olaraq obyekt yalnız növü ilə mövcud ola bilər. SiyahıDəyərlər. Biz massivə elementlər əlavə edirik, sonra bu massivi sonradan seçimdə təyin etdiyimiz Dəyərlər Siyahısına yükləyirik. Həmçinin, bu seçimi istifadə etmək üçün bayrağı aktivləşdirməyi və Müqayisə Tipini təyin etməyi unutmayın.

1C 8.3-də formada daxiletmə sahəsində seçimin qurulması, Seçmənin başlanğıcı hadisəsi

İndi düşünək 1C 8.3-də idarə olunan formada giriş sahəsində seçim. Formada bizi maraqlandıran elementi tapaq, seçimi təyin edəcəyik, bizim vəziyyətimizdə bu "Təşkilat" sahəsidir. Biz “Seçimin Başlanğıc” hadisəsini tapırıq, böyüdücü şüşəyə vurun və özümüzü prosedurda tapırıq. Biz Seçim Məlumatı parametrini görürük, bu parametr ValueList tiplidir. Seçimi zəruri elementlərlə məhdudlaşdırmaq üçün Dəyərlər Siyahısını doldurmalıyıq. Biz elementləri yalnız serverdə seçə bilərik, ona görə də &OnServer kompilyasiya direktivi ilə prosedur yaradırıq. Bu prosedurda Seçim Məlumatını doldurun.

Kod 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Qəbul edildi";
DirectoryList.Selection.Status.Set();

1C 8.2 üçün:
Əvvəlcədən müəyyən edilmiş seçimlə siyahı formasını açmağın bir neçə yolu var. Gəlin onlara ardıcıllıqla baxaq:

1. Birinci üsul ondan ibarətdir ki, formanı açarkən Seçim forması parametrini təyin edə və bu parametrlə siyahı formasını aça bilərsiniz. Seçim parametri strukturu təmsil edir. Elementlərin adları seçimin aparıldığı sahələrin adlarına uyğundur və dəyərlər seçim dəyərlərini ehtiva edir. Bu, dinamik siyahı idarə olunan forma genişləndirmə variantıdır. Yəni, o, əsas atributu Dinamik Siyahı tipli atribut olan formalar üçün mövcuddur, məsələn, siyahı formaları və seçim formaları.

Formanı açarkən göstərilən sahəyə əsasən seçim ediləcək.
Code 1C v 8.2 UP // Məsələn, aşağıdakı nümunədə 333-ə bərabər olan Nömrə sahəsi ilə hesab-fakturaların siyahısı açılır.
Seçim Dəyəri = Yeni Struktur("Nömrə", "333");
SelectionParameters = Yeni Struktur ("Seçim", SelectionValue);

OpenForm("Sənəd. Qəbz Faturası. Siyahı Forması", Seçim Seçimləri);

// Məsələn, aşağıdakı nümunə fakturaların siyahısını açır
// Podratçı tərəfindən “ASC Buynuzlar və Dırnaqlar” sahəsinə bərabər seçilməklə.
Seçim Dəyəri = Yeni Struktur (“Qarşı tərəf”, “ASC Buynuzlar və Dırnaqlar”);
SelectionParameters = Yeni Struktur ("Seçim", SelectionValue);
OpenForm("Sənəd. Qəbz Faturası. Siyahı Forması", Seçim Seçimləri);

2. Siyahı formasını parametrlərsiz aça bilərsiniz:
Code 1C v 8.2 UE OpenForm("Sənəd. Qəbz Faktura. Siyahı Forması");

Və sonra, fakturaların siyahısı üçün formanın hadisə idarəedicisində CreatedOnServer zaman, formanın əsas atributu olan dinamik siyahıda seçim yaradan kodu yazın:
Kod 1C v 8.2 UP &OnServer

Seçim Elementi = List.Selection.Elements.Add(Type("DataComposition Seçim Elementi"));
SelectionElement.LeftValue = NewDataCompositionField("Nömrə");


SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Prosedurun Sonu

&Serverdə
OnServer yaradılarkən prosedur (Uğursuzluq, StandardProcessing)
Seçim Elementi = Siyahı.Seçim.Elementlər.Əlavə(Növ
(“DataCompositionSelectionElement”));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = Doğrudur;
SelectionElement.RightValue = 150000;
Prosedurun Sonu

Bu metodun üstünlükləri Müqayisə Görünüşüdür seçim üçün birinci halda olduğu kimi təkcə Bərabər deyil, həm də Daha çox, Az və s.

Ancaq bu metodun da çox əhəmiyyətli bir çatışmazlığı var: bu seçim ilə forma həmişə açılacaqdır. Onu haradan çağırırdılarsa. Buna görə də bu forma əsas kimi təyin edilməməlidir. Və buna baxmayaraq, bu, əsasdırsa, seçimi quraşdırmadan əvvəl bu formanın haradan açıldığını bir növ təhlil etmək lazımdır. Məsələn, forma parametrlərinin təhlili.

3. Nəhayət, seçim şərti dinamik siyahı üçün məlumatları seçən xüsusi sorğuya yerləşdirilə bilər. Məsələn, elementlər siyahısında vurğulanan elementi ehtiva edən fakturaların siyahısını açmalıyıq.

Bunu etmək üçün, maddələrin siyahısı şəklində bir əmr və müvafiq düyməni yaradın Qəbul fakturaları.

Bu əmr üçün icra işləyicisini aşağıdakı kimi dolduraq:
Kod 1C v 8.2 UP &OnClient
Prosedur QəbzləriFaturalar (Əmr)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

Prosedurun Sonu

Bu işləyicidə biz fakturaların siyahısı üçün formanı alırıq və element siyahısındakı cari elementə keçidi FilterByProduct forma parametrinə keçirik və bu parametrlə formanı açırıq.

Daha sonra sənədlərin siyahısı üçün forma yaradacağıq: Qəbul faktura və onu açarkən formanın parametri kimi istifadə edəcəyimiz FilterBy Product forma atributunu yaradacağıq. İndi List formasının əsas atributunun xassələri palitrasını açaq. ArbitraryRequest bayrağını təyin edin və Siyahı parametrləri sətirində klikləyin Açıq.

Sorğu sahəsinə aşağıdakı sorğu mətnini daxil edin:
Kod 1C v 8.2 UP SEÇİM
Sənəd Qəbz Faktura nömrəsi,
Sənəd Qəbzi Faktura.Tarix
FROM
Document.ReceiptInvoice DocumentReceiptInvoice AS
HARADA
Sənəd Qəbzi Faktura.Məhsullar.Məhsul = &Məhsul

Sorğuda biz FilterBy Item faktura siyahısı forma parametrində olan element siyahısındakı cari sətirə keçid alacaq Maddə parametrindən istifadə edirik. Bunu etmək üçün OnOpen siyahısı forma hadisə idarəedicisində Məhsul sorğusu parametrinin dəyərini təyin etmək üçün kod yazacağıq:
Kod 1C v 8.2 UP
&OnClient
Açılış Proseduru (Uğursuzluq)

List.Parameters.SetParameterValue("Məhsul", FilterByProduct);

Prosedurun Sonu

Budur Siyahı.Seçimlər List atributu üçün dinamik siyahı sorğusu parametrlərinin siyahısıdır. Məhsul parametrinin dəyəri FilterByProduct forma parametrinin dəyərinə bərabər təyin edilir.

Nəticədə, maddələr siyahısı formasında Qəbz fakturaları düyməsini klikləməklə, biz yalnız element siyahısında hazırda seçilmiş elementi ehtiva edən fakturaların siyahısını alacağıq.

Bəzi seçimlərlə siyahı formasını necə açmaq olar?

Əvvəlcədən müəyyən edilmiş seçimlə siyahı formasını açmağın bir neçə yolu var. Gəlin onlara ardıcıllıqla baxaq:

1. Birinci üsul ondan ibarətdir ki, formanı açarkən Seçim forması parametrini təyin edə, bu parametrlə siyahı formasını aça bilərsiniz. Seçim parametri strukturu təmsil edir. Elementlərin adları seçimin aparıldığı sahələrin adlarına uyğundur və dəyərlər seçim dəyərlərini ehtiva edir. Bu, dinamik siyahı idarə olunan forma genişləndirmə variantıdır. Yəni, əsas atributu tip atributu olan formalar üçün mövcuddur Dinamik siyahı siyahı formaları və seçim formaları kimi.

Formanı açarkən göstərilən sahəyə əsasən seçim ediləcək. Məsələn, aşağıdakı misalda 333-ə bərabər olan Nömrə sahəsinin seçimi ilə hesab-fakturaların siyahısı açılır.

Seçim Dəyəri = Yeni Struktur("Nömrə", "333");

SelectionParameters = Yeni Struktur ("Seçim", SelectionValue);

OpenForm("Sənəd. Qəbz Faturası. Siyahı Forması", Seçim Seçimləri);

2. Siyahı formasını parametrlərsiz aça bilərsiniz:

OpenForm("Document.Invoice.ListForm");

Və sonra, faktura siyahısı formasının hadisə işləyicisində OnServer yaradıldıqda formanın əsas atributu olan dinamik siyahıda seçim yaradan kodu yazın:

&Serverdə

OnServer yaradılarkən prosedur (Uğursuzluq, StandardProcessing)

Seçim Elementi = List.Selection.Elements.Add(Type("DataComposition Seçim Elementi"));

SelectionElement.LeftValue = NewDataCompositionField("Nömrə");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = Doğrudur;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

Prosedurun Sonu

Bu metodun üstünlükləri ondan ibarətdir ki, seçim üçün Müqayisə Növü birinci halda olduğu kimi təkcə Bərabər deyil, həm də Daha çox, Az və s.

Ancaq bu metodun da çox əhəmiyyətli bir çatışmazlığı var: bu seçim ilə forma həmişə açılacaqdır. Onu haradan çağırırdılarsa. Buna görə də bu forma əsas kimi təyin edilməməlidir. Və buna baxmayaraq, bu, əsasdırsa, seçimi quraşdırmadan əvvəl bu formanın haradan açıldığını bir növ təhlil etmək lazımdır. Məsələn, forma parametrlərinin təhlili.

3. Nəhayət, seçim şərti dinamik siyahı üçün məlumatları seçən xüsusi sorğuya yerləşdirilə bilər. Məsələn, elementlər siyahısında vurğulanan elementi ehtiva edən fakturaların siyahısını açmalıyıq.

Bunu etmək üçün elementlərin siyahısı şəklində bir əmr və müvafiq düyməni yaradın Qəbul fakturaları.

Bu əmr üçün icra işləyicisini aşağıdakı kimi dolduraq:

&OnClient

Prosedur QəbzləriFaturalar (Əmr)

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

Prosedurun Sonu

Bu işləyicidə biz fakturaların siyahısı üçün formanı alırıq və element siyahısındakı cari elementə keçidi FilterByProduct forma parametrinə keçirik və bu parametrlə formanı açırıq.

Sonra sənəd siyahısı formasını yaradacağıq Alış fakturası və onu açarkən forma parametri kimi istifadə edəcəyimiz FilterByProduct forma atributunu yaradın. İndi List formasının əsas atributunun xassələri palitrasını açaq. Bayrağı qoyaq CustomRequest və cərgədə Siyahı quraşdırma Aç klikləyin.

Sorğu sahəsinə aşağıdakı sorğu mətnini daxil edin:

SEÇİN

Sənəd Qəbz Faktura nömrəsi,

Sənəd Qəbzi Faktura.Tarix

FROM

Document.ReceiptInvoice DocumentReceiptInvoice AS

HARADA

Sənəd Qəbzi Faktura.Məhsullar.Məhsul = &Məhsul

Sorğuda biz FilterBy Item faktura siyahısı forma parametrində olan element siyahısındakı cari sətirə keçid alacaq Maddə parametrindən istifadə edirik. Bunu etmək üçün OnOpen siyahısı forma hadisə idarəedicisində Məhsul sorğusu parametrinin dəyərini təyin etmək üçün kod yazacağıq:

&OnClient

Açılış Proseduru (Uğursuzluq)

List.Parameters.SetParameterValue("Məhsul", FilterByProduct);

Prosedurun Sonu

Budur Siyahı.Seçimlər List atributu üçün dinamik siyahı sorğusu parametrlərinin siyahısıdır. Məhsul parametrinin dəyəri FilterByProduct forma parametrinin dəyərinə bərabər təyin edilir.

Nəticədə, bir düyməni basmaqla Qəbul fakturaları element siyahısı şəklində, biz yalnız element siyahısında hazırda seçilmiş elementi ehtiva edən fakturaların siyahısını alacağıq.

3-cü seçim üçün demo nümunəsi 1CITS/EXE/FAQ/OpenFormWithSelection.dt kataloqunda yerləşir. Nümunə 8.2.9.356 platforma versiyasında yerinə yetirilmişdir.




Üst