Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Știri
  • Elemente predefinite. Adăugarea la o configurație standard

Elemente predefinite. Adăugarea la o configurație standard

Toată lumea știe diferența dintre elementele predefinite și cele obișnuite: „Elementele predefinite sunt create în modul Configurator și nu pot fi șterse în modul 1C:Enterprise.” În modul utilizator, puteți distinge un element predefinit de cele adăugate de utilizatori folosind o pictogramă specială (vezi următoarea captură de ecran).

Practic, elementele predefinite sunt create de dezvoltatori pentru a lega algoritmi la acestea în diferite obiecte de configurare. De exemplu, în configurația „Managementul întreprinderii de producție” din directorul „Calitate”, dezvoltatorii au adăugat un element predefinit „Nou”.

Acest element este utilizat în multe module de configurare. Deci, în documentul „Recepție de bunuri și servicii”, la înregistrarea în toate registrele în care există o dimensiune „Calitate”, se înlocuiește valoarea unui element predefinit. Mai jos este o listă de completare a tabelului de postare pentru registrul „Bunuri ale organizațiilor”:

// PRODUSE PE ÎNREGISTRARE ProductsOrganizations. MoveSet = Se mută. ProduseOrganizaţii; Dacă Tipul chitanței = Transferuri. Tipuri de primiri de bunuri. Atunci la depozit // Obțineți un tabel de valori care se potrivește cu structura setului de înregistrări de registru. MotionTable = MotionSet. Descărcați() ; // Completați tabelul de mișcare. Scop general. LoadValueTable(ProductTable, MovementTable) ; // Câmpuri lipsă. Masa de miscare. FillValues(Organizație, „Organizație” ); Masa de miscare. FillValues(Nedefinit, „Agent comisionar”); Masa de miscare. FillValues(Directoare. Calitate. Nou, „Calitate”); // Completați calitatea dintr-un element predefinit

Astfel, caracteristicile elementelor predefinite și scopul lor sunt destul de simple. Să ne uităm la modul în care sunt stocate în tabelele bazei de date și la modul în care diferă de elementele obișnuite.

Diferențele

În configurația de testare, a fost creat directorul „Produse”. Grupul „Elemente de testare” a fost creat în el. Puteți vedea conținutul grupului în captura de ecran de la începutul articolului. Pentru directorul „Produse”, baza de date SQL are un tabel corespunzător „_Reference37” cu următoarea structură:

Dar cum putem determina dacă detaliile corespund arborelui de configurare și câmpurilor din tabelul SQL?

Vom folosi metoda standard de context global „GetDatabaseStorageStructure()”, care ne va returna un tabel de valori cu o descriere a structurii tabelului.

În tabelul de valori „Câmpuri”, vedem corespondența dintre câmpurile tabelului SQL și detaliile obiectului din arborele de metadate. În exemplul nostru, luăm în considerare structura directorului „Produse”. Toate directoarele au un atribut standard „Predefinit” de tip boolean, care este setat la TRUE pentru elementele predefinite:

Pe baza tabelului cu structura de stocare a directoarelor din baza de date, putem spune cu siguranță că câmpul „Predefinit” corespunde câmpului „IsMetadata”. Dacă ne uităm la conținutul tabelului „_Reference37” din baza de date SQL, vom vedea următoarele:

În intrarea pentru elementul predefinit, valoarea câmpului „IsMetadata” este setată la „0x01”, care corespunde steagului TRUE. Pentru elementele normale valoarea este setată la „0x00”. Aceasta este principala diferență dintre elementele predefinite și cele obișnuite. Toate celelalte câmpuri sunt stocate în baza de date în același mod ca și câmpurile din articolele obișnuite adăugate de utilizatori.

Elementele predefinite pot avea utilizări foarte interesante. Cu ajutorul lor, puteți preveni ștergerea/marcarea pentru ștergere a grupurilor de elemente din director și alte obiecte unde pot fi adăugate. Dacă încercăm să ștergem sau să marchem pentru ștergere grupul „Elemente de testare”. atunci obținem următoarele erori:

Astfel, elementele predefinite fac ca grupul în care sunt plasate să fie și „predefinit”.

Completare

