internetul Windows. Android

1c Cum se creează un tabel de valori. Ce metode există și cum să căutați simultan în mai multe valori

Salutări pe toți cititorii InfoStart'a. Acest articol va fi dedicat creării unui tabel arbitrar de valori pe forma unei metode programate de aplicații gestionate.

Caracteristicile sarcinii.

Toți cei care au programat prin aplicarea obișnuităadesea se confruntă cu sarcina de a obține un tabel arbitrar de valori pe formular. Sub un tabel arbitrar de valori este înțeleasă ca tabelul, numărul și tipul de coloane nu sunt cunoscute. Adică coloanele pot fi 3, și poate 6, sau poate 8. În aplicația obișnuită, totul este simplu: a fost posibilă plasarea elementului "Apozitare de masă" pe forma de formare și apoi transferați tabelul de valoare la valorile acestui articol la acest element. Apoi o echipă simplă:

Elemente de elemente. Bilete. Calcons ();

obțineți o masă de valori gata făcută pe formular. Se pare că poate fi mai ușor.

A fost totul în aplicația obișnuită. În aplicația gestionată totul sa schimbat. Deci, pur și simplu un tabel arbitrar care să nu creeze. Acum aveți nevoie ca fie să parametrați rigid tabelul de valori pe formular, fie să-l creați programatic (descrieți, bine, în acest sens, esența aplicației autorizate în sine). Aceasta vom încerca să facem: software. Creați un tabel arbitrar de valori pe o formă gestionată.

Soluția problemei.

Primul lucru pe care trebuie să-l facem este să determinăm modul în care tabelul apare pe formular. Principalul lucru este că nu este necesar un element al formularului în procesare. O vom crea programatice, ca și întreaga masă. Adică tabelul va fi descris și pentru a crea în momentul deschiderii formularului sau a utilizării butonului - acesta este modul în care este necesar.

