Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • OS
  • Conexiune com în 1s. Trei piloni ai lucrului cu obiecte COM

Conexiune com în 1s. Trei piloni ai lucrului cu obiecte COM


Cuvinte cheie: COM, conexiune, extern, OLE, Automatizare, Conectare, ComConnector, Srvr

Când utilizați conexiuni COM 1C:Enterprise 8.0 pentru a accesa date, există următoarele avantaje în comparație cu utilizarea unui server Automation:

  1. Stabilirea mai rapidă a conexiunii, deoarece nu este necesară crearea unui proces separat de sistem de operare și toate acțiunile sunt efectuate în cadrul procesului de apelare;

  2. Acces mai rapid la proprietățile și metodele obiectelor 1C:Enterprise, deoarece organizarea unui acces nu necesită comunicare între procese;
  3. Consum mai mic de resurse ale sistemului de operare.

În general, lucrul cu 1C:Enterprise 8.0 printr-o conexiune COM este similar cu lucrul cu 1C:Enterprise în modul de automatizare a serverului. Principalele diferențe sunt următoarele:

  1. În cazul unui server Automation, se lansează o aplicație completă 1C:Enterprise 8.0, iar în cazul unei conexiuni COM, se lansează un server COM în proces relativ mic.

  2. Când lucrați printr-o conexiune COM, funcționalitatea într-un fel sau altul legată de organizarea interfeței de utilizator 1C:Enterprise 8.0 nu este disponibilă;
  3. Când se operează o conexiune COM, modulul aplicației de configurare 1C:Enterprise 8.0 nu este utilizat. Rolul său atunci când se lucrează cu o conexiune COM este jucat de modulul de conectare extern.

1.1 Procedura pentru stabilirea unei conexiuni COM

Pentru a organiza accesul la datele 1C:Enterprise 8.0 printr-o conexiune COM, se efectuează următoarea secvență de acțiuni:

  1. se creează un obiect COM cu identificatorul V8.COMConnector, cu ajutorul căruia se stabilește conexiunea;

  2. este apelată metoda Connect a obiectului V8.COMConnector creat anterior. Metoda Connect returnează o legătură către un obiect de conexiune COM cu baza de informații 1C:Enterprise 8.0;
  3. Prin obiectul de conexiune COM primit se accesează metodele, proprietățile și obiectele valide ale infobazei cu care se stabilește conexiunea.

Important! Din cauza lipsei unei interfețe cu utilizatorul într-o conexiune COM, nu toate obiectele, proprietățile și metodele pot fi utilizate într-o conexiune COM.

1C:Obiecte Enterprise accesibile extern printr-o conexiune COM:

  1. Variabilele exportate și procedurile/funcțiile modulului extern join

  2. Variabilele exportate și procedurile/funcțiile modulelor comune
  3. Includerea și excluderea modulelor întregi prin setarea proprietăților modulelor comune

  4. Includerea și excluderea fragmentelor de module comune folosind un preprocesor
  5. Context global 1C: Enterprise 8.0, cu excepția obiectelor strâns legate de aplicația client (TextDocument, TabularDocument, ...)

1.2 Modul de conectare extern

După cum sa menționat deja, responsabilitățile modulului de aplicație atunci când lucrează printr-o conexiune COM sunt îndeplinite de modulul de conexiune extern. Acest modul poate avea proceduri de gestionare a evenimentelor When SystemStarts() și WhenSystemCompletes(), care pot conține acțiuni efectuate la inițializarea și, respectiv, terminarea conexiunii.

Procedurile, funcțiile și variabilele globale definite într-un modul de unire extern cu cuvântul cheie Export devin, ca și în cazul unui modul de aplicație, parte a contextului global.

1.3 Module comune

Proprietățile „Client”, „Server” și „Conexiune externă” au fost introduse pentru modulele comune. Acestea sunt destinate să determine în configurare utilizarea modulelor în versiunea client - server și în modul de conectare COM.

1.4 Obiect „V8.COMConnector”

