itthon / Dolgozzon az interneten / Külső csatlakozás 1s. V8: COM csatlakozás. Hozzon létre egy OLE kapcsolatot

Külső csatlakozás 1s. V8: COM csatlakozás. Hozzon létre egy OLE kapcsolatot

Az adatok egyik 1C konfigurációból a másikba való átvitelének egyik módja a szoftveres kapcsolat COM használatával. Sok cég több különböző bázist használ, amelyek között bizonyos kapcsolatoknak és függőségeknek kell lenniük. Ha nem csak adatátvitelre van szükség, hanem bizonyos adatfeldolgozások végrehajtására is, akkor a COM kapcsolat lesz az optimális mechanizmus. Egy másik 1C adatbázisból származó adatok elemzésének képessége minden fejlesztő számára hasznos.

COM-on keresztül csatlakozunk az 1C adatbázishoz

A COM-kapcsolat megvalósításához az 1C-ben egy speciális, COMConnector nevű mechanizmust használnak. Ez az objektum a platformmal együtt kerül telepítésre, és információs bázisok összekapcsolására szolgál. Meg kell jegyezni, hogy a 8.2-es és 8.3-as verziók esetében különböző nevű objektumok használatosak - "V82.COMConnector" és "V83.COMConnector".

Ne feledje, hogy a licenc az adatbázishoz való COM-kapcsolat idejére érvényes – nem szabad elragadtatnia magát több kapcsolat egyidejű létrehozásával. Ez különösen fontos azon szervezetek számára, amelyek korlátozott számú licenccel rendelkeznek. Ez a probléma megoldható a rutinfeladatokat futni távollét alatt aktív kapcsolatokat felhasználókat az információs bázisba.

Ahhoz, hogy egy másik adatbázishoz kapcsolódhasson és a szükséges információkat lekérhesse, a következő adatokat kell ismernie:

  1. Milyen típusú - fájl vagy kliens-szerver;
  2. Hol található;
  3. milyen néven és jelszó alatt lehet beírni;
  4. Milyen adatok érdekelnek.

Az első három pontból a COM-kapcsolat megvalósításához paraméter-karakterláncot kell alkotnia. Az IB típusától függően eltérő lehet kinézet. A kapott karakterlánc segítségével létrejön egy kapcsolat, amellyel egy másik adatbázisból adatokat gyűjthet elemzés és feldolgozás céljából bármilyen módszerrel.

ConnectionParametersFileIB = "Fájl=""Alap_útvonala""; Usr=""Felhasználónév"";Pwd=""Jelszó"""; ConnectionParametersClientServerIB = "Srvr=""Szerver_neve""; Ref=""Alapnév""; Usr=""Felhasználói_név""; Pwd=""Jelszó""";

A csatlakozási funkció egyszerű, és nem vethet fel kérdéseket, ha minden paraméter helyes. A hibakeresés és elemzés felgyorsítása érdekében lehetséges hibákat jobb, ha a kapcsolatot egy Kísérlet konstrukcióba zárjuk. A függvény egy "COM objektum" típusú értéket ad vissza, amellyel dolgoznia kell, megszerezve a szükséges adatokat.

&AtServer függvény ConnectToBase() export ConnectionParametersIB = "Fájl=""E:\base 1c\ERP""; Usr=""Rendszergazda"";Pwd=""1"""; V83COMCon= Új COMObject("V83.COMConnector"); Return kísérlet V83COMCon.Connect(ConnectionParametersIB); Kivétel jelentés(ErrorDescription()); Return Undefined; A kísérlet vége; EndFunctions

COM-kapcsolaton keresztül nem csak adatokat jelölhet ki, hanem hozzáadhatja azokat az adatbázishoz, amelyhez csatlakozik. Ne feledje, hogy 4 primitív adattípust tudunk átvinni egy COM objektumon keresztül. A többi típust a platformba épített keresőfunkciók segítségével kell megadni. Vegye figyelembe, hogy a globális platformfüggvények COM-kapcsolaton keresztül is meghívásra kerülnek.

Az 1C adatbázisból kapunk adatokat

