1c ce bibliotecă să se înregistreze pentru conexiunea com. Depanarea erorilor de conectare prin conexiune COM. Conectarea unei conexiuni externe

01.11.2019 Știri

La un moment dat, am întâlnit problema creării unei conexiuni COM pe partea de server. Problema este dificil de diagnosticat deoarece... codul care funcționează perfect sub client refuză să funcționeze pe server, de exemplu, dacă codul îndeplinește o sarcină de rutină.

Metoda propusă mai jos vă permite să scăpați de problema descrisă. Din păcate, după reinstalarea platformei, totul revine la normal și procedura trebuie repetată.

Http://www.steeltrace.ru/details/articleid/22/%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1 %86%D0%B8%D1%8F-1%D1%81-com-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0% BD%D1%82%D0%B0-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1 %81-64-%D0%B1%D0%B8%D1%82%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BF%D1%80%D0%B8%D0%BB %D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8.aspx

Actualizare. Adăugare: dacă serverul Windows pe 64 de biți are 1C Enterprise Server pe 64 de biți (în distribuția windows64.rar),
atunci nu va fi o astfel de problemă. Programul de instalare vă permite să instalați un conector COM fără a instala nordul în sine. Acest lucru este util atunci când aplicația este implementată pe platforma 8.3 și este necesară o conexiune COM la bazele de date pe 8.2.

Multumesc pentru adaugarebrix8x.

Este dat un algoritm pentru configurarea sistemului, cu o captură de ecran pentru fiecare acțiune.

2. Înregistrarea componentelor comcntr.dll

5. Pornirea serverului 1C. (Neaparat:)

Apel la consola


Înregistrați componenta. Componenta lipsește dacă este instalat doar serverul 1C. Din anumite motive, 1C îl publică doar ca parte a clientului.


Actualizare. Dacă o componentă nu este înregistrată, poate fi necesar să eliminați mai întâi componenta veche, abia apoi va fi instalată una nouă.
Se realizează regsvr32 /u„c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll”
Apoi același lucru, dar fără „/u” regsvr32 „c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll”

Multumesc pentru adaugareshur52.

Să începem serviciul de componente. Descris pentru Windows Server 2008 R2 Standard.








În fir Componentele adaugă o nouă componentă comcntr.dll






IMPORTANT!!! După instalare, trebuie să modificați puțin proprietățile. Această subtilitate nu este descrisă nicăieri, fără ea nu ar funcționa pentru mine!

Repornirea serverului fizic

Updater-1s. Rezolvarea problemelor cu biblioteca com pentru conexiunea externă la baza de date.

2018-10-05T16:32:35+00:00

În activitatea sa, Updater-1c folosește biblioteca com din 1c pentru conexiunea externă la bazele de date.

În cele mai multe cazuri, nu se observă probleme cu această bibliotecă - actualizatorul în sine înregistrează și folosește automat biblioteca versiunii necesare a 1c, dar ocazional apar cazuri (în principal pe sistemele de operare server) când este necesar „dansul cu tamburin”.

Cum să înțelegem că avem probleme cu COM

Pentru a face acest lucru, apăsați butonul „Verificați setările” în timp ce apăsați tasta „Shift” de pe tastatură:

În condiții normale munca COM raportul va fi cam asa:

Dacă există probleme cu COM, aceasta sau o eroare similară va apărea:

El poate scrie și ceva de genul „ Nu s-a putut crea conexiune software la 1C".

Da, judecând după test, avem probleme cu COM

În primul rând, despre ce fel de bibliotecă vorbim? Această bibliotecă comcntr.dll, care se află în folderul bin al unei anumite platforme 1c:

Această bibliotecă este instalată și înregistrată automat în sistem atunci când platforma este instalată.

În plus, înainte de a se conecta la baza de date printr-o conexiune externă, actualizatorul însuși înregistrează în plus biblioteca din versiunea necesară a platformei în sistem folosind comanda:

regsvr32. exe /n/i:utilizator

Deci ce putem face?

Pasul #0