Singura sarcină rezolvată de obiectul COM V8.COMConnector este stabilirea unei conexiuni COM cu baza de informații 1C:Enterprise 8.0. Un număr nelimitat de conexiuni poate fi stabilit folosind o instanță a obiectului V8.COMConnector. Obiectul V8.COMConnector are o singură metodă Connect, concepută pentru a stabili o conexiune COM cu baza de informații 1C:Enterprise 8.0.

<СтрокаСоединенияИБ>

Linia de legătură cu sistemul de securitate a informațiilor este un lanț de fragmente de forma Parametru=Valoare. Fragmentele sunt separate unele de altele prin „;”. Dacă o valoare conține spații albe, aceasta trebuie să fie cuprinsă între ghilimele duble (").

Parametri comuni:

Usr - nume de utilizator;
Pwd - parola.

Următorul parametru este definit pentru versiunea fișierului:

Fișier - directorul bazei de informații.

Următorii parametri sunt definiți pentru opțiunea client-server:

Srvr - 1C:Nume server Enterprise;
Ref - numele bazei de informații de pe server.

Metoda Connect stabilește o conexiune COM la baza de informații 1C:Enterprise 8.0 și returnează un link către obiectul conexiune COM.

// Este creat un obiect conector
V8 = New COMObject("V8.COMConnector");
// este creat un obiect de conexiune COM
Conexiune = V8.Connect("File=""c:\InfoBases\Trade""; Usr=""Director"";")

1.5 Obiect de conexiune COM

O conexiune COM la baza de informații 1C:Enterprise oferă acces deplin la contextul său global (consultați „Contextul de execuție al modulelor de program”). Prin urmare, o conexiune COM poate avea ca metode: constante de sistem, valori specificate în configuratorul de obiecte care sunt accesate folosind manageri (de exemplu, constante, enumerari, directoare, documente, jurnalele de documente, rapoarte, procesări, planuri pentru tipuri). de caracteristici, planuri conturi, planuri de tipuri de calcul, registre), precum și variabile declarate în modulul de conectare externă cu cuvântul cheie Export.

În plus, conexiunea COM are o metodă suplimentară NewObject care poate fi folosită pentru a crea valori de anumite tipuri.

tk = Conexiune. NewObject(„Tabel de valori”);

Metoda String Vă permite să obțineți reprezentări șir ale valorilor 1C:Enterprise.

Vizualizare = Connection.String(Data.UniqueIdentifier());

1.6. Caracteristici de lucru cu o conexiune COM

În automatizare și într-o conexiune COM, TRUE și FALSE au următoarele valori: -1 (minus unu) și 0.

Este posibil să se organizeze un grup de conexiuni COM. În același timp, mai multe obiecte de conexiune COM sunt create ÎN AVANS pe serverul de recepție 1C:Enterprise și este nevoie de și mai puțin timp pentru a stabili o conexiune, deoarece nu este nevoie să creați un nou obiect.

A fost implementat un nou obiect Query Builder, conceput pentru a genera texte de interogare pe baza setărilor specificate. Acest obiect acceptă funcționalitatea generatorului de rapoarte care nu este legată de transmiterea raportului într-un document de foaie de calcul sau de alte sarcini legate de interfața cu utilizatorul. Acest obiect poate fi folosit pe serverul 1C:Enterprise și într-o conexiune COM.

Puteți utiliza obiecte COM când rulați limbajul încorporat pe serverul 1C:Enterprise.

Erorile COM sunt convertite în excepții de limbaj încorporat.

Dacă configurația încearcă să creeze un obiect nevalid, cum ar fi un document de foaie de calcul, într-un modul de alăturare extern, într-un modul partajat sau într-un modul obiect, conexiunea COM poate să nu fie stabilită sau poate fi încheiată ca excepție.

Când vrem să vedem date din mai multe tabele în același timp, de exemplu. pentru a aduna mai multe tabele într-unul singur, apare conceptul de conectare a tabelelor și a relațiilor dintre ele. Există patru tipuri de conexiuni:

  • stânga;
  • dreapta,
  • intern;
  • complet.