Miután megkapta a kívánt objektumot, ki kell olvasnia az adatokat egy másik adatbázisból. Ehhez kérést alkalmazunk egy COM-kapcsolaton keresztül az 1C 8.3-ban, a függvénytől kapott "COM objektum" típusú érték felhasználásával. Fontos, hogy először csatlakozzon az adatbázishoz, majd hajtsa végre a kérést. A végrehajtás a NewObject metóduson keresztül történik, paraméterként az objektum típusának karakterlánc formában történő feltüntetésével - "Kérés".

&OnServer eljárás TestCOMOnServer() Connection = ConnectToBase(); Ha TypeValue(Connection) Type("Undefined") akkor QueryBPO = Connection.NewObject("Lekérdezés"); Query BPZO.Text = "Válassza ki az első 15 | Felhasználói címtárat. Név AS név | FROM | Felhasználói címtár AS felhasználói címtár"; Selection = QueryBPO.Run().select(); While Sample.next() ciklus Report(Selection.Number); EndCycle; EndIf; Az eljárás vége >

Például, hogy információt kapjunk egy bizonyos részleg felhasználóiról, paramétereken keresztül feltételt állítunk be a kérésben. Egy paraméter lesz egyszerű típus- egy karakterlánc, és az alosztály - egy hivatkozás a "Vállalkozás szerkezete" címtár elemére. A lekérdezés eredménye egy olyan táblázat, amely felsorolt ​​mezőket tartalmazza abban az adatbázisban, amelyhez a COM-kapcsolat létrejött. Ha más típusokra kell konvertálnia, használja a szabványos platformfunkciókat:

  • Vonal();
  • Szám();
  • Időpontja().
RequestBPO = Connection.NewObject("Kérés"); QueryBPO.Text = "KIVÁLASZTÁSA az első 15-ből | Felhasználói címtár.név AS név |FROM | Címtár.Felhasználók AS felhasználói címtár I WHERE | Felhasználói címtár.Osztály = &Kívánt részleg | És UserDirectory.Name, mint ""%"" + &KívántName+ ""%" "" ; BPZO Request.SetParameter("Kívánt részleg", Connection.Directories.Enterprise Structure.FindByCode("00-000023")); RequestBPO.SetParameter("RequiredName","Jekaterina"); Selection = QueryBPO.Run().select(); While Selection.next() ciklus Report(Selection.Name); EndCycle;

Ha egy tömböt kell átvinni az adatbázisba több paraméter, például felosztás, kijelölés céljából, akkor a NewObject parancs is használatos. Hasonlóképpen átadhat egy értéklistát vagy táblázatot, feltöltve azokat egy másik adatbázis elemeivel a kapcsolaton keresztül. Mindegyik elérhető a kereséshez. meglévő módszereket a platform objektumai és mechanizmusai.