În primul rând, ne asigurăm că avem cu adevărat versiunea profesională a platformei, pentru că pt versiunea de bază platformă, conexiunile externe la bazele de date nu ar trebui să funcționeze (aceasta este o limitare a platformei).

Pentru a înțelege ce platformă avem (de bază sau profesională), hai să o rulăm pe aceasta.

Dacă licența pentru platformă nu este încă profesională, ci de bază, atunci toți ceilalți pași nu au sens. Conexiune externă nu va funcționa cu bazele de date (din cauza limitărilor platformei). Nu mai rămâne nimic decât să configurați bazele de date.

Pasul 1

Dacă aveți UAC activat, puteți realiza acest lucru făcând clic dreapta pe comanda rapidă de actualizare și selectând opțiunea „Run ca administrator”.

Apoi, selectați baza de date și faceți clic pe butonul „Verificați setările”. Daca eroarea dispare si nu se mai reproduce nici cand rulezi updaterul normal (fara drepturi de administrator), felicitari, problema este rezolvata. Dacă nu, mergi mai departe.

Pasul 2

Într-o versiune pe 32 de biți a sistemului de operare, încercăm să executăm comanda

regsvr32/n/i:utilizator „calea către folderul bin\comcntr.dll”

Pe o versiune a sistemului de operare pe 64 de biți comanda ar fi cam așa:

C:\Windows\SysWOW64\regsvr32 /n/i:utilizator „calea către folderul bin\comcntr.dll”

Rulăm aceste comenzi de la nume de utilizator cu drepturi de administrator. Și cu UAC activat, lansați cmd prin „Run as administrator” sau prin aceeași lansare a fișierului batch scris.

Dacă comanda de înregistrare nu a ajutat, atunci trebuie mai întâi să eliminați înregistrarea bibliotecii comcntr.dll rulând aceeași comandă care apelează regsvr32 cu tasta /u

Dacă acest lucru nu ajută, încercați să reinstalați platforma 1C în modul Fix și apoi înregistrați biblioteca așa cum este scris mai sus.

Pasul 3

Se pare că actualizatorul nu poate înregistra componenta COM din cauza setărilor de securitate de pe serverul dvs.
În acest caz:

  1. Accesați Panoul de control - Administrare - Servicii componente.
  2. Să mergem la ramura Computers - My Computer - COM+ Applications.
  3. ÎN meniul contextual selectați Creare - Aplicație. Se deschide Expertul de instalare a aplicației COM+.
  4. Faceți clic pe „Următorul”.
  5. Selectați „Creați o nouă aplicație”.
  6. Introduceți numele „V83COMConnector”. Setați comutatorul " Aplicație server". Faceți clic pe „Următorul”.
  7. La pasul următor instalăm " Utilizator curent". Faceți clic pe „Următorul”.
  8. Faceți clic pe „Terminare”.
  9. În ramura V83COMConnector care apare, mergeți la subramura Componente.
  10. În meniul contextual, selectați Nou - Componentă. Se deschide Expertul de instalare a componentelor COM+.
  11. Faceți clic pe „Următorul”.
  12. Selectați „Instalați componente noi”.
  13. Selectați un fișier<каталог 1С>\bin\comcntr.dll.
  14. Faceți clic pe „Next” - „Finish”.
  15. Să trecem la ramura V83COMConnector.
  16. Selectați „Proprietăți” din meniul contextual. În fereastra care se deschide, accesați fila „Securitate”.
  17. Debifați caseta de selectare „Forțați verificarea accesului pentru aplicații”. Bifați caseta de selectare „Aplicați politica de restricții software”. Setați nivelul de restricție la „Nelimitat”.
  18. Faceți clic pe „OK”.

După aceasta, actualizatorul ar trebui să poată înregistra independent componente ale tuturor versiunilor de platforme, și nu doar pe cea pe care am specificat-o în componentă.

Pasul #4

Se întâmplă că doar reinstalarea platformei ajută (în acest caz, componenta este înregistrată corect).

Pasul #5