Vom analiza fiecare tip folosind un exemplu abstract. Există 2 tabele, în primul stocăm informații descriptive despre articol, în al doilea despre soldurile acestuia:

Pentru a obține unul din aceste tabele, trebuie să indicăm în mod explicit ce câmpuri ne vom conecta, prin ce condiție și tip. Acum va deveni mai clar.

Conexiune din stânga

Folosind o îmbinare stânga, spunem sistemului că, prin urmare, dorim să vedem toate înregistrările din tabelul din stânga și înregistrările din dreapta care satisfac condiția de conectare. Să presupunem că conectăm tabele după câmpul de produs cu condiția egală, atunci vom obține un tabel ca:

Cerere.Text =
"ALEGE
| Nomenclatură.Produs,
| Nomenclatură.Color AS ColorNomenclature,
| Remains.Color AS ColorRemains,
| Solduri.Cantitate
|DIN

";

Nu au existat potriviri pentru scaun din tabelul de resturi, așa că câmpurile au fost completate cu valori NULL, care trebuie procesate de funcția ISNULL, vezi 1C 8 Funcții limbaj de interogare.

Uniunea din stânga funcționează aproximativ ca o buclă într-o buclă - ia prima înregistrare din tabelul din stânga și rulează prin toate înregistrările din tabelul din dreapta pentru a se asigura că condiția de conectare este îndeplinită. Apoi a doua înregistrare este luată din tabelul din stânga și așa mai departe. Dacă brusc mai multe înregistrări din tabelul din dreapta satisfac condiția de conectare, atunci mai multe rânduri vor fi adăugate în tabelul rezultat (în funcție de numărul de conexiuni reușite).După cum putem vedea, tabelul rezultat nu este informativ, datele nu reflectă esența reală, deci este mai bine să conectăm aceste tabele prin două câmpuri: Produs și Culoare, doar că de această dată vom trata valorile NULL:

Cerere.Text =
"ALEGE
| Nomenclatură.Produs,
| Nomenclatură.Culoare,
| ISNULL(Remaining.Quantity, 0) AS Cantitate
|DIN
| Nomenclatură AS Nomenclatură
| LEFT JOIN Remains AS Remains
| Software Nomenclature.Product = Remaining.Product

Conexiune corectă

Conexiunea din dreapta nu este în esență diferită de cea din stânga. Dacă schimbați tabelele, îmbinarea din dreapta se va transforma într-o alăturare stângă; în plus, atunci când utilizați constructorul, sistemul însuși convertește toate îmbinările din dreapta în îmbinări din stânga.

Îmbinare interioară

Folosind o îmbinare internă, îi spunem sistemului că, prin urmare, dorim să vedem doar acele înregistrări care satisfac condiția de conectare atât din tabelul din dreapta cât și din cel din stânga. Astfel, numărul de înregistrări rezultate va fi mai mic sau egal cu numărul de înregistrări din cel mai scurt tabel participant la unire. Să aplicăm o îmbinare interioară câmpurilor Produs și Culoare ale tabelelor noastre:

Cerere.Text =
"ALEGE
| Nomenclatură.Produs,
| Nomenclatură.Culoare,
| Resturi.Cantitate AS Cantitate
|DIN
| Nomenclatură AS Nomenclatură
| INNER JOIN Remainders AS Remainders
| Software Nomenclature.Product = Remaining.Product
| Și Nomenclature.Color = Remaining.Color";

Conexiune completă

O îmbinare completă va avea ca rezultat toate înregistrările din ambele tabele, acele înregistrări care satisfac condiția de conectare vor fi conectate, acele înregistrări care nu satisfac condiția de conectare vor ajunge în continuare în rezultatul interogării, dar cu unele câmpuri NULL. Complete este ca conexiunile stânga și dreapta într-una singură.

