Primirea datelor prin conexiune com de la 1s. V8: conexiune COM. Primirea și compararea enumerației prin conexiune COM

Întrebare: Analizarea unui site utilizând COM IE 11


O zi buna.!
Întrebarea este dureros de bine cunoscută, trebuie să luați informațiile de pe site. Dar există nuanțe:
1. Nu există nicio modalitate de a merge direct la pagina de autorizare (întâi accesați pagina de start, faceți clic pe linkul LogIn, obțineți formularul de autorizare și abia apoi conectați-vă).
2. Trebuie să vizitați site-ul prin bara de căutare căutați date, apoi citiți-le și căutați din nou (datele pot fi în rusă și engleză, adică dacă datele pentru căutare sunt în rusă, atunci trebuie să căutați în „versiunea rusă” a site-ului, iar acesta este un alt link pe altă pagină. Este aceeași problemă cu limba engleză).

În cele din urmă:
- accesați pagina de start - autentificați-vă - căutați date - (mergeți la o altă versiune a site-ului, dacă este necesar) - luați-o.

Problemă:
Datele nu sunt citite în proprietatea „document” atunci când urmăresc un link.
Are loc în două puncte:
- când urmăm linkul pentru a vă autentifica (acesta nu este un buton, ci doar un link);
- când schimbăm limba de pe site (tot un link).

Notă
Daca inainte de a urma un link in faza de autorizare primiti un link, inchideti com-ul si il deschideti din nou cu trecerea prin metoda IE.navigate("link"), atunci datele din proprietatea "document" merg normal. Dar nu veți putea face același lucru atunci când schimbați limba pe site, pentru că... Trebuie să mă conectez din nou și, în plus, nu aș vrea să rezolv această problemă exact așa.

Iată codul:

&Pe Procedura Client SetWaitingIE(IE, SecondCall=False) Dacă NU IE.Busy Atunci D = CurrentDate() + 3; While D >= CurrentDate() Loop If IE.Busy Then Abort; endIf; EndCycle; endIf; În timp ce IE.Busy Loop EndLoop; În timp ce IE.ReadyState< 4 Цикл КонецЦикла; Попытка Если IE.Document.ReadyState = Null Тогда IE.Refresh(); УстановитьОжиданиеИЕ(IE); КонецЕсли; Пока IE.Document.ReadyState <>Cycle "complet" EndCycle; Excepție dacă SecondCall Then Return; Altfel Link = IE.LocationURL; IE.Quit(); IE = GetCOM ("InternetExplorer.Application"); IE.Navigate(Link); SetExpectIE(IE, True); endIf; EndTempt; EndProcedure &OnClient Funcția PerformUserAuthorization(IE, Link, Login, Password, Authorized=False, SC=0) Attempt Elements = IE.Document.GetElementsByName("username"); Dacă Elements.Length = 1, atunci pentru fiecare El Of Elements Loop El.Value = Login; EndCycle; endIf; Elemente = IE.Document.GetElementsByName("parolă"); Dacă Elements.Length = 1, atunci pentru fiecare El Of Elements Loop El.Value = Parolă; EndCycle; endIf; IE.Document.GetElementById("ID").Click(); SetWaitingIE(IE); Autorizat = Adevărat; Excepție dacă CN > 3, atunci returnează fals; endIf; IE.Quit(); IE.Navigate(Link); SetWaitingIE(IE); MF = MF + 1; Dacă PerformUserAuthorization(IE, Link, Login, Password, SCH) Atunci returnează True; endIf; EndTempt; Retur Autorizat; EndFunction &OnClient Procedure Upload(Comandă) SpTables = GetListTablesForUpload(); Dacă SpTables = False, atunci returnează; endIf; IE = GetCOM ("InternetExplorer.Application"); Pentru fiecare rând din SpTable.SOURCE_LIST Ciclul RA = Row.ID; Resursa = String.RESOURCE; IE.Navigate(Resursa); SetWaitingIE(IE); Încercați dacă Line.NEW_PAGE_IN_LOGIN = 1 Atunci Classes = IE.Document.GetElementsByClassName("ClassName"); Dacă Classes.Length = 1, atunci Pentru fiecare clasă din clase Loop Resource = Class.All(0).Href; Avorta; EndCycle; Încercarea IE.Quit(); IE = IE.Navigate(Resursa); SetWaitingIE(IE); Raport de excepție("Conexiunea la site-ul "" +String.NAME + "" a eșuat!"); Avorta; EndTempt; Altfel Raportare("Conexiunea la site-ul "" +String.NAME + "" a eșuat!"); Avorta; endIf; endIf; Dacă NU PerformUserAuthorization(IE, Resurse, String.LOGIN, String.PASSWORD), atunci Raportați(„Autorizarea utilizatorului pe site „” + String.NAME + „” nu a fost finalizată!”); Avorta; endIf; Resursa = IE.LocationURL; Lista de persoane = SpTable.FACE_CODES.FindLines(New Structure("SOURCE", RA)); ListNotFound = Noua matrice; Pentru fiecare persoană din lista de persoane Ciclul PersonName = Person.NAME_IN_SITE; Acesta este limba rusă = CharacterCode(PersonName, 1) >= 1040; TechResource = ?(Aceasta este rusă, StrReplace(Resource, "en_US", "ru_RU"), StrReplace(Resource, "ru_RU", "en_US")); Dacă TekResurs<>IE.LocationURL Apoi RootClasses = IE.Document.GetElementsByClassName("ClassName"); Dacă RootClasses.Length = 1, atunci pentru fiecare RootClass din RootClasses Loop Classes = RootClass.Children; Avorta; EndCycle; AmGroup = Fals; RuGroup = Fals; Pentru fiecare clasă din buclă de clase Dacă HPreg(Class.ClassName) = "dropdown-header" Atunci AmGroup = Find(Class.InnerText, "Americans") > 0; RuGroup = Find(Class.InnerText, "Europa") > 0; ElseIf HPreg(Class.ClassName)<>„selectat” Atunci dacă AmGroup și Find(Class.All(0).InnerText, „Engleză”) > 0 SAU RuGroup și Find(Class.All(0).InnerText, „Russia”) > 0 Atunci IE.Navigate(Class) .Toate(1).Href); SetWaitingIE(IE); Avorta; endIf; endIf; EndCycle; endIf; endIf; IE.Document.GetElementById("ID").Value = PersonName; FindButton = IE.Document.GetElementById(„ID”); FindButton.Focus(); FindButton.Click(); Încercarea de a SetExpect(IE); //Circuitează datele primite ExceptionListNotFound.Add(Person); Continua; EndTempt; EndCycle; Raport de excepție ("Eroare:" + Symbols.PS + ErrorDescription()); Avorta; EndTempt; EndCycle; IE.Quit(); Sfârșitul procedurii

Răspuns:

Subiectul este foarte interesant, dar personal, din păcate, nu am nici experiența și nici măcar ocazia să înțeleg cumva această problemă. Dacă puteți găsi informații despre acest subiect, vă rugăm să le împărtășiți.
--- O asociere mesaje, 29 aprilie 2016 ---

După cum am înțeles, nu există acces la baza de date SQL?

--- Îmbinarea mesajelor, 29 aprilie 2016 ---

Ei bine, dacă se analizează, atunci ce fel de acces?

Întrebare: Conexiune COM 1C 8.3 - 1C 8.3 Este posibil să introduceți depanatorul în conexiune


Am vrut să-i întreb pe membrii forumului dacă este posibil să depanez deloc atunci când mă conectez printr-o conexiune COM utilizând procesarea de la o bază de date pe platforma 8.3.6 (BP 3.0) la modulul de conexiune externă al unei baze de date auto-scrise (care rulează și el pe platforma 8.3.6) și apelează exporturile de la aceasta proceduri folosind procesare? Bazele de date sunt în prezent bazate pe fișiere și sunt situate pe un singur computer, dar este planificată o versiune de server. Până acum, am folosit construcțiile de mai jos pentru a transmite cod arbitrar pentru execuție printr-o conexiune COM, precum și pentru a înregistra erori. Iată fragmente de proceduri din baza de date autoscrisă în modulul de conectare externă:

Funcția ExecuteIn(CodeExecute, Parametru auxiliar = "") Export
Verificare de securitate(); // Protecție împotriva încercărilor de a executa cod rău intenționat atunci când vă conectați extern în numele altui utilizator Raspuns = "0" //Dacă nu trebuie returnat nimic, atunci dacă nu există erori în cod  //revine doar OK  //Deoarece Codul transmis poate conține erori, atunci vom încheia execuția lui într-o încercare.Încercați să Execute (CodeExecute); // Executați codul ca șir pe alt computer printr-o conexiune COM (Modul de conexiune externă Libra Base) Excepție   //dacă există o eroare, returnați textul acesteia Răspuns = ErrorDetailView(ErrorInfo()); EndTempt ; Întoarceți răspunsul; Funcția EndFunction TestConnection(InParameter, OutParameter) ExportSecurityCheck(); // Protecție împotriva încercărilor de a executa cod rău intenționat atunci când vă conectați extern în numele altui utilizator. OutParameter = „Există o conexiune cu baza cântarului prin conexiune COM!”; Returnează Adevărat; EndFunction
Din BP 3.0 execut următorul fragment:
Atentat, încercare
Com = New COMObject ("V83.COMConnector"); Conexiune = Com.Connect ("File=""C:\1 c\Base_1C\Libra""; Usr=""ComExchange""; Pwd=""1"";"); TellUser("Testul a trecut! Există o conexiune la baza de date a scalei"); Exception Error = ErrorDetailView(ErrorInfo()); TellUser("Nu există nicio conexiune COM la baza Libra! Detalii"+Eroare); Com=Nedefinit ; Întoarcere ; EndTempt ; Out = ""; In = "1"; Dacă Connection.Communication Test(In, Out) Then TellUser("Test de comunicare cu configurația scalei reușită! Răspuns: "+Out); Altfel TellUser("Testul de comunicare cu configurația scalei a eșuat! Răspuns: "+Out); EndIf ;
Înțeleg, desigur, că nu va fi posibil să introduceți operatorul Execute(CodeString1C8), dar există o astfel de posibilitate atunci când apelați o procedură de modul la distanță conexiune externă din baza de date principală Connection.TestConnections(In, Out) pentru a-și introduce codul în aceeași sesiune de depanare în funcția Security Check() a procedurii lor de apelare?
M-am uitat deja la documentația pe care am putut-o găsi pe această problemă. Am setat opțiunile pentru a activa depanarea și punctele de întrerupere peste tot în ambele configurații. Am lansat ambele configuratoare.
Este chiar posibil în această situație să depanați procedura Security Check() mai departe pe partea modulului de conexiune externă?

Întrebare: Adresă IP greșită în conexiunea COM


Există procesare care transferă documente prin V83.ComConnector între servere. Serverul 1 (versiunea 1C 8.2.19.90) se conectează întotdeauna la Server 2 (versiunea 8.3.8.2033). Linia de conectare conținea adresa IP a serverului 2 și totul a funcționat bine. Pe serverul 1 însuși am văzut și platforma instalată ca pe serverul 2, versiunea 8.3.9.2033 (dacă acest lucru este important).

Problema este că pe Server 2 adresa IP s-a schimbat, procesarea desigur a încetat să funcționeze, iar când am introdus un nou IP în linia de conectare, procesarea generează o eroare, a cărei descriere este încă vechiul IP (!) și textul. „O încercare de a stabili o conexiune nu a reușit, deoarece răspunsul solicitat nu a fost primit de la alt computer în timpul necesar sau conexiunea stabilită din cauza unui răspuns incorect de la un computer deja conectat.”