Dacă problema a început să apară imediat după actualizarea platformei 1c, atunci cel mai probabil versiune noua platformei 1c îi lipsește un pachet de service sau o actualizare pentru sistemul dvs. de operare. Prin urmare, dacă este posibil, le instalăm pe toate; dacă nu, acționăm selectiv în conformitate cu acesta.


Este adesea necesar să obțineți date din baze de date diferite, care, ceea ce nu este neobișnuit, funcționează pe platforme diferite. Acesta ar putea fi, de asemenea, un schimb regulat de date între bazele de date. Este posibil să existe și o procesare unică pentru transferul de date. Acestea pot fi, de asemenea, rapoarte care colectează date din diferite baze de date și formează rezultatul necesar.
În fiecare dintre aceste cazuri, trebuie să vă conectați de la o bază de date la alta printr-o conexiune COM. În faza de conectare, deseori pândesc diverse probleme. Acest articol va analiza unele erori și cum să le remediați. Aici vor fi date erori specifice la conectarea între anumite platforme, dar soluțiile pot fi la fel de adecvate atunci când se conectează între platforme în alte variante.

Situația unu. Când încercați să vă conectați printr-o conexiune COM la baza de date sursă, este afișat un mesaj de eroare. Ceva de genul: „Eroare la apelarea constructorului (COMObject): -2147221164(0x80040154): Clasa nu este înregistrată”.
Pentru a rezolva această eroare, primul lucru pe care trebuie să-l faceți este să înregistrați biblioteca client țintă. Si pentru versiuni diferite clienții unei versiuni a platformei trebuie să-și înregistreze biblioteca. Adică, pentru diferite versiuni ale platformei versiunea 8.3, trebuie să reînregistrați versiunea bibliotecii a versiunii de platformă dorită. Pentru versiunea de platformă 8.2 aceeași abordare.
Biblioteca este înregistrată după cum urmează. Începe Linie de comanda de sub Administrator, comanda este scrisă în el

Regsvr32 „[Calea bibliotecii]\bin\comcntr.dll,

De exemplu, regsvr32 „c:\Program Files (x86)\1cv8\8.3.5.1119\bin\comcntr.dll” și comanda este executată. Toate aplicații deschiseÎn acest caz, este mai bine să închideți 1C. Dacă înregistrarea are succes, va fi afișat un mesaj de succes. Dacă primiți un mesaj de eroare, trebuie să verificați calea unde se află biblioteca și toate drepturile.
De asemenea, puteți plasa această comandă într-un fișier cmd și o puteți rula cu drepturi de administrator.

Dacă apare o astfel de eroare atunci când încercați să vă conectați la o bază de date pe platforma 7.7, atunci ar trebui să verificați registrul pentru prezența înregistrării conectorului 7.7. Secțiunea HKEY_CLASSES_ROOT ar trebui să conțină ramurile afișate în imagine:

Pentru a înregistra corect conectorul 7.7, trebuie să rulați 1C Enterprise 7.7 o dată în numele administratorului.

Situatia a doua. Când încercați să stabiliți o conexiune COM, apare o eroare cu un mesaj despre o nepotrivire între versiunea clientului bazei de date sursă. În acest caz, problema este rezolvată prin înregistrarea versiunii corecte a bibliotecii comcntr.dll, așa cum este descris mai sus.

Situația trei. Când încercați să vă conectați printr-o conexiune COM la baza de date sursă de pe platforma 1C 7.7, nu sunt generate erori, dar procesarea „strâns” „îngheață”. Când sarcina este eliminată, conexiunea prin consola de gestionare a serverului 8.x rămâne și nu este resetată prin alte trucuri decât repornirea serviciului server 1C. Acest fenomen apare atunci când se încearcă conectarea de la o bază de date pe platforma 8.x la o bază de date pe platforma 7.7 dintr-o sesiune de server. Nu sunt prezentate aici motive clar definite pentru comportamentul acestui program. O recomandare este să utilizați un apel de conexiune din sesiunea client (&OnClient).

