Contacte

Cum să obțineți șir de valori. Ce metode există și cum să căutați simultan în mai multe valori

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. Prin urmare, este convenabil să îl utilizați pentru a căuta valori unice, deoarece În caz contrar, va trebui să o ștergeți de la masă atunci când găsiți următoarele.

Pentru a nu suferi, există 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ă"

Probabil că nu un obiect colecții universale Valorile nu sunt atât de populare cu dezvoltatorii 1C, care utilizează tabelul de valori (tk). Listele de valori nu pot fi extinse prin detalii, arborele valorilor este percepută vizual convenabil, dar designul citirii programului a rândurilor sale este dificil de implementat.

Și numai tabelul de valori:

  • Capabil să completeze direct tabelele de documente, cărți de referință și tratamente;
  • Este rezultatul executării interogării;
  • Ușor de citit și clar format;
  • și multe altele.

În acest articol am încercat să dăm vedere generala Despre un astfel de obiect complex și universal ca un tabel de valori.

Care este tabelul valorilor

Toți dezvoltatorii novice știu clar că tabelul valorilor sunt:

  1. Coloane care descriu structura tabelului;
  2. Rânduri care umple informațiile de masă.

Cu toate acestea, adesea uităm de o proprietate importantă a tabelului - despre indicii săi, și anume utilizarea acestora permite accelerarea procesului de căutare pe masă în mod repetat, formarea de selecții în el și îmbunătățește grav viteza.

Dar mai întâi lucrurile mai întâi.

Figura 1 arată modul în care tabelul de valori, derivate pentru a imprima cea mai simplă procedură, care arată structura și umplerea lor.

Așa cum se poate vedea din exemplu, coloanele de la Tabelul 5, fără a număra numărul de linie în ordine.

În majoritatea cazurilor, nu este nevoie să specificați tipul de date de coloană și lățimea sa, este suficient pentru a determina numele coloanei, dar în unele cazuri este pur și simplu să nu faceți fără ea (de exemplu, când descărcați Tabelul în fișierul format DBF).

Dacă în viitor se planifică utilizarea unei mese de valoare ca sursă de date pentru o interogare, este necesară indicarea tipului de date (figura 2).

Adăugarea unui rând apare prin metoda ADD (), cu alocarea de nume Șir nou.

Indicii de masă de valori

Căutarea pe tabelul de valori este realizată prin două metode:

  • Găsiți (returnează primul element găsit parametri specificialtfel valoarea este incertă);
  • Farcast (returnează o serie de șir de masă care satisface anumite condiții).

Căutarea pe mesele mari este puternic "atârnă" sistemul și poate fi continuată în timp. În aceste cazuri, indicii ar trebui utilizați.

În primul caz, căutarea are loc la o valoare și o coloană, este necesar să o transferați la indici (figura 3)

Indicii trecut prin virgulă indică faptul că tabelul poate fi selectat prin metoda Farmcast, în care o anumită structură va fi transmisă ca parametru.

În cazul afișat pe exemplu, a doua linie indică căutarea simultană a liniilor care conțin valoare specifică Nomenclatura și caracteristicile sale, iar cea de-a treia linie se indică faptul că "Ordinul de producție" poate fi adăugat la parametrii de căutare.

Când lucrați cu diferite obiecte de metadate de configurare, precum și rapoarte și procese, situația apare adesea atunci când este necesar să se facă unele acțiuni cu părțile lor tabulare. Lucrați direct cu elementele de formă sau părțile de masă ale documentelor nu sunt întotdeauna convenabile.

Aici, tabelul de valori vine la salvare. În tk, folosind metoda porțiuni de masă Puteți descărca ():

  1. Repetați complet structura tabelului de documente, menținând în același timp întregul informații posibile;
  2. Determinați numai acele coloane și linii necesare pentru lucrări ulterioare și le retragem.

Acțiunea inversă (partea de masă de umplere) are loc prin metoda de încărcare (), singurul parametru al cărui nume este numele tabelului afișat.

Trebuie remarcat faptul că potrivirea coloanelor părții tabulare și TK are loc după nume.

Copiați complet un TK la altul și, de asemenea, să determinați ce rânduri și coloane vor fi transferate prin metoda de copiere ().

Fig.4.

În același timp, coloanele tabelului vor fi salvate, iar informațiile și rândurile din duplicat vor fi șterse.

Tabel de valori și cerere

După cum sa menționat mai sus, descărcarea rezultatului executării cererii are loc în TK, dar destul de des dezvoltatorii au o întrebare: și ca o interogare care să proceseze tabelul de valori, este posibil și ce cod ajută la realizarea acestora.

Tehnologia interogării în 1c nu implică utilizarea TK ca surse de date, dar această limitare poate fi ușor de by-pass. Codul din figura 5 arată cum se face.

Fig.5.

Înlocuirea "*" la numele coloanelor (șir de tz. Nonenclatură) poate reduce cantitatea de informații descărcate.

Eroare la executarea unei interogări (fig.5) "Tipul nu poate fi procesat în interogare", spune că dezvoltatorul a uitat să efectueze o parte din codul 2 și nu a introdus coloane.

Tabel de valori și cicluri

Când ar fi trasee rândurile de valori prin metoda care conține contorul (fig.6), este important să ne amintim că valoarea inițială a indicelui de rând este 0, iar valoarea de capăt a iteratorului ar trebui să fie de 1 mai mică decât numărul de rânduri din tabel. În caz contrar, există o șansă de 100% de eroare "valoarea indexului depășește limitele intervalului"

Fig.6.