RequestBPO = Connection.NewObject.("Kérés"); QueryBPO.Text = "KIVÁLASZTÁSA az első 15-ből | Felhasználói címtár.név AS név | FROM | Címtár.Felhasználók AS felhasználói címtár I WHERE | Felhasználói címtár.részleg (&Kívánt részleg) | És felhasználói könyvtár.név, mint ""%"" + &Kívántnév+ "" %" ""; Subdivisions Array = Connection.NewObject("Tömb"); Osztályok array.Add(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000023")); Osztályok array.Add(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000038")); Osztályok array.Add(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000046")); Lekérdezés BPZO.SetParameter("Kívánt alosztály", Alosztályok tömbje); RequestBPO.SetParameter("RequiredName","Jekaterina"); Selection = QueryBPO.Run().select(); While Selection.next() ciklus Report(Selection.Name); EndCycle;

Dokumentumok vagy könyvtárelemek átvitelekor mindig felmerül a kérdés, hogy egy adott objektum átvitelét ellenőrizzük. A COM-kapcsolatokkal az ilyen problémákat egyedi azonosító segítségével oldhatja meg. Meg kell találnia egy objektumot a csatlakoztatható adatbázisban az aktuális IB azonosítója alapján a "GetLink" függvény segítségével, az azonosítót karakterláncként használva. Ha nincs ilyen, létrehozhatja COM-kapcsolaton keresztül.

StrIdent = String(Directories.Users.FindByCode("00-0000313").EgyediIdentifier()); Ha NEM ValueFilled(Connection.Catalogs.Users.GetReference(Connection.NewObject("EgyediIdentifier", StrIdent))), akkor NewUser = Connection.Catalogs.Users.CreateItem(); NewUser.Name = Directories.Users.FindByCode("00-0000313").Név; NewUser.Individual = Directories.Users.FindByCode("00-0000313").Egyén; NewUser.Write(); EndIf;

Ezenkívül a COM-kapcsolatnak joga van az általános 1C modulokból származó eljárások és funkciók használatára, ha a „Külső kapcsolat” tulajdonság engedélyezve van. Ezen a feltételen túlmenően a hívott függvénynek vagy eljárásnak exportálási függvénynek kell lennie, és nem tartalmazhat a kiszolgálón végrehajtott interaktív műveleteket. Ellenkező esetben hibaüzenet jelenik meg az érvénytelen műveletről.

Összetett..; VariableFromFunction = Kapcsolat..; függvényhívás>közös modulnév>eljáráshívás>közös modulnév>

Az 1C másik adatbázisával való külső kapcsolat lehetőségei meglehetősen szélesek, és számos feladat elvégzését teszik lehetővé. Fontos az eszközök helyes értékelése és a legjobb megoldás kiválasztása. A legtöbb esetben ez a készség csak tapasztalattal vagy tapasztalt szakemberek munkájának tanulmányozásával jelenik meg.

Az 1C adatbázisok közötti adatcsere egyik lehetősége a COM-kapcsolaton keresztüli adatcsere.

COM kapcsolat segítségével csatlakozhat egyik 1C adatbázishoz a másikhoz, és adatokat olvashat vagy írhat. Ezt a módszert adatbázisok kliens-szerver verzióiban és fájladatbázisokban egyaránt használhatja. Ebben a cikkben az ilyen vegyületek példáit elemezzük. A példák a 8.2-es platformot használják.

Kétféle COM objektumot hozhat létre az 1C alkalmazáshoz. Ez V82.AlkalmazásÉs V82.COMConnector. Esetében V82.Alkalmazás elindul az 1C alkalmazás szinte teljes példánya. használat esetén V82.COMConnector egy kis szerverrész elindul.
A munka sebessége ebben az esetben nagyobb, de előfordulhat, hogy egyes funkciók nem érhetők el. Különösen az űrlapokkal és a közös modulok amelyre a tulajdonsága a munkavégzés külső csatlakozások. Főleg használni kell V82.COMConnectorés csak a funkcionalitás hiánya esetén V82.Alkalmazás. A sebességkülönbség különösen nagy adatbázisokon lehet észrevehető.

Tehát kezdjük

  1. Hozzunk létre egy COM objektumot
    • Mert V82.Alkalmazás Kapcsolat = New COMObject("V82.Application" ) ;
    • Mert V82.COMConnector Kapcsolat = Új COMObject("V82.COMConnector" ) ;
  2. Hozzunk létre egy kapcsolati karakterláncot
    • az adatbázis szerververziójához ConnectionString = "Srvr = " "Kiszolgálónév" ";Ref = " "Alapnév" ;
    • az adatbázis fájlverziójához ConnectionString = "File = " "PathKBase" "; Usr = Felhasználónév; Pwd = Jelszó";
  3. Kapcsolat létrehozása az adatbázissal Kapcsolódási kísérlet = Kapcsolat. Connect(ConnectionString) ; Kivétel üzenet = New MessageToUser; Üzenet. Szöveg = + DescriptionErrors() ; Üzenet. Jelenteni() ; EndTry ;
  4. Leválasztás az alapról Kapcsolat = Undefined ;

    Tárgyhoz V82.Alkalmazás kötelező megszakítani a kapcsolatot, különben egy nem teljes munkamenet függőben marad, amit ezután manuálisan kell törölni. Esetében V82.COMConnector a kapcsolat automatikusan megszakad annak az eljárásnak a végén, amelyben a kapcsolat létrejött, és van még egy apró momentum.

    Annak a felhasználónak, akivel a kapcsolat létrejön, a beállításainál le kell tiltani a "Megerősítést kér a program bezárásakor" jelölőnégyzetet.

És most rakjuk össze az összes kódot

Kapcsolat = New COMObject("V82.Application" ) ; //Kapcsolat = Új COMObject("V82.COMConnector"); ConnectionString = "Srvr = ""Server1C"";Ref = ""Sajátbázis""; Usr = Péter; Pwd = 123" ; //ConnectionString = "Fájl = ""С:\MyBase""; Usr = Péter; Pwd = 123"; Kapcsolódási kísérlet = Kapcsolat. Connect(ConnectionString) ; Kivétel üzenet = New MessageToUser; Üzenet. Szöveg = "Nem lehet csatlakozni az adatbázishoz"+ DescriptionError() ; Üzenet. Jelenteni() ; EndTry ; Kapcsolat = Undefined ;

A csatlakozás típusához V82.Alkalmazás metódust alkalmazzák az eredetileg létrehozott COM objektumra, és a számára V82.COMConnector a módszert alkalmazzák a kapcsolatra. a további munka a kéréssel megy szabvány azt jelenti 1C. kódban így néz ki:

Kérelem = Kapcsolat. NewObject("Kérés") ; // Mert V82.COMConnector Kérelem = Kapcsolat. NewObject("Kérés") ; // Mert V82.Alkalmazás Kérés. Szöveg = "VÁLASZTÁS | Szervezetek pozíciói. Kód, | Szervezetek beosztásai Név| FROM | Címtár. Szervezetek pozíciói AS Szervezetek pozíciói "; Eredmény = Kérelem. Végrehajtás () ; Minta = Eredmény. Választ() ; Míg a kiválasztás. Következő() Ciklus EndCycle ;

Az 1C:Enterprise 8.3 verziónál minden változatlan marad, kivéve, hogy a COMObjects létrehozásakor használnia kell "V83.COMConnector" vagy V83.Alkalmazás.

) Úgy van

