1s seçimi ilə siyahı formasını açın 8.2. Bəzi seçimlərlə siyahı formasını necə açmaq olar? Konfiquratorda seçimi təyin etmək

25.06.2023

etmək üçü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 istifadə bayrağını aktiv etməyi unutmayın bu seçim, və Müqayisə Görünüşünü təyin edin.

1C 8.3-də formada daxiletmə sahəsində seçimin qurulması, Seçimin Başlanması hadisəsi

İndi düşünək 1C 8.3-də idarə olunan formada giriş sahəsində seçim. Formada bizi maraqlandıran, seçimi təyin edəcəyimiz elementi tapaq, 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.

Proqramlı şəkildə formaları açın idarə olunan tətbiq 1C onları adi bir tətbiqdə açmaqdan əhəmiyyətli dərəcədə fərqlənir. Əvvəlcə köhnə üsula baxaq. Formanı qəbul etməkdən və sonra onu normal və ya modal rejimdə açmaqdan ibarətdir (modal rejimdə açıldıqda, forma proqramı bloklayır).

GetForm() . Açıq()

Bu formaların açılmasının ən yavaş üsuludur. Bununla belə, formanı açmadan əvvəl onu proqramlı şəkildə emal etməyə imkan verir. Kodu emal etmək üçün bir az dəyişdirməlisiniz:

Forma = GetForm( "Sənəd. Malların və xidmətlərin qəbulu. Sənəd forması") ;
//Burada forma ilə hərəkətləri yerinə yetiririk
forma. Open();

Nəzərə almaq lazımdır ki, forma alındıqda başqa hadisə proseduru icra olunacaq WhenCreatedOnServer.

İdarə olunan 1C proqramında formaları daha sürətli və daha rahat açmağa imkan verən digər üsullara baxaq. Xüsusi vəziyyətdən asılı olaraq müxtəlif üsullardan istifadə edilə bilər.

1. İdarə olunan proqramda obyekt formasını ona keçid varsa necə açmaq olar.

Bu vəziyyətdə hər şey son dərəcə sadədir.

RefLink = Kataloqlar. Nomenklatura. FindByCode("000000001" );
OpenValue(RefLink);

2. Seçim formasını necə açmaq və sonra seçilmiş dəyəri almaq.

Bunun üçün bir funksiya var EnterValue(). Funksiya 3 parametrə malikdir:

  • Seçilmiş dəyərin yazılacağı dəyişən;
  • Seçim pəncərəsində göstəriləcək bir işarə;
  • Seçilmiş dəyərlərin növlərinin təsviri. Bir neçə növ ola bilər, bu halda xüsusi dəyəri seçməzdən əvvəl sizdən növ seçməyiniz xahiş olunacaq.

Funksiyanın icrası nəticəsində müəyyən edilmiş tipli obyekt üçün standart seçim forması açılacaqdır.

Dəyişən dəyər;
Massiv = yeni Massiv;
Massiv. Əlavə et(Növ( "DirectoryLink.Nomenklatura") ) ;
Massiv. Əlavə et(Növ( "DirectoryLink. Qarşı tərəflər") ) ;

TypeDescription= new TypeDescription(Array) ;

Res = EnterValue(Dəyər, "İpucu" , TypeDescription);

Əvvəlki üsullar yalnız obyektlər üçün standart formaları (obyekt forması və ya seçim forması) açmağa imkan verirdi. Fərdi forma açmaq lazımdırsa, funksiyadan istifadə edə bilərsiniz OpenForm().

Bu funksiya kifayət qədər bir neçə parametrə malikdir. Onlardan bəzilərinə nəzər salaq:

  • Formanın adı— burada siz standart obyekt formalarından birini seçə bilərsiniz, məsələn, Seçim forması və ya Siyahı forması. Və ya tərtibatçılar tərəfindən yaradılmış xüsusi bir forma.
  • Seçimlər— onu formada olan formaya köçürməyə imkan verir strukturlar onu açmadan əvvəl bəzi parametrlər, bununla da çıxış məlumatlarını təyin etmək. Parametrlər müştəridən serverə ötürülə bilən istənilən məlumat ola bilər. Formanın açılması zamanı verilən parametrlər prosedurda işlənə bilər WhenCreatingOnServer() açılan formada.
  • Formanın açılması rejimi— 3 variantı var: müstəqil, bütün interfeysi bloklayın, sahib formasını bloklayın.