Situația a patra. Când încercați să vă conectați printr-o conexiune COM la baza de date sursă de pe platforma 1C 7.7, nu sunt generate erori, dar nu are loc nicio conexiune. În acest caz, precum și în altele, înregistrarea manuală a componentelor COM ajută.

1. Accesați Panoul de control → Administrare → Servicii componente.
2. Accesați filiala Computers → My Computer → COM+ Applications.


3. În meniul contextual, selectați Creare → Aplicație. Se deschide Expertul de instalare a aplicației COM+. Selectați „Creați o nouă aplicație”.

4. Este mai bine să scrieți numele noii aplicații, astfel încât să fie clar despre ce vorbim: V8_ComConnector, metoda de activare - „aplicație server”.

5. În pasul următor, setați „Utilizator curent”. Faceți clic pe „Următorul”. În ramura aplicației create, mergeți la ramura „Roluri”, deschideți rolul „CreatorOwner” și apoi în secțiunea „Utilizatori” creați un utilizator - un cont sub care rulează serverul 1C.
6. În ramura aplicației create, mergeți la ramura „Componente” și creați o componentă: Creare - Componentă Selectați „Instalare componente noi”, iar în dialog selectați DLL-ul dorit (în în acest exemplu: [Calea bibliotecii]\bin\comcntr.dll).
7. În meniul contextual, selectați „Proprietăți”. În fereastra care se deschide, accesați fila „Securitate”.
8. Debifați caseta de selectare „Forțare verificare acces pentru aplicații”. Bifați caseta de selectare „Aplicați politica de restricții software”. Setați nivelul de restricție la „Nelimitat”


9. Faceți clic pe „OK”.

În acest articol voi vorbi despre multe caracteristici de interacțiune între bazele de date 1C folosind tehnologia COM, acumulate de-a lungul anilor de dezvoltare și utilizare a produsului de integrare comercială 2iS: Integrarea companiei noastre 2iS.

Termeni

OS - sistem de operare

Client COM - proces OS (thread) care a solicitat crearea unui obiect COM

Server COM - obiect COM creat la cererea clientului

Conector Com - obiect COM V8X.ComConnector pentru crearea de conexiuni externe cu baze de date 1C

Server de automatizare - cunoscut și sub numele de server OLE, obiect COM V8X.Aplicație pentru crearea aplicațiilor 1C

Ediția platformă - subșir până la punctul 2 al versiunii platformei (de exemplu 8.2, 8.3)

Platform build - șir de versiune completă a platformei (de exemplu 8.2.19.130, 8.2.16.352)

Conectarea unei conexiuni externe

Să ne uităm la algoritmul pentru conectarea unei conexiuni externe în detaliu
  1. Crearea unui obiect COM conector Com (nume de clasă - V8X.ComConnector). Opțiuni:
  2. În proces (în proces)
  3. Clasa V8X.ComConnector trebuie să fie înregistrată cu aceeași lățime de biți ca și clientul COM
  4. Dacă ediția platformei client COM este aceeași cu ediția platformei serverului COM, atunci este necesar ca platforma client COM și platforma serverului COM să fie, de asemenea, egale.
  5. Este înregistrat la instalarea platformei cu opțiunea Conexiune externă. În orice moment, poate fi înregistrat cu comanda „Regsvr32 comcntr.dll” în director fișiere executabile platforme.
  6. Obiectul COM este creat în memoria clientului COM
  7. Crearea costă aproximativ - 0,01 (prima)/0,001 (secunda) sec
  8. Exemplu

  9. Local în afara procesului (local)
  10. Clasa V8X.ComConnector de orice dimensiune de biți și construcție de platformă trebuie să fie înregistrată. Este necesar să configurați o aplicație COM+ prin dcomcnfg.exe cu activarea „Aplicație server”. Discutate mai detaliat mai jos.
  11. Obiectul COM este creat în memoria procesului de serviciu gazdă (dllhost.exe) pe computerul client COM
  12. Crearea costă aproximativ - 0,06 (prima) / 0,03 (secunda) sec
  13. Exemplu
    ComConnector = New COMObject(“V83.ComConnector”);
    OuterConnection = ComConnector.Connect(ConnectionString);
  14. Non-local în afara procesului (DCOM)
  15. Clasa V8X.ComConnector de orice nivel de biți și platformă trebuie înregistrată pe un computer non-local. Este necesar să configurați o aplicație COM+ pe un computer non-local prin dcomcnfg.exe cu activarea „Aplicație server”. Discutate mai detaliat mai jos.
  16. Trebuie să configurați rolul „Server de aplicații” pe un computer non-local și să activați accesul COM+ non-local selectând „ Acces la retea la COM+”/”COM+ acces la rețea”. Discutate mai detaliat mai jos.
  17. Obiectul COM este creat în memoria procesului de serviciu gazdă (dllhost.exe) pe alt computer
  18. Crearea costă aprox.
  19. Date experimentale