Ugyanakkor nem egyszer láttam, amikor egyszerűen "felszállnak" azok a kiadványok, amelyek 10 pontot sem húznak.
Miért történt ez? Valószínűleg azért, mert valakinek nyilvánvalóan tetszettek.


Erről beszélek, és azt mondom, hogy jó lenne nem minősítés alapján olvasni a cikket, hogy megértsd, mennyire van rá szükséged, vagy nem olyan primitíven értékeled +/-. Ami nekem tetszett, azt a következőképpen javítanám ki: azért szerzett ennyit, mert így alakultak a sztárok, és nagyon sokan összegyűltek az oldalon és sokaknak tetszett, te magad is megérted, hogy ez a kérdés a véletlennek. amint megjelenik a cikk kezdőlap akkor már csak kérésre megtalálható, és így mindenki szavaz. A főoldal támogatására pedig, amennyire én értem, csak állandó kommentelést engedélyeznek = a cikk népszerűsítése.
Ezért rakják ki az üzleteket a főutcákba - elvégre sokszor nem a termék minősége és relevanciája a lényeg, hanem a hely átjárhatósága, a sétálók gyakran azt veszik meg, amit másnap kidobnak, csak a folyamat kedvéért. Ez egy jól ismert betegség - shopomania. Vagy egyszerűen az áramlás növelése növeli a megfelelő vevő valószínűségét.

És az előnyök és hátrányok... csak egyfajta „köszönöm” az eltöltött időért és munkáért


Azok. A mínusz is "köszönömnek" számít? Ezért szerettem volna megtudni a hozzáállását, hogy kell-e ilyen esetekben megfogalmazni, és mások mennyire tartják érdekesnek? Függetlenül attól, hogy akkor tegye, amikor a cikk káros / rossz, vagy ha egyszerűen haszontalan / üres az Ön számára.
Véleményem szerint a cikk csak egy értékelésemelésnek tűnik, mert:
1. Az általam megadott típusokkal kapcsolatos problémát a szerző általában figyelmen kívül hagyta, bár nem volt lusta egy csomó megjegyzést írni.
2. Egyértelmű pontatlanság van a cikkben: állítólag ez az egyetlen út