Au repornit totul, au șters cache-urile etc., adminii jură că totul este ok din partea lor, te poți autentifica de la un server la altul prin RDP etc.

Ce ar putea fi în neregulă, cum îl pot rezolva? Am căutat pe tot internetul și nu am găsit o astfel de situație!

Răspuns:() 100% sigur! În a doua zi încerc, așa cum am scris, mă uit cu un depanator, chiar am creat o procesare stupidă de o singură celulă pentru un test de conexiune, acea eroare apare și gata

Întrebare: Conexiune COM la versiuni diferite


Salutare tuturor.
Am o bază de date, numită „Consolidare”, care colectează date diferite din diferite baze de date și aduce totul într-o singură grămadă. Problema este că trebuie să vă conectați la aceste baze de date prin com, dar sunt versiuni diferite, așa că în cele din urmă primesc o eroare de genul
Eroare de conexiune!(ExternalProcessing.TransferHistory.Form.Form.Form(12)) : Eroare la apelarea metodei context (Connect) : A apărut o excepție (V83.COMConnector. 1 ) : Nepotrivire între versiunile client și server 1 C:Enterprise Client versiunile diferă și server (8.3. 8.1964 - 8.3. 6.2332), aplicație client: conexiune COM

Am stabilit o conexiune, alta cade...

Știu că, cumva, prin serviciul de componente, poți crea „propriile tale clase (conectori)” pentru fiecare versiune și apoi creezi un Nou Obiect COM corespunzător versiunii de platformă a clasei... poate mă înșel.

Ajută-mă să depășesc această problemă...

Răspuns: asta e... voi elimina intrebarea...

Întrebare: Eroare com la procesarea umplerii


Buna ziua.
8.2 Comerț cu amănuntul 1.
Mă conectez la 8.1 Nu este o conf. tipică.
Mă conectez prin com la baza de date și încerc să creez un document, dar când apelez „CreateDocument()” sau „GetObject()” apare o eroare în procedură ProcesareUmplere. vezi fig.

Încerc același lucru în baza de date 8.1 însăși, dar nu există nicio eroare și nici nu intru Filling Processing.
Ce ar putea fi în neregulă?

Răspuns: turboq, un modul de document scris strâmb!

Adăugat după 5 minute
Ea nu se cheama! Ea încearcă să compileze! Dar, deoarece la conectarea prin ComConnector problema modului de dialog NU EXISTĂ, modulul de document nu poate fi compilat.
Pentru astfel de cazuri, atunci când este necesar să implementați lucrul cu un dialog într-un modul obiect, utilizați instrucțiuni pentru preprocesor

Aceasta nu este greșeala dvs., ci o eroare în modulul de document din baza de date la care vă conectați.

În baza de date, codul este executat pe client și există un Mod Dialog, așa că totul se întâmplă fără erori

Nu utilizați ComConnector, V8.Application pentru conectare, atunci lucrurile de interfață vă vor fi disponibile

Adăugat după 5 minute
=======================================================================================================================
din descrierea conexiunii externe (SP) Am evidențiat cu caractere aldine ce ar trebui să citiți despre ComConnections

Descriere:

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

  • În cazul unui server Automation, se lansează o aplicație completă 1C:Enterprise 8, iar în cazul unei conexiuni externe, se lansează un server COM în proces relativ mic.
  • Nu este disponibil când se lucrează printr-o conexiune externă funcţionalitate, într-un fel sau altul legat de organizarea interfeței de utilizator 1C:Enterprise 8;
  • Când rulați o conexiune externă, modulul aplicației gestionate (modulul aplicare regulată) configurația 1C:Enterprise 8. Rolul său atunci când se lucrează cu o conexiune externă este jucat de modulul de conexiune externă.
