Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Siguranță
  • 1c uf deschideți formularul de selecție cu selecție. Cum să setați selecția sub forma unei liste de directoare? Setarea selecției în modul personalizat

1c uf deschideți formularul de selecție cu selecție. Cum să setați selecția sub forma unei liste de directoare? Setarea selecției în modul personalizat

Acest cod vă permite să deschideți lista de documente cu selecția selectată, puteți deschide și lista de elemente de director cu selecția dorită

Cod 1C v 8.2 UP Form = OpenForm ("Document.Invoice.Form.ListForm"); // Deschideți formularul
SelectionOwner = Form.List.Selection.Elements.Add (Tip ("DataCompositionFeedbackElement")); // Adăugați selecția
SelectOwner.CompareType = DataCompositionComparisonType.Equal; // Cum ne vom compara
SelectionOwner.Use = Adevărat; // Setați caseta de selectare pentru a utiliza NewDataCompositionField ("Nomenclatură")
SelectOwner.LeftValue = NewDataCompositionField („Contraparte”); // Pentru ce recuzită vom face o selecție
SelectionOwner.RightValue = Object.Contractor; // Și valoarea selecției în sine

Pentru a deschideți un formular de listă cu o selecție prestabilită utilizați următoarele metode:

Prima cale este că atunci când deschideți formularul, puteți seta parametrul de formular Selection și puteți deschide formularul de listă cu acest parametru.

Parametrul de selecție este o structură. Numele elementelor corespund denumirilor câmpurilor prin care se face selecția, iar valorile conțin valorile selecției. Aceasta este o opțiune de extensie a formularelor gestionate de listă dinamică. Adică, există pentru formulare, al căror atribut principal este un atribut de tip DynamicList, de exemplu, pentru formularele de listă și formularele de selecție.

De exemplu, următorul exemplu deschide o listă de chitanțe cu o selecție pentru câmpul Număr egală cu 333.

Cod 1C v 8.2 UE SelectionValue = Structură nouă („Număr”, „333”);
SelectionParameters = Structură nouă („Selection”, SelectionParameters);
OpenForm („Document.Invoice.ListForm”, SelectionParameters);

A doua cale

Puteți deschide formularul de listă fără parametri:

Cod 1C v 8.2 UP OpenForm („Document. Factură de primire. Formular de listă”);

Și apoi, în handlerul de evenimente al formei listei de chitanțe AtCreateOnServer, scrieți codul care creează o selecție în lista dinamică, care este atributul principal al formularului:

Cod 1C v 8.2 UP și OnServer
Procedura OnCreateAtServer (Eșec, Procesare standard)
SelectionElement = List.Selection.Elements.Add (Tip ("DataCompositionFeedback"));
SelectionElement.LeftValue = NewDataCompositionField ("Număr");
SelectionItem.ComparisonView = DataCompositionComparisonView.More;
SelectionItem.Usage = Adevărat;
SelectionItem.DisplayMode =DataCompositionSettingsItemDisplayMode.Nu este disponibil;
SelectionItem.RightValue = "000000001";
Sfârșitul procedurii

Avantajele acestei metode sunt că vizualizarea de comparație a selecției poate fi setată nu numai Egal, ca în primul caz, ci și Mai mult, Mai puțin etc.

Dar această metodă are și un dezavantaj foarte semnificativ: cu această selecție, formularul se va deschide întotdeauna. Oriunde a fost chemată. Prin urmare, acest formular nu ar trebui să fie atribuit celui principal. Și dacă este încă cel principal, atunci înainte de a seta selecția, este necesar să se prevadă un fel de analiză a de unde se deschide acest formular. De exemplu, prin analizarea parametrilor formularului.

A treia cale

În cele din urmă, o condiție de filtru poate fi plasată într-o interogare arbitrară care selectează date pentru o listă dinamică.

De exemplu, trebuie să deschidem o listă de facturi de chitanță care conțin un articol care este evidențiat în lista de articole.

Pentru a face acest lucru, sub forma unei liste de articole, creați o comandă și butonul corespunzător Chitanță facturi.

Completați handlerul pentru a executa această comandă după cum urmează:

1C v 8.2 UP & ONCUSTOMER cod
Procedura Chitanță Facturi (comandă)
ChoiceParameters = Structură nouă („FilterByProduct”, Elements.List.CurrentRow);
OpenForm („Document.Invoice.ListForm”, SelectionParameters);
Sfârșitul procedurii

În acest handler, deschidem formularul de listă de facturi de chitanță, trecând linkul către articolul curent din lista de articole în parametrul de formular FilterByProduct.