V82 = Új COMobject("V82.Comnnector"); Kód = ContractorCOM.Code;


de nyugodtan csinálom a következő feldolgozás segítségével:

Notify(Base.Directories.Counterparties.FindBy Name("LLC").Code);


és minden rendben van! És a V82.ComConnector kapcsolatot választom
Valahogy furcsa, hogy a szerzőt egyáltalán nem érdekli, hogy cikkében ilyen problémák vannak, amelyekre rámutattak, de nem reagál rá.
3. De továbbra is probléma van, ha megjelenik az "Osztály nem létezik" hibaüzenet
4. De akkor van probléma, ha a 8.2 telepítve van, majd a 8.1 - próbálja meg OLE / COM-on keresztül cserélni egy tipikus UT-BP cserével!
5. Meg tudnád jelezni az oldalon a fő feldolgozást, amely lehetővé teszi az OLE / COM-on keresztüli univerzális csatlakozást, hogy a kezdők ne vesztegetik az idejüket, írj nekik! Egyébként valamiért a képe pompázik veled, miért tenné?. És ennek eredményeként 2 szó érdemben, és további 6 a színfalak mögött.

Általában nem sárral dobálom, hanem konkrét hiányosságokra mutatok rá, de nincs reakció. Ha ezt a tapasztalatot osztja meg, akkor az valahogy hibás és hiányos.
Úgy értem, ha a szerzőnek volt kedve összeszedni az összes hibát, akkor legalább meghallgathatta valaki más tapasztalatait, és nem csattant fel a megjegyzéseken. Rögtön olyan helyzet áll elő, hogy aki elolvassa, az többet tud, mint a szerző, azt mondják neki (néha rosszul), és ő is visszavág. Ennek eredményeként minden információ nem a cikkben, hanem a megjegyzésekben található! Vicces! Gyakran előfordul, de ugyanakkor nem kell azon pihenned, amit a legjobban akartál – én megmutatom, hogyan jobb, és mások mutatják meg! Tegye ezt bele a cikkbe, és megéri, nem mindenkit érdekel ez a csetepaté.


Kulcsszavak: COM, kapcsolat, külső, OLE, Automatizálás, Csatlakozás, ComConnector, Srvr

Ha 1C:Enterprise 8.0 COM kapcsolatokat használ az adatok eléréséhez, a következő előnyökkel jár az Automation szerver használatához képest:

  1. Gyorsabb kapcsolatbeállítás, mivel nem kell külön folyamatot létrehozni operációs rendszer, és minden művelet a hívási folyamaton belül történik;

  2. Gyorsabb hozzáférés az 1C:Enterprise objektumok tulajdonságaihoz és módszereihez, mivel a fellebbezés megszervezése nem igényli a folyamatok közötti kommunikáció megszervezését;
  3. Kevesebb operációs rendszer erőforrás-fogyasztás.

Általánosságban elmondható, hogy az 1C:Enterprise 8.0-val COM-kapcsolaton keresztül történő munkavégzés hasonló az 1C:Enterprise-vel való munkavégzéshez Automation szerver módban. A fő különbségek a következők:

  1. Automation szerver esetén egy teljes értékű 1C:Enterprise 8.0 alkalmazás indul, COM kapcsolat esetén pedig egy viszonylag kis méretű folyamaton belüli COM szerver.

  2. Ha COM-kapcsolaton keresztül dolgozik, ezek nem elérhetők funkcionalitásígy vagy úgy, hogy az 1C: Enterprise 8.0 felhasználói felület megszervezésével kapcsolatos;
  3. Ha COM-kapcsolattal dolgozik, az 1C:Enterprise 8.0 konfigurációs alkalmazásmodult nem használja. A COM-kapcsolattal végzett munka során a szerepét a külső csatlakozómodul játssza.

1.1 COM-kapcsolat létrehozása