Când utilizați o conexiune externă, există următoarele avantaje în comparație cu utilizarea unui server Automation:
  • Configurare mai rapidă a conexiunii, deoarece nu trebuie creat niciun proces separat sistem de operare, iar toate acțiunile sunt efectuate în cadrul procesului de apelare;
  • Acces mai rapid la proprietățile și metodele obiectelor 1C:Enterprise, deoarece organizarea unui acces nu necesită comunicare între procese;
  • Consum mai mic de resurse ale sistemului de operare.
Pentru a organiza accesul la datele 1C:Enterprise 8 printr-o conexiune externă, se efectuează următoarea secvență de acțiuni:
  • se creează un manager de conexiune COM, cu ajutorul căruia se stabilește conexiunea;
  • se efectuează un apel către metoda Connect a managerului de conexiuni COM. Metoda Connect returnează o conexiune exterioară cu baza de informatii 1C: Întreprinderea 8;
  • printr-o conexiune externă se realizează accesul la metode, proprietăți și obiecte valabile ale infobazei cu care se stabilește conexiunea.
Important! Din cauza lipsei unei interfețe cu utilizatorul, nu toate obiectele, proprietățile și metodele pot fi utilizate într-o conexiune exterioară.
Îmbinarea exterioară oferă acces complet la contextul său global. Prin urmare, o conexiune externă ca și metodele sale poate avea: constante de sistem, valori ale obiectelor specificate în configurator, accesul la care se realizează folosind manageri (de exemplu, constante, enumerari, directoare, documente, jurnalele de documente, rapoarte). , prelucrari, planuri de tipuri de caracteristici, planuri de conturi, planuri de tip calcul, registre), precum si variabile declarate in modulul de conectare externa cu cuvântul cheie Export.

Disponibilitate:

Integrare.

Intrebare: Conexiune COM, plan tip caracteristici


Sarcina este de a crea în mod programatic un nou element într-un plan cunoscut de tipuri de caracteristici printr-o conexiune COM. Conexiunea este stabilită, totul este bine aici.

scriu asa:

TypeDescriptionTech = New TypeDescription ("DirectoryLink. Contrapartide"); PurposeProperties = Conexiune. Planuri de Tipuri de Caracteristici. Scopurile proprietăților categoriilor de obiecte. FindByName(„Directorul „Persoane fizice””); NewElement = Conexiune. Planuri de Tipuri de Caracteristici. Proprietățile obiectului. CreateItem(); Element nou. Nume = PropertyName; Element nou. PropertyAssignment = PropertyAssignment; Element nou. ValueType = DescriptionTypesTech;

Ultima linie nu merge. Și acest lucru este de înțeles, găsește un astfel de tip pentru baza de date în care rulează 1C, dar am nevoie de un tip pentru baza de date atașată. Cum să obțineți?

În versiunea mea, un element cu tipul de valoare „Custom List” este pur și simplu creat. Funcționează în principiu, dar este oarecum urât.

Platformform 8.3. O conexiune COM este o condiție prealabilă. Soluțiile fără utilizarea sa nu prezintă interes.

Răspuns:

Rulouri. Mulțumesc, a funcționat.

Întrebare: conexiune COM. Problemă cu parametrii de interogare


O zi buna.
Problemă cu cererea prin conexiune COM.

