Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • Acces la secțiunea tabelară 1c 8. Cum se obțin date din secțiunea tabelară a documentelor? Cum să obțineți rândul curent al unei secțiuni tabelare

Acces la secțiunea tabelară 1c 8. Cum se obțin date din secțiunea tabelară a documentelor? Cum să obțineți rândul curent al unei secțiuni tabelare

Pentru a contabiliza bani și bunuri, diferite tabele sunt utilizate pe scară largă în afaceri. Aproape fiecare document este un tabel.

Un tabel listează articolele care urmează să fie expediate din depozit. Într-un alt tabel, există obligații de plată pentru aceste bunuri.

Prin urmare, în 1C, un loc proeminent este ocupat de lucrul cu mese.

Tabelele din 1C sunt numite și „secțiuni tabulare”. Cărțile de referință, documentele și altele le au.

Interogarea, ca urmare a execuției sale, returnează un tabel, la care accesul poate fi obținut în două moduri diferite.

Prima - mai rapidă - selecție, preluarea rândurilor din ea este posibilă numai în ordine. Al doilea este descărcarea rezultatului interogării într-un tabel de valori și apoi accesul aleatoriu la acesta.

// Opțiunea 1 - acces secvenţial la rezultatele interogării

// ia masa
Selecție = Query.Run ().Selectare ();
// în ordine, parcurgem toate rândurile rezultatului interogării
While Fetch.Next () Buclă
Raport (Eșantion. Nume);
Sfârșitul ciclului;

// Opțiunea 2 - descărcare într-un tabel de valori
Solicitare = Solicitare nouă („SELECT Name FROM Directory.Nomenclature”);
// ia masa
Tabel = Query.Run (). Descărcare ().
// atunci putem să trecem și prin toate rândurile
Pentru fiecare rând din bucla de masă
Raport (String.Name);
Sfârșitul ciclului;
// sau accesează în mod arbitrar șiruri de caractere
Linie = Tabel. Găsiți ("Lopată", "Nume");

O caracteristică importantă este că într-un tabel care este obținut dintr-un rezultat al unei interogări, toate coloanele vor fi puternic tastate. Aceasta înseamnă că prin solicitarea câmpului Nume din cartea de referință Nomenclatură, veți primi o coloană de tipul String cu o lungime admisă de cel mult N caractere.

Tabel pe formular (client gras)

Utilizatorul lucrează cu tabelul atunci când acesta este plasat pe formular.

Am discutat despre principiile de bază ale lucrului cu forme în lecția despre și în lecția despre

Deci, să așezăm tabelul pe formular. Pentru a face acest lucru, puteți trage tabelul din panoul de control. În mod similar, puteți selecta în meniul Form / Insert Control.

Datele pot fi stocate în configurație - atunci trebuie să selectați secțiunea tabelară existentă (adăugată anterior) a obiectului de configurare a cărui formă o editați.

Faceți clic pe butonul „...” din proprietatea Date. Pentru a vedea lista de secțiuni tabelare, trebuie să extindeți ramura Object.

Atunci când alegeți o secțiune tabelară, 1C însuși va adăuga coloane la tabelul din formular. Rândurile introduse de utilizator într-un astfel de tabel vor fi salvate automat împreună cu referința/documentul.

În aceeași proprietate Data, puteți introduce un nume arbitrar și puteți selecta tipul ValuesTable.

Aceasta înseamnă că a fost selectat un tabel arbitrar de valori. Nu va adăuga automat coloane, nu va fi salvat automat, dar puteți face ce doriți cu el.

Făcând clic dreapta pe tabel, puteți adăuga o coloană. În proprietățile coloanei, puteți specifica numele acesteia (pentru referință în codul 1C), antetul coloanei de pe formular, legătura cu atributul secțiunii tabelare (acesta din urmă - dacă nu este un tabel arbitrar, dar secțiunea tabulară este selectat).