Az 1C:Enterprise 8.0 adatokhoz való hozzáférés COM-kapcsolaton keresztül történő megszervezéséhez a következő műveletsort kell végrehajtani:

  1. létrejön egy COM objektum V8.COMConnector azonosítóval, melynek segítségével létrejön a kapcsolat;

  2. a korábban létrehozott V8.COMConnector objektum Connect metódusa hívódik meg. A Connect metódus egy hivatkozást ad vissza egy COM-kapcsolati objektumra információs bázis 1C: Enterprise 8.0;
  3. a fogadott COM csatlakozási objektumon keresztül hívás történik elfogadható módszerek, tulajdonságai és objektumai annak az információs bázisnak, amellyel a kapcsolat létrejön.

Fontos! A felhasználói felület hiánya miatt a COM-kapcsolatban nem minden objektum, valamint tulajdonságok és metódusok használhatók COM-kapcsolatban.

1C: Kívülről COM-kapcsolaton keresztül elérhető vállalati objektumok:

  1. Exportált változók és külső hivatkozási modul eljárások/funkciók

  2. Exportált változók és közös modulok eljárásai/funkciói
  3. Teljes modulok felvétele és kizárása a megosztott modul tulajdonságainak beállításával

  4. Közös modulok töredékeinek felvétele és kizárása az előfeldolgozóval
  5. Globális környezet 1C:Enterprise 8.0, kivéve az ügyfélalkalmazáshoz mereven társított objektumokat (TextDocument, SpreadsheetDocument, ...)

1.2 Külső csatlakozó modul

Mint már említettük, az alkalmazásmodul feladatait a COM-kapcsolaton keresztül végzett munka során a külső csatlakozási modul látja el. Ez a modul rendelkezhet az AtStartSystemWork() és az AtShutdownSystem() eseménykezelő eljárásokkal, amelyek a kapcsolat inicializálása és leállítása során végrehajtandó műveleteket tartalmazhatnak.

Eljárások, függvények és globális változók, amelyeket egy külső csatlakozási modulban határoztak meg kulcsszó Az export, mint egy alkalmazásmodul esetében, a globális kontextus részévé válik.

1.3 Általános modulok

A "Client", "Server" és "ExternalConnection" tulajdonságok bevezetésre kerültek a gyakori modulokhoz. Céljuk, hogy a konfigurációban meghatározzák a modulok használatát kliens-szerver verzióban és COM csatlakozási módban.

1.4 "V8.COMConnector" objektum

A V8.COMConnector COM objektum által megoldott egyetlen feladat a COM kapcsolat létrehozása az 1C:Enterprise 8.0 információs bázissal. A V8.COMConnector objektum egyetlen példányával korlátlan számú kapcsolat létesíthető. A V8.COMConnector objektum egyetlen Connect metódussal rendelkezik COM beállítások-csatlakozások az 1C:Enterprise 8.0 információs bázishoz.

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

Az IB kapcsolati karakterlánc Parameter=Érték formátumú töredékek lánca. A töredékeket ";" választja el egymástól. Ha az érték tartalmazza szóköz karakterek, akkor dupla idézőjelbe (") kell tenni.

Általános paraméterek:

usr - felhasználónév;
pwd - jelszó.

A következő paraméter van megadva a fájlváltozathoz:

Fájl - infobázis könyvtár.

A kliens-szerver verzióhoz a következő paraméterek vannak meghatározva:

Srvr - 1C:Vállalati kiszolgáló neve;
Ref - az információs bázis neve a szerveren.

A Connect metódus COM-kapcsolatot hoz létre az 1C:Enterprise 8.0 információs bázissal, és hivatkozást ad vissza a COM-kapcsolati objektumra.

// Létrejön egy összekötő objektum
V8 = Új COMObject("V8.COMConnector");
// COM-kapcsolati objektum létrehozása
Kapcsolat = V8.Connect("Fájl=""c:\InfoBases\Trade""; Usr =""Irgató"";")

1.5 "COM kapcsolat" objektum

A COM-kapcsolat az 1C:Enterprise információs bázissal teljes hozzáférést biztosít a globális kontextushoz (lásd: "Végrehajtási környezet szoftver modul"). Ezért a COM-kapcsolat metódusai lehetnek: rendszerkonstansok, a konfigurátorban megadott objektumok értékei, amelyekhez kezelőkkel lehet hozzáférni (például konstansok, felsorolások, könyvtárak, dokumentumok, dokumentumnaplók, jelentések, feldolgozás, típustervek). jellemzők, tervek számlák, számítási típusú tervek, regiszterek), valamint a külső kapcsolati modulban az Export kulcsszóval deklarált változók.

