Első információk a tulajdonságok és módszerek export 1c tárgyakat com
Ahogy a test a COM-objektum vagy külső komponensek, hogy meghatározzuk az összetétele a tulajdonságok és módszerek a tárgyak 1C aggregátum típusú? Minden válasz itt.
Lesimított a 7. változata 1C: Enterprise használatának COM-objektumok és külső alkatrészek tett a programozási nyelvek, amelyek támogatják a COM, természetesen, a megállapítások lehetséges platform egy új szintre. Mégis: a már gazdag lehetőségeit 1C bővíteni a határtalan határait. Miután feltárása ez a lehetőség, akkor is az a benyomása, hogy meg tudod csinálni szinte mindent 1C.
Kilépés 1C: Enterprise 8.x verzió némileg csökken a jelentősége a külső komponens alapfunkcióit már végrehajtották a platform-szinten, például a munka az XML, HTTP, ZIP, e-mail stb De ő 1C már nem egy egyszerű könyvelő program, ezért a fejlesztők továbbra is a külső alkatrész bővíti már most is olyan óriási lehetőség. Emellett gyakran vannak kapcsolási rajzot legtöbb 1C a COM technológia a kifejlesztett programok a C / C ++, Delphi, stb azaz a nyelvek, amelyek támogatják a dolgozó COM.
És valóban, míg a másik esetben az 1C szolgál OLE szerver, így OLE ügyfél gyakran érzi szükségét, hogy információkat szerezzen a szervernek a szolgáltatások által használt kliens tulajdonságok és módszerek. Része a problémát meg lehet oldani segítségével a metaadatok, de hogyan kap egy listát, például a teljes export modul módszerek? Vagy írtál a COM-objektum, amely, ha hívja a módszereket 1C megkapja a paramétereket az aggregátum típusa és a test a létesítmény meg kell állapítanunk, hogy mit, mikor hívod át kell engedni a módszert. A támogatott tulajdonságok és módszerek is nagyon hasznos.
Először is, néhány írástudás. A COM objektumok 1C keresztül működik IDispatch felületen. Ez a felület, viszont támogatja az összes tárgyat aggregátumtípusok 1C: Enterprise, és lehetővé teszi, többek között, hogy részletes tájékoztatást kapnak a módszerek a tárgy (a tulajdonságok, módszerek, a módszer paramétereinek és azok típusai, vissza típusok, stb.) Ez az ő aláírása technikák (a továbbiakban: Delphi példa):
Annak ellenőrzésére, hogy létezik egy olyan módszer, vagy a vagyon, a COM-objektum, akkor kell használni a módszert GetIDsOfNames. és csinálni valamit, mint ez:
A COM objektum (a „kiszolgáló”) is „mondani” a hívó fél (az „Ügyfél”) által annak módszerei, az szükséges, hogy amikor hívja a GetTypeInfo visszatér egy pointert a ITypeInfo interfészen. amelyen keresztül az ügyfél megkapja ezt az információt és. Megjegyzendő, hogy ez nem kötelező. Ebben az esetben minden egyes alkalommal, amikor a szerver módszer neve a neve a kliens először meghívja GetIDsOfNames módszer. amelyek esetében a kívánt módszer visszaadja azt DispID. Ezt követően, a Behívás módszer hívás érkezett DispID. Abban az esetben támogatja a ITypeInfo információt az elérhető módszerek és tulajdonságok kért egyszer, amikor az objektum inicializálása majd a módszerek már abból DispID.
További információk a tulajdonságok és módszerek alkalmazásával ITypeInfo. el kell végezni egy kódot, mint ez:
Elemzése rendszer objektumainak 1C: Enterprise verzió 8.x mutatja, hogy nem minden tárgy támogatja egyre ITypeInfo felületet. Különösen azt nyerhető típusú objektumok „SpravochnikObekt”, „DokumentObekt”, „ObrabotkaObekt” (de nem „VneshnyayaObrabotkaObekt”), „RegistrHHHHHHHHHNaborZapisey” és mások.
A kimenet ebben a helyzetben, és ez az, hogy a létesítmények 1C végrehajtott támogatási IDispatchEx felület. amely szintén tájékoztat a tulajdonságok és módszerek. Itt van a leírás:
Amennyiben ez a felület információkat az objektum módszer nem olyan részletes, mint a ITypeInfo. de a mi szempontunkból ez elég. Ezenkívül a végrehajtás a ITypeInfo objektumok 1C: Enterprise nem teszi lehetővé, hogy megkülönböztessék az eljárást a funkciót, és ha IDispatchEx lehetséges. És ami a legfontosabb: IDispatchEx végrehajtani minden aggregált tárgyak (kivéve sajnos a root).
Így, hogy kap egy listát a tulajdonságok és módszerek segítségével IDispatchEx interfész. el kell végezni egy kódot, mint ez:
A gyakorlatban ez a megközelítés hasznos lehet, például ha írt COM-objektum, amely megkapja paraméterként odinesovskie tárgyak aggregátumtípusok. A praxisomban volt olyan módszert, amely veszi a paramétert vagy egy objektum típusú „Image” vagy „DvoichnyeDannye”, és a legjobb módja annak, hogy különbséget a test a tárgy COM-on a másik, én nem találtam.
Annak igazolására, a módszert kínálnak letöltésre egy kis segédprogram, amely megvalósítja mindkét módszer vonatkozó információk megszerzésére a tulajdonságok és módszerek egy objektum (végrehajtható + forráskód (Delphi XE)).