Apoi vom crea un formular pentru lista documentelor Facturi de Chitanță și vom crea parametrul de formular Filtrare după produs, pe care îl vom folosi pentru a deschide formularul cu selecția necesară.

Acum să deschidem paleta de proprietăți ale atributului principal al formularului Listă. Setați marcajul Solicitare personalizată și faceți clic pe Deschidere în linia Setări listă.

În câmpul Solicitare, introduceți următorul text de solicitare:

Cod 1C v 8.2 SUS SELECT
Document Chitanță Factură. Număr,
Document de primire Factura Data
DIN
Document.Incoming waybill AS DocumentIncoming waybilt
UNDE
DocumentIncoming Invoice.Goods.Product = & Product

În cerere, folosim parametrul Produs, în care se va trimite linkul către linia curentă din lista articolelor cuprinse în parametrul listei de facturi de chitanță Filtrare după produs.

Pentru a face acest lucru, în handlerul de evenimente din formularul de listă AtCreateAtServer, scrieți codul pentru a seta valoarea parametrului de solicitare a produsului:

1C v 8.2 UP & ONCUSTOMER cod
Procedură deschisă (Eșec)
List.Parameters.SetValueParameter ("Produs", Parameters.FilterBy Product);
Sfârșitul procedurii

Aici Listă.Parametrii este o listă de parametri dinamici de interogare a listei pentru atributul Listă. Valoarea parametrului Product este setată egală cu valoarea parametrului formular Filter By Product.

Ca urmare, făcând clic pe butonul Facturi de chitanță din formularul de listă de articole, vom primi o listă numai a acelor facturi de chitanță care conțin articolul selectat în prezent în lista de articole.

Selecția pe forme controlate în 1C 8.3

Articolul va lua în considerare opțiunile de setare a selecției în forme controlate 1C 8.3. Selecția pentru o listă dinamică poate fi setată static sau dinamic, în interfața cu utilizatorul sau în configurator. Vom lua în considerare toate opțiunile de selecție de mai jos.

  • Setarea selecției în configurator

Setarea selecției în modul personalizat

O listă dinamică, spre deosebire de un tabel sau un arbore de valori, este o soluție mai potrivită pentru implementarea formularelor care conțin orice liste, deoarece Lista dinamică oferă cel mai larg set de instrumente pentru lucrul cu selecția, gruparea câmpurilor, sortarea. Această selecție poate fi setată atunci când lucrați în modul utilizator sau în configurator, principiul este același.

Pentru a seta filtrarea în modul întreprindere, apelați comanda „Configurare listă”.

Se va deschide o fereastră.


Fila „selecție” conține o listă de câmpuri care se află în lista curentă. Selectați câmpurile din listă după care vom filtra. Acest lucru se poate face cu un dublu clic sau folosind drag and drop.


Setați tipul de comparație și valoarea, faceți clic pe „Finalizare editare”, selecția este setată.


Când configurați o selecție în modul întreprindere, câmpurile pentru așa-numitele selecții rapide sunt create automat în formularul de listă.


Pentru ca platforma 1C să creeze automat câmpuri pentru selecții rapide, atunci când dezvoltați un formular în configurator, trebuie să specificați un grup de setări de utilizator.


Această selecție va fi salvată doar pentru utilizatorul curent, ceea ce permite personalizarea flexibilă a listei dinamice. Totuși, dacă sarcina este să facem o selecție fixă ​​pentru o listă specifică pentru toți utilizatorii sistemului, o putem rezolva doar prin configurator.

Setarea selecției în configurator

Lucrând în configurator, putem seta selecția unei liste dinamice de două tipuri - fixă ​​și dinamică. Selecția fixă ​​este configurată o singură dată, dinamică sau programatică - o puteți seta în funcție de orice date din sistem.

Principiul setării unei selecții fixe în configurator nu diferă de setarea din modul utilizator descris mai sus. Pentru a seta filtrul, trebuie să deschidem setările listei dinamice.


Se va deschide o fereastră.


Selecția este setată în același mod ca în modul utilizator.

Opțiunea „Include în setările utilizatorului” determină dacă selecția setată în configurator va fi disponibilă în modul utilizator prin elementul de meniu „Personalizare listă”.


Selectare dinamică (software).

Adesea este nevoie să setăm un filtru în mod programatic, de exemplu, când deschidem un formular de selecție, când trebuie să deschidem un formular gestionat cu un filtru. Un parametru este transmis formularului și selecția este setată de acest parametru. Un exemplu comun în acest sens este eliminarea elementelor din director de către proprietar.