Graficul arată că durata creării acestui obiect COM este direct proporțională cu întârzierea canalului, iar factorul de proporționalitate este de aproximativ 24. Putem presupune că la crearea acestui obiect COM au loc 24 de apeluri prin canal.
  1. Exemplu
    ComConnector = New COMObject(„V83.ComConnector”, ComputerName);
    OuterConnection = ComConnector.Connect(ConnectionString);
  2. Executarea metodei Connect (crearea unei conexiuni exterioare)
  3. Creați o sesiune - 1 sec
  4. Inițializarea sesiunii - sec
  5. Înainte de a porni sistemul (numai pentru serverul de automatizare)
  6. La pornirea sistemului
  7. Inițializarea parametrilor sesiunii
  8. Se încarcă metadatele necesare

Costurile apelurilor COM

De fiecare dată când accesăm o proprietate sau o metodă a unui obiect COM într-un limbaj încorporat (facem un apel COM), se întâmplă o serie de lucruri: acțiuni suplimentareîn comparație cu apelarea unui obiect limbaj încorporat nativ. Dacă serverul COM este localizat într-un alt proces local, atunci toți parametrii sunt mai întâi transferați de la clientul COM la serverul COM și, în final, parametrii sunt transferați înapoi la clientul COM. Pentru un astfel de transfer, informațiile trebuie, în mod natural, să fie serializate de partea expeditorului și apoi deserializate de partea destinatarului, ceea ce, împreună cu alte acțiuni, se numește marshaling și unmarshaling. În modul non-local (DCOM), un astfel de transfer va pierde în continuare timp cu comunicațiile în rețea și, la prima accesare a unui nou obiect COM, transferul „scheletului” acestuia și, prin urmare, întârzierea canalului va juca un rol decisiv (Mai multe despre apelurile COM , DCOM pe Wikipedia, Prezentare tehnică DCOM,)

Raportul costului pe apel în funcție de tipul de locație al serverului COM

  1. Minimum pentru un server Com în proces
  2. Media pentru serverul Com local în afara procesului
  3. Mediu spre mare pentru un server Com non-local în afara procesului, în funcție de calitatea canalului de comunicație

Minimizarea numărului de apeluri COM

  1. Creăm procesare externă de bază cu un set de metode comune pentru a primi apeluri de la un client COM pe partea de server COM
  2. Acum nu trebuie să schimbăm configurația bazei de server COM pentru a folosi funcționalitatea complexă acolo.
  3. În produsul nostru l-am numit „Service Processor”. Transferul și inițializarea durează aproximativ 1 secundă
  4. Proiectăm interacțiunea cu serverul COM conform principiului „apelurilor COM minime”, adică pregătim tot ce este necesar pe partea clientului COM și îl transmitem ca parametri unui apel mare.
  5. Creăm procesare încorporată pentru a efectua un astfel de apel într-un client COM
  6. Transferarea obiectelor agregate
  7. Serializăm toți parametrii de intrare pe partea clientului COM
  8. Deserializați toți parametrii de intrare pe partea serverului COM
  9. Serializăm toți parametrii de ieșire pe partea serverului COM
  10. Deserializați toți parametrii de ieșire pe partea clientului COM
  11. În produsul nostru, l-am numit „Rularea unui serviciu de bază de informații”
  12. Pentru mai multe apeluri COM oferim o frecvență reglabilă
  13. De exemplu, apelurile de informare pot fi efectuate la o frecvență variabilă

