Lista dinamică 1s 8.2 parametri de cerere arbitrar. Căutați într-o listă dinamică

În procesul de finalizare a configurațiilor, fiecare programator 1C întâlnește liste dinamice.
O listă dinamică este un obiect de interfață folosit pentru a afișa diverse liste de obiecte de bază de date sau date non-obiect - intrări de înregistrare.
De exemplu, o listă dinamică este utilizată pentru a afișa o listă de articole:

Pentru a demonstra posibilitățile lista dinamica crea prelucrare externă, adăugați formularul principal. Să adăugăm în formular un nou atribut cu tipul „Lista dinamică”. Să mergem la proprietățile sale și să vedem ce este acolo.
Suntem interesați de proprietatea „Cerere personalizată”. Activarea acestuia ne va arăta toate posibilitățile unei liste dinamice. Vom putea scrie o interogare folosind aproape toate caracteristicile limbajului de interogare a sistemului 1C: Enterprise. Bifați caseta și faceți clic pe linkul „Deschidere”:

În mod implicit, lista noastră va afișa o listă de articole cu un sold total pentru toate depozitele. Pentru a implementa o astfel de listă, adăugați următoarea interogare:


Ca tabel principal, vom selecta "Director. Nomenclatură", acest lucru ne va permite să lucrăm cu lista dinamică, ca și cu lista de nomenclatură - adăugați, modificați, marcați pentru ștergere elemente ale directorului. De asemenea, setarea tabelului principal pune la dispoziție posibilitatea citirii dinamice a datelor - asta înseamnă că selecția se va face pe porțiuni, după cum este necesar.
În continuare, trebuie să creăm elemente de formular pentru lista noastră:

Dacă încercăm să rulăm procesarea în acest formular, vom primi o eroare:


Pentru a o elimina, trebuie să setați valoarea parametrului „Perioada”. Pentru a face acest lucru, puteți utiliza metoda „SetParameterValue” a colecției „Parameters” a listei dinamice. Metoda ia doi parametri:
. „Parametru” - Tip: șir; DataCompositionParameter. Numele parametrului sau al parametrului de compoziție a datelor a cărui valoare urmează să fie setată;
. „Valoare” - Tip: Arbitrar. Valoarea de setat.
Poate fi apelat în handlerul „OnCreateOnServer” de forma:

Ai o întrebare, ai nevoie de ajutorul unui consultant?


Să oferim utilizatorului posibilitatea de a schimba perioada de primire a soldurilor. Pentru a face acest lucru, să adăugăm atributul și elementul de formular „Data” asociat cu acesta:


În handlerul „OnChange” al elementului de formular „Date”, apelați metoda „SetParameterValue”, pasând valoarea atributului asociat ca valoare. În mod similar, vom schimba procedura „On CreationAtServer” a formularului. Deoarece metoda este disponibilă pe client, nu este nevoie să apelați serverul:


Acum, când data se schimbă, soldurile vor fi actualizate automat:




Să presupunem că utilizatorii doresc să vadă fie soldurile curente, fie încasările proiectate. Să luăm în considerare una dintre opțiunile de implementare. Să adăugăm un atribut de formă boolean și un buton radio asociat:


La modificarea valorii comutatorului, vom schimba textul cererii. Pentru a face acest lucru, vom folosi handlerul de evenimente „OnChange” al elementului de formular „DisplayQuantityToReceipt”. Trebuie să schimbăm proprietatea „QueryText” a listei dinamice în funcție de valoarea atributului. Deoarece această proprietate nu este disponibilă pe client, este necesară o procedură de apel la server:


Rezultat schimbări:



Pe lângă tipurile de date primitive care pot fi găsite în orice limbaj de programare, există tipuri unice în 1C. Fiecare dintre ele are propriile sale proprietăți, metode, funcții, scop și nuanțe de utilizare în sistem. Unul dintre aceste tipuri este o listă dinamică, care simplifică foarte mult multe sarcini aplicate. De aceea, dezvoltatorii ar trebui să cunoască și să fie capabili să se ocupe de acest instrument versatil.

