1c melyik könyvtárat kell regisztrálni a com kapcsolathoz. Csatlakozási hibák hibaelhárítása COM-kapcsolaton keresztül. Külső csatlakozás csatlakoztatása

01.11.2019 hírek

Egy időben találkoztam azzal a problémával, hogy COM-kapcsolatot kell létrehozni a szerver oldalon. A problémát nehéz diagnosztizálni, mert... a kliens alatt tökéletesen működő kód nem hajlandó működni a szerveren, például ha a kód rutinfeladatot hajt végre.

Az alábbiakban javasolt módszer lehetővé teszi, hogy megszabaduljon a leírt problémától. Sajnos a platform újratelepítése után minden visszaáll a normál kerékvágásba, és az eljárást meg kell ismételni.

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

Upd. Kiegészítés: ha a 64 bites Windows kiszolgálón van 1C Enterprise Server 64 bites (a windows64.rar disztribúcióban),
akkor nem lesz ilyen probléma. A telepítő lehetővé teszi a COM-csatlakozó telepítését magának az északnak a telepítése nélkül. Ez akkor hasznos, ha az alkalmazás a 8.3-as platformon van implementálva, és COM-kapcsolat szükséges az adatbázisokhoz a 8.2-es verzióban.

Köszönöm a kiegészítéstbrix8x.

Meg van adva egy algoritmus a rendszer beállításához, minden művelethez egy képernyőképet.

2. A comcntr.dll összetevők regisztrációja

5. Az 1C szerver indítása. (Szükségszerűen:)

Hívja a konzolt


Regisztrálja az alkatrészt. Az összetevő hiányzik, ha csak az 1C szerver van telepítve. Valamilyen oknál fogva az 1C csak a kliens részeként teszi közzé.


Upd. Ha egy összetevő nincs regisztrálva, előfordulhat, hogy először el kell távolítania a régi összetevőt, és csak ezután kerül telepítésre egy új.
Regsvr32 készítése /u"c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll"
Ezután ugyanaz, de "/u" nélkül regsvr32 "c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll"

Köszönöm a kiegészítéstshur52.

Indítsuk el az összetevő szolgáltatást. Leírva a Windows Server 2008 R2 Standard rendszerhez.








A szálban Az összetevők egy új comcntr.dll összetevőt adnak hozzá






FONTOS!!! A telepítés után egy kicsit módosítani kell a tulajdonságokat. Ezt a finomságot sehol nem írják le, enélkül nekem nem menne!

A fizikai szerver újraindítása

Updater-1s. Problémák megoldása a com könyvtárral az adatbázishoz való külső csatlakozáshoz.

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

Munkájában az Updater-1c az 1c-től származó com könyvtárat használja az adatbázisokhoz való külső csatlakozáshoz.

A legtöbb esetben nem figyelhető meg probléma ezzel a könyvtárral - maga a frissítő automatikusan regisztrálja és használja az 1c szükséges verziójának könyvtárát, de időnként előfordulnak olyan esetek (főleg szerver operációs rendszereken), amikor „tamburával táncolni” kell.

Hogyan értsük meg, hogy problémáink vannak a COM-mal

Ehhez nyomja meg a „Beállítások ellenőrzése” gombot, miközben lenyomva tartja a „Shift” billentyűt a billentyűzeten:

Normál körülmények között munka COM a riport valami ilyesmi lesz:

Ha problémák vannak a COM-mal, ez vagy hasonló hiba jelenik meg:

Olyanokat is tud írni, mint " Nem sikerült létrehozni szoftver kapcsolat 1C-ig".

Igen, a tesztből ítélve problémáink vannak a COM-mal

Először is, milyen könyvtárról beszélünk? Ez a könyvtár comcntr.dll, amely egy adott 1c platform bin mappájában található:

Ez a könyvtár telepítve van, és a platform telepítésekor automatikusan regisztrálódik a rendszerben.

Ezenkívül, mielőtt külső kapcsolaton keresztül csatlakozna az adatbázishoz, a frissítő maga is regisztrálja a könyvtárat a platform szükséges verziójából a rendszerben a következő paranccsal:

regsvr32. exe /n/i:user

Szóval mit tehetünk?

0. lépés

Először is megbizonyosodunk arról, hogy valóban a platform professzionális verziójával rendelkezünk, mert a alap verzió platformon, az adatbázisokhoz való külső kapcsolatok nem működhetnek (ez platformkorlátozás).

Ahhoz, hogy megértsük, milyen platformunk van (alap vagy professzionális), futtassuk ezt.