Elementele predefinite sunt parte integrantă a majorității configurațiilor. Utilizarea lor simplifică dezvoltarea și face construcția funcționalității din punct de vedere logic mai „armonioasă” și integrală.

Atenţie! Aceasta este o versiune introductivă a lecției, ale cărei materiale pot fi incomplete.

Conectați-vă la site ca student

Conectați-vă ca student pentru a accesa materialele școlare

Limbajul de interogare 1C 8.3 pentru programatori începători: funcția VALUE

Funcţie SENS destinate circulatieiîn corpul de cerere la valorile de enumerare a sistemuluiȘi date predefinite.

Ce altceva sunt aceste enumerari si date predefinite, intrebi. Să vorbim despre totul în ordine.

Transferuri

Transferuri- acesta este un obiect de aplicație (vă amintiți că există și DirectoareȘi Documentație). De ce era nevoie de el?

Ideea este că o enumerare este un obiect special. Spre deosebire de cărțile și documentele de referință toate valorile de enumerare posibile sunt specificate în etapa de configurareși nu poate fi schimbat în continuare în modul utilizator.

Imuabilitatea este principalul lor atu. Acestea sunt un fel de constante ale bazei de date.

Și dacă programatorul în modul de configurare a creat o enumerare cu numele Podea si semnificatii MasculinȘi Femeie, atunci când scrie un program poate fi sigur că valorile acestei enumerații nu se vor schimba în viitor. Prin urmare, el poate accesa în siguranță aceste valori din cod.

Imaginați-vă ce se va întâmpla dacă va încerca să folosească directorul în aceste scopuri?

În primul rând, un utilizator îl va lua și va adăuga un fel de „podă marțiană”.

În al doilea rând, un alt utilizator va continua și va șterge unul dintre genurile existente sau își va schimba numele.

Și programul se va rupe din această cauză, pentru că pentru ca el să funcționeze este necesar să existe exact două genuri și exact cu numele „Bărbat” și „Femeie”.

Pentru astfel de cazuri există enumerații: pentru a defini rigid toate variantele posibile de valori o dată (în etapa de configurare) și apoi le utilizați în codul programului.

Să ne uităm la un exemplu de astfel de enumerare în baza noastră de date „Gastronom”. Citiți o versiune de probă a lecției, sunt disponibile lecții complete.

Iată enumerarea noastră cu numele Podea. Ce valori poate lua?

Există doar două sensuri. Cu numele „Bărbat” și „Femeie”. Exact ce ne trebuie.

Unde putem folosi această enumerare în viitor? Ei bine, desigur, în director Clienții. Vă rugăm să rețineți că o nouă recuzită cu numele a apărut în lista sa Podeași tip Enumerare.Gen:

Astfel, la completarea unui card de client deja în modul utilizator, vom putea selecta doar două valori ca sex al clientului: Bărbat și Femeie:

Acum să creăm o interogare care selectează clienții și sexul acestora din baza de date:

Acum să schimbăm interogarea, astfel încât să rămână doar bărbații. Dacă încercăm să scriem ceva de genul:

atunci nu primim nimic:

Deoarece valorile de enumerare nu pot fi accesate în acest fel. Acestea trebuie accesate folosind funcția SENS:

Deci, una dintre sarcinile funcției SENS- utilizarea valorilor de enumerare în interogări.

Date predefinite

Mai bine arăt cu un exemplu ce sunt datele predefinite pentru directoare. Citiți o versiune de probă a lecției, sunt disponibile lecții complete.

În baza noastră de date „Gastronom” (în modul utilizator), deschideți directorul „Unități de măsură”:

Aruncă o privire mai atentă la elementele sale. Vedeți cercurile galbene de lângă unele dintre elemente? Aceste elemente (care au cercuri) sunt date predefinite.

În general, dacă orice element al directorului este predefinit (adică există un cerc galben pe el), atunci acesta este un element special.

În primul rând, aceasta înseamnă că elementul a fost creat în etapa de configurare de către programator (în cazul nostru, acestea sunt elemente cu codurile 1, 2 și 3).

Și, în al doilea rând, asta înseamnă că acest element este foarte important pentru funcționarea programului. Că un cod din baza de date este legat de el (sau mai degrabă de numele său predefinit).

De aceea pur și simplu ștergerea unui astfel de element nu va funcționa. Încercați să îl marcați pentru ștergere:

Să trecem acum la modul de configurare și să vedem unde sunt create aceste elemente predefinite (în acest caz pentru directorul Unități de măsură):

Aici sunt toate elementele noastre predefinite pentru cartea de referință pentru unitatea de măsură. Vă rugăm să rețineți că toate elementele predefinite au un nume special care nu este afișat în modul utilizator.

Pentru un element cu codul 1 acest nume este Ton, cu codul 2 - Gram și așa mai departe. Acest nume este numit nume de element predefinitși tocmai cu acest nume îl puteți accesa din cod (sau din cerere în cazul nostru).

Vă puteți întreba de ce nu a fost posibil să faceți unitățile de măsură doar o listă cu elementele Ton, Gram și Pack? Și totul pentru că în acest caz este important pentru noi ca cartea de referință a unității de măsură să conțină întotdeauna unele elemente specifice (tonă, gram și ambalaj), dar în același timp nu dorim să interzicem utilizatorului să adauge unele dintre ele. elemente (kilogram, bucată și așa mai departe). Citiți o versiune de probă a lecției, sunt disponibile lecții complete.

Prin urmare, elementele predefinite sunt cu siguranță mai potrivite aici decât enumerațiile.

Și putem accesa elementele noastre predefinite din cerere folosind o funcție deja familiară nouă SENS:

A lua testul

Începeți testul

1. Sunt setate valorile de enumerare

2. Pentru a stoca o listă de depozite dintr-o companie, tipul

3. Pentru a stoca o listă de unități de măsură într-un depozit, tipul

4. Pentru a stoca ratele de impozitare, a căror listă nu trebuie modificată de utilizator, tipul

5. Pentru a accesa valoarea de enumerare într-o cerere, utilizați funcția

6. Pentru a stoca ratele de impozitare, a căror listă va fi modificată de utilizator, tipul

7. Datele predefinite vin cu

O zi buna.

Astăzi vom vorbi despre inovația din platforma 8.3 în ceea ce privește elementele predefinite.

Introducere

Permiteți-mi să vă reamintesc că mai devreme, în practică, de foarte multe ori am vrut să mă uit la un element de director pentru a afla numele său predefinit. De exemplu, ați creat două contrapărți predefinite și le-ați numit IPSidorov și OOOMeteor. Și le-au cusut ceva logică.

Când totul a fost depanat și rezolvat, s-a dovedit că sarcina a fost pusă invers și logica antreprenorului individual era necesară pentru SRL, iar logica SRL-ului pentru antreprenorul individual. „Nici o problemă”, spunem noi, iar în modul întreprindere redenumim elementele. La urma urmei, intrarea în cod este mult mai dificilă. Trece un an și vi se dă o nouă sarcină: să puneți mai multă logică pentru IP Sidorov. Intri in configurator, scrii logica, incepi sa verifici si nimic nu merge, pentru ca... în configuratorul IPSidorov și în întreprindere - OOOMeteor. Creierul este rupt și vreau să distrug această greblă. Cel mai simplu și mai evident lucru este să afișați numele unui element predefinit sub forma unei liste. Iată problema: puteți obține doar numele unuia predefinit în 8.2 folosind metoda. Dar metoda are propriile inconveniente; nu poate fi obținută într-o cerere. Acestea. Primul inconvenient este să obțineți numele celui predefinit dintr-o referință la director.

Al doilea inconvenient este atunci când avem deja un element de director și trebuie să îl facem predefinit. Creăm un element predefinit și obținem două elemente în director. Unul este predefinit, celălalt este operațional, care este menționat în toate documentele noastre. Înlocuirea link-urilor cu siguranță ajută, dar dacă baza de date este mare, atunci este dificil.

Acum la obiect

Primul este că directorul are acum proprietatea „Actualizarea datelor predefinite”.

Ce ne oferă acest domeniu? Dacă este setat la „Nu actualizați automat”, atunci prin adăugarea unui element predefinit, nu îl vom vedea imediat în director. Acestea. metadatele nu au nimic de-a face cu datele. Și dacă nu îl creați în director, atunci accesarea acestuia după numele său prin managerul de directoare va cauza o eroare de sintaxă.

