Exemple de programare cu tabelul de valori în sistemul de 1C Enterprise 8, toate pentru începători și
Bună ziua, dragi cititori! Pe acest site, a fost descris exemple de lucru cu tabelul de valori. De exemplu, este scris cum să se alăture două tabele de valori. Astăzi voi împărtăși câteva exemple din tabelul de programare a valorilor în 1C: Enterprise 8.
Selectarea valorilor de tip în tabelul de valoare
// Crearea coloana dorită.
TablitsaZnacheny. Coloana. Adăugați ( "NomerStroki");
TablitsaZnacheny. Coloana. Adăugați ( "subkonto");
// line numarul 1.
Newline = TablitsaZnacheny. Adăugați ();
NEWLINE. NomerStroki = "1";
NEWLINE. Subkonto = Directoare. Nomenclatura. NaytiPoKodu ( "1");
// linia numărul 2.
Newline = TablitsaZnacheny. Adăugați ();
Newline [ "NomerStroki"] = 2;
Newline [ "subkonto"] = Referințe. OsnovnyeSredstva. NaytiPoKodu ( "1");
// numărul liniei 3.
Newline = TablitsaZnacheny. Adăugați ();
Newline [ "NomerStroki"] = 3;
Newline [ "subkonto"] = Referințe. OsnovnyeSredstva. NaytiPoKodu ( "2");
// Apoi, creați o valoare tabel pentru selectarea matrice
TablitsaOS = TablitsaZnacheny. Copiere (MassivStrok "NomerStroki, subkonto.");
// afișează rezultatele într-un birou casetă de mesaj
Pentru fiecare ciclu de StrokaTZ TablitsaOS
Raport ( "NomerStroki -" + + StrokaTZ NomerStroki.
„; Subkonto - „+ StrokaTZ. Subkonto);
Rezultatul este un rând al unui tabel de valori cu tipul de valoare „OsnovnyeSredstva“ coloana „subkonto“:
Ca și în ciclul pentru a selecta un singur rând dintr-un tabel de valori?
Se întâmplă adesea că trebuie să se plimbe prin rândurile unui tabel de valori în care există linii, de exemplu, cu aceeași valoare a nomenclaturii. Și toate acestea, de exemplu, în mijlocul ciclului trebuie să treacă linia de valorile din tabel cu aceeași nomenclatură. Pentru ca acest lucru să se întâmple, puteți utiliza o listă de valori.
// Start a codului ...
Dacă SpisokNomenklatury. NaytiPoZnacheniyu (String. Nomenclatură) =
apoi nedefinită
// Dacă nu există o astfel de nomenclatură adaugă o listă de valori și
// continua sa lucreze la ...
SpisokNomenklatury. Adăugați (Nomenclator String.);
altfel
// Dacă un astfel de interval este găsit, atunci du-te la începutul ciclului
continua;
ENDIF;
// Continuarea orice cod ...
Cum de a verifica prezența valorilor coloanelor în rândul tabelului?
Cea mai simplă opțiune de a face acest lucru - pentru a folosi o construcție „Încercarea de excepție“, de exemplu, pentru a încerca pentru a obține valoarea într-un rând în această coloană, iar în cazul în care are loc o excepție, aceasta înseamnă că difuzoarele nu sunt. Puteți scrie următoarea funcție:
Cu toate acestea, utilizarea de proiectare „Încercarea de excepție“ nu este un ton bun în programare 1C
(Acest lucru provoacă dificultăți în depanare și prăbușirea tranzacției). De aceea, propun un alt mod:
In exemplul nostru, „StrokaTZ“ variabilă este un obiect de tip „StrokaTablitsyZnacheny“, care este o metodă de „proprietar ().“ Proprietarul șir de caractere este „TablitsaZnacheny“, care are o „coloană“ proprietate de tip „KollektsiyaKolonokTablitsyZnacheny“. Astfel, vom obține un obiect de tip „KollektsiyaKolonokTablitsyZnacheny“, care conține o metodă „Find ()“. Cu această metodă, putem găsi valorile de coloană ale numelui tabelă. În cazul în care coloana este specificat, se returnează o coloană de tip „KolonkaTablitsyZnacheny“, dar în cazul în care nu există, ea revine la „nedefinită“. Prin urmare, în cazul nostru, este afișat următorul mesaj:
Căutați în tabelul de valori în două sau mai multe câmpuri
Luați în considerare prima cale - prin obiecte 1C limba sistem integrat: Intreprindere:
// Asigurați-vă că pentru a specifica tipul de coloană,
// pentru a evita erorile de „tip nu poate fi selectat în interogare“
// atunci când interogarea de la un tabel de valori
New KvalifikatoryStroki COP = (100);
CN = New KvalifikatoryChisla (3);
OpisanieTipovS = New OpisanieTipov ( "string" al COP.);
OpisanieTipovCh = New OpisanieTipov ( "număr" CN.);
// Crearea coloana dorită.
TablitsaZnacheny. Coloana. Adauga ( "Ultimul Name" OpisanieTipovS.);
TablitsaZnacheny. Coloana. Adăugați ( "Age" OpisanieTipovCh.);
// numarul angajatului 1.
Newline = TablitsaZnacheny. Adăugați ();
NEWLINE. Nume = "Smith";
NEWLINE. Vârsta = 27;
// numarul angajatului 2.
Newline = TablitsaZnacheny. Adăugați ();
NEWLINE, [ 'Name'] = "Sidorov";
Newline [ "Age"] = 64;
// pentru a căuta obiecte pe masă
Selectarea = structură nouă;
Selecție. Paste ( "Last Name", "Ivanov.");
Selecție. Paste ( "Varsta". 27);
String = TablitsaZnacheny. FindRows (selecție);
// Returnează o matrice
În cazul în care șirul. Număr ()> 0 Apoi
Raport ( „*** Primul mod - prin obiecte limbaj încorporate ***“);
Raport ( "Ultimul nume:" + siruri de caractere [0] + Prenume "Vârsta:" + siruri de caractere [0] Vârsta ..);
ENDIF;
Ca urmare, în prima metodă, prin obiecte limbaj încorporate, obținem:
Să considerăm a doua modalitate - prin 1C interogări: Enterprise. Aici vom folosi un tabel de valori pe care le-am creat anterior, în prima metodă:
Cerere. UstanovitParametr ( "TablitsaZnacheny" TablitsaZnacheny.);
Cerere. UstanovitParametr ( "Last Name", "Sidorov.");
Cerere. UstanovitParametr ( "Age". 64);
Rezultat = Request. Run (). Unload ();
// Returnează tabelul de valoare
În cazul în care rezultatul. Număr ()> 0 Apoi
Raport ( „*** A doua modalitate - prin interogările ***“);
Raport ( "Name:". + Scor [0] + Nume
"Vârsta:" + rezultat [0]. Vârsta);
ENDIF;
Ca urmare, a doua metodă, prin interogări obține
Ambele metode ne vor ajuta să găsească rânduri din tabelul de două câmpuri de valoare.
Dar, după cum poate ați ghicit, puteți adăuga căutarea de trei, patru sau mai multe câmpuri.
De ce eroare „tip nu poate fi selectat în interogare“ atunci când se execută o interogare la un tabel de valori?
Dacă nu specificați tipul de valori de coloană când a fost creat așa cum este descris în căutarea subtitrare într-un tabel de valori în două sau mai multe câmpuri. și scrie:
Apoi, eroarea va fi afișată atunci când executați interogarea:
Prin urmare, pentru a evita această eroare ar trebui să fie scris după cum urmează:
Cum să obțineți valorile numărului rând de tabel?
Necesitatea de a utiliza „Index“ metoda tabelelor de valoare (indexOf), care primește indicele rând în liniile de colectare din tabel de valori:
Cum de a elimina o linie de la TablitsyZnacheny în 1S8?
Să presupunem că doriți să ștergeți toate rândurile dintr-un tabel de valori care conțin litera „G“, în a doua coloană.
O procedură similară pentru eliminarea corespunzătoare a rândurilor din fișierul text este descris aici.
Acest blog este citit de mai mult de 3.000 de oameni
- citește și tu!