Ha a platform licence még mindig nem professzionális, hanem alap, akkor az összes többi lépésnek nincs értelme. Külső kapcsolat nem fog működni adatbázisokkal (a platform korlátai miatt). Nincs más hátra, mint az adatbázisok konfigurálása.

1. lépés

Ha engedélyezve van az UAC, ezt úgy érheti el, hogy jobb gombbal kattint a frissítő parancsikonjára, és kiválasztja a "Futtatás rendszergazdaként" lehetőséget.

Ezután válassza ki az adatbázist, és kattintson a „Beállítások ellenőrzése” gombra. Ha a hiba eltűnik, és már akkor sem reprodukálódik, ha a frissítőt normál módon (rendszergazdai jogok nélkül) futtatja, akkor gratulálunk, a probléma megoldódott. Ha nem, lépj tovább.

2. lépés

Az operációs rendszer 32 bites verziójában megpróbáljuk végrehajtani a parancsot

regsvr32/n/i:user "a bin\comcntr.dll mappa elérési útja"

64 bites operációs rendszer verzión a parancs valahogy így szólna:

C:\Windows\SysWOW64\regsvr32 /n/i:user "a bin\comcntr.dll mappa elérési útja"

Ezeket a parancsokat innen futtatjuk felhasználónév rendszergazdai jogokkal. És ha az UAC engedélyezve van, indítsa el a cmd-t a „Futtatás rendszergazdaként” parancson keresztül, vagy az írott kötegfájl ugyanazon elindításával.

Ha a regisztrációs parancs nem segített, akkor először el kell távolítania a comcntr.dll könyvtár regisztrációját ugyanazzal a paranccsal, amely a regsvr32-t hívja meg a /u kapcsolóval.

Ha ez nem segít, próbálja meg újratelepíteni az 1C platformot Fix módban, majd regisztrálja a könyvtárat a fent leírtak szerint.

3. lépés

Úgy tűnik, hogy a frissítő nem tudja regisztrálni a COM-összetevőt a kiszolgáló biztonsági beállításai miatt.
Ebben az esetben:

  1. Lépjen a Vezérlőpult - Adminisztráció - Összetevő szolgáltatások menüpontra.
  2. Menjünk a Számítógépek - Sajátgép - COM+ alkalmazások ágra.
  3. BAN BEN helyi menü válassza a Létrehozás - Alkalmazás lehetőséget. Megnyílik a COM+ alkalmazástelepítő varázsló.
  4. Kattintson a "Tovább" gombra.
  5. Válassza az "Új alkalmazás létrehozása" lehetőséget.
  6. Írja be a „V83COMConnector” nevet. Állítsa be a kapcsolót " Szerver alkalmazás Kattintson a „Tovább” gombra.
  7. A következő lépésben telepítjük a " Jelenlegi felhasználó Kattintson a „Tovább” gombra.
  8. Kattintson a "Befejezés" gombra.
  9. A megjelenő V83COMConnector ágban lépjen az Összetevők alágra.
  10. A helyi menüben válassza az Új - Összetevő elemet. Megnyílik a COM+ komponenstelepítő varázsló.
  11. Kattintson a "Tovább" gombra.
  12. Válassza az "Új összetevők telepítése" lehetőséget.
  13. Válasszon ki egy fájlt<каталог 1С>\bin\comcntr.dll.
  14. Kattintson a "Tovább" - "Befejezés" gombra.
  15. Térjünk át a V83COMConnector ágra.
  16. A helyi menüből válassza a "Tulajdonságok" lehetőséget. A megnyíló ablakban lépjen a „Biztonság” fülre.
  17. Törölje a jelet az „Alkalmazások hozzáférésének kényszerítése” jelölőnégyzetből. Jelölje be a "Szoftverkorlátozási szabályzat alkalmazása" jelölőnégyzetet. Állítsa a korlátozási szintet „korlátlan” értékre.
  18. Kattintson az "OK" gombra.

Ezt követően a frissítőnek képesnek kell lennie arra, hogy a platformok összes verziójának összetevőit önállóan regisztrálja, és ne csak azt, amelyet az összetevőben megadottunk.

4. lépés

Előfordul, hogy csak a platform újratelepítése segít (ebben az esetben az összetevő megfelelően van regisztrálva).

5. lépés

Ha a probléma közvetlenül az 1c platform frissítése után kezdődött, akkor valószínűleg új verzió az 1c platformról hiányzik néhány szervizcsomag vagy frissítés az operációs rendszerhez. Ezért lehetőség szerint mindegyiket telepítjük, ha nem, akkor szelektíven ennek megfelelően járunk el.


