Contacte

1c sortarea într-un tabel

Pentru a contabiliza bani și bunuri, în afaceri sunt utilizate pe scară largă diverse tabele. 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 liniile 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
Row = 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ă.

Tabelul de valori din platforma 1C 8.3 (8.2) este o colecție universală de valori pe care un dezvoltator o poate folosi în timpul dezvoltării software pentru a-și implementa algoritmii. În esență, un tabel de valori 1C este un set dinamic de valori care au coloane și coloane.

Articole despre alte colecții universale de valori în 1C

Învață programarea în 1C în locul din cartea mea „Programare în 1C în 11 pași”

  1. Cartea este scrisă într-un limbaj clar și simplu - pentru un începător.
  2. Învață să înțelegi arhitectura 1C;
  3. Veți începe să scrieți cod în limbajul 1C;
  4. Stăpânește tehnici de bază de programare;
  5. Consolidează-ți cunoștințele cu ajutorul unei cărți de probleme;

Un ghid excelent pentru dezvoltarea într-o aplicație gestionată 1C, atât pentru dezvoltatori începători, cât și pentru programatori experimentați.

  1. Limbajul de prezentare foarte accesibil și ușor de înțeles
  2. Cartea este trimisă prin e-mail în format PDF. Poate fi deschis pe orice dispozitiv!
  3. Înțelegeți ideologia unei aplicații gestionate 1C
  4. Aflați cum să dezvoltați o aplicație gestionată;
  5. Învățați să dezvoltați formulare 1C gestionate;
  6. Veți putea lucra cu elementele de bază și necesare ale formularelor gestionate
  7. Programarea în cadrul unei aplicații gestionate va deveni clară

Cod promoțional pentru o reducere de 15% - 48PVXHeYu


Dacă această lecție te-a ajutat să rezolvi vreo problemă, ți-a plăcut sau ti-a fost utilă, atunci poți să-mi susții proiectul donând orice sumă:

Puteți plăti manual:

Yandex.Bani - 410012882996301
Web Money - R955262494655

Alăturați-vă grupurilor mele.

Salutări tuturor cititorilor Infostart. Acest articol va fi dedicat problemei creării unui tabel arbitrar de valori sub forma unei aplicații gestionate în mod programatic.

Caracteristicile sarcinii.

Oricine a programat într-o aplicație obișnuită s-a confruntat adesea cu sarcina de a obține un tabel arbitrar de valori pe un formular. Un tabel arbitrar de valori este un tabel al cărui număr și tip de coloane nu sunt cunoscute în prealabil. Adică, ar putea fi 3 coloane, sau poate 6, sau poate 8. Într-o aplicație normală, totul este simplu: puteți plasa elementul „Tabel de valori” pe formularul de procesare, apoi transferați tabelul de valori creat. la acest element în mod programatic. Apoi cu o comandă simplă:

Form Elements.TableField.CreateColumns();

obțineți un tabel de valori gata făcut pe formular. S-ar părea că ar putea fi mai simplu.

Toate acestea erau în aplicația obișnuită. Într-o aplicație gestionată, totul s-a schimbat. Nu este atât de ușor să creezi un tabel arbitrar. Acum trebuie fie să parametrizați rigid tabelul de valori pe formular, fie să îl creați programatic (descrieți, ei bine, aceasta este, de fapt, esența aplicației gestionate în sine). Acesta este ceea ce vom încerca să facem: creați în mod programatic un tabel arbitrar de valori pe o formă controlată.

Rezolvarea problemei.

Primul lucru pe care trebuie să-l facem este să stabilim cum va apărea tabelul pe formular. Principalul lucru este că nu trebuie să creați niciun element de formular în procesare. Îl vom crea programatic, ca întregul tabel. Adică, tabelul va fi descris și creat în momentul deschiderii formularului sau folosind un buton - în funcție de cine are nevoie.

