1s 8 introduceți un rând în tabelul de valori. Ce metode există și cum să căutați mai multe valori simultan

19.11.2019 Sfat

Un tabel de valori este un obiect universal specific conceput pentru a stoca date într-o reprezentare tabelară. Diferența cheie dintre un tabel și obiectele aplicației este lipsa legării la tabelele fizice ale bazei de date. Tabelul de valori există doar în memorie cu acces aleator, care, pe de o parte, oferă oportunități unice, iar pe de altă parte, impune anumite restricții. Cu toate acestea, posibilitățile de interacțiune cu tabelul sunt comparabile cu interacțiunea cu obiectele care există efectiv în baza de date.

Din punct de vedere istoric, tabelul de valori din 1C are un dublu scop, fiind un analog virtual al tabelelor existente, dar în același timp este și un element de control. Odată cu trecerea la o aplicație gestionată, o mare parte din această funcționalitate a fost depreciată, dar acum poate fi și un element de interfață cu utilizatorul, dar cu unele limitări semnificative.

Structura unui tabel de valori ca obiect

Proprietățile unui tabel de valori sunt determinate de combinații a două colecții predefinite: coloanele și rândurile sale.

Tabelul de valori Coloane

O coloană a unui tabel de valori este proprietatea sa definitorie. Este setul de coloane din tabel care determină structura acestuia. Coloanele corespund câmpurilor tabelelor fizice sau celor familiare interfața cu utilizatorul coloane ale unei secțiuni tabelare sau ale unui jurnal de documente. O coloană poate avea un nume intern, un tip de valoare și un titlu care este afișat atunci când lucrează interactiv cu tabelul.

Deoarece coloanele sunt o colecție de obiecte, puteți adăuga, șterge și edita coloane.

Rând tabel de valori

Din perspectiva interfeței software, șirurile sunt o colecție separată încorporată într-un tabel de valori. Ele sunt analoge cu înregistrările din tabelele fizice, adică rândurile familiare utilizatorului într-o secțiune tabelară sau jurnal de documente. Fiecare rând individual este un obiect cu un set de proprietăți denumite, ale căror nume corespund cu numele coloanelor din tabel.

Astfel, interacțiunea cu un șir este foarte asemănătoare cu interacțiunea cu alte obiecte. Puteți citi și scrie proprietățile acestuia, inclusiv folosind funcția predefinită „FillPropertyValues()”. Deoarece rândurile sunt colecția principală a tabelului de valori, metoda „Clear()” este folosită pentru a șterge toate rândurile din tabel.

Creați un tabel de valori

Există multe modalități de a obține un tabel de valori gata de utilizare. Să ne uităm la unele dintre ele. Fiecare exemplu va fi furnizat ca liste de coduri cu comentarii.

Crearea unui tabel folosind constructorul

Metoda principală care vă permite să creați exact tabelul de care are nevoie dezvoltatorul este, din păcate, cea mai laborioasă, deoarece necesită specificarea manuală a tuturor proprietăților necesare tabelului.

DemoTable = New ValueTable; // În primul rând, inițializam TK-ul // În continuare, determinăm parametrii necesari pentru coloanele noi și îi adăugăm în colecție // Crearea coloanei „Nomenclatură” Nume = „Nomenclatură”; ValueType = New TypeDescription("DirectoryLink.Nomenclature"); Titlu = „Nomenclatură (produs)”; DemoTable.Columns.Add(Nume, ValueType, Header); // Crearea coloanei „Cantitate” Nume = „Cantitate”; ValueType = New TypeDescription(„Număr”); DemoTable.Columns.Add(Nume, ValueType); // Ca urmare a acestor manipulări, am creat un tabel gol cu ​​coloane tastate // Dacă trebuie să utilizați o tastare mai precisă a tipurilor primitive, atunci ar trebui să utilizați sintaxa extinsă a constructorului „Descrierea tipurilor”

Crearea unui tabel prin copiere

Dacă aveți la îndemână o referință cu o structură și/sau o compoziție adecvată, puteți copia sau descărca tabelul de referință cu valori. Dacă tabelul de referință este un alt tabel, atunci trebuie să utilizați metoda „Copiați tabelele de referință”. Dacă ai de-a face cu parte tabulară sau un set de intrări de registru, trebuie să utilizați metoda „Încărcați tabelul de valori”. Dacă aveți nevoie doar de structură, puteți utiliza metoda „Copiere coloane”.