Gyakran különböző adatbázisokból kell adatokat szerezni, ami nem ritka, hogy különböző platformokon működik. Ez lehet az adatbázisok közötti rendszeres adatcsere is. Az adatátvitelhez egyszeri feldolgozás is előfordulhat. Ezek lehetnek olyan jelentések is, amelyek különböző adatbázisokból gyűjtik az adatokat és alkotják a szükséges kimenetet.
Mindegyik esetben COM-kapcsolaton keresztül kell kapcsolódnia egyik adatbázisból a másikba. A kapcsolódási szakaszban gyakran leselkednek különféle bajok. Ez a cikk néhány hibával és azok megoldásával foglalkozik. Az egyes platformok közötti kapcsolódás során előforduló konkrét hibákat itt adjuk meg, de a megoldások ugyanúgy megfelelőek lehetnek más változatok platformjai közötti csatlakozáskor.

Egyes helyzet. Amikor COM-kapcsolaton keresztül próbál csatlakozni a forrásadatbázishoz, hibaüzenet jelenik meg. Valami ilyesmi: "Hiba a konstruktor (COMObject) hívásakor: -2147221164(0x80040154): Az osztály nincs regisztrálva."
A hiba megoldásához először regisztrálnia kell a cél ügyfélkönyvtárat. És azért különböző verziók a platform egyik verziójának ügyfeleinek regisztrálniuk kell könyvtárukat. Vagyis a 8.3-as platformverzió különböző buildjeihez újra kell regisztrálnia a kívánt platformkiadás könyvtári verzióját. A 8.2-es platformverzió esetében ugyanez a megközelítés.
A könyvtár nyilvántartása az alábbiak szerint történik. Indul Parancs sor az Adminisztrátor alól a parancs bele van írva

Regsvr32 "[Könyvtár elérési útja]\bin\comcntr.dll,

Például: regsvr32 "c:\Program Files (x86)\1cv8\8.3.5.1119\bin\comcntr.dll", és a parancs végrehajtásra kerül. Minden alkalmazások megnyitása Ebben az esetben jobb, ha bezárja az 1C-t. Ha a regisztráció sikeres, egy sikeres üzenet jelenik meg. Ha hibaüzenetet kap, ellenőriznie kell a könyvtár elérési útját és az összes jogot.
Ezt a parancsot egy cmd fájlba is elhelyezheti, és rendszergazdai jogokkal futtathatja.

Ha ilyen hiba történik, amikor megpróbál csatlakozni egy adatbázishoz a 7.7-es platformon, akkor ellenőrizze a rendszerleíró adatbázisban a 7.7-es csatlakozó regisztrációját. A HKEY_CLASSES_ROOT szakasznak tartalmaznia kell a képen látható ágakat:

A 7.7-es csatlakozó helyes regisztrálásához egyszer kell futtatnia az 1C Enterprise 7.7-et a rendszergazda nevében.

Második helyzet. Amikor COM-kapcsolatot próbál létrehozni, hibaüzenet jelenik meg a forrásadatbázis-ügyfélverzió közötti eltérésről szóló üzenettel. Ebben az esetben a probléma megoldható a comcntr.dll könyvtár megfelelő verziójának regisztrálásával a fent leírtak szerint.

Harmadik helyzet. Amikor COM-kapcsolaton keresztül próbál csatlakozni a forrásadatbázishoz az 1C 7.7 platformon, nem keletkezik hiba, de a feldolgozás „szorosan” „lefagy”. A feladat eltávolításakor a 8.x szerverfelügyeleti konzolon keresztüli kapcsolat megmarad, és az 1C szerverszolgáltatás újraindításán kívül semmilyen trükk nem állítja vissza. Ez a jelenség akkor fordul elő, amikor egy 8.x platformon lévő adatbázisból megpróbálnak kapcsolódni egy 7.7 platformon lévő adatbázishoz egy szervermunkamenetből. A program viselkedésének egyértelműen meghatározott okai itt nem szerepelnek. Az egyik javaslat egy kapcsolathívás használata az ügyfélmunkamenetből (&OnClient).

Négyes helyzet. Amikor COM-kapcsolaton keresztül próbál csatlakozni a forrásadatbázishoz az 1C 7.7 platformon, nem keletkezik hiba, de nem jön létre kapcsolat. Ebben az esetben és néhány más esetben is segít a COM-összetevők kézi regisztrálása.