Caracteristicile listelor dinamice în 1C

scop de acest tip este de a afișa informații din orice tabel de bază de date, indiferent de tipul acesteia. Mecanismul a fost creat pe baza SKD și are capacități similare. Dar asta nu înseamnă că va trebui cu siguranță să scrieți o interogare în limbajul 1C, deși această posibilitate există și trebuie să o utilizați. Puteți specifica pur și simplu tabelul, informațiile din care sunteți interesat, iar 1C va genera independent o interogare simplă.

Pentru a vedea cum se formează o listă dinamică și ce date arată, trebuie să deschideți formulare gestionate, unde se află, în configurator: în lista de detalii prin meniul contextual deschideți proprietățile sale și acordați atenție articolului „Cerere arbitrară”. Dacă nu există nicio casetă de selectare, atunci parametrul „Main table” reflectă tabelul bazei de date din care sunt preluate datele. În caz contrar, lista dinamică reflectă datele de interogare personalizate, care pot fi văzute prin deschiderea setării listei.

O schemă de interogare arbitrară este mult mai frecvent utilizată, deoarece oferă o oportunitate excelentă de a combina și afișa o mare varietate de date. Cel mai adesea, acest mecanism este utilizat pentru a reflecta soldurile stocurilor, prețurile articolelor, veniturile, cheltuielile sau achizițiile. Trebuie să îl utilizați cu atenție, deoarece performanța poate scădea în cazul interogărilor complexe.

O altă proprietate utilă a listei dinamice este deschisă făcând clic pe inscripția „Setări listă”. Acest meniu permite, chiar și atunci când se utilizează un set standard de câmpuri, să facă informațiile mai accesibile și mai ușor de înțeles pentru utilizatorii finali. Indiferent dacă este o solicitare arbitrară sau nu, veți vedea o filă „Setări” unde puteți specifica:

  • Selectarea unei liste dinamice;
  • grupari;
  • triere;
  • Decor.

Utilizarea parametrilor face listele dinamice destul de versatile și flexibile. De asemenea, le puteți lega de elemente de recuzită într-un formular gestionat, iar datele se vor schimba în funcție de opțiunile selectate de utilizator. Utilizarea acestor mecanisme poate fi înțeleasă și apreciată analizând exemple de probleme din lumea reală.

Ca exemplu, luați în considerare problema reflectării rămășițelor nomenclaturii pe o formă gestionată. În practica reală, astfel de comenzi sunt destul de comune în diverse configurații, iar lista dinamică este ideală ca instrument. Pentru această sarcină, va trebui să folosim o interogare arbitrară, parametrii listei dinamice și setările acesteia.

Pentru o mai mare claritate, să creăm o procesare externă separată și să plasăm o listă dinamică pe ea. Pentru a ne implementa planurile, vor exista puține tabele cu nomenclatură, așa că trebuie să permitem o solicitare arbitrară. În acesta, vom descrie conexiunea din stânga a cărții de referință cu lista de nomenclatură și registrul reziduurilor și vom stabili cartea de referință ca tabel principal. O astfel de schemă va permite utilizatorilor, în timp ce lucrează cu o listă dinamică, să adauge sau să modifice nomenclatura.



Alegeți o nomenclatură.Denumire.Denumire ca denumire,costuri de mărfuri și vânzări.Sklad ca depozit,costari de mărfuri și vânzări.Social -proiecte ca număr de instalații dintr-un director.Nomenclator ca nomenclator al conexiunii din stânga a registrului. Continuitate. Ieșire (iv auhitsaydata,)

Deoarece parametrul CurrentDate a fost folosit în cererea noastră, trebuie să îi setăm valoarea înainte de a utiliza procesarea. Pentru a face acest lucru, în modulul de formular din procedura „On CreationOnServer” printr-o comandă standard, atribuiți-i funcția „CurrentSessionDate” cu o comandă standard. De asemenea, trebuie să afișăm o listă dinamică pe formularul de control și să schimbăm ordinea câmpurilor pentru claritate. Trageți elementele de recuzită „Nomenclature Remains” în elementele formularului (stânga sus) și utilizați săgețile albastre pentru a schimba ordinea câmpurilor din tabelul din formular.

