Obțineți partea tabelară 1s.

Obțineți partea tabelară 1s.
Obțineți partea tabelară 1s.

Ce înseamnă un cerc albastru sau portocaliu în Odnoklassniki?

  • Părți tabulare există pentru multe obiecte din 1C:
  • Directoare
  • Documente
  • Rapoarte și procesare
  • Planuri de conturi
  • Planuri de tip caracteristic
  • Planuri de tip calcul

Procese și sarcini de afaceri

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

Să ne uităm la câteva tehnici de lucru cu părți tabulare.

Cum să ocoliți partea tabulară Pentru a parcurge partea tabelului, puteți folosi o buclă

Pentru toată lumea

Pentru fiecare rând din partea tabelară a ciclului

Raport (Atribut String. TabularPart) ;

EndCycle ; La fiecare iterație în variabilă Linia se transmite următorul rând al secțiunii tabelare. Valorile detaliilor rândului pot fi obținute prin expresie.

Line.AttributeName

Cum să obțineți și să ocoliți rândurile selectate ale părții tabelare Pentru a afișa informații din partea tabelară a obiectului, utilizați un element de formular Câmp tabel . Pentru a activa posibilitatea de a selecta mai multe rânduri într-un câmp de tabel, trebuie să setați valoarea Multiplu la proprietatea lui.

Modul de selecție

Pentru a obține o listă cu liniile selectate, utilizați următorul cod: Pentru a parcurge partea tabelului, puteți folosi o buclă:

O buclă este folosită pentru a itera prin liniile selectate.

SelectedRows = FormElements. TableFieldName. SelectedRows;

Pentru fiecare rând din bucla rândurilor selectate

Raport (Atribut String. TabularPart) ;

//conținutul buclei

Cum să selectați în mod programatic rândurile unei părți tabulare (câmpul tabelului) și să le deselectați

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

Elemente de formă. TableFieldName. SelectedRows. Clear() ;

Pentru a selecta în mod programatic toate rândurile unui câmp de tabel:
Pentru fiecare CurrentRow From TabularPart Loop
Raport (Atribut String. TabularPart) ;

Elemente de formă. TableFieldName. SelectedLines. Adăugați(Rândul curent);

Cum să ștergeți partea de masă

TabularPart. Clear() ;

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

Pentru formele obișnuite, codul va arăta astfel:

Elemente de formă. TableFieldName. CurrentData;

Pentru formularele gestionate:

Elemente. TableFieldName. CurrentData;

Cum să adăugați un rând nou la o secțiune de tabel

Adăugarea unei noi linii la sfârșitul părții tabelului:

NewRow = TablePart. Adaugă() ;

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

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

NewRow. Props1 = „Valoare” ;

Cum să completați în mod programatic detaliile unui rând de tabel

Dacă trebuie să completați în mod programatic detaliile unui rând de secțiune de tabel care este adăugat de utilizator, trebuie să utilizați handlerul de evenimente secțiunea de tabel Când începeți editarea.

Procedura creată de handler are trei parametri:

  • Element- contine un element de control TableField.
  • NewString- boolean. Conține valoare Adevărat, dacă este adăugat un nou rând de tabel și Minciună, dacă utilizatorul a început să editeze o linie deja existentă.
  • Copie- boolean. Conține valoare Adevărat, dacă utilizatorul copiază linia și Minciunăîn alte cazuri.

Să ne uităm la un exemplu. Să presupunem că trebuie să completăm detaliile secțiunii tabelare ContCont, î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 TabularPartAtStartEditing(Element, NewRow, Copy)

//Dacă utilizatorul editează o linie existentă, atunci nu facem nimic
Dacă NU NewRow, atunci
Reveni;
EndIf ;

//Dacă linia este nouă, setați contul de contabilitate
TechString = Articol. CurrentData; //Obțineți rândul curent al părții tabelare
TechString. Contabilitate = Planuri de conturi. Autoportant. RequiredAccount;
Sfârșitul procedurii

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

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

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

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