Foarte interesant, dar de ce? Cum putem crea un element în director? Îl puteți crea oricum doriți sau îl puteți conecta la unul existent. Acum directorul are atributul „Numele datelor predefinite”. Creăm un element de director în mod programatic, ca de obicei, prin „Directories.Contractors.CreateElement()” și completăm atributul „PredefinedDataName” egal cu numele elementului predefinit. Sau dacă elementul există deja, obținem obiectul său și completăm din nou „Numele datelor predefinite”. Toate.

Și la sfârșit puțin sirop

Acest nou atribut nu este doar lizibil și scris, ci este disponibil și în solicitări. În acest fel îi poți impune condiții în interogări, stabili dacă este predefinit sau nu.

Vă mulțumim pentru atenție.

Când lucrați pe platforma 1C:Enterprise 8.x, este adesea nevoie de a lega codul programului la elemente de director obișnuite (nu predefinite). De exemplu, o organizație poate avea cinci tipuri de prețuri care sunt utilizate în aproape toate mecanismele. În acest caz, accesul programatic la un anumit preț se realizează, în cel mai bun caz, fie prin scârțâit după codul din director, fie prin numele elementului, în cel mai rău caz.

Am asistat la modul în care în rapoarte, pentru a obține prețul solicitat, a fost folosită selecția pe tip de preț într-o solicitare după numele acestuia (vezi următoarea captură de ecran).

Drept urmare, obținem un raport instabil care nu va mai funcționa dacă numele tipului de preț este schimbat. Dacă sunteți legat de codul elementului, atunci există întotdeauna posibilitatea de a-l schimba. De exemplu, din cauza încălcării unicității codurilor de director, administratorul poate începe să renumeroteze obiectele, ceea ce va duce la modificări ale codurilor de elemente și raportul nu va mai funcționa corect.

În plus, dacă conectați la numele sau codul elementelor de director, atunci când primiți un link către un element, o căutare va fi întotdeauna efectuată în tabelul de director. În ciuda faptului că detaliile standard ale sistemului sunt indexate de SGBD, căutarea acestora în unele cazuri poate ocupa resurse semnificative. În plus, ar fi mai rațional să nu se efectueze o interogare de căutare folosind tabelul de referință dacă, să spunem, linkul către element este deja „cunoscut dinainte”.

Ca o cale de ieșire, puteți stoca un link către fiecare element utilizat frecvent din directorul „Tipuri de preț articol” în constante separate și puteți obține valori de la acestea în cerere. Cu toate acestea, în acest caz, dezvoltatorul va trebui să adauge o constantă separată pentru fiecare astfel de element. Situația va deveni semnificativ mai complicată dacă astfel de elemente nu se află numai în directorul „Tipuri de preț al articolului”, ci și în alte directoare („Categorii de obiecte”, „Calitate”, „Nomenclatură” și altele). Atunci numărul constantelor din sistem poate crește de câteva ori!

Desigur, ar fi posibil să adăugați elemente predefinite la fiecare dintre directoare și accesarea acestora ar deveni mult mai ușoară. Cu toate acestea, modificarea obiectelor implicite ar face mai dificilă actualizarea configurației din pachetele furnizorului.

Există o abordare mai optimă atât în ​​ceea ce privește dezvoltarea structurii metadatelor de configurare, cât și în ceea ce privește performanța sistemului. Despre asta vom vorbi astăzi.

Soluție universală

Esența soluției universale va fi următoarea: va fi creat un director în care dezvoltatorul va adăuga elemente predefinite. La căutare a fost adăugat atributul „Valoare”, al cărui tip depinde de valorile pentru care se va crea corespondența „Element de căutare predefinit -> Valoare asociată”. Structura metadatelor directorului arată astfel (vezi următoarea captură de ecran).

Pentru a obține un element predefinit, cea mai bună opțiune este să folosiți metoda globală „Valoare predefinită(<Имя>)" . Calea completă către elementul predefinit este transmisă ca parametru metodei. Sintaxa este similară cu funcția de limbaj de interogare VALUE().