&La Procedura Server La CreareLa Server(Eșec, Procesare Standard) Nomenclatura rămâne.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) EndProcedure


Deja în această etapă, putem deschide procesarea noastră externă în 1C și să vedem că lista dinamică funcționează. Putem să ne uităm la solduri, să creăm nomenclatură și grupuri și să căutăm. Adesea, clienții solicită să adauge posibilitatea de a alege data pentru care vor vedea soldul. În cazul unui formular cu o listă dinamică, aceasta este furnizată de câmp suplimentarși setarea parametrilor cu acesta.

Adăugăm atributul „Data rămasă” de tipul „Data” și îl transferăm în elementele formularului. În evenimentele de câmp, creăm un eveniment „OnChange” și scriem codul pentru setarea parametrului „CurrentDate” utilizat în interogarea dinamică. Pentru ca la deschiderea formularului, utilizatorul să înțeleagă imediat la ce dată vede soldurile, vom face mici modificări în procedura OnCreateOnServer.



&OnServerProcedureOnCreateOnServer(Eșec, StandardProcessing)RemainsDate = CurrentSessionDate(); Element Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); Sfârșitul procedurii &La procedura client RemainsDateOnChange(Element) Item Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); EndProcedure

Ca rezultat, formularul nostru Dynamic List poate afișa solduri pentru orice dată.

Am acoperit doar o mică parte din capacitățile acestui set de instrumente, dar acest lucru este deja suficient pentru a înțelege comoditatea acestui tip de listă dinamică. Un mecanism similar este utilizat pentru o varietate de sarcini, dar se găsește cel mai adesea în configurații tipice V formulare gestionate:

  1. selecţie;
  2. Liste.

Pentru a obține o listă dinamică și cererea acesteia în forme tipice gestionate, dezvoltatorul trebuie să deschidă formularul necesar în configurator. În secțiunea Atribute, găsiți atributul cu tipul de date „DynamicList” (cel mai adesea este îngroșat). Proprietățile sale conțin textul solicitării, selecții și alte setări.

În cele din urmă, visul oricărui „șapte jucători” s-a împlinit. Cât de des utilizatorii programului 7.7 au cerut să facă o selecție normală de articole. Astfel încât să puteți vedea soldurile, prețurile și să setați filtre. A trebuit să vin cu diverse trucuri, până la scrierea componentelor externe. În 1C 8.2, au apărut liste dinamice. Propun să luăm în considerare ce este și ce ne pot oferi în 1C 8.3.

Să luăm ca bază câteva configurație de testare 1C: „Contabilitatea întreprinderii 3.0”. Nu vom face o selecție acum, doar adăugați un alt formular de selecție în cartea de referință „Nomenclatură” și faceți-l temporar principal:

Când este creat, sistemul va adăuga implicit un câmp de tabel cu tipul „Lista dinamică” la formular.

Să mergem la proprietățile sale și să vedem ce este acolo.

În primul rând, ne interesează caseta de selectare „Cerere arbitrară”. El este cel care ne va dezvălui toate avantajele unei liste dinamice. Vom avea posibilitatea de a scrie propria noastră interogare, și cu parametri. Bifați caseta și faceți clic pe linkul „Deschidere”:

Se va deschide o fereastră cu un cod gata făcut pentru . Până acum, toate câmpurile directorului „Nomenclatură” sunt pur și simplu enumerate acolo.

Obțineți 267 de lecții video 1C gratuit:

După cum puteți vedea, există un buton de apel „” și o casetă de selectare care vă permite să schimbați dinamic conținutul listei. Adică, atunci când un alt utilizator modifică ceva în director, se va schimba și în lista noastră. În plus, există o filă Setări, dar o vom atinge mai târziu.

