Lucrul cu elemente predefinite în 8

Datorită faptului că dezvoltatorii au adăugat funcționalitate platformei pentru separatoare, activitatea cu valori predefinite a obiectelor a fost revizuită semnificativ. Voi descrie momentele pe care le-am întâlnit.

Schimbarea principală este că puteți gestiona acum crearea de articole predefinite.
În plus, a fost posibil să se adauge și să se elimine elemente predefinite din modul Enterprise. Dar - nu puteți crea un element predefinit arbitrar. Puteți atribui oricare dintre numele existente la unul dintre numele predefinite din Configurator.

Pentru a gestiona crearea elementelor predefinite, există următoarele mecanisme:
1) În Configurator pentru un obiect metadate, puteți defini modul de actualizare a datelor predefinite - Auto, Actualizare automată, Nu se actualizează automat.
2) Pentru informații în general, puteți seta modul pentru crearea metodelor predefinite folosind metoda:
Pentru a stabili actualizarea bazei de date dedicate (Actualizarea datelor dedicate), unde
Datele de actualizareDefined - enumerarea sistemului cu opțiuni Auto, Actualizare automată, Nu se actualizează automat
3) Pentru un tabel specific al bazei de date de informații, puteți seta modul de creare predefinit prin manager prin intermediul metodei:
Instalați actualizarea datelor dedicate (actualizați date dedicate), de exemplu
Directories.Nomenclature.InstallDeleteDeployedData (UpdateDeployedData.UpdateAutomatically);
4) Tipul bazei de informații - principalul nod RIB (care nu este subordonat nici unui plan de schimb care este RIB) sau nodul RIB periferic influențează de asemenea crearea elementelor predefinite.

Citat din referință:
Actualul mod de actualizare este definit în următoarea ordine:
  • Dacă obiectul metadate din date este setat la un alt mod de actualizare decât Auto. atunci această valoare este utilizată. (punctul 3 din lista de mai sus)
  • În caz contrar, dacă obiectul metadate din configurație are un mod de actualizare diferit de Auto. atunci această valoare este utilizată. (punctul 1 din lista de mai sus)
  • În caz contrar, dacă este setat un mod de actualizare diferit de Auto pentru baza de date cu informații. atunci această valoare este utilizată. (punctul 2 din lista de mai sus)
  • În caz contrar, dacă este un nod RIB periferic, datele predefinite nu vor fi actualizate. Dacă verificarea este efectuată pentru nodul RIB central sau pentru o bază de date care nu este RIB, se va efectua actualizarea datelor predefinite.

Să vedem câteva cazuri standard:
1) Avem o bază de informații fără a utiliza RIB.
În acest caz, totul ar trebui să fie bine - în cazul în care metadatele de configurare mod de a actualiza predefinit = „Auto“ și modul de program expus nu a fost înlocuită pentru baza de cunoștințe ca un întreg sau un tabel individuale, vor fi create elementele predefinite \ actualizate restructurarea bazei de cunoștințe (acest lucru poate atunci când creați un IB din cf, instalați o nouă versiune de configurare sau efectuați o restructurare prin testarea și corecția).

2) Avem o bază de informații folosind RIB.
În acest caz, în mod implicit, în baza de date periferică, elementele predefinite nu vor fi create pentru toate obiectele de metadate.
Dacă obiectul metadate intră în RIB, elementele predefinite vor fi create fie atunci când se creează imaginea inițială, fie când se efectuează un schimb cu nodul principal, dar nu în momentul actualizării configurației, ci în momentul citirii mesajului de schimb.
Dacă obiectul metadate nu este inclus în RIB, elementele predefinite nu vor fi create, astfel încât baza de date nu va fi utilizabilă.