Crearea unui tabel pe formular apare prin descrierea tabelului de valori ca rechiziție:
MassiferBoaboR \u003d o nouă matrice; Client masiv. Addly (tip ("Apozitare de masă")); DescriereCarebar \u003d descrieri noi (masivitate); Masive \u003d matrice noi; Masives. Adaugat (nou necesar ("Tablescript", descrieri, "," tzn ")); Acum trebuie să creăm un tabel software de valori care conțin date. Dacă tabelul de valoare este obținut din cerere, atunci totul este mai mic decât comanda. Dacă tabelul este creat manual, valoarea difuzoarelor care va conține numere sau date poate fi creată prin "descrierea". Linia de jos este că coloanele din tabelul valorilor trebuie să aibă un tip de tip. Dacă, de exemplu, se presupune că utilizatorul va completa datele din aceste coloane interactiv, atunci nu puteți adăuga valorile coloanei valorilor pur și simplu cu numele, ar trebui să fie tip. Țineți minte - acest lucru este foarte important pentru că Vom da aceste tipuri la masă pe formular.
Creați un tabel care conține mai multe coloane:
Kd \u003d date noi de calificare (particule. Veria); Massages \u003d Noua matrice; Arme. Addly (tip ("data")); Grafică de căutare \u003d descrieri noi (brațe, CD); Tk \u003d tabele noi;
Tk.colonki. Addly ("C", descrieri.
Tk.colonks. Addly ("la", descrieri.
Tk.colonki. Addly ("Numele complet");
TK. Solonks. Addly ("Notă"); // Notă completă - Rânduri în continuare, vom completa tabelul nostru software TK cu datele necesare. Obținem tabelul TK care conține valorile necesare și este pregătit pentru transmiterea la punctele create de formă. Pentru fiecare coloană de Tk. Ciclul coloanei

Masivrevizites. Adaugat (Noua solicitare (coloana. Adică, Coloană. Tip, "Taxcripts"));
Endcycle;
Schimbă (masivizite);
Accesați captivitatea \u003d elemente. Addly ("tzn", tip ("tableform"));
Accesul de captare. Powded \u003d "Taxcripts";
TapepoleseBoat. Exemplu \u003d Afișat. Opții oportuniste;

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

Pentru fiecare coloană de Tk. Ciclul coloanei

NEWELENT \u003d elemente. Addly (coloană. Vreau să spun, tastați ("FOROFFUL"), Taspoles);
Element nou. Vid \u003d formă vidpolar. Putere;
Noua element. Powdly \u003d "Taxcripts." + Coloană.
Element nou.Shirina \u003d 10;
Endcycle;

Design condiționat, dacă avem nevoie de noi, de asemenea, scriem manual, meniul de comandă - manual. Stivuitoarele de masă sunt, de asemenea, scrise cu mâinile. De exemplu, pentru a adăuga un eveniment de selectare a evenimentului "selecție":

Acoperirea captează. Setarea ("alegerea", "tznvybor");

Pentru a procesa acest eveniment, o procedură separată este prevăzută sub forma procedurii:

& Svlette.
Procedură TZNVSB (TK, selectat, câmp, prelucrare standard)
// Comenzile procesorului Controalele finale

Vă rugăm să rețineți că manipulatoarele de masă sunt declanșate pe client și, prin urmare, trebuie să aibă o comandă de pointer compilator

& Svlette.

Ei bine, și ultimul lucru pe care am vrut să-l adăugați după toate aceste acțiuni, cu siguranță nu uităm să transferăm tabelul finit în solicitarea formularului:

RecentRevisitforms (TK, "Taxcripts");

Iată ceea ce avem ca rezultat:


Dar prelucrarea evenimentului "alegerea":



Postfaţă.

Sper că articolul va ajuta acei programatori 1C, care încep să creeze tabele cu privire la forma metodei programatice.

Puteți descărca procesarea pe care software-ul creează o masă de valoare și afișează forma gestionată Cu comentarii care vă vor ajuta să vă creați tabelele.

Căutați în tabelul de valori 1c

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

Pentru a căuta în tabelul de valori există două metode speciale:

1. Găsiți

TVGorizont \u003d cărți de referință. NomeLaclatură. Intepponare ("orizont TV");
Rezultate \u003d tznenenclatură. Init (TV, TV);
// putem specifica în ce vorbitori să caute pentru a accelera căutarea
Fundația \u003d tznomenclatura. Init (TV, "Nomenclatură");

Această metodă returnează prima linie găsită cu valoarea dorită sau nedefinită dacă nu se găsește. Deci, este convenabil să utilizați pentru a căuta valori unicedeoarece În caz contrar, va trebui să o ștergeți de la masă atunci când găsiți următoarele.

Astfel încât să nu sufere următoarea metodăcare vă permite să găsiți o serie de linii potrivite:

2. Zbor.


Structuraborații. HOLD ("Nomenclatură", TVGorizont); // În primul rând, specificați coloana unde să căutați și apoi ce să căutați.

Această metodă returnează întotdeauna o matrice, dar poate fi goală dacă nu se găsește nimic. Și această metodă, precum și cele anterioare returnează rândurile valorilor valorilor, și nu valorile în sine într-o matrice separată. Prin urmare, schimbarea valorilor în rândul matricei sau în metoda anterioară de la linia găsită, veți schimba valoarea din tabelul de valori procesate.

Cu cât această metodă este mai bună este că poate căuta o dată în mai multe coloane ale mesei valori în același timp:


Structuri \u003d structură nouă;
Structuraborații. HOLD ("Nomenclatură", TVGorizont);
Structură. HOLD (Cantitate ", 10);
FundațiaMassivests \u003d tznenenclatură. Intrări (structuri);

Singurul minus, după cum se poate vedea, nu pot fi folosite alte comparații, cu excepția "egală"

Tabelul de valori este un specific obiect universalConcepute pentru stocarea datelor într-o vizualizare tabară. Diferența cheie a mesei din obiectele aplicate este lipsa de legare la tabelele bazei de date fizice. Tabelul de valori există numai în memorie cu acces aleatorÎntr-o mână, oferă oportunități unice, iar pe de altă parte, impune anumite limitări. Cu toate acestea, posibilitatea interacțiunii cu tabelul este comparabilă cu interacțiunea cu obiectele existente efectiv în baza de date.

Din punct de vedere istoric, tabelul de valori în 1c are un scop dublu, fiind un analog virtual tabelele existenteDar în același timp - și elementul de control. Odată cu trecerea la aplicația controlată, cea mai mare parte a acestei funcționalități este depășită, dar și în prezent poate fi, de asemenea, un element al interfeței cu utilizatorul, dar cu o serie de restricții semnificative.

Structura tabelului de valori ca obiect

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

Tabelul valorilor difuzoarelor

Coloana Tabel de valori - Proprietatea sa de definire. Este un set de coloane de masă determină structura sa. Coloanele se potrivesc cu câmpurile de mese fizice sau familiare cu interfața cu utilizatorul coloanelor tabulare a pieselor sau a documentelor. Coloana poate avea un nume intern, valoarea valorii și titlul afișat în timpul lucrului interactiv cu tabelul.

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

Rândul de valori

Din punctul de vedere al interfeței software, șirul este o colecție separată încorporată în tabelul de valori. Acestea sunt analoage cu înregistrările meselor fizice, adică liniile obișnuite ale părții de masă sau ale jurnalului de jurnal. Fiecare linie luată separat este un obiect cu un set de proprietăți numite ale căror nume corespund numelor coloanelor de masă.

Astfel, interacțiunea cu șirul este foarte asemănătoare cu interacțiunea cu alte obiecte. Puteți citi și scrie proprietățile, inclusiv utilizarea funcției predefinite a "completării următoarei ()". Deoarece liniile sunt colecția principală a tabelului de valori, apoi să ștergeți toate rândurile tabelului, se aplică metoda "Clear ()".

Creați un tabel de valori

Există multe modalități de a obține tabelul de valori gata de utilizare. Luați în considerare unele dintre ele. Fiecare exemplu va fi dat ca listarea codului cu comentarii.

Crearea unui designer de masă

Principalul mod de a crea doar un astfel de tabelă necesară dezvoltatorului, din păcate, cel mai mult consumator de timp, deoarece este nevoie manual prin toate proprietățile necesare ale tabelului.

Demotabili \u003d mese noi; . Tip Tip \u003d Descriere nouă ("directoryads.nanklatura"); Titlu \u003d "Nomenclatură (produs)"; Demotablik. Cutouts. Adauga (la ei, titlu, titlu); // crearea unei coloane "Număr" nume \u003d "număr"; Tipul titlului \u003d descrieri noi ("număr"); Demotabili. Cutouts. ADDLY (nume, titlu); // Ca urmare a datelor de manipulare, am creat o masă goală cu coloane tipărite // dacă aveți nevoie să utilizați mai multă scriere mai precisă tipuri primitiveAr trebui să utilizați sintaxa avansată a designerului Designer "Desigratypov"

Crearea unui tabel de copiere

Dacă mâna are un standard cu o structură și / sau o compoziție adecvată, puteți copia sau descărca tabelul de referință al valorilor. Dacă referința este o altă tabelă, trebuie să aplicați metoda "Tabelul de copiere". Dacă vă ocupați partea tabară Sau un set de intrări de înregistrare, trebuie să utilizați metoda "Descărcați tabelul". Dacă aveți nevoie doar de o structură, puteți utiliza metoda "Colectare de copiere".

// opțiunea cu copierea din standardul TK a tuturor rândurilor, dar cu conservarea numai a celor două coloane specificate ale Columnalone \u003d "Nomenclatură, număr"; Demotabil \u003d tablethetalon .Copy (, columnal); // opțiunea cu copierea de la standardul TK a rândurilor pre-selectate, menținând în același timp cele două coloane specificate ale stringonului \u003d selectate de mașina-to-thenemstrotryistroyistetalonă (); Columnalone \u003d "nomenclatură, număr"; Demotabil \u003d tablethetalon .Copy (Rowetal, Columnal); // Opțiune cu copierea de la rândurile TK-Strelna de către filtrul specificat, salvând o coloană "Nomenclature" // toate liniile vor fi selectate în cazul în care valoarea din coloană este egală cu 0, numai coloana nomenclatura de remedii va intrați în tabelul rezultat ("Cantitatea" 0); Columnaltalon \u003d "nomenclatură"; Demotabil \u003d tablethetalon .Copy (Rowetal, Columnal); // opțiunea cu copierea completă a tabelului și îndepărtarea ulterioară a unui rând cu valoarea câmpului de zero este zero și îndepărtarea întregii coloane a coloanei contrapartidei \u003d noua structură ("număr", 0) ; Columnaltalon \u003d "nomenclatură"; Demotabil \u003d tablethetalon .Copy (Rowetal, Columnal); Striges \u003d demotabilă. (0, cantitate "); Demotabil. Ștergeți (Striges); Demotablik. Solonki.deel ("cantitate"); // pot fi aplicate opțiuni și modificări similare părți tabulare și seturi de registre

Crearea unei anchete de masă

Dacă în baza de date există o masă de referință în baza de date, puteți utiliza solicitarea pentru crearea rapidă Tabele cu structura dorită.

// Exemplu cu crearea unei mese goale în funcție de structura eșantionului registrului de acumulare // nu este dificil să ghiciți că, în acest fel, puteți obține cererea de masă completă \u003d o nouă interogare ("Alegeți primul 0 * de la Registrul. Stația de strungare "); Rezultat Supply \u003d interogare. Umpleți (); Demotable \u003d Recrutarea rezultatelor. Descărcați (); // exemplu cu crearea unei tabele goale prin tipuri specifice specificate și nume ale interogării câmpurilor \u003d o nouă solicitare; Solicitare.Text \u003d "Selectați primul 0 | adică (carte de referință. Substituția. Roll) ca nomenclatură, Express (0 ca număr (15, 3)) ca o cantitate"; Rezultat Supply \u003d interogare. Umpleți (); Demotable \u003d Recrutarea rezultatelor. Descărcați (); // IMPORTANT! Nu trebuie să uitați că în tipurile de valori ale difuzoarelor obținute din interogare sunt întotdeauna prezente tip nul // Astfel, TK creat de interogare are întotdeauna tipuri compozite de coloane

Concluzie

În acest articol mic, am revizuit proprietățile de bază și tehnicile practice pentru crearea unui tabel de valori suficiente pentru a înțelege și a începe aplicarea. Obiectul tabelului valorilor este atât de multilateral descriere detaliata Capacitățile sale necesită scrierea unui articol separat privind recepțiile și metodele de lucru.