Un director este o listă cu valori posibile ale unui recuzită particular. Directoarele sunt utilizate în acele cazuri când este necesar să se excludă introducerea ambiguă a informațiilor. De exemplu, pentru ca cumpărătorul, vânzătorul, depozitarul, directorul să înțeleagă ce fel de produs vorbește, toată lumea ar trebui să o numească aceeași. Și în acest caz este nevoie de un manual. De obicei, într-o întreprindere comercială are forma unei liste de prețuri și, dacă un astfel de director este stocat pe un computer, acesta include întreaga gamă posibilă de bunuri cu care operează societatea comercială.
Sistem 1C: Compania vă permite să efectuați un număr practic nelimitat de directoare necesare. Fiecare director este o listă de obiecte omogene: angajați, organizații, bunuri etc. Fiecare astfel de obiect este numit un element al directorului.
Din punctul de vedere al utilizatorului, trebuie avut în vedere faptul că Configuratorul nu creează directorul în sine, ca o listă de valori, dar dezvoltă cartea de referință, șablonul său. În timpul procesului de configurare, este descrisă structura informațiilor care vor fi stocate în director, este prezentată o prezentare pe ecran și, dacă este necesar, imprimată a directorului, sunt stabilite diferite caracteristici ale "comportamentului" acestuia.
Ca o cerință obligatorie, fiecare director are un cod și un nume. Elementul directorului poate fi numeric sau text. 1C: Compania oferă oportunități extinse de a lucra cu codurile elementelor din director: alocarea automată a codurilor, controlul automat al unicității codului și altele.
În plus față de cod și nume, directorul sistemului 1C: Enterprise poate stoca orice informație suplimentară despre elementul directorului. Pentru a stoca astfel de informații în director, se poate crea o listă de rechizite. Folosind mecanismul detaliilor directorului, este ușor să organizați, de exemplu, un fișier de card al angajaților. De exemplu, angajații directorului vor avea aproape sigur posturi de atribut. Salariu și altele. Firmele 1C au anticipat programatorii și au introdus în toate directoarele două atribute deja specificate: Cod și Nume. Într-adevăr, aproape orice obiect din viața reală conține aceste atribute. De exemplu, pentru angajați, codul angajatului este numărul de personal, iar numele este numele, prenumele, numele patronimic (nume).
Pentru fiecare atribut, directorul trebuie să specificați tipul de date, de exemplu, „număr“, „string“, „data“ (în versiunea 8.0 există un tip de booleene - Adevărat sau fals). Acestea sunt tipuri de bază, dar puteți specifica și tipuri complexe de date. De exemplu, atributul Position are tipul de date Posts. În acest caz, valorile acestui atribut vor fi selectate din directorul Posts. Deci, cea mai simplă legătură între directoare este realizată atunci când valorile atributelor unui director sunt selectate dintr-un alt director.
Procedura de dezvăluire ()
. Director List.Select.Map.Set (An, 1980);
. // întrebare pentru cititori: cum să împiedici utilizatorul să modifice condițiile de selecție?
Sfârșitul procedurii
Filtru static (numai versiunea 7.7)
În secțiunea 1C 7.7, nu puteți selecta simultan anumite obiecte periodice sau mai multe obiecte (un filtru complex). În acest caz, metoda de utilizare a listei de elemente poate fi o ieșire din situație. Această metodă trebuie să treacă printr-o listă de elemente care ar trebui afișate. Anterior, această listă trebuie să fie formată.
Element List = creare Obiect ("Listă de Valori");
СпрСотр = CreateObject ("Director. Angajați");
СпрСотр.UspolzovatDatu (WorkDate ());
СпрСотр. Selectați Elemente ();
În timp ce СпрСотр.ПолучитьЭлемент () = 1 ciclu
. Dacă (СпрСотр.Родитель = ГруппаБаботающие) Și (СпрСотр.Должность = дляжПлотник) Apoi
. Lista de elemente. Adăugați valoare (Cpr.Current Element ());
. Sfârșit Dacă;
Sfârșitul ciclului;
СпрСотр = CreateObject ("Director. Angajați");
Mod = 0; // selectați fără ierarhie, 1 - cu (implicit)
СпрСотр Selectați Elemente (Mod);
În timp ce СпрСотр.ПолучитьЭлемент () = 1 ciclu
. <действия с очередным элементом/группой>
Sfârșitul ciclului;
СпрСотр = CreateObject ("Director. Angajați");
Modul ierarhizat = 1; // 1- selectați cu ierarhie, 0 - nu includeți
ModeGroup = 0; // 0 - nu includeți grupurile din eșantion, 1 - includeți
Numele Requisite = "Anul"; // în Configurator la popi, trebuie selectată caseta de selectare Selectare
Valoare = 1980;
Selectați ElementsProperty (Numele Requisite, Value, ModeHierarchies, ModeGroup);
În timp ce СпрСотр.ПолучитьЭлемент () = 1 ciclu
. <действия с очередным элементом>
Sfârșitul ciclului;
Filtrarea într-o buclă
СпрСотр = CreateObject ("Director. Angajați");
СпрСотр.Uspolzovat Părinții (грпРоботающие);
СпрСотр.UspolzovatDatu (WorkDate ());
СпрСотр. Selectați Elemente ();
În timp ce СпрСотр.ПолучитьЭлемент () = 1 ciclu
Dacă СпрСотр.Дожность <> pentru stâncă Atunci
. continua; // ignorați acest angajat, mergeți la începutul ciclului
Sfârșit Dacă;
<действия с очередным элементом>
Înainte de a selecta, puteți specifica ordinea de sortare prin următoarele metode:
Ordine cod ()
Nume ordine ()
Ordinul solicitării (numele magazinului) // propset trebuie să aibă caseta de selectare Sortare în Configurator
Comandă inversă ()
De exemplu, mai jos este o selecție de angajați sortată după numere în ordine descrescătoare:
СпрСотр = CreateObject ("Director. Angajați");
СпрСотр.ПаядокКодов ();
СпрСотр.ОбратныйПрядок ();
СпрСотр. Selectați Elemente ();
Cerere de referință
Enumerarea elementelor din director poate fi organizată prin Solicitare. Adesea, acest lucru este mai convenabil dacă se aplică o condiție complexă de selecție sau o grupare de elemente. Pentru mai multe informații, consultați Interogări.
СпрСотр = CreateObject ("Director. Angajați");
Dacă СпрСотр.НайтиЭлемент (ВыбрСотр) = 1 Apoi
. // elementul devine cel curent
. СпрСотр.Parentul = грпСобтающие;
. СпрСотр.Write ();
Sfârșit Dacă;
Dacă СпрСотр.НайтиПоКоду (1) = 1 Apoi
. Element OrGroup = element CprCom.Current ();
Sfârșit Dacă;
Căutați după nume
Dacă СпрСотр.НайтиПНиименованию ("Working") = 1 Apoi
. grpRabotayuschie = SproSotr.TekushchiyElement ();
Sfârșit Dacă;
Mod = 1; // 1 - căutarea în subordinea specificată (mamă) (implicit); 0 - căutați în întregul director
Căutați flag = 0; // 1 - găsiți potrivirea exactă; 0 - găsiți numele după primele caractere (în mod prestabilit)
СпрСотр.Uspolzovat Părinții (грпРоботающие);
Dacă СпрСотр.НайтиПНиименованиею ("Ив", Mod, Căutarea de steag) = 1 Apoi
. Primul WorkingIb = element CprCom.Current ();
Sfârșit Dacă;
Căutați după props
NameReck = "Anul"; // Propset trebuie să aibă caseta de selectare Sortare în Configurator selectată
Căutarea flag = 1; // 1- căutare în întregul director, 0 - căutarea în limitele subordonării
Dacă СпрСотр.НайтиPoevvisit (Prenume, 1980, SearchGlobal Flag) = 1 Apoi
. Elementul găsit este = СпрCотр.ТекущийЭлемент ();
Sfârșit Dacă;
Găsirea unui element într-o buclă
СпрСотр = CreateObject ("Director. Angajați");
СпрСотр.Uspolzovat Părinții (грпРоботающие);
СпрСотр.UspolzovatDatu (WorkDate ());
СпрСотр. Selectați Elemente ();
În timp ce СпрСотр.ПолучитьЭлемент () = 1 ciclu
Dacă СпрСотр.Дожность = Pentru o cârpă apoi
. avorteze; // a găsit un dulgher de lucru! rupe ciclul
Sfârșit Dacă;
Sfârșitul ciclului;
<действия с найденным элементом>
Cerere de referință
Căutarea unei intrări în agendă poate fi organizată prin anchetă. Adesea, acest lucru este mai convenabil dacă se aplică o condiție complexă de selecție. Pentru mai multe informații, consultați Interogări.
СпрСотр = CreateObject ("Director. Angajați");
СпрСотр.НайтиЭлемент (Selectați angajatul);
СпрСотр.Udalit (); // șterge direct
Atenție vă rog! Dacă efectuați o ștergere directă a elementului, asigurați-vă că nu este menționat în alte obiecte. De exemplu, angajatul care a fost șters poate fi utilizat în concediu. Dacă este șters, integritatea referențială a bazei de date va fi încălcată. În acest caz, vă recomandăm să utilizați marcajul de ștergere.
Puteți obține în mod programatic o listă de obiecte care conțin o legătură cu obiectul de șters prin metoda FindLink (Obiect).
Ștampila de ștergere
Pentru a controla integritatea referențială a unei baze de date, elementele șterse sunt marcate doar pentru ștergere. Apoi, o comandă a operațiilor de meniu special => „Ștergerea marcate obiecte“ în sistem exclusiv 1C modul va verifica integritatea referențială și fizic eliminați elementele din baza de date în cazul în care au link-uri către alte site-uri.
СпрСотр = CreateObject ("Director. Angajați");
SprSotr. Găsiți un element (selectați angajat);
SprSotr. Șterge (0); // marcați pentru a șterge
// puteți verifica dacă elementul este marcat pentru ștergere
// funcția returnează 1 - dacă este marcată, 0 - dacă nu
Mark = СпрСотр. MarkUnit ();
// puteți anula marcarea ștergerii
SprSotr. Găsiți un element (selectați angajat);
SprSotr. UncheckDelete ();
Când ștergeți un set de intrări de agendă pentru a grăbi lucrarea, puteți încheia un ciclu într-o tranzacție. În același timp, ștergerea efectivă (marcarea la ștergere) a tuturor elementelor va apărea numai în comanda "Lock Transaction" (). Pe durata tranzacției, directorul este blocat.
СпрСотр = CreateObject ("Director. Angajați");
StartTransaction ();
СпрСотр. Selectați Elemente ();
În timp ce СпрСотр.ПолучитьЭлемент () = 1 ciclu
. СпрСотр.Удалить (0); // marcați pentru a șterge
Sfârșitul ciclului;
Lista elementelor din directorul din sistemul 1C: Enterprise poate fi multi-nivel. În acest caz, toate liniile directorului vor fi împărțite în două tipuri: "doar" elementele directorului și grupul directorului. Grupurile vă permit să vă mutați în straturile inferioare ale directorului cu mai multe niveluri. Numărul posibil de numere de nivelare a directorului este specificat în Configurator.
Folosirea directoarelor pe mai multe niveluri vă permite să organizați introducerea informațiilor în directorul cu gradul necesar de detaliere. Elementele și grupurile de elemente dintr-un director pe mai multe niveluri pot fi transferate de la un grup la altul.
Atenție vă rog! Un director ierarhic este, de asemenea, o carte de referință pe mai multe niveluri sau un director cu grupuri.
Grupul de directoare din 1C este adesea numit "părinte".
Crearea de grupuri de software
Grupul СпрСотр.Навая ();
СпрСотр.Наимено = "Lucrul";
СпрСотр.Write ();
Grupul СпрСотр.Навая ();
СпрСотр.Наимено = "Renunțat";
СпрСотр.Write ();
Atenție vă rog! În Configurator, puteți specifica pentru recuzită că este valabilă numai pentru articol, numai pentru grup sau pentru ambele. De exemplu, câmpul DateDemo nu are sens pentru grupul de lucru. Prin urmare, nu trebuie să vă referiți la detaliile elementelor, dacă lucrați cu un grup și invers.
Setați grupul curent
СпрСотр = CreateObject ("Director. Angajați");
СпрСотр.Uspolzovat Părinții (грпРоботающие); // acum suntem în grupul Working
СпрСотр. Selectați Elemente (); // deschideți o selecție a membrilor grupului
СпрСотр = CreateObject ("Director. Angajați");
СпрСотр.Uspolzovat Părinții (грпРоботающие);
СпрСотр.Н нов (); // creați un element nou în grupul de lucru
Informații despre elementul curent
Dacă directorul este pe mai multe niveluri, va fi util să utilizați următoarele metode și atribute care vă permit să obțineți informații despre elementul curent al directorului:
Returnează un șir care conține numele complet al înregistrării selectate din director, cu toate nivelurile parinte separate de simbolul "/".
Abilitatea de a selecta un grup în recuzele de dialog
Adesea este convenabil ca rechizitele de pe formular, având tipul de director, să dezactiveze capacitatea de a selecta un grup. Apoi, numai un element poate fi selectat în acest câmp și un grup nu poate fi selectat. În general, este mai ușor să încerci o dată decât să o explici de mai multe ori.
Selectați angajatul Selectați grupurile (0); // dezactivați capacitatea de a selecta un grup
Director de proprietar. este, de asemenea, un director principal.
Directorul de proprietar și directorul subordonat sunt, de asemenea, denumite directoarele conectate.
În ceea ce privește bazele de date relaționale, directorul de proprietar este tabelul părinte, directorul subordonat este tabelul copil.
Atribuirea directoarelor subordonate
Orice director poate fi utilizat atât de la sine, cât și subordonat unui alt director. De exemplu, directorul contractelor poate fi utilizat separat și poate fi conectat la directorul organizațiilor.
Pentru a subordona directorul la oricare dintre directoarele deja existente în sistem, în câmpul "Subordinate" trebuie să selectați numele acestui director. Un astfel de director din 1C: Compania este numită proprietar.
Spre deosebire de cartea de referință pe mai multe niveluri, în care toate elementele au aceeași structură, utilizarea mecanismului directoarelor subordonate vă permite să conectați elementele diferitelor structuri. În acest caz, fiecare element al directorului subordonat va fi asociat cu unul dintre elementele directorului proprietar.
În exterior, lucrul cu directorul subordonat din sistemul 1C: Enterprise va arăta astfel.
Dacă directorul slave are un mod de afișare sub forma unei liste ierarhice, atunci înainte de a utiliza directorul, trebuie mai întâi să fie selectat elementul directorului proprietar. Când se afișează pe ecran, directorul subordonat va conține în titlul său numele elementului proprietar, iar lista elementelor din directorul subordonat va conține numai elementele atribuite elementului proprietar. Atunci când elementul de proprietar se modifică, informațiile din fereastra directorului subordonat vor fi actualizate corespunzător.
Dacă deschideți directorul subordonat fără a selecta elementul proprietar, atunci în fereastra directorului subordonat nu vor fi afișate elemente și mesajul "Elementul proprietarului nu este specificat" va fi afișat în antetul ferestrei.
Atunci când se lucrează cu 1C: Prednriyatie pentru un director subordonat poate fi înscris într-o listă ierarhică. În acest caz, directorul subordonat în fereastra va afișa toate elementele directorului, care este, articole diferite patch-uri pentru proprietari, vor fi afișate alternativ. Cu toate acestea, orice element al unui director subordonat „știe“ proprietarul său: Când modul de director este pornit „Edit în dialog“ (.. A se vedea mai jos paragraful „Crearea de director Formulare“), numele de membru-proprietarului va fi dat elementul de editare din titlu a ferestrei director.
Setarea proprietarului actual
SprdDogovory = CreateObject ("Handbook.Contracts");
SprDogovory.Ipolzovat proprietarul (VybrKontragent);
Elementele SprDogovory.Vybrat (); // deschideți eșantionul în conformitate cu contractele contrapărții selectate
<.>
Informații despre elementul curent
Dacă directorul este subordonat, va fi util să utilizați următoarele metode și atribute care vă permit să obțineți informații despre elementul curent al directorului: