Delphi és 1c - export és import, delphisite
V1CEnterprise.Application - verzió független kulcs
V77.Application - változatfüggő kulcs
V77S.Application - változatfüggő kulcs, SQL verzió
V77L.Application - változatfüggő kulcs, helyi verzió
V77M.Application - változatfüggő kulcs, hálózati verzió
Például hozzon létre egy OLE objektumot az 1C: Enterprise szerverhez. Az egyszerűség érdekében hozzon létre egy objektumot anélkül, hogy kötelező lenne egy adott verzióra és programfajtára:
eljárás TForm1. Create1C;
onesobj: = createoleobject # 40; 'V1CEnterprise.Application' # 41; ;
onesobj: = UnAssigned;
Ez azonban nem szükséges, mert az alkalmazás bezárásakor az OLE objektum automatikusan megjelenik.
Összefoglalja a tudást: hozzon létre egy "1C: Enterprise" OLE-objektumot, inicializálja és helyesen engedje el:
eljárás TForm1. Create1C;
onesobj: = createoleobject # 40; 'V1CEnterprise.Application' # 41; ;
onesobj. inicializálása # 40; onesobj. rmtrade,
A kapott objektummal való együttműködés
Ésszerű kérdés. Valójában, mindent elindítottak, nem igaz. ) Valójában minden nagyon egyszerű. Az OLE-objektum létrehozása és inicializálása után a következőképpen dolgozhatunk:
Az EvalExpr () módszer használatával,
Az EvalExpr módszer a beépített 1C: Enterprise nyelv paraméterére írt kifejezést értékeli, és a számítás eredményét adja vissza. Egy kifejezés eredménye lehet bármely aggregált adattípus számát, karakterláncát, dátumát vagy értékét.
A CreateObject () módszer használatával,
A CreateObject módszer az 1C: Enterprise rendszer összesített adatobjektumát hozza létre, és visszaküldi a hivatkozást. Ezt a funkciót általában az OLEVariant típusú változó explicit meghatározásával és az összesített adattípus objektumhoz való hozzárendelésével egyidejűleg használják.
Az ExecuteBatch () módszer használata
Az ExecuteBatch módszer végrehajtja a paraméterben írt utasítások sorozatát a beépített 1C: Enterprise nyelvben. A módszer -1-ben tér vissza, ha a mondatok sorrendje sikeres, vagy 0 egyébként.
Az 1C: Enterprise rendszer attribútumainak és módszereinek meghívása OLE Automation kiszolgálóként
Itt van néhány buktató, amelyeket azonnal figyelmeztetni akarok:
Az 1C: Enterprise rendszer attribútumainak és módszereinek használatakor angol nyelvű szinonimákat kell használnia (minden egyes módszerre a "beépített nyelv leírása" részben szerepel)
A létrehozott összesített adattípushoz a Delphi környezetben szükség van egy OLEVariant típusú változóra
Ha a hívott OLE-objektum módszer nem veszi paramétereket (vagy az egyik paraméter is választható), mint a paraméter, amelyet továbbítani kell neki EmptyParam (vagy - Delphi 3 - üres string).
Ahhoz, hogy a tárgy azonosítóinak orosz nyelv típusok összesítik (például kézikönyvek részletek) kell használni a módszert objektum aggregátumtípusok getattrib (), hogy az attribútum értéke, és setattrib () állítsa be az értéket.
Az átfogó ábrázolása a fenti, adok egy példát, amelyben a könyvtár tartalmát „nómenklatúra” teljesen exportált adatbázis tábla (ebben a példában azt feltételezi, hogy már létrehozta az asztal tabla1, akinek mezők megfelelő könyvtárba. 2. táblázat táblázat utal az azonos fizikai tábla tabla1 , és csak a már hozzáadott elemek keresésére szolgál):
eljárás TForm1. exportsprav;
számláló: egész szám; // Az importált rekordok számlálója
onesobj: Olevariant; // A program OLE objektuma 1C: Enterprise
áru, ware2: meglariant; // Aggregátum objektumok
val. edizm, nds, np: meglariant;
pf: egész szám; // Közbenső változók
tábla1. nyissa; // A táblázat megnyitása
2. táblázat. nyissa; // Nyissa meg a táblát2
számláló: = 0; // Nullázza a rekordszámlálót
onesobj: = createoleobject # 40; 'V1CEnterprise.Application' # 41; ; // Hozzon létre egy OLE objektumot
// Hozzon létre a szükséges összesített objektumokat
áru: = onesobj. CreateObject # 40; "Referencia-nómenklatúra" # 41; ;
ware2: = onesobj. CreateObject # 40; "Referencia-nómenklatúra" # 41; ;
edizm: = onesobj. CreateObject # 40; "Referencia" Mérési egységek " # 41; ;
nds: = onesobj. CreateObject # 40; 'Spravochnik.StavkiNDS' # 41; ;
np: = onesobj. CreateObject # 40; 'Spravochnik.StavkiNP' # 41; ;
vigyáz. selectgroup # 40; 1 # 41; ; // Állítsa be a csoportválasztási módot
vigyáz. selectitems # 40; 1 # 41; ; // Nyissa meg a könyvtár elemeinek kiválasztását
míg az áru. GetItem # 40; 1 # 41;> 0 do // Válassza ki az összes elemet
ha az áru. szint # 40; „” # 41; = 1 majd // Ha az első szint egy csoportját választottuk, akkor
Máskülönben a szülőelemet keresjük
ware2. FindItem # 40; vigyáz. getattrib # 40; „Szülő” # 41; # 41; ;
ha a táblázat2. findkey # 40; # 91; ware2. getattrib # 40; „Kód” # 41; # 93; # 41; majd
// Ha már importáltuk ezt az elemet
pf: = táblázat2. fieldbyname # 40; 'ID' # 41;. AsInteger //, megkapjuk a kódját
pf: = -1; // egyébként az elemet az első szint csoportjába helyezzük
ha az áru. deletemark # 40; „” # 41; = 0 majd // Ha az elem nincs törölve, akkor
tábla1. csatolja; // adjon hozzá egy új mezőt az asztalhoz
// Töltse ki a táblázat mezőket a könyvtár elemének megfelelő attribútumainak értékeivel
tábla1. fieldbyname # 40; 'CODE_1S' # 41;. AsInteger: = áru. getAttrib # 40; „Kód” # 41; ;
// Töltse ki a név mezőt
tábla1. fieldbyname # 40; 'NAME' # 41;. AsString: = áru. getAttrib # 40; „Név” # 41; ;
tábla1. fieldbyname # 40; 'PARENT_FOLDER' # 41;. AsInteger: = pf;
tábla1. fieldbyname # 40; 'FULLNAME' # 41;. AsString: = áru. getAttrib # 40; "Teljes név" # 41; ;
// Keresse meg a megfelelő bejegyzést az "intézkedés egységében"
edizm. finditem # 40; vigyáz. getattrib # 40; "Mérési egység" # 41; # 41; ;
// Töltse ki az intézkedés mértékegységét
tábla1. fieldbyname # 40; 'EDIZM' # 41;. AsString: = edizm. getattrib # 40; „Név” # 41; ;
// így kapjuk meg az időszakos követelmények értékét
tábla1. fieldbyname # 40; 'SEBESTOIM' # 41;. AsFloat: =
vigyáz. getAttrib # 40; "Költségár" # 41;. getValue # 40; datetostr # 40; most # 41; # 41; ;
tábla1. fieldbyname # 40; 'PRICEOPT' # 41;. AsFloat: = áru. getAttrib # 40; „Ár” # 41; ;
NDS. finditem # 40; vigyáz. getAttrib # 40; 'StavkaNDS' # 41;. getValue # 40; datetostr # 40; most # 41; # 41; # 41; ;
np. finditem # 40; vigyáz. getAttrib # 40; 'StavkaNP' # 41;. getValue # 40; datetostr # 40; most # 41; # 41; # 41; ;
// Töltse ki a HÉA-kulcs mezőjét
tábla1. fieldbyname # 40; 'STNDS' # 41;. AsFloat: = nds. getAttrib # 40; „Fogadás” # 41; ;
// Töltse ki az NP arány mezőjét
tábla1. fieldbyname # 40; 'STNP' # 41;. AsFloat: = np. getAttrib # 40; „Fogadás” # 41; ;
tábla1. fieldbyname # 40; 'ARTICUL' # 41;. AsString: = áru. getAttrib # 40; „Referencia” # 41; ;
ha Ware. IsGroup # 40; „” # 41; = 1 majd // Ha egy termékcsoportot választottunk ki, akkor
tábla1. fieldbyname # 40; 'IS_FOLDER' # 41;. AsInteger: = 1
tábla1. fieldbyname # 40; 'IS_FOLDER' # 41;. AsInteger: = 0;
inc # 40; pult # 41; ;
következtetés
Sajnálatos módon lehetetlen egy cikkbe illeszteni minden olyan információt, amely hasznos lenne számodra. Próbáltam csak a minimum, amit meg kell szerezni néhány alapvető ismereteket, és lehet az alapja a saját kis felfedezések az integráció területén Delphi és a „1C: Enterprise”.
Írj nekem, tegyél fel kérdéseket, és lehetséges, hogy a cikk hamarosan folytatódik.