Crearea unui tabel pe formular are loc prin descrierea tabelului de valori ca atribut:
SelectionTypeArray = Matrice nouă; Matrice de SelectionType.Add(Type("Tabel de valori")); ChoiceTypeDescription = New TypeDescription(ChoiceTypeArray); Matrice de detalii = Matrice nouă; Array of Attributes.Add(New Form Atributes("Schedule Table", Descrierea SelectionType, "", "TZN")); Acum trebuie să creăm un tabel cu valorile programului care conține datele. Dacă tabelul de valori este obținut dintr-o interogare, atunci totul este mai mult sau mai puțin în ordine. Dacă tabelul este creat manual, atunci semnificația coloanelor care vor conține numere sau date poate fi creată prin „Descrierea tipurilor”. Ideea este că coloanele din tabelul de valori trebuie să aibă un anumit tip. Dacă, de exemplu, este de așteptat ca utilizatorul să completeze datele în aceste coloane în mod interactiv, atunci nu puteți adăuga o coloană a tabelului de valori pur și simplu cu un nume; aceasta trebuie să aibă un tip. Rețineți - acest lucru este foarte important pentru că... Vom transfera aceste tipuri în tabelul din formular.
Creăm un tabel care conține mai multe coloane:
CD = NewDateQualifiers(DateParts.Time); ArrayKD = Matrice nouă; ArrayCD.Add(Type("Data")); DescriptionTypesTime = New DescriptionTypes(ArrayCD,CD); TZ = New ValueTable;
TK.Columns.Add(„Cu”, DescriptionTypesTime);
TK.Columns.Add(„Înainte”, DescriptionTypesTime);
TK.Columns.Add(„Nume”);
TK.Columns.Add("Notă"); // Nume complet și Notă - rânduri În continuare, vom completa tabelul programului TK cu datele necesare. Primim un tabel TK care conține valorile necesare și este gata pentru a fi transferat la atributul formular creat. Pentru fiecare coloană din TK. Ciclul coloanelor

Array of Attributes.Add(New Form Attributes(Column.Name, Column.ValueType,"ScheduleTable"));
EndCycle;
ChangeDetails(ArrayDetails);
SelectionFieldsTable = Elements.Add("TZN", Type("FormTable"));
SelectionFieldsTable.DataPath = "ScheduleTable";
SelectionFieldTable.Display = TableDisplay.List;

Aceasta este o combinație simplă și masa noastră este gata.

Pentru fiecare coloană din TK. Ciclul coloanelor

NewElement = Elements.Add(Column.Name, Type("FormField"), SelectionFieldTable);
NewElement.View = FormFieldView.InputField;
NewElement.DataPath = "ScheduleTable." + Coloană.Nume;
NewElement.Width = 10;
EndCycle;

Design condiționat, dacă avem nevoie, îl scriem și manual, meniul de comandă - manual. De asemenea, manevrele de masă sunt scrise de mână. De exemplu, pentru a adăuga un handler de evenimente pentru tabelul „Selectare”:

Tabelul SelectionFields.SetAction("Selection","TZNSelection");

Pentru a procesa acest eveniment, este prescrisă o procedură separată sub forma unei proceduri:

&OnClient
Procedura TKNSelection(TK, SelectedRow, Field, StandardProcessing)
//comenzile handlerului EndProcedure

Rețineți că handlerele de tabelă se declanșează pe client și, prin urmare, trebuie să aibă o comandă de indicator al compilatorului

&OnClient

Ei bine, ultimul lucru pe care am vrut să-l adaug este că, după toți acești pași, asigurați-vă că nu uitați să treceți tabelul finit atributului formular:

ValueÂFormAttributes(ToR, "ScheduleTable");

Acesta este ceea ce avem ca rezultat:


Și aici este gestionarea evenimentului „Selectare”:



Postfaţă.

Sper că articolul îi va ajuta pe acei programatori 1C care încep să creeze tabele pe un formular în mod programatic.

Puteți descărca o procesare care creează în mod programatic un tabel de valori și îl afișează într-un formular ușor de gestionat cu comentarii care vă vor ajuta să vă creați propriile tabele.

tabelul de valori 1C

Tabelul valorilor 1C utilizate pentru stocarea și prelucrarea datelor online. Cu un număr mare de rânduri, viteza de recuperare a datelor scade brusc. Mulți programatori subestimează importanța utilizării indicilor atunci când caută informații într-un tabel de valori. Intenționez să vă arăt că utilizarea indicilor accelerează lucrul cu specificațiile tehnice ( tabelul de valori 1C) inainte de 100 de ori.