Ezen kívül a COM kapcsolat rendelkezik kiegészítő módszer NewObject, amellyel bizonyos típusú értékeket hozhat létre.

ts = Kapcsolat. NewObject("Értéktábla");

String metódus Lehetővé teszi az 1C:Enterprise értékek karakterlánc-megjelenítését.

Nézet = Connection.String(Data.UniqueIdentifier());

1.6. A COM-kapcsolattal való munkavégzés jellemzői

Automatizálásban és COM-kapcsolaton az IGAZ és FALSE értéke -1 (mínusz egy), illetve 0.

Lehetőség van COM-kapcsolatok készletének megszervezésére. Ezzel egyidejűleg több COM-kapcsolati objektum is létrejön a gazdagépen az 1C:Enterprise szerveren ADVANCE-ban, és még kevesebb időt vesz igénybe a kapcsolat létrehozása, mivel nincs szükség új objektum létrehozására.

Egy új Query Builder objektumot implementáltak, amely alapján lekérdezési szövegeket generálnak meghatározott beállításokat. Ez az objektum támogatja a jelentéskészítő funkciót, amely nem kapcsolódik egy jelentés táblázatos dokumentumban történő megjelenítéséhez, és más, a felhasználói felülettel kapcsolatos feladatokhoz. Ez az objektum használható az 1C:Enterprise szerveren és COM-kapcsolatban.

A COM objektumok használata akkor érhető el, ha a beépített nyelv fut az 1C:Enterprise szerveren.

A COM-hibák 1C:Enterprise kivételekké lesznek lefordítva.

Ha a konfiguráció érvénytelen objektumot próbál létrehozni, mint pl táblázatos dokumentum, egy külső csatlakozási modulban, egy általános modulban vagy egy objektummodulban, akkor a COM kapcsolat kivételként nem létesíthető vagy bontható.

Nyomtatás (Ctrl+P)

Az 1C adatbázisok közötti adatcsere egyik lehetősége a COM-kapcsolaton keresztüli adatcsere. COM kapcsolat segítségével csatlakozhat egyik 1C adatbázishoz a másikhoz, és adatokat olvashat vagy írhat. Ezt a módszert adatbázisok kliens-szerver verzióiban és fájladatbázisokban egyaránt használhatja. Ez a cikk az ilyen típusú kapcsolatokat tárgyalja a 8.3-as platformon

com kapcsolat

Kétféle COM objektumot hozhat létre az 1C alkalmazáshoz. Ez a kapcsolatok V83.Alkalmazás és com kapcsolatokat V83.COM-csatlakozó . Esetében V83.Alkalmazás elindul az 1C alkalmazás szinte teljes példánya. Használat esetén V83.COM-csatlakozó egy kis szerverrész elindul. A munka sebessége ebben az esetben nagyobb, de előfordulhat, hogy egyes funkciók nem érhetők el. Különösen olyan űrlapokkal és közös modulokkal való munkavégzés, amelyeknél nincs beállítva a külső kapcsolatokkal való munka tulajdonsága. Főleg használni kell V83.COM-csatlakozóés csak a funkcionalitás hiánya esetén V83.Alkalmazás. A sebességkülönbség különösen nagy adatbázisokon lehet észrevehető. A 8.2 platform használatos V82.Application vagy V82.COMConnector

Hozzon létre egy OLE kapcsolatot

Kapcsolat = Új COMObject(“V83.Application” );

Hozzon létre COM kapcsolatot

Kapcsolat = Új COMObject(“V83.COMConnector” );

Csatlakozási karakterlánc

