Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Erori
  • Câmpul tabelului 1c setează rândul curent. Cum să obțineți și să ocoliți rândurile selectate ale unei secțiuni tabelare

Câmpul tabelului 1c setează rândul curent. Cum să obțineți și să ocoliți rândurile selectate ale unei secțiuni tabelare

Cum să setați un șir în 8.2 (Formulare gestionate) citiți .

Pentru început, vreau să vă reamintesc că datele secțiunii tabelare a documentului (sau tabelului 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”, acesta este responsabil pentru ce rând este activ.

Pentru a selecta rândul necesar din câmpul tabel, avem nevoie de doi pași:

1. Găsiți linia de care avem nevoie în obiectul de date pe care îl afișează câmpul tabelului
Permiteți-mi să subliniez că avem nevoie de un obiect de date aici. De exemplu, avem un document Implementation of GoodsServices care are o secțiune tabelară „Marfuri” și am decis să activăm al 2-lea rând 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ă pentru elementul Cod este „001”, atunci folosim construcția:


// mai întâi găsim articolul din catalogul Nomenclaturii după cod
// și apoi căutați-l în secțiunea tabelară „Produse”.
NecessaryString = 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 CurrentRow din câmpul tabelului:


// dacă câmpul tabelului se mai numește și Produse
Formular Elements.Products.CurrentRow = RequiredString;

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

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

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

Mai întâi trebuie să înțelegeți că există un obiect care conține date, de exemplu FormDataCollection, ș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 FormDataCollection 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 Identificatorul, deoarece rândurile pot fi modificate în partea vizuală și în date, dar conexiunea nu trebuie întreruptă.

Să vedem asta cu un exemplu:

Formularul are un atribut de tip TK (ValueTable) - între paranteze deoarece tipul real este FormDataCollection

Cerința este afișată pe formular sub forma unui tabel.

Definirea unui rând de valori Tabel cu rândul Tabel curent

Pentru a determina ce linie a 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 linia în TK

LineID = Elements.TZ.CurrentString; // Obține identificatorul din șirul de tabel TK = TK.FindByIdentifier (StringIdentifier);

Setarea rândului curent în tabel

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

StringTZ = FormDataCollection; // de exemplu, să luăm linia 1StringIdentifier = StringTZ.GetIdentifier (); Elements.TZ.CurrentString = LineIdentifier;

Pentru o înțelegere mai convenabilă, puteți descărca

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 linii noi 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

Top articole similare