Pentru ușurința dezvoltării, recomand plasarea funcției de obținere a valorii asociate unui element predefinit într-un modul comun. În configurația de testare, disponibilă pentru descărcare prin linkul de la sfârșitul articolului, a fost creat un modul comun „Valori ale elementelor predefinite” cu o funcție de export „GetValue of PredefinedElement(<ИмяПредопределенногоЭлемента>)" . Codul de program al funcției primește o referință la un element predefinit, apoi primește valorile atributului „Valoare” folosind o solicitare. Următoarea captură de ecran arată lista completă a funcțiilor.

După cum putem vedea, funcția generează o solicitare pentru atributul „Valoare” al elementului predefinit transmis ca parametru. Parametrul funcției este un șir cu numele unui element predefinit.
Pentru ca mecanismul creat să funcționeze corect, trebuie să legați un element predefinit în modul utilizator cu un element de director obișnuit, selectând elementul corespunzător din atributul „Valoare”. Să trecem la problema impactului asupra performanței.

Impactul asupra performanței

Am efectuat un test de viteză pentru ambele opțiuni de căutare: după nume și prin link dintr-un element predefinit. Căutarea a avut loc în directorul „Produse” cu 20.000 de înregistrări. La efectuarea testelor pe o bază de date de fișiere, s-au obținut următoarele rezultate:

Rezultatele au arătat că pentru versiunea de fișier a lucrării, utilizarea elementelor predefinite pentru a obține elemente utilizate frecvent din alte directoare este de aproape 4 ori mai lentă!

În versiunea client-server de lucru, rezultatele testelor arată o imagine complet diferită. Viteza de obținere a unei legături către elementul dorit nu a scăzut semnificativ (unul dintre teste a arătat 0,002 secunde pentru căutarea după nume și 0,0008 secunde când se lucrează printr-un element predefinit), dar fiabilitatea programului a crescut semnificativ!

concluzii

În cazurile în care este adesea necesară conectarea la elemente de director obișnuite, recomand să nu utilizați legarea prin cod sau nume. Această abordare reduce fiabilitatea și performanța sistemului.

În timpul lucrului cu platforma, am întâlnit de mai multe ori situații în care, după schimbarea numelui, de exemplu, elementul de director „Tipuri de nomenclatură de preț”, munca majorității rapoartelor non-standard a eșuat.

Cu cât mai mulți algoritmi sunt conectați la elemente de director obișnuite printr-un cod sau un nume, cu atât sistemul este mai puțin stabil.

În plus, această abordare vă va permite să nu modificați obiectele de configurare standard dacă trebuie să adăugați un element predefinit la acestea. Acest lucru va face procesul de actualizare a configurației oarecum mai ușor în viitor.

Fișiere pentru descărcare:

  1. Încărcarea unei baze de date de testare cu exemple din articol.

Însăși ideea de lucru programatic cu elemente predefinite, în opinia mea, este foarte corectă. Există pur și simplu nuanțe care trebuie luate în considerare atunci când lucrați.

În primul rând, trebuie să înțelegeți clar pentru dvs. că există elemente predefinite în configurație și există elemente predefinite în baza de informații (IS). Din punct de vedere tehnic, elementele de securitate a informațiilor predefinite sunt cele mai comune elemente ale directoarelor, în care atributul „Numele datelor predefinite” indică cărui element de configurare predefinit îi corespund. Ele nu sunt diferite de elementele obișnuite. Prin urmare, orice element obișnuit de securitate a informațiilor poate fi făcut predefinit, orice element predefinit poate fi făcut obișnuit. Pentru a face acest lucru, trebuie doar să introduceți valoarea dorită în atribut „PredefinedDataName”.

Din când în când, această proprietate conține o valoare care nu este cea intenționată de dezvoltator. Ca urmare, apar erori în funcționarea 1C. De la critic, în care munca este practic imposibilă, până la non-critică, în care logica algoritmilor este perturbată.

Condițional putem distinge trei tipuri de erori:
1. „Elementul predefinit nu se află în date”;

3. Specificarea incorectă a unui element predefinit;

1. „Elementul predefinit nu se află în date” - o absența unui element predefinit descris în configurație în datele de securitate a informațiilor.

Acesta este cel mai ușor tip de eroare de depanat și corectat. Simplitatea sa este că platforma raportează destul de corect această situație „Lipsește elementul predefinit din date” și este destul de clar cum se poate remedia.