În proprietățile tabelului din formular, puteți specifica dacă utilizatorul poate adăuga/elimina rânduri. Formular mai avansat - caseta de selectare Numai vizualizare. Aceste proprietăți sunt utile pentru organizarea tabelelor pentru afișarea informațiilor, dar nu pentru editare.

Pentru a gestiona tabelul, trebuie să afișați bara de comandă în formular. Selectați elementul de meniu Form / Insert Control / Command Panel.

În proprietățile barei de comandă, bifați caseta de selectare Completare automată, astfel încât butoanele de pe bară să apară automat.

Tabel pe formular (client subțire/gestionat)

Într-o formă gestionată, aceste acțiuni arată ușor diferit. Dacă trebuie să plasați o secțiune tabelară pe formular, deschideți ramura Obiect și trageți una dintre secțiunile tabulare spre stânga. Si asta e!

Dacă trebuie să plasați un tabel de valori, adăugați un nou atribut al formularului și specificați tipul în proprietățile sale - tabelul de valori.

Pentru a adăuga coloane, utilizați meniul de clic dreapta pe acest atribut de formular, elementul de coloană Adăugați atribut.

Apoi trageți și tabelul spre stânga.

Pentru ca tabelul să aibă o bară de comandă, în proprietățile tabelului, selectați valorile din secțiunea Utilizare - Poziția barei de comandă.

Exportați un tabel în Excel

Orice tabel 1C aflat pe formular poate fi tipărit sau descărcat în Excel.

Pentru a face acest lucru, faceți clic dreapta pe un spațiu gol din tabel și selectați Listă.

Într-un client gestionat (subțire), acțiuni similare pot fi efectuate folosind elementul de meniu Toate acțiunile / Afișare listă.

Părți tabulare există pentru multe obiecte din 1C:

  • Directoare
  • Documentație
  • Rapoarte și procesare
  • Diagrame de cont
  • Diagrame cu tipuri de caracteristici
  • Diagrame cu tipuri de calcul
  • Procese și sarcini de afaceri

Secțiunile tabelare vă permit să stocați o cantitate nelimitată de informații structurate aparținând unui singur obiect.

Să luăm în considerare câteva tehnici de lucru cu secțiuni tabelare.

Cum să ocoliți secțiunea tabelară

Pentru a parcurge secțiunea tabelară, puteți folosi o buclă Pentru toată lumea

Pentru fiecare rând din bucla TabularPart

Raport (String. TabularSection Props);

Sfârșitul ciclului;

La fiecare iterație într-o variabilă Linia se transferă următorul rând al secțiunii tabelare. Valorile atributelor șirului pot fi obținute prin expresie String.PropsName.

Cum să obțineți și să ocoliți rândurile selectate ale unei secțiuni tabelare

Pentru a afișa informații din secțiunea tabelară a obiectului, utilizați elementul formular Câmp tabel... Pentru a activa posibilitatea de a selecta mai multe rânduri dintr-un câmp de tabel, setați valoarea Multiplu proprietatea sa Modul de selecție.

Următorul cod este folosit pentru a obține o listă de linii evidențiate:

Pentru a ocoli liniile selectate, se folosește o buclă Pentru toată lumea:

SelectedRows = Elemente de formular. TabularField Nume. SelectedLines;

Pentru fiecare rând de rânduri selectate buclă

// conținutul buclei

Sfârșitul ciclului;

Cum să selectați în mod programatic rândurile unei secțiuni tabelare (câmp tabel) și să le deselectați

Pentru a deselecta în mod programatic rândurile unui câmp de tabel:

Elementele Formei. TabularField Nume. Rânduri dedicate. Clar ();

Pentru a selecta în mod programatic toate rândurile unui câmp de tabel:

Pentru fiecare CurrentRow From TabularPart Loop
Elementele Formei. TabularField Nume. Rânduri selectate. Adăugați (CurrentLine);
Sfârșitul ciclului;

Cum să ștergeți secțiunea tabelară

TabularPart. Clar ();

Cum să obțineți rândul curent al unei secțiuni tabelare