1. Válassza a Vezérlőpult → Adminisztráció → Komponensszolgáltatások menüpontot.
2. Lépjen a Számítógépek → Sajátgép → COM+ alkalmazások ágra.


3. A helyi menüben válassza a Létrehozás → Alkalmazás menüpontot. Megnyílik a COM+ alkalmazástelepítő varázsló. Válassza az "Új alkalmazás létrehozása" lehetőséget.

4. Jobb, ha megírja az új alkalmazás nevét, hogy világos legyen, miről beszélünk: V8_ComConnector, aktiválási mód - „szerveralkalmazás”.

5. A következő lépésben állítsa be a „Jelenlegi felhasználó” lehetőséget. Kattintson a „Tovább” gombra. A létrehozott alkalmazás ágában lépjen a „Szerepek” ágra, nyissa meg a „CreatorOwner” szerepet, majd a „Felhasználók” részben hozzon létre egy felhasználót - egy fiókot, amelyen az 1C szerver fut.
6. A létrehozott alkalmazás ágában lépjen az "Összetevők" ágra, és hozzon létre egy összetevőt: Létrehozás - Összetevő Válassza az "Új összetevők telepítése" lehetőséget, majd a párbeszédablakban válassza ki a kívánt DLL-t (az ebben a példában: [Könyvtár elérési útja]\bin\comcntr.dll).
7. A helyi menüben válassza a „Tulajdonságok” lehetőséget. A megnyíló ablakban lépjen a „Biztonság” fülre.
8. Törölje a jelet az „Alkalmazások hozzáférésének kényszerítése” jelölőnégyzetből. Jelölje be a „Szoftverkorlátozási szabályzat alkalmazása” jelölőnégyzetet. Állítsa a korlátozási szintet „korlátlan”-ra


9. Kattintson az „OK” gombra.

Ebben a cikkben a COM technológiát használó 1C adatbázisok közötti interakció számos jellemzőjéről fogok beszélni, amelyek a 2iS kereskedelmi integrációs termék fejlesztése és használata során felhalmozódtak: Cégünk 2iS integrációja.

Feltételek

OS - operációs rendszer

COM-ügyfél – COM-objektum létrehozását kérő operációs rendszer folyamat (szál).

COM szerver – a kliens kérésére létrehozott COM objektum

Com csatlakozó - COM objektum V8X.ComConnector külső kapcsolatok létrehozásához 1C adatbázisokkal

Automatizálási szerver – más néven OLE szerver, V8X COM objektum. Alkalmazás 1C alkalmazások létrehozására

Platform kiadás – a platformverzió 2. pontjához tartozó részkarakterlánc (például 8.2, 8.3)

Platform build – teljes platformverzió karakterlánc (például 8.2.19.130, 8.2.16.352)

Külső csatlakozás csatlakoztatása

Nézzük meg részletesen a külső kapcsolat csatlakoztatásának algoritmusát
  1. COM objektum Com-csatlakozó létrehozása (Osztálynév - V8X.ComConnector). Lehetőségek:
  2. Folyamatban (inproc)
  3. A V8X.ComConnector osztályt ugyanolyan bitszélességgel kell regisztrálni, mint a COM-klienst
  4. Ha a COM-kliens-platform-kiadás megegyezik a COM-kiszolgálóplatform-kiadással, akkor a COM-kliens-platformnak és a COM-kiszolgálóplatform-felépítésnek is azonosnak kell lennie.
  5. Regisztrálásra kerül a platform külső kapcsolat opcióval történő telepítésekor. Bármikor regisztrálható a „Regsvr32 comcntr.dll” paranccsal a könyvtárban futtatható fájlok platformok.
  6. A COM objektum a COM kliens memóriájában jön létre
  7. A létrehozás költsége körülbelül - 0,01 (első) / 0,001 (másodperc)
  8. Példa

  9. Folyamaton kívüli helyi (helyi)
  10. Bármilyen bitméretű és platformfelépítésű V8X.ComConnector osztályt regisztrálni kell. Konfigurálni kell egy COM+ alkalmazást a dcomcnfg.exe fájlon keresztül a „Szerveralkalmazás” aktiválásával. Az alábbiakban részletesebben tárgyaljuk.
  11. A COM-objektum a gazdaszolgáltatási folyamat (dllhost.exe) memóriájában jön létre a COM-ügyfélszámítógépen
  12. A létrehozás költsége körülbelül - 0,06 (első) / 0,03 (másodperc)
  13. Példa
    ComConnector = Új COMObject(“V83.ComConnector”);
    OuterConnection = ComConnector.Connect(ConnectionString);
  14. Folyamaton kívüli, nem helyi (DCOM)
  15. A V8X.ComConnector osztályt bármely bites és platform felépítéshez regisztrálni kell egy nem helyi számítógépen. Konfigurálni kell egy COM+ alkalmazást egy nem helyi számítógépen a dcomcnfg.exe fájlon keresztül, a „Szerveralkalmazás” aktiválásával. Az alábbiakban részletesebben tárgyaljuk.
  16. Konfigurálnia kell az „Alkalmazásszerver” szerepkört egy nem helyi számítógépen, és engedélyeznie kell a nem helyi COM+ hozzáférést a „ Hálózati hozzáférés a COM+”/”COM+ hálózati hozzáféréshez”. Az alábbiakban részletesebben tárgyaljuk.
  17. A COM objektum a gazdagép szolgáltatási folyamat (dllhost.exe) memóriájában jön létre egy másik számítógépen
  18. A létrehozás költsége kb.
  19. Kísérleti adatok

A grafikonon látható, hogy ennek a COM objektumnak a létrehozásának időtartama egyenesen arányos a csatorna késleltetésével, az arányossági tényező pedig körülbelül 24. Feltételezhetjük, hogy ennek a COM objektumnak a létrehozásakor 24 hívás történik a csatornán keresztül.
  1. Példa
    ComConnector = Új COMObject(“V83.ComConnector”, Számítógépnév);
    OuterConnection = ComConnector.Connect(ConnectionString);
  2. A Connect metódus végrehajtása (külső kapcsolat létrehozása)
  3. Munkamenet létrehozása - 1 mp
  4. Munkamenet inicializálása – mp
  5. A rendszer indítása előtt (csak Automation szerver esetén)
  6. A rendszer indításakor
  7. A munkamenet paramétereinek inicializálása
  8. A szükséges metaadatok betöltése

COM-hívási költségek

Minden alkalommal, amikor egy beágyazott nyelven hozzáférünk egy COM-objektum tulajdonságához vagy metódusához (COM-hívást indítunk), számos dolog történik: további műveletek egy natív beágyazott nyelvi objektum meghívásához képest. Ha a COM-kiszolgáló egy másik helyi folyamatban található, akkor először minden paraméter átkerül a COM-kliensről a COM-kiszolgálóra, végül a paraméterek visszakerülnek a COM-kliensre. Egy ilyen átvitelhez az információt természetesen a küldő oldalon sorosítani kell, majd a címzett oldalon deszerializálni kell, amit néhány más művelettel együtt felosztásnak és szétválasztásnak neveznek. Nem helyi módban (DCOM) az ilyen átvitel továbbra is időt veszít a hálózati kommunikációra, és az új COM objektum első elérésekor annak „csontvázának” átvitelére, ezért a csatorna késleltetése döntő szerepet játszik (Tovább a COM-hívásokról , DCOM a Wikipédián, Műszaki áttekintés DCOM,)

A hívásonkénti költség aránya a COM-kiszolgáló helytípusa szerint

  1. Minimum egy folyamaton belüli Com-kiszolgálóhoz
  2. A helyi, folyamaton kívüli Com-kiszolgáló átlaga
  3. Közepestől nagyig egy nem helyi, folyamaton kívüli Com-kiszolgálóhoz, a kommunikációs csatorna minőségétől függően

A COM-hívások számának minimalizálása

  1. Alapvető külső feldolgozást hozunk létre egy sor közös metódussal a COM klienstől érkező hívások fogadására a COM szerver oldalon
  2. Most már nem kell megváltoztatnunk a COM-kiszolgálóbázis konfigurációját ahhoz, hogy komplex funkcionalitást használjunk.
  3. Termékünkben „Service Processor”-nak hívtuk. Az átvitel és az inicializálás körülbelül 1 másodpercet vesz igénybe
  4. A COM-szerverrel való interakciót a „minimális COM-hívások” elve alapján tervezzük meg, vagyis mindent, ami szükséges, a COM-kliens oldalon előkészítünk, és paraméterként átadjuk egy nagy hívásnak.
  5. Beépített feldolgozást hozunk létre egy ilyen hívás indításához egy COM-kliensben
  6. Összesített objektumok átvitele
  7. Minden bemeneti paramétert sorba rendezünk a COM-kliens oldalon
  8. Deszerializálja az összes bemeneti paramétert a COM-kiszolgáló oldalon
  9. Minden kimeneti paramétert sorba rendezünk a COM szerver oldalon
  10. Deszerializálja az összes kimeneti paramétert a COM-kliens oldalon
  11. Termékünkben „Infobázis szolgáltatás futtatása”-nak hívtuk.
  12. Több COM hívás esetén állítható frekvenciát biztosítunk
  13. Például az információs hívások változó gyakorisággal indíthatók

Visszacsatolás

A „minimális COM-hívások” elvét alkalmazva az idő jelentős része idegen környezetben fut le, ami komolyan megnöveli a COM-hívások kellemetlenségeit:
  1. Nem szakíthatja meg a COM Client szálat és annak kapcsolatát az 1C alkalmazáskiszolgálóval, amíg a COM-kiszolgáló hívása be nem fejeződik
  2. A COM-kliensnek nincs információja a COM-kiszolgáló felé irányuló hívás előrehaladásáról
E kellemetlenségek leküzdése érdekében megszervezheti Visszacsatolás a COM-kiszolgálóról a COM-kliensre, átadva a COM-kiszolgálónak a közös COM-kliens modulra mutató hivatkozást, és rendszeresen hívva rajta keresztül a COM-klienst. Meg kell jegyezni, hogy vannak platformhibák (https://partners.v8.1c.ru/forum/t/1382465/m/1382465), amelyek akkor jelennek meg, amikor egynél több COM munkamenet-kiszolgálón egy közös modulra mutató hivatkozásokat hoz létre. Ezért egyelőre a legjobb, ha az összes tárolt COM-kiszolgálón töröljük a közös modulra mutató hivatkozásokat, mielőtt újba helyeznénk. A visszahívásokat átadhatja:
  1. előrehaladási információ
  2. felhalmozott üzenetek a felhasználónak (a GetMessagesToUser(True) függvény fogadja)

A „minimális COM-hívások” elvének sémája

Ez a rendszer barátságos a kommunikációs csatornák nagy késéseihez. Tehát ez olyan, mint egy webszolgáltatás felhívása. Ezért a COM interakcióhoz való használatával jelentősen csökkentheti a COM és a webszolgáltatás közötti lehetséges átmenet költségeit mindkét irányban.

Hibakeresés

A „minimális COM-hívások” elvét alkalmazva megkönnyítheti a kódvégrehajtás hibakeresését a COM-kiszolgálón, ha az opcionális modális ablak COM-kliensben csatlakozik az adatbázishoz. Ennek az ablaknak lehetőséget kell adnia az egyszeri csatlakozási paraméterek beállítására, a kiegészítő funkciók végrehajtására és a csatlakoztatott munkamenetre vonatkozó információk megtekintésére. Az alábbiakban egy példa látható egy ilyen ablakra a termékünkből.

A külső kapcsolatok hibakeresésének engedélyezéséhez létre kell hoznia egy comcntrcfg.xml fájlt a megfelelő tartalommal a conf alkönyvtárban. A csatlakozási ablakban létrehozhat egy gombot/jelölőnégyzetet egy ilyen fájl programozott létrehozásához. A platform számos verziója azonban tartalmaz olyan hibát, amely miatt a külső kapcsolat hibakereső elemei nem láthatók a hibakeresőben, még akkor sem, ha ez a fájl megfelelően van konfigurálva. A 8.3-as platformon úgy tűnik, hogy ezek a problémák megoldódtak.

Példa comcntrcfg.xml fájlra:


Nem szabad megfeledkeznünk arról sem, hogy a hibakereső konfigurátort ugyanazzal (nagybetűig) kapcsolódási karakterlánccal kell elindítani, mint a hibakereső objektumot. Ezért ezen a párbeszédpanelen meg kell tennie egy gombot a COM-kiszolgáló konfigurátorának elindításához a megfelelő kapcsolati karakterlánccal.

Bizonyos mértékig megkerülheti a külső kapcsolat hibakereső elemének láthatatlanságának problémáját és számos más kellemetlenséget, ha egyszer lefutja a kódot egy vastag kliensen, és lecseréli a „Külső kapcsolat” módot az „Automatizálási szerverre” (alkalmazás). , azaz a COM V8X osztály használatával.Alkalmazás és láthatóság engedélyezve. Ezért a csatlakozási ablakban paraméterekre van szükség a csatlakozási mód kiválasztásához.

A COM-kliens oldalon történő kapcsolat létrehozása után általában csatlakoztatni kell a COM-kiszolgáló alaphibakeresőjét, és ott egy töréspontot kell beállítani a megfelelő helyen. Ezért a csatlakozási ablakban el kell helyezni egy gombot a COM szerver hibakereső/konfigurátor csatlakoztatásához. Ha a COM-kiszolgáló látható alkalmazás módban fut, akkor aszinkron kivételhívást használhat a hibakereső csatlakoztatásához. A COM-kiszolgálóalkalmazás hibaablakában a „Configurator” gombbal megnyithatja a konfigurátort, és a legtöbb esetben azonnal csatlakoztathatja a hibakeresőt. Ha a hibakereső ilyen módon történő csatlakoztatása nem érhető el, akkor a kezelőt a munkamenet információinak (számának) megjelenítése segíti a COM szerver adatbázisában. Szükség van egy megnyitás gombra is a megnyitott fájl hibakeresőben külső feldolgozás, ami benne lesz végrehajtva.

COM osztályok és COM+ 1C alkalmazások kezelése

COM osztályok kezelése

  1. Külső csatlakozás (V8X.ComConnector)
  2. Regisztráció: Regsvr32 comcntr.dll
  3. Regisztráció törlése: Regsvr32 comcntr.dll /u
  4. Automatizálási szerver (V8X.Application)
  5. Regisztráció - 1cv8.exe /regserver
  6. Regisztráció törlése - 1cv8.exe /unregserver

COM+ alkalmazások kezelése

Ez a dcomcnfg.exe beépülő modulon keresztül történik. Az 1C COM+ alkalmazásként történő regisztrálásához meg kell nyitnia a „dcomcnfg” beépülő modult. Ebben a "Komponens szolgáltatások" - "Számítógépek" - "Sajátgép" - "COM+ alkalmazások" ágban új alkalmazást kell hozzáadnia. Hozzáadáskor bármilyen nevet megadhat. Ezután az Identitás lapon meg kell adnia azt a felhasználót, akinek nevében a COM+ alkalmazás futni fog. Ezenkívül be kell állítania az alkalmazáshoz való hozzáférést az összes felhasználó számára, ha hiányzik, hozzáad egy szerepkört bármilyen névvel a Szerepkörök ágban, és hozzáadja a Mindenki felhasználót a Felhasználók ághoz. Az alkalmazás hozzáadása után létre kell hoznia egy új összetevőt. Ehhez a létrehozott alkalmazás „Összetevők” ágában ki kell választani a „Létrehozás” - „Összetevő” menüpontot. Létrehozáskor válassza a már regisztrált összetevők importálását, és keresse meg a listában (lehetőleg 64 bites) az 1C összetevőt (V8x.COMConnector.1).

Termékünk rendelkezik egy „COM 1C osztályok kezelése” eszközzel az összes COM osztály és COM+ 1C alkalmazás megtekintésére/regisztrálására/módosítására egy adott számítógépen:

DCOM szerver beállítása

Windows 2008 Server esetén hozzá kell adni az alkalmazáskiszolgálói szerepkört. Ehhez nyissa meg a számítógép vezérlőpultját, kattintson a jobb gombbal a "Szerepek" ágra, és válassza ki a "Szerepkör hozzáadása" menüpontot.

Megjelenik egy ablak, amelyben ki kell választania az „Alkalmazásszerver” szerepkört. Az alkalmazáskiszolgálói szerepkörök kiválasztásának szakaszában meg kell adnia a „Hálózati hozzáférés a COM+-hoz” / „COM+ hálózati hozzáférés” elemet. Ha ezt nem teszi meg, akkor amikor megpróbál létrehozni egy COM-objektumot, a "Hiba a konstruktor (COMObject) hívásakor" hibaüzenet jelenik meg: A komponenst tartalmazó komponens vagy alkalmazás le van tiltva.

Problémák

  1. Magas csatlakozási/inicializálási költségek
  2. com szerverek tartása - hatékony gyógymód küzdelem
  3. Átmeneti tároló. A gyártó nem ajánlja, de nincs hová menni. http://infostart.ru/public/331683/
  4. Visszatérési értékek újrafelhasználása. 20 percenként tisztították
  5. Különböző kliens- és szerverplatformok ugyanazzal a platformkiadással
  6. A megkerüléshez minden, a COM-klienstől eltérő platform-összeállításhoz hozzárendelünk és konfigurálunk egy DCOM-kiszolgálót.
  7. A COM-objektumokba beágyazott 1C objektumok típusaival kapcsolatos információhiány (az 1C objektumtípus helyett mindenhol a „COMObject” típust kapjuk) és a hozzájuk tartozó kontextuális segítség hiánya
  8. A megkerüléshez a „minimális COM-hívások” elvét használjuk.
  9. Ha a COM-kiszolgáló kivételt ad, az egy platformhiba miatt rövid formát ölt
  10. Az áthidaláshoz minden hívást a COM-kiszolgáló oldalon egy kísérletben lezárunk, és a kivételnél újra dobjuk a kivételt a hiba teljes leírásával
  11. COM-objektum létrehozásakor a „comcntr” (8.X.XX.XXX) komponens verziója eltér a „core82” gyökérmodul verziójától (8.X.YY.YYY)” hibaüzenet.
  12. Ennek megkerülésére létrehozunk egy COM+ alkalmazást folyamaton kívüli aktiválással. Ezután a COM-szerver külön folyamatban jön létre, és nem kell megfeleltetni ezen modulok verzióinak.
  13. Lassú csatornák (nagy késések)
  14. Minden alhálózathoz hozzárendeljük és beállítjuk a saját DCOM szerverünket egy külön lassú csatorna mögött, és a csatorna mögötti adatbázisokhoz való hozzáféréskor COM szervereket hozunk létre ezen a számítógépen, minimalizálva a Com kliens hívások számát és mennyiségét.<->Com szerver
  15. A COM-kiszolgálók gyorsítótárazása (újrafelhasználása).
  16. Nem lehet leválasztani egy olyan munkafolyamatot, amely a COM-kiszolgálóhívás befejezésére vár
  17. Megkerülő megoldás lehet COM-objektumok létrehozása dedikált gazdagépfolyamatokban a COM+ alkalmazás megfelelő konfigurálásával, és e folyamatok azonosítóinak regisztrálása a COM-ügyfélmunkamenetekhez képest. Ezután, ha meg kell szakítania egy ilyen munkamenet szerverkapcsolatát, először leállíthatja a COM-kiszolgáló folyamatát, majd magát a munkamenetet.
  18. COM-objektum elérésekor „Ismeretlen hiba” hiba léphet fel. Lehetséges okok:
  19. A COM szerver megszűnt. Lehetséges okok:
  20. Stack Overflow
  21. Helyrehozhatatlan hiba
  22. A gazdagép folyamat kilépett
  23. Megszakadt a kapcsolat a nem helyi COM-kiszolgálóval
  24. A tulajdonság- és metódusnevek objektumparaméterek nélküli egybeesése kétértelműséget okoz a COM-on keresztüli elérésében.
  25. Például, ha egy könyvtár rendelkezik a FullName attribútummal, akkor a FullName() metódus jelenléte miatt a FullName attribútum COM-on keresztüli elérése a FullName() metódus meghívásához vezethet.
  26. A megkerüléshez a „minimális COM-hívások” elvét használjuk.

Com technológia VS webszolgáltatások a helyi hálózaton

Hibák

  1. A fent tárgyalt nehézségek az 1C platform különböző szerelvényeinek kölcsönhatásával kapcsolatban, amelyek megoldásához szervizmechanizmusra van szükség
  2. Magas csatlakozási/inicializálási költségek, így gyorsítótár nélkül, nem hatékony a gyakori kis hívásoknál
  3. Link a családhoz operációs rendszer(platform) Windows

Előnyök

  1. Nem kell módosítani azon adatbázisok konfigurációját, amelyekhez csatlakozunk
  2. Széles funkcionalitás
  3. Könnyebb hibakeresés
  4. Nincs szükség webszerver üzembe helyezésére és karbantartására

CAL-ok rögzítése

A legtöbb esetben az összes kliens alkalmazás, amelynek speciális esete az Automation szerver, és fenntartásokkal egy külső kapcsolat, csak egy licencet igényel egy operációs rendszer munkamenetben. Ha azonban az ügyfélalkalmazás nem tudott hardverlicencet (helyi HASP-től vagy hálózati HASP-től) és szoftverlicencet (platform vagy alapkonfiguráció) szerezni, akkor meg kell kísérelni egy külön licenc beszerzését az 1C:Enterprise szerverről. Az 1C:Enterprise szerver csak akkor tud licencet kiadni, ha az adatbázis tulajdonságai lehetővé teszik a licencek kiadását az 1C:Enterprise szerver számára. Ebben az esetben minden ügyfélalkalmazás és külső kapcsolat rögzítheti a saját licencét.

Következtetés

Ha többet szeretne megtudni a leírt funkciókról, ingyenesen letöltheti a termék konfigurációs és demó adatbázisát, amelyhez a 2iS:Integration termékre előrendelnie kell az Infostart oldalon. Annak ellenére, hogy a konfigurációban van egy biztonságos modul, a konfigurációs kód 99% -a nyitva van, vagyis tanulmányozhatja a leírt technikák megvalósítását.