Gəlin funksiyanın necə istifadə olunduğuna baxaq OpenForm() müxtəlif vəziyyətlərdə.

3. Mövcud obyektin formasını necə açmaq olar

Hər formada bir əsas atribut var. Forma təfərrüatları siyahısında qalın hərflərlə vurğulanır və adətən çağırılır Obyekt arayış kitablarının və sənədlərin elementləri formalarında. Digər obyektlərin fərqli adı ola bilər. Mövcud obyektin formasını açmaq üçün açılan formaya parametr ötürmək lazımdır Açar obyektə istinad kimi dəyəri ilə.

&OnClient
Prosedur Əmr 1 (Əmr)
Parametr = yeni struktur;
Parametr. Insert("Key" , FindC() );
OpenForm(, Parametr);
Prosedurun Sonu

&OnServer
Funksiya FindC();
Kataloqları qaytarın. Qarşı tərəflər. FindByRequisites ("VÖEN", "745107734623")
EndFunction

4. Yeni obyekt formasını necə açmaq olar

Burada sadə bir funksiya yerinə yetiriləcək OpenForm() heç bir parametr olmadan.

&OnClient
Prosedur Əmr 1 (Əmr)
OpenForm( "Kataloq. Qarşı tərəflər. Obyekt forması") ;
Prosedurun Sonu

5. Yeni obyekt formasını necə açmaq və onu nəyəsə əsaslanaraq doldurmaq

Parametrdən keçmək lazımdır Baza, dəyəri doldurulma əsas obyektinə istinad olacaq. Bu prosedura başlayacaq ProcessFill().

&OnClient
Prosedur Əmr 1 (Əmr)
Parametr = yeni struktur;
Parametr. Daxil et("Baza", LinkToBuyerAccount);
OpenForm( "Sənəd. Malların və xidmətlərin satışı. Obyekt forması", Parametr);
Prosedurun Sonu

Bu nümunə sənəd yaradacaq Malların və xidmətlərin satışı və əlaqəsi ötürülən alıcıya ödəniş üçün hesab-faktura əsasında doldurulur.

6. Formanı necə açmaq və onun üzərində seçim qurmaq

1C formaları üzrə seçim sadə və ya mürəkkəb ola bilər. Sadə seçim kimi ifadələri ehtiva edir Təşkilat = Horns and Hooves MMC. Kompleks seçim digər müqayisə növlərini nəzərdə tutur, məsələn. Siyahıda. Bu yazıda sadə seçimin təşkilini nəzərdən keçirəcəyik və ayrıca bir məqalə kompleks seçimə həsr olunacaq.

Sadə seçimi təşkil etmək üçün açılan formaya açarı olan parametri ötürmək lazımdır Seçim, dəyər açarın sahə adı olan struktur olacaq dinamik siyahı, və dəyər tələb olunan məlumatdır.

Məsələn, kataloq siyahısı formasını açaq GTD nömrələri və orada sahibə - kataloq elementinə görə seçim edin Nomenklatura.

&OnClient
Prosedur Əmr 1 (Əmr)
Parametr = yeni struktur;

seçim= yeni struktur;
Seçim. Insert("Sahibi", LinkToNomenclature);

Parametr. Daxil et("Seçim", Seçim);

OpenForm( "Directory.GTD nömrələri.Siyahı forması", Parametr);
Prosedurun Sonu

7. Məlumat reyestrinə giriş forması necə açılır

Bunu etmək üçün sizə məlumat reyestrinin giriş açarı lazımdır.

Qeyd açarı— bunlar bütün ölçmələrin və dövrün qiymətləridir (registr dövri olarsa). Yəni qeyd açarı qeydin unikal şəkildə müəyyən edilə biləcəyi parametrlərdir.