Pot fi multe probleme pe această temă, să încercăm să rezolvăm una dintre ele. Organizația noastră este un dealer a 2 fabrici de mobilă: „Zarya” și „Rassvet”. Sortimentul cu costul fiecăreia dintre fabrici este stocat în tabele diferite. Este necesar să creați o singură listă de prețuri și să includeți produse la prețul minim:

Să aplicăm o alăturare completă cu o selecție a tuturor câmpurilor, ne vom conecta după produs:

Cerere.Text =
"ALEGE
| NomenclaturăZarya.Product AS ProductZarya,
| NomenclaturăZarya.Preț AS PrețZarya,
| Nomenclatura Rassvet. Produs AS Produs Rassvet,
| NomenclaturăRassvet.Preț AS PrețRassvet
|DIN

Nu este exact ceea ce avem nevoie, să combinăm câmpul de produs într-unul singur și să procesăm valorile NULL:

Cerere.Text =
"ALEGE
//construcția ISNULL a fost discutată în secțiunea de funcții ale limbajului de interogare
//dacă prețul nu este definit, atunci inițializați-l
//de ce 1000000 vezi explicația de mai jos
| ISNULL(NomenclatureZarya.Price, 1000000) AS PriceZarya,
| ISNULL(NomenclatureRassvet.Price, 1000000) AS PriceRassvet
|DIN
| NomenclaturăZarya AS NomenclaturăZarya
| CONEXIUNE COMPLETĂ NomenclatureDawn AS NomenclatureDawn
| Software NomenclatureZarya.Product = NomenclatureDawn.Product";

Rămâne doar să alegeți prețul minim. Textul final al cererii va arăta astfel:

Cerere.Text =
"ALEGE
| ISNULL(NomenclatureZarya.Product, NomenclatureDawn.Product) AS produs,
| ALEGERE
| WHEN There ISSNULL(NomenclatureZarya.Price, 1000000) > ISNULL(NomenclatureRassvet.Price, 1000000)
| THEN ISNULL(NomenclatureRassvet.Price, 1000000)
| ELSE ISNULL(NomenclaturăZarya.Preț, 1000000)
| TERMINAT CA PRET
|DIN
| NomenclaturăZarya AS NomenclaturăZarya
| CONEXIUNE COMPLETĂ NomenclatureDawn AS NomenclatureDawn
| Software NomenclatureZarya.Product = NomenclatureDawn.Product";

Dacă prețul nu este definit (NULL), atunci acesta trebuie inițializat cu o anumită valoare, altfel operația de comparare pentru mai mult/mai puțin va eșua cu o eroare. Inițializam prețul cu o sumă nerealist de mare astfel încât să „pierde” în operațiunea de comparare, deoarece în funcție de condițiile problemei selectăm cel mai mic preț.

← Funcțiile limbajului de interogare 1C 8 | Se alătură în 1C 8 interogări →

Una dintre opțiunile pentru schimbul de date între bazele de date 1C este schimbul printr-o conexiune COM.

Folosind o conexiune COM, vă puteți conecta de la o bază de date 1C la alta și puteți citi sau scrie date. Această metodă poate fi utilizată atât în ​​versiunile client-server ale bazelor de date, cât și în bazele de date de fișiere. În acest articol vom analiza exemple de acest tip de conexiune. Exemplele folosesc platforma 8.2.

Puteți crea două tipuri de obiecte COM pentru aplicația 1C. Acest V82.AplicațieȘi V82.COMConector. In caz de V82.Aplicație Este lansată o copie aproape completă a aplicației 1C. în caz de utilizare V82.COMConector Este lansată o mică parte de server.
Viteza de operare în acest caz este mai mare, dar este posibil ca unele funcții să nu fie disponibile. În special, lucrul cu formulare și module comune pentru care nu este setată proprietatea de a lucra cu conexiuni externe. În cea mai mare parte, ar trebui să utilizați V82.COMConectorși numai în caz de lipsă de funcționalitate V82.Aplicație. Diferența de viteză de operare poate fi vizibilă în special pe bazele de date cu volum mare.