// Opțiune cu copierea tuturor rândurilor din standardul de specificații tehnice dar păstrând doar cele două coloane specificate Coloanele Standardului = "Nomenclatură, Cantitate"; DemoTable = TableEtalon.Copy(, ColumnsEtalon); // Opțiune cu copierea rândurilor preselectate din standardul de specificații tehnice, păstrând în același timp cele două coloane specificate.Rândurile standardului = SelectIntoArrayThe Rows We Need From the Table of the Standard(); ColumnsStandard = "Nomenclatură, Cantitate"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // Opțiunea de copiere a rândurilor din standardul de specificații tehnice folosind filtrul specificat, păstrând o coloană „Nomenclatură” // Vor fi selectate toate rândurile în care valoarea din coloana Cantitate este 0, doar coloana Nomenclatură Row Selection = New Structure(" Cantitatea" va apărea în tabelul rezultat , 0); ColumnsStandard = "Nomenclatură"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // Opțiune cu o copie completă a tabelului și ștergerea ulterioară a unui rând cu valoarea câmpului cantității egală cu zero și ștergerea întregii coloane „Cantitate” Row Selection = New Structure(„Cantitate”, 0); ColumnsStandard = "Nomenclatură"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); TableRow = DemoTable.Find(0, "Cantitate"); DemoTable.Delete(TableRow); DemoTable.Columns.Delete("Cantitate"); // Opțiuni similare și modificările acestora pot fi aplicate părților tabelare și seturilor de înregistrări de registru

Crearea unui tabel cu o interogare

Dacă un șablon al tabelului de care aveți nevoie există în baza de date, atunci puteți utiliza o interogare pentru creație rapidă tabele cu structura cerută.

// Un exemplu de creare a unui tabel gol pe baza structurii registrului de acumulare // Este ușor de ghicit că în acest fel puteți obține și un tabel umplut Query = New Query("SELECT FIRST 0 * From Accumulation Register. Produse in depozit"); RequestResult = Request.Execute(); DemoTable = Query Result.Unload(); // Un exemplu de creare a unui tabel gol folosind tipuri și nume de câmp specificate explicit Interogare = Interogare nouă; Query.Text = "SELECT TOP 0 | Value(Directory.Nomenclature.EmptyLink) AS Nomenclature, | EXPRESS(0 AS NUMBER(15, 3)) AS Cantitate"; RequestResult = Request.Execute(); DemoTable = Query Result.Unload(); // IMPORTANT! Nu uitați că tipurile de valori ale coloanei obținute dintr-o solicitare conțin întotdeauna tipul Null // Astfel, TK-ul creat de cerere are întotdeauna tipuri de coloane compuse

Concluzie

În acest scurt articol, am analizat proprietățile de bază și tehnicile practice pentru crearea unui tabel de valori, suficient pentru înțelegere și începerea utilizării. Obiectul tabelului de valori în sine este atât de multifațetat încât descriere detaliata capabilitățile sale necesită scrierea unui articol separat despre tehnici și metode de lucru.

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 spatiu liberîn 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ă.

Căutați în tabelul cu valorile 1C

Ce metode există și cum să căutați mai multe valori simultan.

Există două metode speciale pentru căutarea unui tabel de valori:

1. Găsiți

TVHorizon = Directories.Nomenclature.FindByName("TVHorizon");
FoundString = TZNomenclature.Find(TVHorizon);
//Putem specifica, de asemenea, în ce coloane să căutăm pentru a accelera căutarea
FoundString = TZNomenclature.Find(TVHorizon, „Nomenclatură”);

Această metodă returnează primul rând găsit cu valoarea dorită sau Nedefinit dacă nu îl găsește. Prin urmare, este convenabil de utilizat pentru căutare valori unice, deoarece în caz contrar, când se găsește o valoare, va trebui să o eliminați din tabel pentru a găsi următoarea.

Pentru a evita această problemă, există următoarea metodă care vă permite să găsiți o serie de șiruri de caractere potrivite:

2. FindStrings


Selection Structure.Insert("Nomenclatura", TVHorizon); // mai întâi indică coloana unde să cauți, apoi ce să cauți.

Această metodă returnează întotdeauna o matrice, dar poate fi goală dacă nu se găsește nimic. Și această metodă, ca și cea anterioară, returnează rândurile tabelului de valori înseși, și nu valorile înseși într-o matrice separată. Prin urmare, prin modificarea valorilor din șirul matricei sau, ca în metoda anterioară, pentru șirul găsit, veți modifica valoarea din tabelul de valori procesat.

Un alt lucru bun despre această metodă este că poate căuta simultan prin mai multe coloane ale tabelului de valori:


SelectionStructure = Structură nouă;
Selection Structure.Insert("Nomenclatura", TVHorizon);
Selection Structure.Insert("Cantitate", 10);
FoundArray of Rows = TZNomenclature.FindLines(SelectionStructure);

Singurul negativ, după cum puteți vedea, este că nu puteți utiliza alte tipuri de comparații, altele decât „egal”

Tabelul de valori din platforma 1C 8.3 (8.2) este o colecție universală de valori pe care un dezvoltator o poate folosi atunci când dezvoltare de software pentru a vă implementa algoritmii. În esență, tabelul de valori 1C este set dinamic valori care au coloane și coloane.

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

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

  1. Cartea este scrisă într-un mod clar și într-un limbaj simplu- pentru un incepator.
  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ă către e-mail V 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. Învață să te dezvolți formulare gestionate 1C;
  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.