1 cum să obțineți rândul curent al părții tabelare. Cum să obțineți rândul curent al unei secțiuni de tabel

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

  • Directoare
  • Documentație
  • 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 fiecare

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ă a liniilor selectate, utilizați următorul cod:

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

SelectedRows = FormElements. TableFieldName. SelectedRows;

Pentru fiecare rând din bucla rândurilor selectate

//conținutul buclei

EndCycle ;

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. Clar() ;

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

Pentru fiecare CurrentRow From TabularPart Loop
Elemente de formă. TableFieldName. SelectedLines. Adăugați(Rândul curent);
EndCycle ;

Cum să ștergeți partea de masă

TabularPart. Clar() ;

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

Linia curentă este perioada în care are utilizatorul acest moment se află cursorul. Pentru a-l obține, trebuie să accesați elementul de control din formularul care este asociat cu partea tabelară.

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

Elemente de formă. TableFieldName. Data curenta;

Pentru formularele gestionate:

Elemente. TableFieldName. Data curenta;

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. Adăuga() ;

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.

Linie nouă. 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 TabularField.
  • Linie nouă- boolean. Conține valoare Adevărat, dacă se adaugă linie nouă partea tabelară ș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ă in 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
Întoarcere;
EndIf ;

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

Mai întâi trebuie să înțelegeți că există un obiect care conține date, de exemplu, Form DataCollection, și există un obiect care afișează datele vizual - un tabel.

Tabelul are doar rândul curent; nu poate fi folosit pentru a afla toate valorile FormCollectionData existente cu care este asociat. La rândul său, FormDataCollection nu are un rând curent. Pentru a conecta aceste obiecte în 1C, se folosește un Identificator, deoarece ordinea rândurilor poate fi schimbată atât în ​​partea vizuală, cât și în date, dar conexiunea nu trebuie întreruptă.

Să ne uităm la asta cu un exemplu:

Formularul are o specificație de tip (Tabel de valori) - în paranteze deoarece tipul real este FormDataCollection

Detaliile sunt afișate pe formular sub forma unui Tabel.

Definirea unui rând de tabel de valori cu un rând de tabel curent

Pentru a determina ce rând al TK este curent, mai întâi trebuie să obțineți identificatorul de rând în tabel, apoi să îl utilizați pentru a găsi rândul din TK

RowIdentifier = Elements.TZ.CurrentRow; // Obține identificatorul în tabel LineTZ = TZ.FindByIdentifier(StringIdentifier);

Setarea rândului curent în tabel

Pentru a seta rândul curent al tabelului, trebuie să procedați invers. Mai întâi obțineți identificatorul TK, apoi setați rândul curent al tabelului pe acesta.

LineTZ = FormDataCollection; // de exemplu, luați linia 1String Identifier = LineTZ.GetIdentifier(); Elements.TK.CurrentRow = RowIdentifier;

Pentru o înțelegere mai ușoară, puteți descărca

Cum se instalează o linie în 8.2 ( Formulare gestionate) citit .

Pentru început, aș dori să vă reamintesc că datele din partea tabelară a documentului (sau tabelul de valori) și câmpul tabelar sunt obiecte diferite. Pentru a face unele acțiuni vizuale, lucrăm cu un câmp de tabel. În acest caz, vom folosi proprietatea „CurrentRow”, care este responsabilă pentru ce rând este activ.

Pentru a selecta rândul de care avem nevoie în câmpul tabel, avem nevoie de doi pași:

1. Găsiți rândul de care avem nevoie în obiectul de date pe care îl afișează câmpul tabelului
Aș dori să subliniez că ceea ce este necesar aici este un obiect de date. De exemplu, avem un document Vânzări de bunuri și servicii care are secțiune tabelară„Produse” și am decis să activăm a doua linie pe formularul de document. Apoi, în modulul formular document vom scrie:


// a doua linie are un index de unu
RequiredString = Produse;

Sau știm că în a doua linie din coloana Nomenclatură elementul Cod este „001”, apoi folosim construcția:


// găsiți mai întâi elementul de director Nomenclatură după cod
// și apoi căutați-l în tabelul „Produse”.
RequiredLine = Products.Find(Directories.Nomenclature.FindByCode("001"));

2. Setați valoarea liniei curente la linia găsită
Acum trebuie să atribuim valoarea variabilei RequiredRow proprietății câmpului tabelului CurrentRow:


// dacă câmpul nostru de tabel se numește și Produse
Form Elements.Products.CurrentRow = RequiredRow;

// dacă câmpul tabelului se numește TableField1

Ca rezultat, liniile de cod pot arăta astfel:

RequiredLine = Products.Find(Directories.Nomenclature.FindByCode("001"));
Form Elements.TableField1.CurrentRow = RequiredRow;

Acțiune