//A kliens-szerver opcióhoz
StringConnection= "Srvr = " "Kiszolgálónév" ";Ref = " "Alapnév" ;
//A fájlmód opcióhoz:
StringConnection= "Fájl = " "PathBase" “; Usr = Felhasználónév; Pwd = Jelszó”;
Kísérlet
Kapcsolat = Kapcsolat . Csatlakozás(ConnectionString) ;
Kivétel
Üzenet = New MessageToUser;
Üzenet . Szöveg = "Nem sikerült csatlakozni az adatbázishoz" + DescriptionError(); Üzenet . Jelenteni();
EndTry ;

A kapcsolat megszakítása

Kapcsolat = Undefined ;
Tárgyhoz V83.Alkalmazás kötelező megszakítani a kapcsolatot, különben egy nem teljes munkamenet függőben marad, amit ezután manuálisan kell törölni. Esetében V83.COM-csatlakozó a kapcsolat automatikusan megszakad annak az eljárásnak a végén, amelyben a kapcsolat létrejött, és van még egy apró momentum. Annak a felhasználónak, akivel a kapcsolat létrejön, a beállításainál le kell tiltani a "Megerősítést kér a program bezárásakor" jelölőnégyzetet.

NewObject() metódus

Új objektum létrehozásához használhatja a NewObject() metódust, például:

Mert V83.COM-csatlakozó

RequestCOM = Csatlakozás. NewObject( "Kérés ") ;
TableCOM = Csatlakozás. NewObject( "Értéktábla") ;
ArrayCOM = Kapcsolat. NewObject("Tömb") ;

WidCOM = Connection.NewObject

Mert V83.Alkalmazás

QueryOLE = Csatlakozás. NewObject(“ Kérés ") ;
TableOLE = Kapcsolat. NewObject("Értéktábla") ;
ArrayOLE = Connection.NewObject("Tömb") ;
WidCOM = Connection.NewObject(“Egyedi azonosító”,StringUID);

RequestCOM . Szöveg ="VÁLASZT
| Szervezetek pozíciói. Kód,
| Szervezetek beosztásai Név
| FROM | Directory.PositionsOrganizations
AS szervezetek pozíciói”;

Eredmény = RequestCOM. Végrehajtás () ;
Minta = eredmény. Választ () ;
Míg a kiválasztás. Következő()Ciklus
EndCycle ;
Konfigurációs objektumkezelőket is használhat:
DirectoryCOM = Kapcsolat. Útmutató könyvek. DirectoryName;
DocumentCOM = Csatlakozás. Dokumentáció. Dokumentumnév;
RegisterCOM = Kapcsolat. RegisztrációkInformáció. RegisterName ;

Egy enum lekérése és összehasonlítása COM-kapcsolaton keresztül

A konfigurációban meghatározott felsorolási elemek értékeinek összehasonlításához ezeket az elemeket át kell alakítani a primitív típusok egyikébe, amelyek összehasonlítása nem okoz nehézséget. Ezek a típusok lehetnek numerikus vagy karakterlánc típusúak. A felsoroláselemek értékét így konvertálhatja numerikus típussá

Enum elem = Connection.Directories.Directory1.FindByCode(1).Attribútum1;

PossibleValues ​​= EnumElement.Metadata().EnumValues;

EnumElementNumber = LehetségesÉrtékek.Index(LehetségesÉrtékek.Find(Connection.XMLString(EnumElement)));

Ha EnumItemNumber = 0, akkor Report( „EnumValue1”);

ElseIf EnumItemNumber = 1 Akkor Report("EnumValue2");

EndIf;

Objektum lekérése COM-on keresztül azonosítóval

A konfigurációs objektumkezelőkön keresztül kapunk egy com objektumot, például:
DocumentCOM = Csatlakozás. Dokumentáció. Dokumentumnév;

Ezután megkapjuk az egyedi azonosító karakterláncot:

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

ID = új Y egyedi azonosító (karakterlánc-azonosító);
VAL VEL linkByIdentifier = Dokumentumok[Dokumentumnév].GetLink(Identifier);

Ha meg kell találnia a com objektumot azonosító alapján, akkor a következőképpen kell írnia:

WidCOM = Connection.NewObject(“Egyedi azonosító”,StringUID );
LinkByIdentifier = Connection.Documents[Dokumentumnév].GetLink(UidCOM);