La accesarea unui element lipsă din codul „Directoare.Tipuri de informații de contact.E-mailul persoanei de contact” este afișat un mesaj

La accesarea unui element din cererea „VALUE(Directory.Types of Contact Information.Email of the Contact Person)” este afișat următorul mesaj:

Această eroare apare dacă un element este descris în configurație, dar elementul nu este asociat cu acesta în baza de date.

Pentru început, să clarificăm că această situație nu este întotdeauna greșită. Este destul de posibil să folosiți date predefinite într-un fel de logică de program, care pentru majoritatea utilizatorilor ar putea să nu fie utilizate. În acest caz, pentru a nu aglomera directorul pentru toți utilizatorii configurației, este logic să definiți elemente predefinite în configurație, dar să nu le creați în toate sistemele de securitate a informațiilor, ci doar pentru acele sisteme de securitate a informațiilor în care se utilizează logica de configurare necesară. În acest caz, programatorul poate specifica proprietatea „Nu actualizați datele predefinite” pentru director și poate crea elemente în mod programatic atunci când accesează funcționalitatea modulului. Sau permiteți utilizatorului să lege în mod independent elementele modulului predefinite la elementele obișnuite existente.

De asemenea, crearea automată a elementelor predefinite nu este utilizată atunci când se lucrează în modul RIB. Deoarece elementele noi trebuie transferate din baza de date centrală și nu create în noduri cu UID-uri diferite.

Acestea. Uneori, eroarea este referirea la un element nepotrivit, nu prezența unui astfel de element în sine.

Este necesar să se analizeze de ce elementul nu a fost creat. Poate că ar trebui creat atunci când se execută un mod de program. De exemplu, după finalizarea unui schimb în RIB. Sau poate că a fost doar șters accidental.

Dacă logica prevede completarea elementelor predefinite nu automat, ci într-un mod separat, atunci înainte de a utiliza accesul după nume " Directoare.Tipuri de informații de contact.E-mailul persoanei de contact„Pentru a preveni o situație excepțională, este indicat să verificați dacă elementul este deja în baza de date. Dacă elementul lipsește, atunci informați utilizatorul despre acest lucru și explicați ce mod trebuie să efectueze pentru a umple elementul. Pentru o astfel de verificare , puteți rula o interogare de date.

Solicitare = Solicitare nouă; Request.Text = "SELECT | Tipuri de informații de contact. Link | FROM | Director. Tipuri de informații de contact CUM Tipuri de informații de contact | UNDE | Tipuri de informații de contact. Numele datelor predefinite = "" E-mailContactPerson"""; Elementul lipseșteInData = Query.Execute().Empty();

Dacă aceasta este încă o eroare în datele bazei de date, atunci este necesară legarea la un element predefinit al elementului de securitate a informațiilor. Acestea. este necesar să se explice sistemului ce element de securitate a informațiilor ar trebui să acceseze codul programului cu acest nume. Din punct de vedere tehnic, o legare este pur și simplu specificarea numelui unui element predefinit în proprietatea "PredefinedDataName" din elementul IS. Pentru a-l instala, trebuie doar să rulați codul:

2. „Elementul predefinit nu este unic” - h elemente duble predefinite:

Această situație este că mai multe elemente de securitate a informațiilor sunt atașate unui element predefinit. În acest caz, la accesarea unui nume predefinit, elementul va fi selectat aleatoriu. Această situație este întotdeauna greșită. Dificultatea sa este că platforma nu o raportează în niciun fel. Algoritmii încep să funcționeze incorect.

Platforma va raporta eroarea „Elementul predefinit nu este unic” doar atunci când încercați să editați un element duplicat.

Atâta timp cât nimeni nu trebuie să editeze elementul, nimeni nu va ști despre eroare.

Astfel de duplicate pot fi create, de exemplu, dacă RIB este utilizat pentru director și modul „Actualizare automată” este specificat în proprietățile pentru date predefinite. În acest caz, la efectuarea unui schimb, o instanță a datelor predefinite va fi creată atunci când configurația este actualizată. O a doua instanță de elemente predefinite cu același nume va fi transferată din baza de date centrală în timpul schimbului.

