Planul de schimb în 1C este un obiect de configurare a metadatelor care servește la implementarea sincronizării datelor între bazele de informații 1C (și, de asemenea, pentru schimbul cu alte sisteme).
Planurile de schimb conțin un mecanism de înregistrare a modificărilor, astfel încât planurile de schimburi să poată stoca informații despre elementele modificate (documente, directoare etc.) din planul de schimb.
Prin structura sa, planul de schimb este foarte similar cu obiectul metadate "Directoare". Pe lângă planul de referință, planul de schimb conține elemente în care elementele planului de schimb sunt noduri ale bazelor de informații. Planul de schimb poate conține cât mai multe noduri posibil, dar trebuie să aibă cel puțin un nod "rădăcină".
Să analizăm în detaliu structura planului de schimb:
Obiectul planului de schimb de metadate este localizat în ramura "Generală" a configuratorului.
Înregistrarea programului de modificări într-un anumit plan nod de schimb
Fragmentul codului pentru înregistrarea programelor modificărilor planului de schimb
NodeCollection = planuri de schimb. prosto_Platform schimb. Găsiți codul ("001"); // căutați nodul planului de schimb prin cod, modificările vor fi înregistrate în acest nod
Daca TypeSource (Source) = Type ("Directory.Nomenclature") Apoi // in parametrul procedurii Sursa este trecut obiectul pe care il vom inregistra
Planuri de schimb. Înregistrează modificările (NodeChange, Source); // înregistrați obiectul
Modificări de înregistrare moale poate fi efectuată într-un obiect modul de procedură „PriZapisi“, sau este posibil să se stabilească un abonament separat pentru evenimentul „PriZapisi“ și înregistrează modificările în abonament (a doua variantă este preferabilă, deoarece nici o altă problemă cu configurația de actualizare).
De asemenea, puteți înregistra un element în planul de comunicare în modul de utilizare, utilizând procesarea "Înregistrați modificările pentru schimbul de date".
Deschideți procesul "Înregistrați modificările pentru schimbul de date", selectați obiectul pe care doriți să-l înregistrați în arborele de configurare și faceți clic pe butonul "Înregistrați modificările pentru un singur obiect". Puteți, de asemenea, să "Înregistrați modificările tuturor obiectelor selectate" sau "Anulează modificările".
Citirea modificărilor înregistrate de la nodul planului de schimb
După înregistrarea modificărilor, putem citi modificările înregistrate pentru a încărca în continuare modificările într-un fișier XML sau pentru a le transfera într-un alt sistem de informații prin intermediul serviciilor Web.
Fragmentul codului pentru citirea modificărilor înregistrate în nodul planului de schimb
NodeCollection = planuri de schimb. prosto_Platform schimb. Găsiți codul ("001"); // căutați nodul planului de schimb prin cod, din acest nod vom citi schimbările
Denumiți Timestamp = Obțineți numele fișierului de timp ("xml"); // obține numele fișierului temporar
Încercăm operația // read în secțiunea Attempt, în caz de eroare, va fi afișată folosind metoda Report în excepție
WriteReport = Planuri pentru Exchange. Creați un mesaj de înregistrare (); // creați un mesaj de înregistrare, acest lucru este necesar pentru a crea în continuare un eșantion de modificări în planul de schimb
KMLLRescriptReset și = NewXML Entry; // creați o înregistrare XML
HMLZapisVygruzki. Deschideți fișierul (denumiți marcajul de timp "Windows-1251"); // scrie o înregistrare XML într-un fișier
Scrie Mesajele. Schimbați Start (CmdBoxRecord .NodeChange); // începe înregistrarea
Array de Elemente Loadable = Array Nou;
Sampleplan = Schimburi planificate. Selectați Modificări (Scrieți mesaje, Destinatar, Metadate, Referințe, Nomenclatură); // crea o selecție de modificări, vor fi selectate elementele modificate ale directorului. Nomenclatura din nodul de schimb specificat mai sus
Până acum, SlicingPlan. Înainte () Loop // ciclu după eșantion
Încărcare obiect și = Selecție. Primiți (); // obțineți obiectul modificat din eșantion
Dacă TypeZ (LoadBox) = Type ("DirectoryObject.Nomenclature") și NOT LoadBox. Observații Apoi verificați dacă obiectul se potrivește cu condițiile de descărcare
Gamă de elemente încărcabile. Adăugați (încărcați obiectul); // completați matricea de elemente pentru descărcare
Scrie Mesajele. Finalizați înregistrarea (); // finalizați înregistrarea
HMLZapisVygruzki. Închide (); // închideți fișierul în care au fost citite modificările
Raport (descrierea erorilor ()); // în cazul unei citiri nereușite a modificărilor o eroare la text
Ștergeți fișierele (numele fișierului Timed); // ștergeți fișierul temporar în care au fost citite modificările
Desigur, metoda "ExchangeSwap. Select Change") are dreptul să existe și în unele cazuri nu poate fi făcută fără, dar este preferabil să folosiți tabelul virtual "Modificări" pentru a citi schimbările înregistrate de la nodul planului de schimb. Tabela virtuală "Modificări" este creată automat pentru fiecare obiect inclus în planul de schimb.
Chestiunea este că atunci când utilizați metoda "Planuri pentru schimbare. Alegeți Modificați ()", puteți obține blocări excesive în baza de date. Metoda "Planuri de Schimb. Selectați Schimbare ()" ar trebui să citească teoretic numai modificările de la nodul plan, dar de fapt nu este. Dacă deschideți sintaxa ajutorului, vom vedea că, în timpul eșantionării modificărilor în jurnalul de schimbări, se va trimite numărul mesajului de comunicare în care vor fi transmise modificările. Atunci când acest număr de mesaj este introdus și obiectul este înregistrat (și în momentul înregistrării obiectului este blocat). De aceea este mai bine să folosiți tabelul virtual "Modificări", atunci când folosiți acest tabel, nu există blocaje excesive. Următoarea este o interogare de eșantion din tabelul de schimbare al Nomenclaturii:
Fragmentul codului pentru citirea modificărilor înregistrate în nodul planului de schimb