Perem TK; ArrayItems = COM.NewObject("Matrice"); Pentru fiecare linie din Nomenclatura ciclului TZNomenclature = COM.Directories.Nomenclature.GetLink(COM.NewObject("UniqueIdentifier", Abbr(String.Nomenclature.Identifier))); Nomenclatură Array.Add(Nomenclatură); EndCycle; Dacă ArrayItems.Quantity()<>0 Apoi Solicitare = COM.NewObject("Solicitare"); Request.Text = "SELECT |PricesItemsSliceLast.Commodities AS Nomenclatura, |PricesItemsSliceLast.SalePrice AS Preț, |PricesItemsSliceLast.RateVAT, |PricesItemsSliceLast.RateNP |FROM |RegisterInformation.PricesSliceLast. &Matrice de Nomenclatură) |Și Inventar și Materiale.AcestGroup = FALSE |Și Registrator LINK Document.Setting SalesPrices) AS NomenclaturePricesSliceLast"; Request.SetParameter("Matrice de articole", Matrice de articole); Request.SetParameter("DataDoc", EndDay(ParametersStructure.DataDoc)); Request.SetParameter("PriceType", COM.Directories.PriceTypes.GetRef(COM.NewObject ("UniqueIdentifier", ParameterStructure.PriceType.Identifier))); TZ = COM.NewObject(„Tabel de valori”); TK = Request.Run().Upload(); În caz contrar, TK = New ValueTable; TK.Columns.Add("Nomenclatură"); TK.Columns.Add(„Preț”); TK.Columns.Add(„Procent”); TK.Columns.Add(„Rata TVA”); endIf;

Problema este tocmai cu articolul sau o matrice de articole; dacă le setați ca parametru, cererea returnează prețuri goale; dacă nu specificați deloc acest parametru, atunci solicitarea returnează datele corecte.
În consola de interogări a aceleiași baze de date externe, totul este procesat fără probleme.
Ce ar putea fi în neregulă?

Răspuns:

Încercați să faceți acest lucru prin VremTable. Creați un tabel de valori cu coloane resp. cum ar fi, completați-l, trageți-l în cerere și apoi aplicați-l cu o conexiune internă.

Întrebare: Conexiune com de la baza de date de fișiere la baza de date de fișiere


Buna dimineata. Am o bază de date de fișiere 8.3, de la care încerc să mă conectez la o altă bază de date de fișiere folosind o conexiune com:

Director = "C:\Users\1C\Workflow (test)"; Utilizator = „Administrator”; Parola = ""; Parametri de conexiune = "File="+Directory+";Usr="+User+";Pwd="+Password+";"; V83 = New COMObject("V83.COMConnector"); Încercare de conectare = V83.Connect(ConnectionParameters); Raport de excepție(„Nu s-a putut conecta la fluxul de documente!”); EndTempt;


Se aruncă o excepție, fără o descriere a erorii.
Ambele baze de date sunt forțate să se lanseze în 8.3. Directorul și utilizatorul sunt specificate corect. Care ar putea fi motivul?

Răspuns:

Scriu linia de cod V82 = New COMObject(" V83.COMConnector"); iar restul codului este ca mai jos, fără modificări.

Când versiunile platformei sursă și destinație sunt diferite, apare o eroare.

Nu este clar ce versiune a bibliotecii să înregistrezi și unde să o înregistrezi?

Cred că trebuie să înregistrez biblioteca, versiunea 8.2.18.61, și fac asta printr-un fișier bat

regsvr32 /n /i:utilizator „C:\Program Files (x86)\1cv82\8.2.18.61\bin\comcntr.dll”
pauză

msk-test1c:1641 -- acesta este serverul 8.3.5.1098
V82 = New COMObject ("V82. COMConnector"); Raport („Conectare la Contabilitate 3.0...”); Încercați conectarea = V82. Connect("srvr = ""msk- test1c:1641""; ref = ""db_test""; usr = ""Administrator""; pwd = ""123"""); Notificare („Grava conexiunea stabilită!”); Raport de excepție(„Fără conexiune la baza de date!”); Raport(Descrierea erorii()); // Info = InformationAboutError(); // Raport ("Descriere= "" + Info.Descriere + """); // Raport ("ModuleName= "" + Info.ModuleName + """); // Raport ("LineNumber=" + Info.LineNumber); // Raport ("SourceLine= "" + Info.SourceString + """); Return; EndTempt;

Unde se înregistrează biblioteca, pe client, pe serverul 8.2, pe serverul 8.3? Figura de mai jos.
(pentru versiunea client-server și pentru versiunea de fișier a bazei de date 1C)