Açılış alqoritmi aşağıdakı kimidir:

  1. Qeyd açarı məlumatlarını lazımi dəyərlərlə struktura daxil edirik.
  2. Yaranan strukturu massivdə yerləşdiririk.
  3. Massivdən qeyd açarı yaradırıq.
  4. Açılan formaya bir parametr keçirik Açar dəyər kimi 3-cü addımdan qeyd düyməsi ilə.

&OnClient
Prosedur Əmr 1 (Əmr)
Parametr = yeni struktur;

KeyParameters= yeni Struktur;
Əsas parametrlər. Insert("Nomenklatura", LinkToNomenklatura) ;
Əsas parametrlər. Insert("Qiymət Növü", LinkToPriceType);
Əsas parametrlər. Daxil et("Dövr", Tarix);

KeyArray = Yeni Massiv;
KeyArray. Əlavə et(KeyParameters);

EntryKey = Yeni( "Məlumat Reyestrinin Qeyd Açarı. QiymətlərNomenklaturası", KeyArray);

Parametr. Daxil et("Açar", RecordKey) ;

OpenForm( "Məlumat reyestri. Nomenklatura qiymətləri. Qeyd forması", Parametr);
Prosedurun Sonu

Bu kod müəyyən bir seçimlə sənədlərin siyahısını açmağa imkan verir, siz həmçinin istədiyiniz seçimlə kataloq elementlərinin siyahısını aça bilərsiniz

Code 1C v 8.2 UP Forması = OpenForm("Sənəd. Invoice.Form.ListForm"); //Formanı açın
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //Seçim əlavə et
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //Necə müqayisə edəcəyik
SelectOwner.Use = Doğrudur; // NewDataCompositionField("Nomenklatura") istifadə etmək üçün onay qutusunu təyin edin
SelectionOwner.LeftValue = NewDataCompositionField("Hesab"); //Seçim etmək üçün hansı detallardan istifadə edəcəyik?
SelectionOwner.RightValue = Object.Account; // Və seçimin özü

etmək üçün əvvəlcədən təyin edilmiş seçimlə siyahı formasını açın aşağıdakı üsullardan istifadə edin:

Birinci yol ondan ibarətdir ki, siz formanı açdığınız zaman 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 uzadılma variantıdır idarə olunan forma dinamik siyahı. Yəni, əsas atributu DynamicList tipli atribut olan formalar üçün mövcuddur, məsələn, siyahı formaları və seçim formaları.

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.

Kod 1C v 8.2 UE 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);

İkinci yol

Siyahı formasını parametrlər olmadan aça bilərsiniz:

Code 1C v 8.2 UP OpenForm("Sənəd. Qəbz fakturası. 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
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

Üstünlüklər bu üsul Məsələ ondadır 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.

Üçüncü yol

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)
SelectionParameters = Yeni Struktur ("FilterByProduct", Elements.List.CurrentRow);
OpenForm("Sənəd. Qəbz fakturası. Siyahı forması", Seçim Seçimləri);
Prosedurun Sonu

Bu işləyicidə biz element siyahısındakı cari elementə keçidi FilterByProduct forma parametrinə ötürərək fakturaların siyahısı üçün formanı açırıq.

Daha sonra sənədlərin siyahısı üçün bir forma yaradacağıq: Qəbul Fakturası və FilterBy Product forması parametrini yaradacağıq ki, ondan tələb olunan seçimlə formanı açmaq üçün istifadə edəcəyik.

İndi List formasının əsas atributunun xassələri palitrasını açaq. Xüsusi Sorğu bayrağını təyin edin və Siyahı Parametrləri sətrində Aç düyməsini basın.

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əbzinin 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, siyahı forması hadisə idarəedicisində CreatedOnServer-də 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", Parameters.FilterByProduct);
Prosedurun Sonu

Burada List.Parameters List atributunun 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ə "Qaimə-fakturalar" düyməsini klikləməklə, biz yalnız burada vurğulanan maddələri ehtiva edən fakturaların siyahısını alacağıq. hal-hazırda nomenklatura siyahısında.