Ce puteți face:
- pentru a expune un mod de a actualiza metadatele pentru un obiect în configurația = „Actualizare automat“ nu este destul de corect, în cazul în care există mai multe planuri diferite de partajare de configurare RIB cu compoziții diferite, iar obiectul apare numai în unele dintre ele. Dacă se face acest lucru, atunci în această situație particulară eroarea va fi rezolvată - în nodul periferic vor fi create elementele predefinite. Dar atunci când creați o nervură alte planuri de partajare (în cazul în care este inclus obiectul) zadubliruyutsya elemente - în nodul periferic provin de la nodul principal de pre-definite.

- utilizați metoda pentru a seta metoda de actualizare la întregul IS este, de asemenea, incorectă - chiar și ceea ce ar trebui să vină cu schimbul de la nodul principal va fi creat și o grămadă de duplicate va apărea.

- Rămâne doar să setați metoda de actualizare pentru tabelele specifice ale bazei de date. Înregistrăm toate obiectele undeva la începutul operării sistemului și înainte de a apela elemente predefinite care nu au fost încă create. În principiu, acest cod poate fi făcut și o singură dată taxa pentru baza de informații printr-un proces extern, dar în acest caz, în baza unității periferice merge chiar nu a putut fi din cauza faptului că la elementele predefinite, nu migrează de la unitatea principală, a existat un apel la începutul funcționării sistemului :

Un alt moment, nu foarte frumos - dacă ați rulat deja un nod periferic, iar după actualizare a fost accesat pentru prima dată la tabelele (chiar și deschide doar o listă a directorului, de exemplu), și apoi mai târziu introduce codul pentru a instala metoda de actualizare, executarea acestui cod nu va conduce la crearea de predefinite elemente.
Pentru a remedia acest lucru, va trebui să restructurați baza de informații prin testarea și corecția.
O metodă separată care ar permite forțarea creării de predefinite, nu.

Elementele predefinite pot crea mâini, dar fii atent dacă utilizați un mod client-server și platforma 8.3.4 - după adăugarea de elemente manual, este probabil ca intra in baza de date nu mai funcționează - obține atunci când rulează „pe o eroare fatală de server 1C“ și numai în jurnalele jurnalului tehnologic veți vedea că sistemul a încercat să introducă în tabel un duplicat GUID.

3) Creați un nou nod periferic fără a descărca imaginea inițială.
Nu știu cât de răspândită este această metodă, dar am folosit deja o modalitate circulară de 7.7 pentru a crea un nou nod, doar pentru a nu bloca nodul principal pentru o lungă perioadă de timp. În 8-i totul a devenit mult mai simplu și este implementat pe deplin prin mijloace standard.
De obicei, pentru a crea un nou nod, imaginea inițială este descărcată și va fi completat corect cu toate informațiile, inclusiv cu valori predefinite care migrează. Dar aceasta necesită o blocare monopolistă a bazei, care la volum mare este pur și simplu inacceptabilă.
O altă opțiune - în funcție de configurația unității principale pentru a crea o bază de date goală, apoi a crea ambele baze de date noduri se atașează la nodul periferic principal pentru a înregistra obiecte la schimb, și așteptați pentru sfârșitul schimbului. Și toate acestea într-un mod liniștit, fără monopol, care blochează baza. Dar, cu o nouă abordare a creării predefinite, în acest caz, vom obține problema - atunci când creați o nouă bază de date, ei încă nu vor fi legat de unitatea principală, în consecință, sistemul va crea toate elementele predefinite, apoi dublu lor provin de la unitatea principală.
Pentru a rezolva această problemă, dezvoltatorii de platforme recomandă următoarele:
  • După încărcarea și actualizarea configurației nodului periferic, executați Configuratorul în modul batch cu comanda "/ SetPredefinedDataUpdate -DoNotUpdateAutomatically"
  • efectuați acțiuni pentru a configura nodurile
  • executați Configuratorul în modul lot cu comanda "/ SetPredefinedDataUpdate -Auto"
  • Nodul periferic este gata de funcționare. Datele predefinite vor proveni de la nodul central. Nu va fi dublu.

Articole similare