Asadar, haideti sa începem

  1. Să creăm un obiect COM
    • Pentru V82.Aplicație Conexiune = New COMObject("V82.Application" );
    • Pentru V82.COMConector Conexiune = New COMObject("V82.COMConnector");
  2. Să creăm un șir de conexiune
    • pentru versiunea de server a bazei de date ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
    • pentru versiunea de fișier a bazei de date ConnectionString = "File = " "PathKBase" "; Usr = Nume utilizator; Pwd = Parolă";
  3. Conectarea la baza de date Attempt Connection = Conexiune. Connect(ConnectionString) ; Mesaj de excepție = New MessageToUser; Mesaj. Text = + ErrorDescription() ; Mesaj. A raporta() ; EndTempt ;
  4. Se deconectează de la baza de date Conexiune = nedefinit ;

    Pentru obiect V82.Aplicație Este necesar să opriți conexiunea, altfel va rămâne o sesiune incompletă, care va trebui apoi ștearsă manual. In caz de V82.COMConector conexiunea se întrerupe automat la finalizarea procedurii în care s-a realizat conexiunea.Și mai este un punct mic.

    Pentru utilizatorul sub care se realizează conexiunea, caseta de selectare „Solicitare confirmare la închiderea programului” trebuie să fie dezactivată în setările acestuia.

Acum să punem tot codul împreună

Conexiune = New COMObject("V82.Application" ); //Conexiune = New COMObject("V82.COMConnector"); ConnectionString = "Srvr = " "Server1C" ";Ref = " "MyBase" "; Usr = Petya; Pwd = 123" ; //ConnectionString = "Fișier = ""С:\MyBase""; Usr = Petya; Pwd = 123"; Attempt Connection = Conexiune. Connect(ConnectionString) ; Mesaj de excepție = New MessageToUser; Mesaj. Text = „Nu s-a putut conecta la baza de date”+ DescriptionError() ; Mesaj. A raporta() ; EndTempt ; Conexiune = nedefinit ;

Pentru tipul de conexiune V82.Aplicație metoda este folosită pentru obiectul COM care a fost creat inițial și pentru V82.COMConector metoda se aplică la conexiune. Apoi cererea este procesată folosind instrumente standard 1C. in cod arata asa:

Solicitare = Conexiune. NewObject("Solicitare"); // Pentru V82.COMConector Solicitare = Conexiune. NewObject("Solicitare"); // Pentru V82.Aplicație Cerere. Text = „SELECT | Pozițiile organizațiilor. Cod, | Funcțiile organizațiilor.Nume|DIN | Director. Pozițiile organizațiilor AS Pozițiile organizațiilor"; Rezultat = Solicitare. Alerga(); Eșantion = Rezultat. Alegeți() ; Pa selecție. Next() Loop EndLoop ;

Pentru versiunea 1C:Enterprise 8.3 totul rămâne neschimbat, cu excepția faptului că atunci când creați obiecte COM trebuie să utilizați „V83.COMConnector” sau „V83.Aplicație”.

O modalitate de a transfera date de la o configurație 1C la alta este o conexiune software folosind COM. Multe companii folosesc mai multe baze de date diferite, între care trebuie să existe anumite conexiuni și dependențe. Dacă este necesar nu numai să transferați date, ci și să efectuați anumite procesări de date, atunci o conexiune COM va fi mecanismul optim. Capacitatea de a analiza date dintr-o altă bază de date 1C este utilă oricărui dezvoltator.

Ne conectăm prin COM la baza de date 1C

Pentru a implementa o conexiune COM în 1C, se folosește un mecanism special numit COMConnector. Acest obiect este instalat împreună cu platforma și este folosit pentru a conecta baze de informații. Trebuie remarcat faptul că pentru versiunile 8.2 și 8.3 sunt utilizate obiecte cu nume diferite - „V82.COMConnector” și respectiv „V83.COMConnector”.