Deci, în scopuri de testare, am creat un mic cod care funcționează cam așa.

  • 20 de mii de rânduri sunt extrase din partea tabelară a documentului „Implementare” în tabelul de valori. Se numește T1.
  • Am făcut o copie a aceluiași tabel de valori, un al doilea tabel, numit T2. Deci, avem 2 tabele de valori, T1 și T2, fiecare cu 20 de mii de rânduri.
  • Apoi, într-un ciclu de la 1 la 5, facem cinci treceri. Pasajul este următorul:
  • În buclă (care este imbricată în bucla de la 1 la 5), ​​toate rândurile din tabelul de valori T1, toate cele 20 de mii de rânduri, sunt iterate.
  • Pentru fiecare rând curent T1, extragem din tabelul de valori T1 valoarea din coloana „Suma” - acesta este un număr.
  • Căutăm un rând în tabelul de valori T2 care conține în coloana „Sumă” același număr care a fost extras în pasul anterior.
  • Măsurăm timpul fiecărei treceri în milisecunde și îl afișăm pe ecran.

Cu alte cuvinte, parcurgând toate rândurile unui tabel de valori 1C și amintindu-ne valoarea coloanei „Sumă”, căutăm un rând cu aceeași cantitate într-un alt tabel de valori. Se folosește metoda tabelului de valori „Găsiți”. Într-o singură trecere, operațiunea de căutare este efectuată de 20 de mii de ori. Sunt doar cinci treceri. Ele sunt necesare pentru mediarea rezultatelor experimentale.

Mai jos vedeți un tabel cu rezultatele testelor. A doua coloană arată timpul de execuție al fiecăreia dintre cele cinci treceri într-o rulare normală, neoptimizată, iar sub coloană este timpul total de execuție a testului de 279641 milisecunde sau aproximativ 279 de secunde. A treia coloană arată timpul de execuție al aceluiași test, dar cu opțiunea de căutare optimizată. folosind un index pe un tabel de valori. Pentru claritate, am adăugat la tabel timpul petrecut cu crearea indexului (prima linie de sub titlu), este foarte mic, doar 0,047 secunde. Timpul total de execuție a testului în a doua opțiune este de 2781 milisecunde sau 2,78 secunde.

Deci, în prima opțiune avem - 279 de secunde, în a doua opțiune - 2,78 secunde. Diferența este de 100 de ori! Mai mult, o astfel de accelerare se realizează prin adăugarea unei singure linii de cod!

Timp de execuție, milisecunde
Runda de probă nr. Opțiunea 1, obișnuită Opțiunea 2, optimă
timpul pentru a crea index - 47
1 46531 563
2 55516 547
3 60969 531
4 58688 562
5 57937 531
Timpul total 279641 2781
Timpi de accelerare: 100,5541172

Iată exemplul de cod complet:

Procedura knIndexTableValuesPressing(Element) // creează o interogare pentru a prelua date Solicitare = Solicitare nouă; Cerere. Text = „SELECT FIRST 20000 | SalesProducts.Link, | SalesProducts.LineNumber, | SalesProducts.Quantity, | SalesProducts.Amount, | SalesProducts.Product |FROM | Document.Sales.Products AS SalesProducts”; // plasează datele selectate în tabelul de valori T1 T1 = Solicitare. A executa(). Descărcați() ; // creează un tabel de valori T2 prin copierea conținutului tabelului de valori T1 T2 = T1. Copie() ; StartAddIndex = GetTimeInMilliseconds() ; T2. Indici. Adaugă(„Suma”); // ACEASTA ESTE CEA MAI IMPORTANTĂ LINIE, ADĂUGÂND UN INDEX PE COLONA „SUMĂ” ConAddIndex = GetTimeInMilliseconds() ; A raporta ( „Timp de adăugare a indexului”+ (CondIndexAdding - StartIndexAdding) + "ms" ); A raporta ( "Total rânduri din tabelul nostru de valori: "+ T2. Cantitate() ) ; // organizăm un ciclu de cinci treceri, în esență rulăm testul de cinci ori Pentru Count = 1 To 5 Cycle Start = GetTimeInMilliseconds(); // amintește-ți ora de începere FoundOnce = 0; Pentru fiecare pagină a ciclului T1 // iterează prin toate rândurile tabelului T1 Gestionarea întreruperilor utilizatorului() ; // căutați un rând în tabelul T2 în care coloana este „Sumă” // se potrivește cu valoarea curentă „Suma” din tabelul T1 FoundString = T2. Găsiți (Suma paginii, „Suma”); // Dacă o potrivire este fixă ​​(și găsit), creșteți contorul șirurilor găsite Dacă FoundString<>Nedefinit Apoi FoundOnce = FoundOnce + 1 ; EndIf ; EndCycle ; // obține timpul de finalizare a ciclului de căutare prin rândurile tabelului T1 Sfârșit = GetTimeInMilliseconds() ; // raportează numărul de trecere a testului, numărul de potriviri găsite și timpul de execuție în milisecunde Raport („Nr. pasaj” + Sch); Raport („Timpurile găsite:” + Orele găsite); A raporta ( "Perioada de graţie "+ String (End-Start) + "milisecunde"); EndCycle ; // plec pentru a face următoarea trecere Sfârșitul procedurii