SELECTAȚI DIVERSE Vânzări de bunuri și servicii

Ca sursă indicăm partea tabelară a documentelor - tabel Vânzări de Bunuri și Servicii. Declarăm că câmpul de ieșire este câmpul Nomenclatură, care face parte din tabelul sursă. În plus, întrucât același articol de produs, desigur, ar putea fi prezent de mai multe ori în documente, folosim DIVERSE pentru a obține doar rândurile distincte din tabelul de ieșire al interogării.

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

Pentru a limita selecția articolelor doar la articolele din partea tabelară a unui anumit document, folosim parametrul Legăturăîn condiția din cerere ( UNDE...):

SELECTARE Vânzări de bunuri și servicii Bunuri AS Nomenclatură FROM Vânzări de bunuri și servicii Bunuri WHERE Vânzări de bunuri și servicii

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

Un tabel listează mărfurile care urmează să fie expediate din depozit. Un alt tabel arată obligațiile de plată pentru aceste bunuri.

Prin urmare, în 1C, lucrul cu tabele ocupă un loc proeminent.

Tabelele din 1C mai sunt numite și „părți tabulare”. Directoarele, documentele și altele le au.

Interogarea, atunci când este executată, returnează un tabel care poate fi accesat în două moduri diferite.

Prima - mai rapidă - selecție, obținerea de rânduri din ea este posibilă numai în ordine. Al doilea este încă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

//obține masa
Selectare = Query.Run().Select();
// parcurgem toate rândurile rezultatului interogării în ordine
While Select.Next() Loop
Raport (Selectie.Nume);
EndCycle;

//Opțiunea 2 – încărcarea într-un tabel de valori
Solicitare = New Request("SELECT Name FROM Directory.Nomenclature");
//obține masa
Tabel = Query.Run().Unload().
//mai departe putem, de asemenea, itera prin toate liniile
Pentru fiecare rând din ciclul de masă
Raport (String.Nume);
EndCycle;
//sau accesează în mod arbitrar șiruri de caractere
Rând = Table.Find ("Lopata", "Nume");

O caracteristică importantă este că în tabelul care se obține din rezultatul interogării, toate coloanele vor fi strict tastate. Aceasta înseamnă că prin solicitarea câmpului Nume din directorul Nomenclatură, veți primi o coloană de tip String cu o lungime admisă de cel mult N caractere.

Tabel de pe formular (client gros)

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 Controale. În mod similar, puteți selecta Form/Insert Control din meniu.

Datele pot fi stocate în configurație - apoi trebuie să selectați partea 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 părți tabulare, trebuie să extindeți ramura Object.

Când selectați partea 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 cartea/documentul de referință.

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

Aceasta înseamnă că a fost selectat un tabel arbitrar de valori. Nu va adăuga automat coloane și nici 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 unei coloane, puteți specifica numele acesteia (pentru referință în codul 1C), antetul coloanei de pe formular, conexiunea cu atributul părții tabelare (acesta din urmă - dacă nu este selectat un tabel arbitrar, ci un partea tabulară).

În proprietățile tabelului din formular, puteți specifica dacă utilizatorul poate adăuga/șterge rânduri. Un formular mai avansat este caseta de selectare Numai vizualizare. Aceste proprietăți sunt convenabile de utilizat pentru organizarea tabelelor destinate afișării informațiilor, dar nu pentru editare.

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

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

Tabel pe formular (client subțire/gestionat)

Într-un formular gestionat, aceste acțiuni arată puțin diferit. Dacă trebuie să plasați o parte tabelară pe formular, extindeți ramura Obiect și trageți una dintre părțile tabulare spre stânga. Asta e tot!

Dacă trebuie să plasați un tabel de valori, adăugați un nou atribut de formular și în proprietățile acestuia specificați tipul – tabel de valori.

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

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

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

Încărcarea unui tabel în Excel

Orice tabel 1C situat pe formular poate fi tipărit sau încă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ă.