Amintiți-vă că durata conexiunii COM la baza de date costă o licență - nu vă lăsați dus de execuția simultană a mai multor conexiuni. Acest lucru este important în special pentru organizațiile care au un număr limitat de licențe. Această problemă poate fi rezolvată cu ajutorul sarcinilor de rutină care sunt executate atunci când nu există conexiuni active de utilizator la baza de informații.

Pentru a vă putea conecta la o altă bază de date și a solicita informațiile necesare, trebuie să cunoașteți următoarele date:

  1. Ce tip este - fișier sau client-server;
  2. Unde este localizat;
  3. Ce nume și ce parolă poți folosi pentru a te autentifica?
  4. Ce date te interesează?

Din primele trei puncte, pentru a implementa o conexiune COM, trebuie să creați un șir de parametri. În funcție de tipul de securitate a informațiilor, aceasta va diferi ca aspect. Folosind șirul primit, se realizează o conexiune, cu ajutorul căreia puteți colecta date dintr-o altă bază de date pentru analiză și prelucrare folosind orice metodă.

Parametri de conexiuneFileIB = "File=""Path_to_database""; Usr=""User_name"";Pwd=""Parolă"""; Parametri de conexiuneClientServerIB = "Srvr=""Server_Name""; Ref=""Database_Name""; Usr=""User_Name""; Pwd=""Parolă""";

Funcția de conectare este simplă și nu ar trebui să ridice întrebări dacă toți parametrii sunt specificați corect. Pentru a accelera depanarea și analiza posibilelor erori, este mai bine să includeți conexiunea în constructul „Încercați”. Funcția va returna o valoare de tipul „Obiect COM”, cu care veți lucra pentru a obține datele necesare.

Funcția &OnServer ConnectToBase() exportConnectionIB Parametri = "Fișier=""E:\1c baza de date\ERP""; Usr=""Administrator"";Pwd=""1"""; V83COMCon= New COMObject ("V83.COMConnector"); Încercați returnarea V83COMCon.Connect(Parametrii conexiunii IB); Raport de excepție(ErorDescription()); Returnare nedefinită; EndTempt; EndFunction

Printr-o conexiune COM puteți nu numai să selectați date, ci și să le adăugați la baza de date la care vă conectați. Amintiți-vă că putem transfera 4 tipuri de date primitive printr-un obiect COM. Alte tipuri vor trebui specificate folosind funcțiile de căutare încorporate ale platformei. Vă rugăm să rețineți că funcțiile globale ale platformei sunt apelate și printr-o conexiune COM.

Primim date din baza de date 1C

După ce ați primit obiectul dorit, trebuie să citiți datele dintr-o altă bază de date. Pentru a face acest lucru, folosim o solicitare printr-o conexiune COM în 1C 8.3 folosind valoarea primită de tipul „Obiect COM” din funcție. Este important să vă conectați mai întâi la baza de date și apoi să executați cererea. Execuția are loc prin metoda NewObject, specificând tipul obiectului sub formă de șir ca parametru - „Solicitare”.

&OnServer Procedura TestCOMOnServer() Conexiune = ConnectToBase(); If TypeValue(Connection) Type("Undefined") Then RequestBPZO = Connection.NewObject("Request"); RequestBPZO.Text = "SELECTARE primele 15 | DirectoryUser.Name AS Nume |FROM | Directory.users AS DirectoryUser"; Select = RequestBPZO.Execute().select(); While Selection.next() loop Report(Selection.Number); EndCycle; endIf; Sfârșitul procedurii >

De exemplu, pentru a obține informații despre utilizatorii unui anumit departament, vom stabili o condiție în cerere prin parametri. Un parametru va fi de tip simplu - un șir, iar diviziunea va fi o legătură către elementul de director „Structura întreprinderii”. Rezultatul interogării este un tabel cu câmpurile listate de tipul pe care acestea există în baza de date la care a avut loc conexiunea COM. Dacă trebuie să le convertiți în alte tipuri, utilizați funcțiile standard ale platformei:

  • Linia();
  • Număr();
  • Data de().