De asemenea, aceste duplicate vor apărea atunci când se utilizează procesarea de schimb între configurații dacă diferite elemente de securitate a informațiilor corespund elementelor predefinite în baze de date diferite. În acest caz, o copie a datelor predefinite există deja în baza de date, a doua va veni la încărcarea datelor cu un alt UID. Dacă efectuați transferuri de date, trebuie să decideți care elemente ale bazei de date sunt considerate primare și să le utilizați în baza de date subordonată. În baza de date subordonată, este necesară înlocuirea utilizării elementelor vechi cu elemente ale bazei de date principale.

Astfel de erori din baza de date pot fi identificate cu o interogare precum:

SELECT Tipuri de informații de contact.Nume de date predefinite, CANTITATE (DIFERATE Tipuri de informații de contact.Link) AS Număr de predefinite FROM Director.Tipuri de informații de contact AS Tipuri de informații de contact GROUP BY Tipuri de informații de contact.Nume de date predefinite AU CANTITATE (DIFERITE Tipuri de Contact noInformation.Link) > 1

Această interogare va returna o listă de elemente predefinite cu care este asociat mai mult de un element de securitate a informațiilor.

Dacă astfel de elemente sunt prezente, este necesar să eliminați legătura cu cea predefinită pentru unul dintre ele. Acestea. Este necesar să se determine fără ambiguitate pentru sistem la ce element de securitate a informațiilor ar trebui să se refere codul programului atunci când se utilizează acest nume. Pentru a face acest lucru, trebuie doar să rulați codul.

3. Specificarea incorectă a unui element predefinit.

Eroarea este că elementul predefinit corespunde unui element care nu este furnizat de logica programului. Astfel de erori sunt cele mai greu de diagnosticat. Spre deosebire de primele două tipuri, configurația nu poate fi verificată automat pentru aceste erori. Ele pot fi identificate doar analizând logica muncii. Dacă aveți îndoieli, puteți verifica dacă este utilizat elementul corect.

Pentru a face acest lucru, rulați una dintre comenzi.

//Definirea unui element de securitate a informațiilor care este legat de notificarea predefinită dorită (Directoare.Tipuri de informații de contact.E-mail al persoanei de contact) //Definirea unui element predefinit la care este atașat Notificarea selectată (Link către elementul.Numele datelor predefinite )

Dacă sunt identificate astfel de erori, este necesar să eliminați conexiunea incorectă cu elementul vechi și să adăugați o conexiune cu noul element. Codul de operare este similar cu codul pentru corectarea primelor două tipuri de erori.

Ei bine, pe scurt despre erorile din timpul programului de lucru sau în modul configurator:

„Elementul predefinit nu îi aparține<Имя справочника>" - apare o eroare la încercarea de a scrie un element predefinit cu un nume care nu se potrivește cu numele din configurator.

„Obiectele nepredefinite nu pot avea înregistrări de vizualizare subconto predefinite” - apare o eroare la încercarea de a face nepredefinit un element dintr-un plan de conturi predefinit. Pentru a elimina erorile, este necesar să eliminați marcajul „Predefinit” din fiecare linie de subcontact element.

„Obiectele nepredefinite nu pot avea înregistrări predefinite ale principalelor tipuri de calcule”- apare o eroare la încercarea de a face un element predefinit al planului de tipuri de calcul nepredefinit. Pentru a elimina erorile, este necesar să eliminați caseta de selectare „Predefinit” pentru fiecare linie a tipului de calcul principal al elementului.

„Elementele predefinite nu sunt unice”- se generează o eroare în configurator la actualizarea bazei de informații pentru o versiune de configurare fără modul de compatibilitate cu 8.3.4. Este necesar să verificați dacă există duplicate și să le eliminați înainte de actualizare.

„Numele elementului predefinit nu este unic” - eroarea apare atunci cand exista mai multe elemente predefinite cu acelasi nume in configuratie la actualizarea pe platforma8.3.6.2332 și mai sus. Este necesar să eliminați duplicatele din configurație.

Pentru a lucra cu date predefinite, recomand procesarea. Poate efectua orice acțiuni cu date predefinite și, de asemenea, poate verifica configurația în ansamblu pentru prezența erorilor din primele două tipuri (elemente duplicate și lipsă) în toate obiectele de securitate a informațiilor (directoare, planuri de conturi, PVC, PVR) .

Cele mai bune articole pe această temă