Secțiuni de site
Alegerea editorului:
- Utilizarea stilurilor în Excel Cum să vă creați propriul stil nou
- Ce erori apar în timpul instalării?
- Statutul social al unei persoane în societate
- Interpretarea completă a erorilor
- Cum să apelați direct un operator Beeline „în direct”: numere de telefon gratuite
- Cititoare PDF esențiale
- Lineage II - Interlude: The Chaotic Throne nu va începe?
- Recuperarea parolei Excel
- Cum să adăugați un nou cadran de ceas pe ceasurile inteligente Android Wear
- Cel mai profitabil plan tarifar Life
Publicitate
1s 8.3 selectați din tabelul de valori. Ce metode există și cum să căutați mai multe valori simultan |
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 tabelele existente, dar în același timp – și un element de control. Odată cu trecerea la o aplicație gestionată, o mare parte din această funcționalitate a fost depreciată, dar poate fi încă un element de interfață de utilizare astăzi, dar cu unele limitări semnificative. Structura unui tabel de valori ca obiectProprietățile unui tabel de valori sunt determinate de combinații a două colecții predefinite: coloanele și rândurile sale. Tabelul de valori ColoaneO 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 valoriDin 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 valoriExistă 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 constructorulMetoda 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 specificațiile tehnice // Î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); // Opțiune cu copierea tuturor liniilor din standardul de specificații tehnice, dar păstrând doar cele două coloane specificate din Standard = "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 ale 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ă” // Se vor selecta toate rândurile în care valoarea din coloana Cantitate este egală cu 0, doar coloana Nomenclatură Row Selection = New Structure ("Cantitatea" va apărea în tabelul rezultat, 0);ColumnsStandard = "Nomenclatură";Î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 detaliată capabilitățile sale necesită scrierea unui articol separat despre tehnici și metode de lucru. Iată un mic fapt pentru a începe cu - exemple simple lucrul cu un tabel de valori: 1. Creați un tabel de valori ValueTable = Nou ValueTable; 2. Creați coloane pentru tabelul de valori: ValueTable.Columns.Add(„Nume”); 3. Adăugați noi rânduri folosind numele coloanelor:
4. Cum să căutați o valoare în tabelul de valori: Este necesar să găsiți un rând de tabel care să conțină valoarea dorită. FoundRow = ValueTable.Find(SearchValue); 5. Găsiți prima apariție în anumite coloane ale tabelului de valori FoundRow = ValueTable.Find(SearchValue, „Furnizor, Cumpărător”); 6. Dacă trebuie să găsiți toate aparițiile în tabelul de valori: Folosim structura de căutare. SearchStructure = Structure ("Angajat", SearchValue); Să creăm o structură de căutare, fiecare element al căruia va conține numele coloanei ca cheie și valoarea dorită în această coloană ca valoare. Trecem Structura de căutare ca parametru la metoda FindLines(). Ca rezultat, obținem rânduri de tabel. Dacă adăugați o căutare pentru valoarea dorită în structura de căutare, de exemplu, tot în coloana Responsabil, atunci ca urmare a aplicării metodei FindRows() vom obține toate rândurile în care atât Angajat, cât și Responsabil sunt egale cu valoarea căutată. 7. Cum să iterați printr-un tabel de valori în ordine aleatorie Pentru fiecare rând curent din bucla tabelului de valori Același lucru folosind indecși: SeniorIndex = ValueTable.Quantity() - 1; 8. Ștergerea unui rând de tabel de valori existent ValueTable.Delete(Rândul de șters); prin index ValueTable.Delete(0); 9. Ștergerea unei coloane existente din tabelul de valori ValueTable.Columns.Delete(ColumnToDelete); prin index ValueTable.Columns.Delete(0); Este necesar să se țină cont de faptul că ștergerea unui rând (sau a unei coloane) „din mijlocul” tabelului de valori va duce la o scădere cu un indici a rândurilor situate „după” șterse. 10. Cum se completează un tabel de valori dacă numele coloanelor sunt conținute în variabile? NewRow = ValueTable.Add(); 11. Cum să umpleți întreaga coloană a tabelului de valori cu valoarea dorită? Coloana Flag Contabilitate fiscală din Tabelul de valori tabelul de valori trebuie completată cu valoarea Fals Tabelul de valori Completați valori (False, „Stavilul de contabilitate fiscală”); Folosim metoda FillValues() pentru tabelul de valori. Primul parametru este valoarea care trebuie completată. Al doilea parametru este numele coloanei care trebuie completată. 12. Cum pot completa tabelul de valori „Receiver Table” cu date din tabelul de valori „SourceTable”? Dacă Tabelul Destinatari nu există încă în momentul operațiunii sau nu trebuie să fie salvate coloanele sale anterioare, îl puteți crea ca copie integrală original Recipient table = Source table.Copy(); Opțiunea a doua: tabelul ReceiverTable există și ar fi păcat să-și piardă coloanele și restricțiile privind tipurile de date coloane. Dar trebuie să completați datele pentru coloanele ale căror nume se potrivesc cu numele tabelului sursă. Transfer parțial de date pentru coloanele cu nume care se potrivesc: Pentru fiecare rând al SourceTable din ciclul SourceTable Pentru fiecare rând al tabelului sursă, se adaugă un nou rând la tabelul de primire, iar valorile sunt completate în acele coloane din noul tabel ale căror nume se potrivesc cu numele coloanelor din tabelul sursă. Dacă tabelele nu au coloane cu aceleași nume, tabelul de destinație va ajunge să conțină atâtea rânduri cu valori nule câte rânduri au existat în tabelul sursă. Copierea completă a datelor pentru coloanele cu nume care se potrivesc Aceleași coloane = New Array(); Pentru fiecare coloană din SourceTable.Columns Cycle Dacă MatchingColumn<>Nedefinit Atunci // Obține proprietățile coloanei. // Înlocuiește coloanele din tabelul de destinație. TableReceiver.Columns.Delete(Index); // Adăugați următorul nume al coloanelor care se potrivesc în matrice. endIf; EndCycle; // Parcurgeți rândurile tabelului sursă. // Adăugați linie nouă la masa de primire. // Completați valorile în celulele potrivite. EndCycle; EndCycle; Va trebui să înlocuim coloana din tabelul de destinație cu una nouă, ale cărei proprietăți vor corespunde pe deplin coloanei din tabelul sursă. Prin urmare, dacă în tabelul destinatar se găsește o coloană cu același nume, colectăm toate proprietățile pentru noua coloană în variabile. Apoi, ștergeți-l pe cel vechi și creați o coloană nouă. Apoi parcurgem rândurile tabelului sursă. În buclă, adăugăm un nou rând la tabelul de primire și deschidem o buclă peste numele coloanelor din matricea de coloane care se potrivesc. În interiorul acestei bucle imbricate, umplem celulele tabelului de destinație cu datele celulei tabelului sursă. 13. Cum să adăugați coloane la tabelul de valori „ValueTable” cu restricții de tip? Când adăugați o coloană, puteți pur și simplu să specificați numele acesteia și să lăsați neatins al doilea parametru al metodei Add(). În acest caz, tipul de date al coloanei este arbitrar. Adăugarea unei coloane fără a specifica un tip de date // Adăugați o coloană fără restricții de tip. Puteți completa valoarea celui de-al doilea parametru. Acolo trebuie să treceți o descriere a tipului permis pentru coloană. Descrierea în sine poate fi obținută folosind constructorul, trecându-i ca parametru numele șirului tipului (dacă sunt multe tipuri, separate prin virgule) sau un tablou de tipuri valide. Adăugarea unei coloane care indică tipul de date // Restricții privind tipurile de date coloane: Dacă printre tipurile permise pentru completarea datelor coloanei este un șir, puteți limita adâncimea de biți (lungimea) acestuia, specificați utilizarea unei lungimi variabile sau fixe. Toate acestea se realizează prin crearea unui obiect folosind constructorul String Qualifiers. În continuare, acest obiect va fi folosit ca unul dintre parametrii constructorului TypeDescription. Utilizarea calificatorilor pentru a specifica tipul de date al unei coloane de tabel de valori // Pregătește și stabilește restricții pentru datele de tip String. Acțiuni similare pot fi efectuate în ceea ce privește calificatorii de număr și dată. Vă rugăm să rețineți: descrierile de tip pot fi construite de către constructor fie „de la zero”, fie o descriere de tip existentă poate fi folosită ca bază. Utilizarea declarațiilor de tip existente pentru a specifica tipul de date al unei coloane de tabel de valori // Extinderea descrierii tipului utilizat anterior. ValueTable.Columns.Add(„Notă”, ExtendedAcceptableTypes); Căutați în tabelul cu valorile 1CCe 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țiTVHorizon = 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 să-l folosiți pentru a căuta valori unice, deoarece în caz contrar, atunci când o valoare este găsită, 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. FindStringsSelection Structure.Insert("Nomenclatura", TVHorizon); // indică mai întâi 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” 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, ca urmare a execuției sale, 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 //Opțiunea 2 – încărcarea într-un tabel de valori 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 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) Pe un formular gestionat actiuni specificate arata putin 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 un spațiu gol din 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ă. Salutări tuturor cititorilor Infostart. Acest articol se va concentra pe crearea unui tabel personalizat de valori pe un formular aplicație gestionată în mod programatic. Caracteristicile sarcinii. Oricine a programat aplicare regulată, m-am confruntat adesea cu sarcina de a obține un tabel arbitrar de valori pe un formular. Un tabel arbitrar de valori este un tabel al cărui număr și tip de coloane nu sunt cunoscute în prealabil. Adică, ar putea fi 3 coloane, sau poate 6, sau poate 8. Într-o aplicație normală, totul este simplu: puteți plasa elementul „Tabel de valori” pe formularul de procesare, apoi transferați tabelul de valori creat. la acest element în mod programatic. Apoi cu o comandă simplă: Form Elements.TableField.CreateColumns(); obţine masă gata făcută valorile pe formular. S-ar părea că ar putea fi mai simplu. Toate acestea erau în aplicația obișnuită. Într-o aplicație gestionată, totul s-a schimbat. Nu este atât de ușor să creezi un tabel arbitrar. Acum trebuie fie să parametrizați rigid tabelul de valori pe formular, fie să îl creați programatic (descrieți, ei bine, aceasta este, de fapt, esența aplicației gestionate în sine). Iată ceea ce vom încerca să facem: software creați un tabel personalizat de valori pe un formular gestionat. Rezolvarea problemei. Primul lucru pe care trebuie să-l facem este să stabilim cum va apărea tabelul pe formular. Principalul lucru este că nu trebuie să creați niciun element de formular în procesare. Îl vom crea programatic, ca întregul tabel. Adică, tabelul va fi descris și creat în momentul deschiderii formularului sau folosind un buton - în funcție de cine are nevoie de el. Crearea unui tabel pe formular are loc prin descrierea tabelului de valori ca atribut: TK.Columns.Add(„Cu”, DescriptionTypesTime);TK.Columns.Add(„Înainte”, DescriptionTypesTime); TK.Columns.Add(„Nume”); TK.Columns.Add("Notă"); // Nume complet și Notă - rânduri În continuare, vom completa tabelul programului TK cu datele necesare. Primim un tabel TK care conține valorile necesare și este gata pentru a fi transferat la atributul formular creat. Pentru fiecare coloană din ciclul de coloane TK Array of Attributes.Add(New Form Attributes(Column.Name, Column.ValueType,"ScheduleTable")); EndCycle; ChangeDetails(ArrayDetails); SelectionFieldsTable = Elements.Add("TZN", Type("FormTable"));Pentru fiecare coloană din ciclul de coloane TK NewElement = Elements.Add(Column.Name, Type("FormField"), SelectionFieldTable); NewElement.View = FormFieldView.InputField; NewElement.DataPath = "ScheduleTable." + Coloană.Nume; NewElement.Width = 10; Tabelul SelectionFields.SetAction("Selection","TZNSelection"); Pentru a procesa acest eveniment, este prescrisă o procedură separată sub forma unei proceduri: &OnClient Procedura TKNSelection(TK, SelectedRow, Field, StandardProcessing) //comenzile handlerului EndProcedure Rețineți că handlerele de tabelă se declanșează pe client și, prin urmare, trebuie să aibă o comandă de indicator al compilatorului &OnClient Ei bine, ultimul lucru pe care am vrut să-l adaug este că, după toți acești pași, asigurați-vă că nu uitați să treceți tabelul finit atributului formular: ValueÂFormAttributes(ToR, "ScheduleTable"); Acesta este ceea ce avem ca rezultat:Și aici este gestionarea evenimentului „Selectare”: |
Popular:
Nou
- Ce erori apar în timpul instalării?
- Statutul social al unei persoane în societate
- Interpretarea completă a erorilor
- Cum să apelați direct un operator Beeline „în direct”: numere de telefon gratuite
- Cititoare PDF esențiale
- Lineage II - Interlude: The Chaotic Throne nu va începe?
- Recuperarea parolei Excel
- Cum să adăugați un nou cadran de ceas pe ceasurile inteligente Android Wear
- Cel mai profitabil plan tarifar Life
- Sper că articolul îi va ajuta pe acei programatori 1C care încep să creeze tabele pe un formular în mod programatic.