Părere

Când se folosește principiul „apelurilor COM minime”, o parte semnificativă a timpului codul va fi executat într-un context străin, ceea ce crește serios unele dintre inconvenientele apelurilor COM:
  1. Nu puteți întrerupe firul de execuție al clientului COM și conexiunea acestuia la serverul de aplicații 1C până când apelul către serverul COM este finalizat
  2. Clientul COM nu are informații despre progresul apelului către serverul COM
Pentru a combate aceste neplăceri, vă puteți organiza părere de la serverul COM la clientul COM, trecând serverului COM o legătură către modulul client COM comun și apelând periodic clientul COM prin intermediul acestuia. Trebuie remarcat faptul că există erori de platformă (https://partners.v8.1c.ru/forum/t/1382465/m/1382465) care apar atunci când se creează link-uri către un modul comun în mai mult de un server de sesiune COM. Prin urmare, pentru moment, cel mai bine este să ștergeți referințele la modulul comun din toate serverele COM reținute înainte de a-l plasa într-unul nou. Puteți transmite apeluri inverse:
  1. informații despre progres
  2. mesaje acumulate către utilizator (primite de funcția GetMessagesToUser(True))

Schema principiului „minimum de apeluri COM”.

Această schemă este prietenoasă cu întârzierile mari ale canalelor de comunicare. Deci seamănă cu apelarea unui serviciu web. Și, prin urmare, folosindu-l pentru interacțiunea COM, reduceți semnificativ costurile posibilelor tranziții între COM și serviciul web în ambele direcții.

Depanare

Când utilizați principiul „apelurilor COM minime”, puteți facilita depanarea execuției codului pe un server COM, făcând opționalul fereastra modală conectarea la baza de date într-un client COM. Această fereastră ar trebui să ofere opțiuni pentru setarea parametrilor de conexiune unică, efectuarea de funcții auxiliare și vizualizarea informațiilor despre sesiunea conectată. Mai jos este un exemplu de astfel de fereastră din produsul nostru.

Pentru a activa capacitatea de depanare a conexiunilor externe, trebuie să creați un fișier comcntrcfg.xml cu conținutul corespunzător în subdirectorul conf. În fereastra de conectare, puteți crea un buton/căsuță de selectare pentru a crea un astfel de fișier în mod programatic. Cu toate acestea, multe versiuni ale platformei conțin o eroare din cauza căreia elementele de depanare a conexiunii externe nu sunt vizibile în depanator chiar și cu acest fișier configurat corect. Pe platforma 8.3 aceste probleme par să fi fost rezolvate.

Exemplu de fișier comcntrcfg.xml:


De asemenea, nu trebuie să uităm de necesitatea lansării configuratorului pentru depanare cu același șir de conexiune (până la minuscule) ca și obiectul de depanare. Prin urmare, în acest dialog trebuie să faceți un buton pentru a lansa configuratorul de server COM cu șirul de conexiune corect.

Într-o oarecare măsură, puteți ocoli problema invizibilității elementului de depanare a conexiunii externe și o serie de alte inconveniente executând codul o dată pe un client gros și înlocuind modul „Conexiune externă” cu „Serverul de automatizare” (aplicație) , adică folosind clasa COM V8X.Aplicație și vizibilitate activate. Prin urmare, în fereastra de conectare aveți nevoie de parametri pentru a selecta modul de conectare.

După crearea unei conexiuni pe partea clientului COM, de obicei trebuie să conectați depanatorul de bază al serverului COM și să setați acolo un punct de întrerupere în locul potrivit. Prin urmare, în fereastra de conectare trebuie să plasați un buton pentru a conecta depanatorul/configuratorul serverului COM. Dacă serverul COM rulează în modul de aplicație vizibil, atunci puteți utiliza un apel de excepție asincron pentru a conecta depanatorul. Din dialogul de eroare din aplicația de server COM, puteți utiliza butonul „Configurator” pentru a deschide configuratorul și, în cele mai multe cazuri, conectați imediat depanatorul. Dacă conectarea unui depanator în acest mod nu este disponibilă, atunci operatorul va fi ajutat prin afișarea informațiilor despre sesiune (numărul acesteia) în baza de date a serverului COM. De asemenea, aveți nevoie de un buton de deschidere în depanatorul de fișiere deschise prelucrare externă, care se va executa în el.

Gestionarea claselor COM și a aplicațiilor COM+ 1C

Gestionarea claselor COM

  1. Conexiune externă (V8X.ComConnector)
  2. Înregistrare: Regsvr32 comcntr.dll
  3. Anularea înregistrării: Regsvr32 comcntr.dll /u
  4. Server de automatizare (V8X.Application)
  5. Înregistrare - 1cv8.exe /regserver
  6. Anularea înregistrării - 1cv8.exe /unregserver

Gestionarea aplicațiilor COM+

Acest lucru se face prin intermediul snap-in-ului dcomcnfg.exe. Pentru a înregistra 1C ca aplicație COM+, trebuie să deschideți snap-in-ul „dcomcnfg”. În ea, în ramura „Servicii componente” - „Computere” - „Computerul meu” - „Aplicații COM+” trebuie să adăugați o nouă aplicație. Când adăugați, puteți specifica orice nume. Apoi, trebuie să specificați utilizatorul în numele căruia va rula aplicația COM+ în fila Identitate. De asemenea, trebuie să setați accesul la aplicație pentru toți utilizatorii adăugând, dacă lipsește, un rol cu ​​orice nume în ramura Roluri și adăugând utilizatorul Toată lumea în ramura sa Utilizatori. După adăugarea aplicației, trebuie să creați o nouă componentă. Pentru a face acest lucru, în ramura „Componente” a aplicației create, trebuie să selectați elementul de meniu „Creare” - „Componentă”. La creare, selectați importul componentelor deja înregistrate și găsiți în listă (de preferință 64 de biți) componenta 1C (V8x.COMConnector.1).

Produsul nostru are un instrument „Gestionați clasele COM 1C” pentru vizualizarea/înregistrarea/modificarea tuturor claselor COM și a aplicațiilor COM+ 1C pe un computer specificat:

Configurarea unui server DCOM

Pentru Windows 2008 Server, trebuie să adăugați rolul de server de aplicații. Pentru a face acest lucru, deschideți panoul de control al computerului, faceți clic dreapta în ramura „Roluri” și selectați elementul de meniu „Adăugați rol”.

Va apărea o fereastră în care trebuie să selectați rolul „Server de aplicații”. În etapa de selectare a rolurilor de server de aplicații, trebuie să specificați elementul „Acces la rețea la COM+” / „Acces la rețea COM+”. Dacă nu faceți acest lucru, atunci când încercați să creați un obiect COM veți primi eroarea „Eroare la apelarea constructorului (COMObject): componenta sau aplicația care conține componenta a fost dezactivată”.

Probleme

  1. Costuri mari de conectare/inițializare
  2. Holding com servers - remediu eficient lupta
  3. Depozitare temporara. Producătorul nu îl recomandă, dar nu există unde altundeva. http://infostart.ru/public/331683/
  4. Reutilizarea valorilor returnate. Curățat la fiecare 20 de minute
  5. Platforme diferite de client și server cu aceeași ediție de platformă
  6. Pentru a ocoli, pentru fiecare ansamblu platformă diferit de clientul COM, atribuim și configuram un server DCOM
  7. Lipsa de informații despre tipurile de obiecte 1C imbricate în obiectele COM (în loc de tipul de obiect 1C, primim tipul „COMObject” peste tot) și lipsa ajutorului contextual pentru acestea
  8. Pentru a ocoli, folosim principiul „apelurilor COM minime”
  9. Când o excepție este transmisă de la serverul COM, aceasta ia o formă scurtă din cauza unei erori de platformă
  10. Pentru a ocoli, încapsulăm fiecare apel pe partea de server COM într-o încercare și, în excepție, reintroducem excepția cu o descriere completă a erorii
  11. La crearea unui obiect COM, eroarea „Versiunea componentei „comcntr” (8.X.XX.XXX) diferă de versiunea modulului rădăcină „core82” (8.X.YY.YYY)”
  12. Pentru a rezolva acest lucru, creăm o aplicație COM+ cu activare în afara procesului. Apoi serverul COM va fi creat într-un proces separat și nu va fi nevoie să se potrivească versiunile acestor module.
  13. Canale lente (întârzieri mari)
  14. Atribuim și configuram propriul nostru server DCOM fiecărei subreței din spatele unui canal lent separat, iar atunci când accesăm bazele de date din spatele acestui canal, creăm servere COM pe acest computer, minimizând numărul și volumul apelurilor client Com.<->Serverul de comunicații
  15. Memorarea în cache (reutilizarea) serverelor COM
  16. Nu se poate deconecta un proces de lucru care așteaptă finalizarea unui apel de server COM
  17. O soluție poate fi crearea de obiecte COM în procesele gazdă dedicate prin configurarea aplicației COM+ în consecință și înregistrarea ID-urilor acestor procese în legătură cu sesiunile client COM. Apoi, dacă trebuie să încheiați conexiunea la server a unei astfel de sesiuni, puteți mai întâi să opriți procesul serverului COM și apoi sesiunea în sine.
  18. La accesarea unui obiect COM, poate apărea o eroare „Eroare necunoscută”. Motive posibile:
  19. Serverul COM a încetat să mai existe. Motive posibile:
  20. Depășirea stivei
  21. Eroare irecuperabilă
  22. Procesul gazdă a ieșit
  23. S-a pierdut conexiunea cu serverul COM non-local
  24. Coincidența numelor de proprietăți și metode fără parametrii obiect creează ambiguitate în accesarea acestora prin COM
  25. De exemplu, dacă un director are atributul FullName, atunci datorită prezenței metodei FullName(), accesarea atributului FullName prin COM poate duce la apelarea metodei FullName()
  26. Pentru a ocoli, folosim principiul „apelurilor COM minime”

Tehnologia Com VS serviciile web în rețeaua locală

Defecte

  1. Dificultățile discutate mai sus cu interacțiunea diferitelor ansambluri ale platformei 1C, care necesită un mecanism de service pentru soluționarea lor
  2. Costuri mari de conectare/inițializare, deci fără cache, ineficiente pentru apeluri mici frecvente
  3. Link către familie sisteme de operare(platformă) Windows

Avantaje

  1. Nu este nevoie să schimbăm configurația bazelor de date la care ne conectăm
  2. Funcționalitate largă
  3. Depanare mai ușoară
  4. Nu este nevoie să implementați și să întrețineți un server web

Capturarea licențelor CAL

În cele mai multe cazuri, toate aplicațiile client, un caz special al cărora este serverul Automation și cu rezervări este o conexiune externă, necesită o singură licență pentru toate într-o singură sesiune OS. Totuși, dacă aplicația client nu a putut obține o licență hardware (de la un HASP local sau HASP de rețea) și o licență software (platformă sau configurație de bază), atunci se încearcă obținerea unei licențe separate de la serverul 1C:Enterprise. Serverul 1C:Enterprise poate emite o licență numai dacă proprietățile bazei de date permit emiterea de licențe de către serverul 1C:Enterprise. În acest caz, fiecare aplicație client și conexiune externă își poate capta propria licență.

Concluzie

Dacă doriți să aflați mai multe despre caracteristicile descrise, puteți descărca gratuit baza de date de configurare și demonstrație a produsului, pentru care trebuie să plasați o precomandă pe Infostart pentru produsul 2iS:Integration. În ciuda prezenței unui modul securizat în configurație, 99% din codul de configurare este deschis, adică puteți studia implementarea tehnicilor descrise.