În general, forța brută a rândurilor TK este mai bine să realizați prin designul "pentru fiecare ... de la", prin definirea numelui iteratorului.

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

Caracteristicile sarcinii.

Toți cei care au programat în apendicele obișnuite se confruntă adesea 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 ();

a primi tabelul finit. Valori pe formular. Se pare că ar putea 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 forma 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ă o formă gestionată cu comentarii care vă vor ajuta să vă creați tabelele proprii.

Pentru a ține cont de bani și bunuri, diverse tabele folosesc pe scară largă în afaceri. Aproape fiecare document este o masă.

Tabelul enumeră mărfurile de expediere din depozit. Într-un alt tabel - obligațiile de a plăti pentru aceste bunuri.

Prin urmare, 1c proeminent ocupă munca cu tabele.

Tabelele din 1c sunt numite și "părți tabulare". Ei au cărți de referință, documente și altele.

Cererea ca rezultat al executării sale returnează un tabel, acces la care este posibil să ajungeți în două moduri diferite.

Primul este mai rapid - eșantionare, obținând rânduri de la acesta numai în ordine. Al doilea se descărcă rezultatul interogării în tabelul valorilor și accesul arbitrar suplimentar la acesta.

// Opțiunea 1 - Accesul secvențial la rezultatele interogării

// primiți tabelul.
Eșantionare \u003d interogare. Umpleți (). Selectați ();
// Pentru a merge în jurul tuturor rândurilor rezultatului interogării
În timp ce eșantion. Următorul () Ciclu
Raport (eșantion. Nume);
Endcycle;

// Opțiunea 2 - descărcarea în tabelul de valori
Solicitare \u003d Noua interogare ("Selectați numele din director. NameNclature");
// primiți tabelul.
Tabel \u003d Interogare. Umplere (). Descărcați ().
// atunci putem ajunge, de asemenea, în jurul valorii de toate liniile
Pentru fiecare rând din ciclul tabelului
Raport (șir. Nume);
Endcycle;
// accesul arbitrar la linii
Linia \u003d tabel. Init ("lopată", "nume");

O caracteristică importantă este în tabelul obținut din rezultatul interogării, toate coloanele vor fi strict tipărite. Aceasta înseamnă că, solicitând câmpul Nume din nomenclatura directorului, veți primi o coloană de tip de șir cu o lungime admisibilă de nu mai mult de caractere N.

Tabel pe formă (client gros)

Utilizatorul funcționează cu un tabel când este plasat pe formular.

Principiile de bază ale lucrărilor cu formularele, am discutat în lecția din lecție din

Deci, puneți un tabel pe formular. Pentru a face acest lucru, puteți trage tabelul din panoul de control. În mod similar, puteți selecta controlul formularului / inserției din meniu.

Datele pot fi stocate în configurație - atunci trebuie să selectați o parte existentă (adăugată anterior) a obiectului de configurare a cărui formă pe care o editați.

Apăsați butonul "..." din proprietatea datelor. Pentru a vedea o listă de piese tabulare, trebuie să dezvăluiți obiectul ramificației.

Când alegeți o parte tabară 1C în sine, adaugă coloane la masă de pe formular. Rândurile introduse de utilizator într-un astfel de tabel vor fi salvate automat împreună cu referința / documentul.

În aceeași proprietate, puteți introduce un nume arbitrar și puteți selecta tipul de tabel.

Aceasta înseamnă că este selectată un tabel arbitrar de valori. Nu va adăuga coloane automate, nu va fi salvat automat, dar este posibil să faceți nimic.

Faceți clic dreapta pe masă puteți adăuga o coloană. În proprietățile coloanei, puteți specifica numele său (pentru a referi la codul 1c), antetul coloanei de pe formular, conexiunea cu detaliile părții tabulare (ultima - dacă nu este o masă arbitrară, iar partea de masă este selectată) .

În Proprietățile tabelului de pe formular, puteți specifica dacă doriți să adăugați / ștergeți linii utilizatorului. Un formular mai avansat - doar o bifată. Aceste proprietăți sunt convenabile de utilizat pentru a organiza tabele destinate afișării informațiilor, dar nu și editarea.

Pentru a gestiona tabelul, trebuie să afișați panoul de comandă. Selectați formularul de element de meniu / Introduceți panoul de comandă / comandă.

În Proprietățile panoului de comandă, selectați un automobil Tick Autofill că butoanele de pe panou apar automat.

Tabel pe forma (client subțire / gestionat)

Pe forma gestionată, acțiunile specificate arată puțin diferit. Dacă trebuie să plasați pe forma părții tabulare - deschideți ramura obiectului și trageți una dintre părțile de masă rămase. Si tot!

Dacă trebuie să plasați tabelul de valori, adăugați un element de formular nou și în proprietățile sale. Specificați tipul - tabelul valorilor.

Pentru a adăuga difuzoare, utilizați meniul de pe butonul din dreapta al mouse-ului din acest detaliu al formularului, opțiunea Adăugați o coloană de propuneri.

După aceea, trageți și masa la stânga.

Pentru ca tabelul să apară panoul de comandă, în proprietățile tabelului, selectați valorile din secțiunea Utilizare - poziția panoului de comandă.

Tabelul de descărcare în Excel

Orice tabel 1c, situat pe formular, poate fi tipărit sau descărcat în Excel.

Pentru a face acest lucru, faceți clic dreapta pe masă și selectați Afișare listă.

În client controlat (fină) acțiuni similare Puteți efectua utilizând elementul de meniuri al tuturor acțiunilor / listei.



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