Metode

Dacă configurația dezvoltată conține subsistemul BSP „Funcționalitate de bază”, selecția programului din lista dinamică poate fi setată folosind metoda standard:

SharedPurposeClientServer.SetDynamicListFeatured ()

Semnătura acestei metode este:

Lista dinamică Tip: DynamicList - Lista în care doriți să setați filtrul.

Numele domeniului Tip: String - Câmp, prin care trebuie setat filtrul.

Valoarea corectă Tip: Arbitrar - Valoare de selecție (Opțional. Valoare implicită: Nedefinit. Atenție! Dacă treceți Nedefinit, valoarea nu va fi modificată).

ViewComparison Tip: DataCompositionComparisonKind - Condiție de selecție.

Reprezentare Tip: String - Reprezentarea unui element de compoziție de date (Opțional. Valoare implicită: Nedefinit. Dacă este specificat, este afișat doar indicatorul de utilizare cu reprezentarea specificată (valoarea nu este afișată. Pentru a șterge, astfel încât valoarea să fie afișată din nou, treceți un șir gol).

Utilizare Tip: Boolean - Casetă de selectare pentru a utiliza această selecție (Opțional. Implicit: nedefinit).

Modul de afișare Tip :DataCompositionSettingsItemDisplayMode - Cum este afișată utilizatorului această selecție. Valori posibile:

  • ItemDisplay ModeDataCompositionSettings.QuickAccess - În grupul de setări rapide de deasupra listei.
  • Element Display ModeDataCompositionSettings.Normal - La setarea listă (în submeniul Mai multe).
  • DataCompositionSettingsDisplayMode.Unavailable - Împiedicați utilizatorul să modifice această selecție.

IdentifierCustomSettings Tip: șir - identificator unic pentru această selecție (Folosit pentru a conecta la setările personalizate).

Pentru a elimina o anumită valoare de selecție, trebuie să utilizați metoda standard:

ClientServer de uz general. DeleteElementsSelectionGroupsDynamicList ()

Semnătura acestei metode este:

Lista dinamică Tip: DynamicList - un atribut de formular pentru care doriți să setați un filtru.

Numele domeniului Type: String - numele câmpului de aspect (nu este folosit pentru grupuri).

Reprezentare Tip: String - Reprezentarea câmpului de aspect.

Dacă nu există BSP în sistem, selecția poate fi setată independent folosind obiectul DataComposition Field.

SelectionElement = List.Selection.Elements.Add (Tip ("DataCompositionFeedback")); SelectionElement.LeftValue = NewDataCompositionField ("nume complet"); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; SelectItem.Display Mode =DataCompositionSettingsItemDisplayMode.QuickAccess; // Element de selecție opțional. RightValue = "Ivanov";

Această selecție va selecta linii în care valoarea „Nume complet” = „Ivanov”.

Pentru a utiliza logic „ȘI”, „SAU”, „NU”, este destinat tipul de date DataCompositionSelectionElementsGroup

SelectionGroup = List.Selection.Elements.Add (Tip ("DataCompositionOptionElementGroup")); SelectionGroup.GroupType = DataCompositionGroupGroupType.Group SAU; SelectionElement = SelectionGroup.Elements.Add (Tip ("DataCompositionOptionElement")); SelectionElement.LeftValue = NewDataCompositionField ("nume complet"); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; Selection Element.RightValue = "Ivanov"; SelectionElement = SelectionGroup.Elements.Add (Tip ("DataCompositionOptionElement")); SelectionElement.LeftValue = NewDataCompositionField ("nume complet"); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; Selection Element.RightValue = "Petrov";

Această selecție va selecta linii în care valoarea „Nume complet” = „Ivanov” sau „Petrov”.

Selectarea într-o listă dinamică poate fi efectuată și prin modificarea textului de interogare a unei liste dinamice. Această opțiune funcționează atunci când se face o listă dinamică printr-o „cerere arbitrară”.


Pentru a face acest lucru, adăugați condiția „UNDE este adevărată” la textul interogării...


După cum puteți vedea, această abordare este mai compactă în ceea ce privește scrierea codului. Cu cât condițiile de selecție din secțiunea tabulară pe care dorim să o stabilim sunt mai complexe, cu atât opțiunea va fi mai greoaie folosind selecția prin DataCompositionSelectionElement. Cu toate acestea, exemplul cu modificarea textului solicitării are dezavantajele sale - această implementare nu este rezistentă la modificările de cod. De exemplu, ați făcut o astfel de implementare și ați uitat, dar dacă pe viitor doriți să modificați textul solicitării adăugând orice operator după WHERE (COMANDĂ, ÎNCĂRCARE), trebuie să vă amintiți că codul programului conține:

List.RequestText = List.RequestText + "Și DirectoryUsers.NUME COMPLET ÎN (" "Ivanov" "," "Petrov" ")";

Dacă acest lucru nu este luat în considerare, va apărea o eroare, dar pentru a evita acest lucru, o puteți reface la o altă implementare. Adăugați următoarea condiție la textul cererii:

WHERE (NU și selecția instalată SAU DirectoryUsers.NAME IN (și numele complet permis))

List.Parameters.SetValueParameter ("SelectionSetting", nume complet.Număr ()> 0); List.Parameters.SetValueParameter ("Nume complet permis", nume complet);

Aici numele complet este o matrice.

După cum puteți vedea, 2 linii de cod față de 10. Ce metodă să alegeți depinde de problema specifică aplicației.

Cod 1C v 8.х DirectoryList.Select.Reset ();
ReferenceList.Full.Status.ComparisonType = ComparisonKind.Contains;
DirectoryList.Option.Status.Value = „Acceptat”;
ReferenceList.Option.Status.Install ();

Pentru 1C 8.2:
Există mai multe moduri de a deschide un formular de listă cu o selecție predefinită. Să le considerăm în ordine:

1. Prima metodă este că atunci când deschideți formularul, puteți seta parametrul de formular Selection și deschideți formularul de listă cu acest parametru. Parametrul de selecție este o structură. Numele elementelor corespund denumirilor câmpurilor prin care se face selecția, iar valorile conțin valorile selecției. Aceasta este o opțiune de extensie a formularelor gestionate de listă dinamică. Adică, există pentru formulare, al căror atribut principal este un atribut de tip Lista dinamică, de exemplu, pentru formularele de listă și formularele de selecție.

În procesul de deschidere a formularului, selecția pentru câmpul specificat va fi setată.
Cod 1C v 8.2 UE // De exemplu, în exemplul următor, se deschide o listă de chitanțe cu selecție după câmpul Număr egal cu 333.
SelectionValue = Structură nouă („Număr”, „333”);
SelectionParameters = Structură nouă („Selection”, SelectionParameters);

OpenForm („Document.Invoice.ListForm”, SelectionParameters);

// De exemplu, următorul exemplu deschide o listă de facturi
// cu selecție pentru câmpul Counterparty egal cu OJSC Horns and Hooves.
Valoare de selecție = Structură nouă („Contraparte”, „OJSC Coarne și Copite”);
SelectionParameters = Structură nouă („Selection”, SelectionParameters);
OpenForm („Document. Factură de primire. Formular de listă”, Parametri de selecție);

2. Puteți deschide formularul de listă fără parametri:
Cod 1C v 8.2 UP OpenForm („Document. Factură de primire. Formular de listă”);

Și apoi, în handlerul de evenimente al formei listei de chitanțe AtCreateOnServer, scrieți codul care creează o selecție în lista dinamică, care este atributul principal al formularului:
Cod 1C v 8.2 UP și OnServer

SelectionElement = List.Selection.Elements.Add (Tip ("DataCompositionFeedback"));
SelectionElement.LeftValue = NewDataCompositionField ("Număr");


SelectionItem.DisplayMode =DataCompositionSettingsItemDisplayMode.Nu este disponibil;
SelectionItem.RightValue = "000000001";
Sfârșitul procedurii

&Pe server
Procedura OnCreateAtServer (Eșec, Procesare standard)
PickItem = List.Choice.Elements.Add (Tip
("DataCompositionOptionElement"));
SelectionElement.LeftValue = NewDataCompositionField ("DocumentSum");
SelectionItem.ComparisonView = DataCompositionComparisonView.More;
SelectionItem.Usage = Adevărat;
SelectionItem.RightValue = 150000;
Sfârșitul procedurii

Avantajele acestei metode sunt vizualizarea comparativă selecția poate fi setată nu numai Egal, ca în primul caz, ci și Mai mult, Mai puțin etc.

Dar această metodă are și un dezavantaj foarte semnificativ: cu această selecție, formularul se va deschide întotdeauna. Oriunde a fost chemată. Prin urmare, acest formular nu ar trebui să fie atribuit celui principal. Și dacă, totuși, este de bază, atunci înainte de a seta selecția, este necesar să se prevadă un fel de analiză a de unde se deschide această formă. De exemplu, prin analizarea parametrilor formularului.

3. În cele din urmă, o condiție de filtru poate fi plasată într-o interogare arbitrară care selectează date pentru o listă dinamică. De exemplu, trebuie să deschidem o listă de facturi de chitanță care conțin un articol care este evidențiat în lista de articole.

Pentru a face acest lucru, sub forma unei liste de articole, creați o comandă și butonul corespunzător Chitanță facturi.

Completați handlerul pentru a executa această comandă după cum urmează:
1C v 8.2 UP & ONCUSTOMER cod
Procedura Chitanță Facturi (comandă)

Formular de listă = Formular de obținere („Document. Factură de chitanță. Formular de listă”);
ListForm.FilterByProduct = Items.List.CurrentString;
ListForm.Open ();

Sfârșitul procedurii

În acest handler, obținem forma listei de chitanțe și trecem linkul către articolul curent din lista de articole în parametrul de formular FilterByProduct și deschidem formularul cu acest parametru.

Apoi vom crea un formular pentru lista documentelor Facturi de Chitanță și vom crea un atribut al formularului Filtrare după Produs, pe care îl vom folosi ca parametru de formular atunci când este deschis. Acum să deschidem paleta de proprietăți ale atributului principal al formularului Listă. Setați indicatorul ArbitraryRequest iar în linia Setări Listă, faceți clic Deschis.

În câmpul Solicitare, introduceți următorul text de solicitare:
Cod 1C v 8.2 SUS SELECT
Document Chitanță Factură. Număr,
Document de primire Factura Data
DIN
Document.Incoming waybill AS DocumentIncoming waybilt
UNDE
DocumentIncoming Invoice.Goods.Product = & Product

În cerere, folosim parametrul Produs, în care se va trimite linkul către linia curentă din lista articolelor cuprinse în parametrul listei de facturi de chitanță Filtrare după produs. Pentru a face acest lucru, în handlerul de evenimente al formularului de listă la Deschidere, scrieți codul pentru a seta valoarea parametrului Solicitare produs:
Cod 1C v 8.2 UP
& OnClient
Procedură deschisă (Eșec)

List.Parameters.SetValueParameter ("Produs", FilterBy Product);

Sfârșitul procedurii

Aici Lista.Parametrii este o listă de parametri dinamici de interogare a listei pentru atributul Listă. Valoarea parametrului Product este setată egală cu valoarea parametrului formular Filter By Product.

Ca urmare, făcând clic pe butonul Facturi de chitanță din formularul de listă de articole, vom primi o listă numai a acelor facturi de chitanță care conțin articolul selectat în prezent în lista de articole.

Pentru a deschideți formularul de selecție cu selecția în 1s 8.2(forme obișnuite), trebuie să realizăm unele acțiuni. O vom primi mai întâi. După aceea, vom seta selecția și o vom deschide programatic, iată un exemplu de cod:

Selectare pe formular în câmpul de intrare 1C 8.2 cu mai multe valori

În exemplul de mai sus, ne-am uitat la cum să setați selecția pe formularul de selecție pentru o anumită valoare. Acum să luăm în considerare o situație în care trebuie să înlocuiți mai multe valori, poate fi, de exemplu, atât o matrice, cât și descărcarea dintr-un rezultat de interogare. Aceasta este o selecție în câmpul de intrare 1c cu sensuri multiple.

Pentru început, obținem formularul de selecție, în parametri trecem „Elementul” (proprietar), setăm flagul modului de selecție. Apoi creăm o listă de valori și o matrice, rețineți că, ca selecție, atunci când tipul de comparație este setat în listă, un obiect poate fi prezent doar cu tipul Lista de valori... Adăugăm elemente la matrice, apoi încărcăm această matrice în Lista de valori, pe care o setăm ulterior în selecție. De asemenea, nu uitați să activați indicatorul pentru utilizarea acestei selecții și să setați vizualizarea de comparație.

Setarea selecției în câmpul de introducere pe formular în 1C 8.3, evenimentul StartSelection

Acum luați în considerare selecție în câmpul de introducere pe un formular controlat în 1C 8.3... Să găsim pe formular elementul care ne interesează, în care vom seta selecția, în cazul nostru este câmpul „Organizare”. Găsim evenimentul „Select Start”, facem clic pe lupă și ne regăsim în procedură. Vedem parametrul ChoiceData, acest parametru este de tip ValuesList. Pentru a restricționa selecția la elementele necesare, trebuie să completăm Lista de valori. Putem selecta elemente doar pe server, așa că creăm o procedură cu directiva de compilare & OnServer. În această procedură, completăm datele de selecție.

Top articole similare