RequestBPZO = Connection.NewObject("Solicitare"); RequestBPZO.Text = "SELECT first 15 | DirectoryUser.Name AS Nume | FROM | Directory.Users AS DirectoryUser I WHERE | DirectoryUser.Department = &RequiredDepartment | Și DirectoryUser.Name ca ""%"" + &RequiredName+ ""%""" ; Solicitare BPZO.SetParameter(„Departamentul necesar”, Conexiune. Directoare. Structura întreprinderii. Găsire după cod(„00-000023”)); RequestBPZO.SetParameter("RequiredName","Ekaterina"); Select = RequestBPZO.Execute().select(); While Selection.next() loop Report(Selection.Name); EndCycle;

Dacă trebuie să transferați o matrice în baza de date pentru selecție pe baza mai multor parametri, de exemplu, departamente, este folosită și comanda NewObject. În mod similar, puteți trece o listă sau un tabel de valori, completându-le cu elemente ale unei alte baze de date printr-o conexiune. Toate metodele existente de obiecte și mecanisme ale platformei vă sunt disponibile pentru căutare.

RequestBPZO = Connection.NewObject.(„Solicitare”); RequestBPZO.Text = "SELECT first 15 | DirectoryUser.Name AS Nume | FROM | Directory.Users AS DirectoryUser I WHERE | DirectoryUser.Department B (&NecessaryDepartment) | Și DirectoryUser.Name ca ""%"" + &NecessaryName+ ""%" " "; Array of Departments = Connection.NewObject("Matrice"); Array of Departments.Add(Connection.Directories.Enterprise Structure.Find By Code("00-000023")); Array of Departments.Add(Connection.Directories.Enterprise Structure.Find By Code("00-000038")); Array of Departments.Add(Connection.Directories.Enterprise Structure.Find By Code("00-000046")); Solicitare BPZO.SetParameter(„Departamentul necesar”, Matrice de departamente); RequestBPZO.SetParameter("RequiredName","Ekaterina"); Select = RequestBPZO.Execute().select(); While Selection.next() loop Report(Selection.Name); EndCycle;

Când se transferă documente sau elemente de director, se pune întotdeauna problema controlului transferului unui anumit obiect. Cu ajutorul conexiunilor COM, astfel de probleme pot fi rezolvate printr-un identificator unic. Trebuie să găsiți un obiect în baza de date a plug-in-ului după identificator din securitatea informațiilor curente folosind funcția „GetLink”, folosind identificatorul ca șir. Dacă nu se găsește unul, îl puteți crea folosind o conexiune COM.

StrIdent = String(Directories.Users.FindByCode("00-0000313"). UniqueIdentifier()); Dacă NU este ValueFilled(Connection.Directories.Users.GetLink(Connection.NewObject("UniqueIdentifier", StrIdent))) atunci NewUser = Connection.Directories.Users.CreateItem(); NewUser.Name = Directories.Users.FindByCode("00-0000313").Name; NewUser.Individual = Directories.Users.FindByCode("00-0000313").Individual; NewUser.Write(); endIf;

De asemenea, o conexiune COM are dreptul de a utiliza proceduri și funcții din modulele comune 1C cu proprietatea „Conexiune externă” activată. Pe lângă această condiție, funcția sau procedura apelată trebuie să fie de export și să nu includă acțiuni interactive efectuate pe server. În caz contrar, veți vedea o eroare că operațiunea nu este validă.

Compus..; VariableFunction = Conexiune...; apel de funcție>nume general modul>apel de procedură>nume general modul>

Posibilitățile de conectare externă cu o altă bază de date în 1C sunt destul de extinse și vă pot permite să efectuați multe sarcini. Este important să puteți evalua corect instrumentele și să alegeți soluția optimă. În cele mai multe cazuri, această abilitate apare numai cu experiență sau prin studierea exemplelor muncii specialiștilor cu experiență.

Cele mai bune articole pe această temă