Linia curentă este timpul în care utilizatorul are în prezent cursorul. Pentru a-l obține, trebuie să vă referiți la controlul din formular, care este asociat cu secțiunea tabelară.

Pentru formele normale, codul va arăta astfel:

Elementele Formei. TabularField Nume. Data curenta;

Pentru formularele gestionate:

Elemente. TabularField Nume. Data curenta;

Cum să adăugați un rând nou la secțiunea tabelară

Adăugarea unei noi linii la sfârșitul secțiunii tabelare:

NewRow = TabularSection. Adăuga() ;

Adăugarea unei noi linii oriunde în secțiunea tabelară (liniile ulterioare vor fi deplasate):

NewRow = TabularSection. Inserare (Index)
// Indexul este numărul liniei adăugate. Numerotarea liniilor începe de la zero.

Linie nouă. Props1 = „Valoare”;

Cum să completați programatic detaliile rândului secțiunii tabelului

Dacă trebuie să completați în mod programatic atributele unui rând de secțiune tabelară pe care îl adaugă utilizatorul, trebuie să utilizați gestionarea evenimentelor secțiunii tabelare La început de editare.

Procedura creată de handler are trei parametri:

  • Element- contine un control TabularField.
  • Linie nouă- boolean. Conține valoare Adevărat dacă se adaugă un nou rând al secțiunii tabelare și Minciună, dacă utilizatorul a început să editeze o linie deja existentă.
  • Copierea- boolean. Conține valoare Adevărat dacă utilizatorul copiază șirul și Minciună in alte cazuri.

Să ne uităm la un exemplu. Să presupunem că trebuie să completăm elementele de recuzită ale secțiunii tabelare Cont Cont, în cazul în care se adaugă o nouă linie. Când editați o linie existentă, nu este necesar să schimbați contul de contabilitate.

Procedura TabularParton StartEditing (Articol, NewRow, Copiere)

// Dacă utilizatorul editează o linie existentă, atunci nu faceți nimic
Dacă NU NewString, atunci
Întoarcere;
EndIf;

// Dacă linia este nouă, setați contul de contabilitate
TextString = Element. Data curenta; // Obține rândul curent al secțiunii tabelare
TextString. Account Account = Planuri de cont. Autoportant. RequiredAccount;
Sfârșitul procedurii

Acasă Pentru dezvoltatori începători Învață să programezi

Cum să obțineți date din secțiunea tabelară a documentelor?

De exemplu, luați în considerare o situație în care doriți să obțineți toate elementele specificate în secțiunea tabelară Produse documente Vânzări de bunuri și servicii.

Pentru a face acest lucru, puteți utiliza o solicitare cu următorul text:

SELECTAȚI DIFERITE Vânzări de BunuriServicii

Ca sursă, indicăm secțiunea tabelară a documentelor - un tabel Document.Realizarea BunurilorServicii.Produse... Declaram campul ca camp de iesire Nomenclatură, care face parte din tabelul sursă. În plus, întrucât aceeași rubrică, desigur, ar putea fi prezentă de mai multe ori în documente, aplicăm VARIAT pentru a obține doar rânduri distincte în tabelul de ieșire al interogării.

De exemplu, să creăm procesare Listă de obiecte unde este selectat documentul Vânzări de bunuri și servicii, iar făcând clic pe butonul corespunzător din fereastra de mesaje se afișează o listă de articole nerepetate ale nomenclaturii conținute în secțiunea tabelară a acestui document.

Pentru a restricționa selecția articolelor din stoc numai după articole din secțiunea tabelară a unui anumit document, utilizați parametrul Legăturăîn condiția din cerere ( UNDE...):

SELECTARE DIFERITE Implementare BunuriServiciiBunfuri.Nomenclatura AS Nomenclatura FROM Document.Realizarea BunurilorServicii.Produse AS Implementarea BunurilorServiciiMarfa WHERE Implementarea BunurilorServicii

Top articole similare