Răspuns: A existat o sarcină de a comunica cu un terminal printr-un serviciu web. Baza este, ei bine, să spunem ușoară. De asemenea, 0,5 sau mai rapid?

Este greu de spus - nu am suficiente date. Am fost mulțumiți de 0,5 secunde, minus clientul 1C inutil pe o mașină terță, minus sincronizarea versiunilor de bibliotecă după actualizarea motorului 1C, minus al naibii de comsafearray, nume normale și tipuri de câmpuri... S-a gândit la noi de la cealaltă parte (un sistem care se integrează cu 1C) „nu vor înțelege” când se dovedește că trebuie să-și rescrie apelurile 1C la un nou „model de comunicare de sistem”. Dar după ce am încercat o singură funcție o dată în baza de date de testare, acum suntem tachinați cu „să trecem la serviciu cât mai curând posibil”.

Întrebare: Cum se utilizează TypeContains pentru obiectele Com?


Dacă Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")), atunci există IsNomenclature = True; endIf;

„Props” a fost primit de la o conexiune com cu o altă bază de date 1c. Apare o eroare la compararea:

(ExternalProcessing.Coefficient Recalculation.Form.Form.Form(183)): Eroare la apelarea metodei context (ContainsType)
Dacă Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")) Atunci
din cauza:
A apărut o excepție (1C:Enterprise 8.3.8.1964): nepotrivire de tip (numărul parametrului „1”)

Bănuiesc că ar trebui să fie comparat cu tipul din com? Cum se verifică tipul corect?

Răspuns:

Nu se rostogolește. Am rezolvat problema astfel:
În baza de date a receptorului din modulul general cu caseta de selectare conexiune externă bifată, codul este:

Funcție CheckAttributeType(Attribut, Type) Export Return Attribute.Type.ContainsType(Type(Type)); EndFunction

În baza de date de la care mă conectez, apelez procedura prin Com:

ComConnection.Avis_ExchangeProcedures.CheckAttributeType(Atribut, „DirectoryLink.Nomenclature”)

Imprimare (Ctrl+P)

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. Acest articol discută aceste tipuri de conexiuni pe platforma 8.3

conexiune com

Puteți crea două tipuri de obiecte COM pentru aplicația 1C. Acestea sunt conexiuni vechi V83.Aplicație și conexiuni com V83.COMConector . In caz de V83.Aplicație Este lansată o copie aproape completă a aplicației 1C. În caz de utilizare V83.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 V83.COMConectorși numai în caz de lipsă de funcționalitate V83.Aplicație. Diferența de viteză de operare poate fi vizibilă în special pe bazele de date cu volum mare. Pentru platforma 8.2 utilizată V82.Application sau V82.COMConnector

Stabiliți o conexiune OLE

Conexiune = New COMObject(“V83.Application” );

Stabiliți o conexiune COM

Conexiune = New COMObject(“V83.COMConnector” );

Șir de conexiune

//Pentru opțiunea client-server
Șirul de conexiune= „Srvr = „“ServerName” „;Ref = „ „BaseName” ;
//Pentru opțiunea mod fișier:
Șirul de conexiune= „Fișier = „“PathKBase” „; Usr = Nume de utilizator; Pwd = Parolă”;
Atentat, încercare
Connection = Conexiune . Conectați(ConnectionString) ;
Excepție
Mesaj = New MessageToUser;
Mesaj . Text = „Nu s-a putut conecta la baza de date” + DescriereErori(); Mesaj . A raporta();
EndTempt ;

Deconectare

Conexiune = nedefinit ;
Pentru obiect V83.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 V83.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.

Metoda NewObject().

Pentru a crea un obiect nou, puteți utiliza metoda NewObject(), de exemplu:

Pentru V83.COMConector

SolicitațiCOM = Conexiune. NewObject( "Cerere ") ;
TableCOM = Conexiune. NewObject( „Tabelul valorilor”) ;
ArrayCOM = Conexiune. NewObject(„Matrice”);

