Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Recenzii
  • 1c completați un document de foaie de calcul din tabelul de valori.

1c completați un document de foaie de calcul din tabelul de valori.

Pentru a încărca partea tabelară (a unui document, carte de referință, procesare etc.) în tabel de valori trebuie folosită metoda Descărca(). Când îl utilizați, acesta va fi creat tabel de valori cu același set de coloane (aceleași tipuri de date) și cu aceleași date ca în parte tabulară. Trebuie remarcat faptul că acest tabel nu are nicio legătură cu parte tabulară iar modificarea datelor din acesta nu va duce la modificarea datelor din el; de fapt, este o copie a acesteia, dar cu proprietăți și metode ușor diferite.

De asemenea, dacă aveți un tabel cu același set de coloane ca în partea tabelară, atunci datele din tabelul de valori pot fi încărcate în partea tabelară. În acest scop se utilizează metoda Descarca(<Таблица>) , parte tabelară. Acest lucru poate fi necesar dacă datele de încărcat sunt obținute la cerere. Și în loc să parcurgeți rezultatul interogării, îl puteți încărca pur și simplu în partea tabelului.

Descărcați partea tabelară 1c. Exemplu

Descărcați partea tabelară. Exemplu

Să presupunem că în variabilă Un obiect conține un obiect document care are o parte tabelară Servicii. Și în variabilă Cerere, conține o interogare care colectează date pentru partea tabelară.

Metoda se bazează pe utilizarea unui obiect Generator de rapoarte este un obiect care permite, pe baza textului de interogare sau a sursei de date specificate, precum și a setărilor, obținerea rezultatului și afișarea acestuia într-o foaie de calcul sau diagramă.

Descrierea metodei

1. Obținem zona de celule a documentului foaie de calcul care trebuie plasată în tabelul de valori. Obținerea zonei trebuie specificată în așa fel încât să includă un rând de anteturi de coloană (vezi Figura 1), o caracteristică a obiectului Report Builder.

CellArea = TabDocument.Area(1, 1, LastRow, LastColumn);


2. Pe baza zonei de celule a documentului foaie de calcul, creăm o descriere a sursei de date.

DataSource = NewDataSourceDescription(CellArea);

3. Creați un obiect Report Builder, specificați sursa de date în loc de textul interogării și creați raportul.



Rezultatul citirii datelor din sursă după apelarea metodei Alerga() se afla in proprietate Rezultat. Această proprietate conține un obiect de tip RequestResult; un obiect de același tip este returnat atunci când cererea este executată.

4. Descărcați rezultatul în tabelul de valori (vezi Figura 2) apelând metoda Unload() a unui obiect de tipul Query Result.

ValueTable = ReportBuilder.Result.Unload();

Dintre dezavantajele evidente, valorile coloanei sunt de tip șir. De asemenea, obiectul Report Builder este disponibil doar pe server, așa că va trebui să transferați documentul tabelar de la client pe server.

Cod final

Funcția ConvertTabularDocumentToValueTable(TabDocument)
LastRow = TabDocument.TableHeight;
LastColumn = TabDocument.TableWidth;
CellArea = TabDocument.Area(1, 1, LastRow, LastColumn);
// Creați o descriere a sursei de date pe baza zonei de celule a documentului foaie de calcul.
DataSource = NewDataSourceDescription(CellArea);
// Creați un obiect pentru raportare inteligentă,
// se specifică sursa de date și se construiește raportul.
ReportBuilder = Nou ReportBuilder;
ReportBuilder.DataSource = DataSource;
ReportBuilder.Run();
// Rezultatul este încărcat în tabelul de valori.
ValueTable = ReportBuilder.Result.Unload();
Se returnează TabValues
EndFunction

Procesarea cu implementarea acestei metode poate fi descărcată

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 RAM, 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 coloanelor familiare din interfața de utilizator a unei secțiuni tabelare sau a 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ă aveți de-a face cu o parte tabelară sau un set de înregistrări de registru, trebuie să utilizați metoda „Descărcați tabelul de valori”. Dacă aveți nevoie doar de structură, puteți utiliza metoda „Copy Columns”.

// 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 a crea rapid un tabel cu structura dorită.

// 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 tabel de valori în sine este atât de multifațetat încât o descriere detaliată a capacităților sale necesită scrierea unui articol separat despre tehnici și metode de lucru.

Cele mai bune articole pe această temă