Interogare personalizată în lista dinamică

Mai întâi, să creăm interogarea de care avem nevoie cu solduri și prețuri. Ca asta:

fila Setări

Și acum cel mai delicios! Accesați fila „Setări”. Și vedem imediat că în prima filă putem face orice selecție pentru orice câmp din cerere:

Setarea programatică a parametrilor de interogare într-o listă dinamică 1C 8.3

Nu uitați că avem doi parametri în cerere: „Perioada” și „Tipul prețului”. Trebuie să le transmitem la cerere, altfel va apărea o eroare.

Să scriem acești parametri în parametrii formularului și să adăugăm următoarele linii în modulul formular:

&OnServerProcedure Lista OnCreateOnServer(Eșec, Procesare standard). Opțiuni. SetParameterValue("Perioada", Parametri. Data) ; Listă. Opțiuni. SetParameterValue("PriceType" , Parameters.PriceType) ; SfârșitProceduri Acasă Note prin oglindă

21.04.2014 Obținerea datelor din lista dinamică

Implementat în versiunea 8.3.6.1977.

Am implementat capacitatea de a obține ușor și convenabil date afișate folosind o listă dinamică.

Este posibil să aveți nevoie de datele listei dinamice pentru a le imprima într-o formă „specifică” non-standard. Sau pentru a efectua anumite acțiuni cu ei. De exemplu, trimiteți o scrisoare tuturor contrapărților pe care le-ați selectat în listă conform unor criterii.

În plus, există o serie de sarcini în care utilizatorul, pe lângă lista de elemente, dorește să vadă și datele rezumative asociate acestei liste. De exemplu, după ce a selectat mărfurile unui anumit grup de produse și a unui anumit furnizor, el dorește imediat să vadă numărul total de astfel de bunuri în baza de date.

Lista dinamică în sine nu vă poate oferi aceste informații. Scopul unei liste dinamice este de a oferi vizualizare rapidă cantitati mari de date. Prin urmare, citește datele în bucăți necesare pentru a fi afișate pe unul sau două ecrane. Și „nu știe nimic”, de exemplu, despre cantitatea totală de date pe care trebuie să o citească.

În general, pentru a obține Informații suplimentare pe care utilizatorul dorește, trebuie să interogați baza de date. Exact la fel ca cel folosit în lista dinamică.

Ai putea să o faci înainte. Dar nu a fost întotdeauna ușor. La urma urmei, pe lângă textul interogării inițiale, conform căruia funcționează lista dinamică, trebuia să cunoașteți toate selecțiile, sortările și alți parametri pe care utilizatorul îi setează interactiv în tabelul care afișează datele.

Acum această sarcină este ușor de rezolvat. Tabelul cu liste dinamice are două metode noi:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Astfel, obțineți schema de compoziție a datelor în sine și, cel mai important, toate setările acesteia, datorită cărora utilizatorul vede lista exact așa cum este. Tot ce trebuie să faceți este să aranjați în mod programatic aspectul și să îl trimiteți într-o colecție de valori (pentru procesare software) sau în document foaie de calcul(a afișa):

Ca rezultat, veți obține o structură (sau un raport) care conține coloane și rânduri care sunt afișate într-un tabel de listă dinamic.

Punctul important este că aspectul și setările pe care le obțineți din tabelul cu liste dinamice iau în considerare, printre altele, vizibilitatea coloanelor și căutarea aplicată. Deoarece setările sunt obținute separat, puteți modifica compoziția câmpurilor în scopuri proprii și puteți obține, de exemplu, toate coloanele din listă, și nu doar cele care sunt vizibile pentru utilizator.

Când ieșiți într-un document de foaie de calcul, există un alt moment frumos. În general, aspectul raportului va corespunde aspect tabele cu liste dinamice în momentul în care schema și setările sunt primite. Inclusiv designul condiționat al tabelului. Veți avea nevoie de câteva acțiuni suplimentare doar dacă doriți să transferați și designul condiționat al formularului în raport.



Se încarcă...
Top