ViewCOM =Conection.NewObject

Pentru V83.Aplicație

RequestOLE = Conexiune. NewObject(“ Cerere ") ;
TableOLE = Conexiune. NewObject(„Tabelul valorilor”) ;
ArrayOLE = Connection.NewObject(„Matrice”);
ViewCOM =Conection.NewObject(„UniqueIdentifier”, StringUID);

SolicitațiCOM . Text ="ALEGE
| Pozițiile organizațiilor. Cod,
| Funcțiile organizațiilor.Nume
|DIN | Director.Pozițiile organizațiilor
CUM PENTRU POZIȚII ALE ORGANIZAȚILOR”;

Rezultat = SolicitareCOM. Alerga();
Probă = Rezultat. Alegeți () ;
Pa selecție. Următorul()Ciclu
EndCycle ;
De asemenea, puteți utiliza manageri de obiecte de configurare:
DirectoryCOM = Conexiune. Directoare. DirectoryName;
DocumentCOM = Conexiune. Documentație. Numele documentului;
RegisterCOM = Conexiune. Registre de informații. RegisterName;

Primirea și compararea enumerației prin conexiune COM

Pentru a compara valorile elementelor de enumerare definite în configurație, este necesar să convertiți aceste elemente într-unul dintre tipurile primitive, a căror comparație este ușoară. Astfel de tipuri pot fi fie de tip numeric, fie de tip șir. Puteți converti valoarea unui element de enumerare într-un tip numeric astfel:

Enum Item = Connection.Directories.Directory1.FindByCode(1).Props1;

PossibleValues ​​​​= Enum Element.Metadata().Enum Values;

EnumerationElementNumber = PossibleValues.Index(PossibleValues.Find(Connection.XMLString(EnumerationElement)));

Dacă EnumerationItemNumber = 0, atunci Raportați( „Valoarea numărului 1”);

ElseIfEnumerationItemNumber = 1 Apoi Raport ("Valoarea Enumerării2");

endIf;

Preluarea unui obiect prin COM prin identificator

Prin managerii de obiecte de configurare obținem un obiect com, de exemplu:
DocumentCOM = Conexiune. Documentație. Numele documentului;

Apoi obținem un șir de identificare unic:

StringUID =Conection.string ( DocumentCOM.UniqueIdentifier())

Identificator = U nou unicIdentifier(StringUID);
CU linkByIdentifier = Documente[DocumentName].GetLink(Identifier);

Dacă trebuie să găsiți un obiect com după document prin identificator, atunci trebuie să scrieți astfel:

WidCOM = Connection.NewObject(„UniqueIdentifier”, StringUID);
LinkByIdentifier = Connection.Documents[DocumentName].GetLink(WidCOM);

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”.

Rețineți 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 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 posibile erori este mai bine să includeți conexiunea în construcția „Î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 sunt disponibile pentru căutare metode existente obiectele și mecanismele platformei.

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 despre 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 de muncă ale specialiștilor cu experiență.


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, este lansată o aplicație completă 1C:Enterprise 8.0, iar în cazul unei conexiuni COM, este lansat 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, la 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ă valoarea conține spații albe, aceasta trebuie inclusă în 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 are legătură cu ieșirea unui raport într-un document foaie de calcul și 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, de ex. document foaie de calcul, într-un modul de conexiune extern, într-un modul partajat sau într-un modul obiect, conexiunea COM poate să nu fie stabilită sau poate fi întreruptă ca excepție.

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.COMConnector. In caz de V82.Aplicație Este lansată o copie aproape completă a aplicației 1C. în caz de utilizare V82.COMConnector 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.COMConnectorș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.COMConnector 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.COMConnector 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.COMConnector metoda se aplică la conexiune. se lucrează în continuare cu cererea mijloace standard 1C. in cod arata asa:

Solicitare = Conexiune. NewObject("Solicitare"); // Pentru V82.COMConnector 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”.

Ce este analiza site-ului.


Top