Exemplul este comentat și trebuie să fie clar. Principalul lucru este în linie T2.Indici.Add(„Suma”); Informam 1C că vom efectua o operațiune de căutare în coloana „Sumă” din tabelul de valori T1 și solicităm crearea unui index pe această coloană. Sistemul creează un index și apoi îl folosește automat pentru toate operațiunile de căutare folosind coloana „Sumă”. De remarcat că indexul creat este valabil doar pentru căutare în coloana „Sumă”, deoarece a fost creat pentru această coloană. Dacă avem nevoie de alte coloane pentru căutare, ar trebui să creăm indecșii corespunzători, indicând numele coloanelor dorite.

Putem crea mai mulți indici pe același tabel dacă vom căuta valori pentru coloane diferite. Indicii sunt stocați în colecția de indici din tabelul de valori 1C, care decurge din cod: TK.Indexes.Add(ColumnName)

Dacă trebuie să căutăm după o combinație de valori ale coloanei, de exemplu, simultan după coloanele „Cantitate” și „Sumă”, ar trebui să creăm un index compus: T2.Indici.Add(„Cantitate, Sumă”) Un astfel de index va fi folosit atunci când căutăm o valoare într-un tabel folosind metoda FindRows(). De exemplu:

Array of FoundStrings = T2.FindStrings(New Structure ("Cantitate, Sumă", SearchedQuantity, SearchedSum));

Folosit în textul exemplu.
Cu stimă, Degtyarev Roman.

Cum să înveți să programezi în 1C de la zero?

Cum să lucrezi ca programator 1C și să câștigi până la 150.000 de ruble pe lună?

INREGISTREAZA-TE GRATUIT

CURS DE 2 SĂPTĂMINI

„PROGRAMARE ÎN 1C PENTRU ÎNCEPĂTORI”

Cursul va fi trimis pe e-mail. Deveniți un programator completând sarcini pas cu pas.

Pentru a participa ai nevoie doar de un computer și de internet

Acces gratuit la curs:

Sp-force-hide ( display: none;).sp-form ( display: block; background: #eff2f4; padding: 5px; width: 270px; max-width: 100%; border-radius: 0px; -moz-border -radius: 0px; -webkit-border-radius: 0px; font-family: Arial, "Helvetica Neue", sans-serif; background-repeat: nu-repeat; fundal-poziție: centru; fundal-dimensiune: automat;) .sp-form input (afișare: inline-block; opacitate: 1; vizibilitate: vizibil;).sp-form .sp-form-fields-wrapper (marja: 0 auto; lățime: 260px;).sp-form .sp -form-control ( fundal: #ffffff; chenar-culoare: #cccccc; chenar-stil: solid; chenar-lățime: 1px; font-size: 15px; padding-left: 8.75px; padding-right: 8.75px; chenar -radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; înălțime: 35px; lățime: 100%;).sp-form .sp-field etichetă (culoare: #444444; font- dimensiune: 13px; stil font: normal; greutate font: bold;).sp-form .sp-button ( chenar-rază: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; culoare de fundal: #f4394c; culoare: #ffffff; lățime: 100%; greutate font: 700; stil font: normal; familie de fonturi: Arial, "Helvetica Neue", sans-serif; caseta-umbra: niciuna; -moz-box-shadow: niciuna; -webkit-box-shadow: niciuna; fundal: gradient liniar (în sus, #e30d22 , #f77380);).sp-form .sp-button-container ( text-align: center; lățime: automat;)

(Acest articol aparține seriei de articole 1C de la zero; programare 1C de la zero; tabel cu valorile 1C)

În ultimul articol am vorbit despre creare tabele de valori 1sși modalități de a accesa datele pe care le conține.

Să extindem aceste cunoștințe pentru a face mai convenabil lucrul cu tabelul de valori. Să începem cu câteva proprietăți utile ale tabelului de valori.

1. Repetați rândurile tabelului de valori folosind indici de rând (numerele rândurilor)

Metodă ValueTable.Quantity()- returnează numărul de rânduri din tabelul de valori.

Vă reamintesc că dacă metoda ValueTable.Quantity() a arătat că în tabel sunt 5 rânduri, atunci indicii (numerele) acestor rânduri sunt: ​​0, 1, 2, 3, 4.

Să presupunem că avem tabelul valorilor 1C cu coloana „Numele clientului”

Dacă dorim să iterăm peste toate rândurile unui tabel de valori folosind un index de rând, trebuie să folosim un antet de buclă, ca în exemplul următor. În ea afișăm conținutul coloanei „Numele clientului” pentru fiecare rând, adică, de fapt, tipărim întreaga coloană cu numele de familie ale clienților.
Asa de:

Pentru RowNumber = 0 By OurTable.Quantity() - 1 Loop // aici rândurile sunt repetate CurrentLastName = OurTable[RowNumber].CustomerLastName; // „Customer’s LastName” este numele coloanei care conține numele clientului Report(CurrentLastName); EndCycle;

Vă rugăm să rețineți că creștem contorul de bucle la o valoare egală cu numărul de rânduri din tabel minus unu: OurTable.Quantity() - 1

Să aflăm ce înseamnă codul: OurTable[RowNumber]. Acesta este accesul la un anumit rând al tabelului de valori prin indexul (numărul).

În exemplul următor voi arăta cum OurTable[RowNumber] ne returnează un obiect care are tip „ValueTableRow”.
Într-o variabilă suplimentară am pus rezultatul accesării liniei după număr: TableRow = OurTable[RowNumber]

Apoi, după ce a primit un obiect - un rând al unui tabel de valori sub forma unei variabile RowTable, putem lucra separat cu acest obiect șir. Exemplul de mai jos face același lucru ca exemplul de mai sus, doar exemplul de jos folosește o variabilă „extra”. RowTable

Pentru RowNumber = 0 By OurTable.Quantity() - 1 Loop // aici rândurile sunt repetate TableLine = OurTable[RowNumber].CustomerLastName; // obțineți rândul curent al tabelului de valori după indexul (numărul) CurrentLastName = TableLine.ClientLastName; // „Customer’s LastName” este numele coloanei care conține numele clientului Report(CurrentLastName); EndCycle;

Dacă în interiorul buclei scriem următorul cod: Raport (TableRow)- acest cod NU va afișa date din rândul curent al tabelului de valori (de exemplu, numele de familie al clientului etc.).

Totul este corect, deoarece variabila RowTable reprezintă un obiect și datele sunt accesate prin proprietățile și metodele acestui obiect - și dacă scrieți Raport (TableRow), apoi vor fi afișate informații despre tipul variabilei RowTable: ValueTableRow.

De exemplu, cod Rând tabel.Numele clientuluiînseamnă doar acces la datele stocate în coloana „Numele clientului” din rândul obiectului curent. Acesta este ceea ce am folosit în exemplu pentru a afișa numele de familie ale tuturor clienților stocați în tabelul de valori. Parcurgeți toate rândurile și afișați aceleași nume pe ecran unul câte unul.

2. Repetați rândurile tabelului de valori folosind bucla de colecție „Pentru fiecare...”

Pentru a repeta peste șiruri Tabelele cu valori 1C putem folosi o altă versiune a buclei. Aceasta este o buclă specială pentru iterare prin elementele obiectelor de colecție. Tabelul cu valori 1c este așa-numitul Colectie. În acest caz, o colecție de șiruri.

Și orice colecție din 1C poate fi iterată folosind o buclă:

Pentru fiecare din ciclul...... acțiune din cadrul ciclului EndCycle

Să afișăm numele tuturor clienților din toate rândurile tabelului, iterând prin colecția de rânduri din tabelul de valori:

Pentru fiecare TableRow din raportul OurTable Loop(TableRow.CustomerLastName); Sfârșitul ciclului

Când am repetat prin colecție, nu am avut nevoie de un numărător de rând (index). Forma specială a ciclului a ajutat să se facă fără un contor. La o variabilă arbitrară RowTable De fiecare dată când trece bucla, un obiect rând de tabel de valori este atribuit automat.

Astfel in RowTable Pe măsură ce bucla se execută, toate rândurile tabelului nostru de valori se încadrează într-un rând. Și tot ceea ce facem este ca pentru fiecare rând care ni s-a transmis, să afișăm conținutul coloanei „Numele clientului” folosind construcția Raport (TableRow.CustomerLastName);

3.Și acum: repetarea materialului.

Asa de, Tabelul de valori 1C este o colecție de șiruri. Cineva a strâns șiruri, le-a pus într-o grămadă și s-a dovedit a fi o întreagă colecție de șiruri - pe care le-a numit un tabel de valori.

Numai că aceasta este o colecție de mai mult decât șiruri de text obișnuite. Aceasta este o colecție de obiecte de tip RowTableValues. Și acest obiect rând separat stochează date pentru fiecare coloană din rândul curent. Acesta stochează numele de familie al clientului, înălțimea clientului sau orice altceva a fost necesar.

Puteți accesa un rând de tabel de valori prin indexul său, care începe de la zero. Utilizarea codului MyFourthRow = MyTable- obținem al patrulea rând al tabelului de valori, deoarece numerotarea rândurilor începe de la zero: 0, 1, 2, 3.

Determinăm numărul de linii folosind metoda MyTable.Quantity(). Nu uitați parantezele de la sfârșit, deoarece numim metoda fără parametri.

Să ne amintim că putem itera toate rândurile tabelului de valori folosind o buclă în care enumerăm indicii de rând (de la zero la (Număr de rânduri minus unu)), sau putem folosi o buclă care iterează prin colecții .

Ultimul lucru: Când iterez peste o colecție, cum obțin numărul de rând al tabelului de valori?
Puteți obține numărul rândului curent apelând metoda Index() pentru tabelul de valori, căruia îi trecem un obiect rând.

Exemplul de mai jos va afișa numerele tuturor rândurilor din tabelul de valori 1C:

Pentru fiecare rând de tabel din raportul OurTable Loop(OurTable.Index(TableRow)); Sfârșitul ciclului

Materialele vor fi continuate în următoarele articole.....

Degtyarev Roman.

Cum să înveți să programezi în 1C de la zero?

Cum să lucrezi ca programator 1C și să câștigi până la 150.000 de ruble pe lună?

INREGISTREAZA-TE GRATUIT

CURS DE 2 SĂPTĂMINI

„PROGRAMARE ÎN 1C PENTRU ÎNCEPĂTORI”

Cursul va fi trimis pe e-mail. Deveniți un programator completând sarcini pas cu pas.

Pentru a participa ai nevoie doar de un computer și de internet

Acces gratuit la curs:

Sp-force-hide ( display: none;).sp-form ( display: block; background: #eff2f4; padding: 5px; width: 270px; max-width: 100%; border-radius: 0px; -moz-border -radius: 0px; -webkit-border-radius: 0px; font-family: Arial, "Helvetica Neue", sans-serif; background-repeat: nu-repeat; fundal-poziție: centru; fundal-dimensiune: automat;) .sp-form input (afișare: inline-block; opacitate: 1; vizibilitate: vizibil;).sp-form .sp-form-fields-wrapper (marja: 0 auto; lățime: 260px;).sp-form .sp -form-control ( fundal: #ffffff; chenar-culoare: #cccccc; chenar-stil: solid; chenar-lățime: 1px; font-size: 15px; padding-left: 8.75px; padding-right: 8.75px; chenar -radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; înălțime: 35px; lățime: 100%;).sp-form .sp-field etichetă (culoare: #444444; font- dimensiune: 13px; stil font: normal; greutate font: bold;).sp-form .sp-button ( chenar-rază: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; culoare de fundal: #f4394c; culoare: #ffffff; lățime: 100%; greutate font: 700; stil font: normal; familie de fonturi: Arial, "Helvetica Neue", sans-serif; caseta-umbra: niciuna; -moz-box-shadow: niciuna; -webkit-box-shadow: niciuna; fundal: gradient liniar (în sus, #e30d22 , #f77380);).sp-form .sp-button-container ( text-align: center; lățime: automat;)



Ți-a plăcut articolul? Împărtășește-l