Prejemanje podatkov preko com povezave od 1s. V8: povezava COM. Prejem in primerjava enumeracije preko COM povezave

Vprašanje: Razčlenjevanje spletnega mesta z uporabo COM IE 11


Dober dan.!
Vprašanje je boleče dobro znano, informacije morate vzeti s spletnega mesta. Vendar obstajajo nianse:
1. Ne morete iti neposredno na avtorizacijsko stran (najprej pojdite na domačo stran, kliknite povezavo Prijava, pridobite avtorizacijski obrazec in se šele nato prijavite).
2. Spletno stran morate obiskati prek iskalna vrstica poiščite podatke, nato jih preberite in znova poiščite (podatki so lahko v ruščini in angleščini, tj. če so podatki za iskanje v ruščini, potem morate iskati v »ruski različici« spletnega mesta in to je druga povezava na drugo stran. Enaka težava je z angleščino).

Končno:
- pojdite na domačo stran - prijavite se - poiščite podatke - (pojdite na drugo različico spletnega mesta, če je potrebno) - vzemite.

Težava:
Podatki se ne preberejo v lastnost "document", ko sledite povezavi.
Pojavi se na dveh točkah:
- ko sledimo povezavi za prijavo (to ni gumb, ampak le povezava);
- ko spremenimo jezik na strani (tudi povezava).

Opomba
Če prejmete povezavo, preden sledite povezavi v fazi avtorizacije, zaprete com in jo znova odprete s prehodom skozi metodo IE.navigate("povezava"), se podatki v lastnosti "document" shranijo normalno . Vendar ne boste mogli storiti iste stvari, ko spremenite jezik na spletnem mestu, ker ... Ponovno se moram prijaviti in poleg tega ne bi želel rešiti te težave natanko tako.

Tukaj je koda:

&V postopku odjemalca SetWaitingIE(IE, SecondCall=False) If NOT IE.Busy Then D = CurrentDate() + 3; Medtem ko D >= CurrentDate() Loop If IE.Busy Then Abort; endIf; EndCycle; endIf; Medtem ko IE.Busy Loop EndLoop; Medtem ko IE.ReadyState< 4 Цикл КонецЦикла; Попытка Если IE.Document.ReadyState = Null Тогда IE.Refresh(); УстановитьОжиданиеИЕ(IE); КонецЕсли; Пока IE.Document.ReadyState <>"popoln" cikel EndCycle; Izjema If SecondCall Then Return; Else Link = IE.LocationURL; IE.Quit(); IE = GetCOM("InternetExplorer.Application"); IE.Navigate(Povezava); SetExpectIE(IE, True); endIf; EndAttempt; EndProcedure &OnClient Function PerformUserAuthorization(IE, Link, Login, Password, Authorized=False, SC=0) Elementi poskusa = IE.Document.GetElementsByName("uporabniško ime"); Če je Elements.Length = 1, potem je za vsako zanko El elementov El.Value = Prijava; EndCycle; endIf; Elementi = IE.Document.GetElementsByName("geslo"); Če je Elements.Length = 1, potem je za vsako zanko El elementov El.Value = Password; EndCycle; endIf; IE.Document.GetElementById("ID").Click(); SetWaitingIE(IE); Pooblaščeno = True; Izjema Če je CN > 3, potem vrni False; endIf; IE.Quit(); IE.Navigate(Povezava); SetWaitingIE(IE); MF = MF + 1; If PerformUserAuthorization(IE, Link, Login, Password, SCH) Then Return True; endIf; EndAttempt; Pooblaščeno za vračilo; EndFunction &OnClient Procedure Upload(Command) SpTables = GetListTablesForUpload(); If SpTables = False Then Return; endIf; IE = GetCOM("InternetExplorer.Application"); Za vsako vrstico iz SpTable.SOURCE_LIST Cycle RA = Row.ID; Vir = String.RESOURCE; IE.Navigate(vir); SetWaitingIE(IE); Poskusite If Line.NEW_PAGE_IN_LOGIN = 1 Then Classes = IE.Document.GetElementsByClassName("ClassName"); Če je Classes.Length = 1, potem je za vsak razred iz Classes Loop Resource = Class.All(0).Href; Prekini; EndCycle; Poskus IE.Quit(); IE = IE.Navigate(Resource); SetWaitingIE(IE); Poročilo o izjemi ("Povezava s spletnim mestom "" +String.NAME + "" ni uspela!"); Prekini; EndAttempt; Sicer Report("Povezava s spletnim mestom "" +String.NAME + "" ni uspela!"); Prekini; endIf; endIf; If NOT PerformUserAuthorization(IE, Resource, String.LOGIN, String.PASSWORD) Then Report("Autorizacija uporabnika na spletnem mestu "" + String.NAME + "" ni bila dokončana!"); Prekini; endIf; Vir = IE.LocationURL; Seznam oseb = SpTable.FACE_CODES.FindRows(Nova struktura("VIR", RA)); ListNotFound = Nova matrika; Za vsako osebo s seznama oseb cikel PersonName = Person.NAME_IN_SITE; To je rusko = CharacterCode(PersonName, 1) >= 1040; TechResource = ?(To je rusko, StrReplace(Resource, "en_US", "ru_RU"), StrReplace(Resource, "ru_RU", "en_US")); Če TekResurs<>IE.LocationURL Nato RootClasses = IE.Document.GetElementsByClassName("ClassName"); Če je RootClasses.Length = 1, potem je za vsak korenski razred iz korenskih razredov Loop Classes = RootClass.Children; Prekini; EndCycle; AmGroup = False; RuGroup = False; For Every Class From Classes Loop If HPreg(Class.ClassName) = "dropdown-header" Then AmGroup = Find(Class.InnerText, "Americans") > 0; RuGroup = Find(Class.InnerText, "Europe") > 0; ElseIf HPreg(Class.ClassName)<>"izbrano" Potem Če AmGroup And Find(Class.All(0).InnerText, "English") > 0 ALI RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 Potem IE.Navigate(Class .Vse(1).Href); SetWaitingIE(IE); Prekini; endIf; endIf; EndCycle; endIf; endIf; IE.Document.GetElementById("ID").Vrednost = Ime osebe; FindButton = IE.Document.GetElementById("ID"); FindButton.Focus(); FindButton.Click(); Poskus SetExpect(IE); //Vokroži prejete podatke ExceptionListNotFound.Add(Person); Nadaljuj; EndAttempt; EndCycle; Poročilo o izjemi ("Napaka:" + Simboli.PS + Opis napake()); Prekini; EndAttempt; EndCycle; IE.Quit(); Konec postopka

odgovor:

Tema je zelo zanimiva, vendar osebno na žalost nimam niti izkušenj niti niti priložnosti, da bi nekako razumel ta problem. Če najdete informacije o tej temi, jih delite.
--- Združenje sporočila, 29. april 2016 ---

Kolikor razumem, ni dostopa do baze podatkov SQL?

--- Združevanje sporočil, 29. april 2016 ---

No, če razčlenjevanje, kakšen dostop potem?

Vprašanje: COM povezava 1C 8.3 - 1C 8.3 Ali je mogoče v povezavo vnesti razhroščevalnik


Člane foruma sem želel vprašati, ali je sploh mogoče razhroščevanje, ko se povežem prek povezave COM z uporabo obdelave iz ene baze podatkov na platformi 8.3.6 (BP 3.0) na zunanji povezovalni modul samonapisane baze podatkov (ki se tudi izvaja na platformi 8.3.6) in kliče izvoze iz nje postopke z uporabo obdelave? Baze podatkov trenutno temeljijo na datotekah in se nahajajo na enem osebnem računalniku, vendar je v načrtu strežniška različica. Do takrat sem uporabljal spodnje konstrukcije za prenos poljubne kode za izvajanje prek povezave COM, pa tudi za beleženje napak. Tukaj so fragmenti postopkov v sami napisani bazi podatkov v zunanjem povezovalnem modulu:

Funkcija ExecuteIn(CodeExecute, pomožni parameter = "") Izvoz
Varnostno preverjanje(); // Zaščita pred poskusi izvajanja zlonamerne kode pri zunanji povezavi v imenu drugega uporabnika Odgovor = "0" //Če ni treba ničesar vrniti, potem če v kodi ni napak  //vrne prav OK  //Ker Posredovana koda lahko vsebuje napake, nato pa bomo njeno izvedbo zaključili s poskusom. Poskusite izvesti (CodeExecute); // Izvedi kodo kot niz na drugem računalniku prek povezave COM (modul zunanje povezave Libra Base) Izjema   //če je napaka, vrni njeno besedilo Odgovor = ErrorDetailView(ErrorInfo()); EndAttempt ; Vrni odgovor; Funkcija EndFunction TestConnection(InParameter, OutParameter) ExportSecurityCheck(); // Zaščita pred poskusi izvajanja zlonamerne kode pri zunanji povezavi v imenu drugega uporabnika. OutParameter = "Obstaja povezava z bazo tehtnice preko COM povezave!"; Vrni True ; EndFunction
Iz BP 3.0 izvedem naslednji fragment:
Poskus
Com = New COMObject("V83.COMConnector"); Povezava = Com.Connect ("File=""C:\1 c\Base_1C\Libra""; Usr=""ComExchange""; Pwd=""1"";"); TellUser("Test opravljen! Obstaja povezava z bazo tehtnice"); Izjema Napaka = ErrorDetailView(ErrorInfo()); TellUser("Ni povezave COM z bazo Libra! Podrobnosti"+Napaka); Com=Nedefinirano ; Vrnitev ; EndAttempt ; Izhod = ""; In = "1"; If Connection.Communication Test(In, Out) Then TellUser("Komunikacijski test s konfiguracijo lestvice uspešen! Odgovor: "+Out); V nasprotnem primeru TellUser("Komunikacijski test s konfiguracijo tehtnice ni uspel! Odgovor: "+Izhod); EndIf ;
Seveda razumem, da ne bo mogoče vnesti operaterja Execute(CodeString1C8), vendar obstaja taka možnost pri klicu oddaljene procedure modula zunanjo povezavo iz glavne baze podatkov Connection.TestConnections(In, Out), da vnese svojo kodo v isti seji razhroščevalnika v funkciji Security Check() njihove klicne procedure?
O tej temi sem že pogledal dokumentacijo, ki sem jo našel. Nastavil sem možnosti za omogočanje odpravljanja napak in prekinitvenih točk povsod v obeh konfiguracijah. Zagnal sem oba konfiguratorja.
Ali je v tej situaciji sploh mogoče nadalje razhroščevati postopek varnostnega preverjanja() na strani zunanjega povezovalnega modula?

Vprašanje: Napačen IP naslov v COM povezavi


Obstaja obdelava, ki prenaša dokumente prek V83.ComConnector med strežniki. Strežnik 1 (1C različica 8.2.19.90) se vedno poveže s strežnikom 2 (različica 8.3.8.2033). Povezavna vrstica je vsebovala naslov IP strežnika 2 in vse je dobro delovalo. Na samem strežniku 1 sem videl tudi nameščeno platformo kot na strežniku 2, različica 8.3.9.2033 (če je to pomembno).

Težava je v tem, da se je na strežniku 2 IP naslov spremenil, obdelava je seveda prenehala delovati in ko sem v povezovalno vrstico vnesel nov IP, obdelava ustvari napako, katere opis je še vedno stari IP (!) in besedilo »Poskus vzpostavitve povezave je bil neuspešen, ker od drugega računalnika v zahtevanem času ni bil prejet zahtevani odgovor ali vzpostavljena povezava zaradi napačnega odziva že povezanega računalnika."

Vse so ponovno zagnali, počistili predpomnilnike itd., admini prisegajo, da je z njihove strani vse ok, preko RDP se lahko prijaviš iz enega strežnika na drugega itd.

Kaj bi lahko bilo narobe, kako naj to rešim? Iskal sem po vsem internetu in nisem našel takšne situacije!

odgovor:() 100% prepričan! Drugi dan poskusim, kot sem napisal, pogledam z debuggerjem, celo naredil sem neumno enocelično obdelavo za test povezave, pojavi se tista napaka in to je to

Vprašanje: COM povezava z različnimi različicami


Pozdravljeni vsi skupaj.
Imam bazo podatkov ala “Consolidation”, ki zbira različne podatke iz različnih baz in vse skupaj združi na en kup. Težava je v tem, da se morate na te baze podatkov povezati prek com, vendar gre za različne različice, tako da na koncu dobim napako, kot je
Napaka povezave!(ExternalProcessing.TransferHistory.Form.Form.Form(12)) : Napaka pri klicu kontekstne metode (Connect) : Prišlo je do izjeme (V83.COMConnector. 1 ) : Neujemanje med različicama odjemalca in strežnika 1 C:Enterprise Client različice se razlikujejo in strežnik (8.3. 8.1964 - 8.3. 6.2332), odjemalska aplikacija: povezava COM

Eno povezavo vzpostavim, druga odpade...

Vem, da lahko prek storitve komponente nekako ustvarite »svoje lastne razrede (konektorje)« za vsako različico in nato ustvarite nov objekt COM, ki ustreza različici razreda na platformi ... morda se motim.

Pomagaj mi premagati to težavo ...

odgovor: To je to... bom odstranil vprašanje..

Vprašanje: Com Error in Processing Filling


Zdravo.
8.2 Maloprodaja 1.
Povezujem se z 8.1. Ni tipična konf.
Prek com se povežem z bazo podatkov in poskušam ustvariti dokument, vendar se pri klicu »CreateDocument()« ali »GetObject()« pojavi napaka v postopku Obdelava Polnjenje. glej sl.

Enako poskusim v sami bazi 8.1, pa ni nobene napake, prav tako ne vstopim v Filling Processing.
Kaj bi lahko bilo narobe?

odgovor: turboq, pokvarjeno napisan dokumentni modul!

Dodano po 5 minutah
Ni poklicana! Poskuša se sestaviti! Ker pa pri povezovanju prek ComConnectorja težava Dialog Mode NE OBSTAJA, modula dokumenta ni mogoče prevesti.
Za take primere, ko je potrebno izvesti delo z pogovornim oknom v objektnem modulu, uporabite navodila predprocesorju

To ni vaša napaka, ampak napaka v dokumentnem modulu v bazi podatkov, s katero se povezujete.

V bazi podatkov se koda izvaja na odjemalcu in obstaja Dialogue Mode, tako da se vse zgodi brez napak

Za povezavo ne uporabljajte aplikacije ComConnector, V8.Aplikacija, potem vam bodo na voljo vmesnikske stvari

Dodano po 5 minutah
=======================================================================================================================
iz opisa zunanjega priključka (SP) S krepkim tiskom sem poudaril, kaj morate prebrati o ComConnections

Opis:

Na splošno je delo z 1C:Enterprise 8 prek zunanje povezave podobno delu z 1C:Enterprise v načinu avtomatizacije strežnika. Glavne razlike so naslednje:

  • V primeru strežnika za avtomatizacijo se zažene polna aplikacija 1C:Enterprise 8, v primeru zunanje povezave pa se zažene relativno majhen strežnik COM v procesu.
  • Ni na voljo pri delu prek zunanje povezave funkcionalnost, tako ali drugače povezane z organizacijo uporabniškega vmesnika 1C:Enterprise 8;
  • Pri izvajanju zunanje povezave modul upravljane aplikacije (modul redna uporaba) konfiguracija 1C:Enterprise 8. Njegovo vlogo pri delu z zunanjo povezavo igra zunanji priključni modul.
Pri uporabi zunanje povezave so v primerjavi z uporabo strežnika za avtomatizacijo naslednje prednosti:
  • Hitrejša nastavitev povezave, saj ni treba ustvariti ločenega procesa operacijski sistem, in vsa dejanja se izvajajo znotraj klicnega procesa;
  • Hitrejši dostop do lastnosti in metod objektov 1C:Enterprise, saj organizacija dostopa ne zahteva medprocesne komunikacije;
  • Manjša poraba virov operacijskega sistema.
Za organizacijo dostopa do podatkov 1C:Enterprise 8 prek zunanje povezave se izvede naslednje zaporedje dejanj:
  • ustvari se upravljalnik povezav COM, s pomočjo katerega se vzpostavi povezava;
  • izvede se klic metode Connect upravitelja povezav COM. Metoda Connect vrne zunanjo povezavo z informacijsko bazo 1C:Enterprise 8;
  • preko zunanje povezave se izvede dostop do veljavnih metod, lastnosti in objektov informacijske baze, s katero je vzpostavljena povezava.
Pomembno! Zaradi pomanjkanja uporabniškega vmesnika ni mogoče uporabiti vseh objektov, lastnosti in metod v zunanji povezavi.
Zunanji spoj zagotavlja popoln dostop njenemu globalnemu kontekstu. Zato ima lahko zunanja povezava kot svoje metode: sistemske konstante, vrednosti objektov, določenih v konfiguratorju, do katerih se dostop izvaja z upravitelji (na primer konstante, oštevilčenja, imeniki, dokumenti, dnevniki dokumentov, poročila , obdelave, načrti tipov karakteristik, kontni načrti , plani kalkulacijskih tipov, registri), kot tudi spremenljivke, deklarirane v zunanjem povezovalnem modulu s ključno besedo Export.

Razpoložljivost:

Integracija.

Vprašanje: Povezava COM, načrt tipa značilnosti


Naloga je programska izdelava novega elementa v znanem načrtu značilnih tipov preko COM povezave. Povezava je vzpostavljena, tukaj je vse v redu.

Pišem takole:

TypeDescriptionTech = New TypeDescription("Povezava do imenika. Nasprotne stranke"); PurposeProperties = Povezava. Načrti vrst značilnosti. Nameni lastnosti kategorij predmetov. FindByName(»Imenik »Posamezniki««); NewElement = Povezava. Načrti vrst značilnosti. Lastnosti predmeta. UstvariElement(); NewElement. Ime = ImeLastnosti; NewElement. PropertyAssignment = Dodelitev lastnosti; NewElement. ValueType = DescriptionTypesTech;

Zadnja vrstica ne deluje. In to je razumljivo, najde takšen tip za bazo podatkov, kjer se izvaja 1C, vendar potrebujem tip za priloženo bazo podatkov. Kako do njega?

V moji različici je preprosto ustvarjen element z vrsto vrednosti »Seznam po meri«. Načeloma deluje, vendar je nekako grdo.

Platforma 8.3. Povezava COM je predpogoj. Rešitve brez njegove uporabe niso zanimive.

odgovor:

Zvitki. Hvala, uspelo je.

Vprašanje: Povezava COM. Težava s parametrom poizvedbe


Dober dan.
Težava z zahtevo prek povezave COM.

Perem TK; ArrayItems = COM.NewObject("Array"); Za vsako vrstico iz nomenklature cikla TZNomenclature = COM.Directories.Nomenclature.GetLink(COM.NewObject("UniqueIdentifier", Abbr(String.Nomenclature.Identifier))); Nomenklatura Array.Add(Nomenklatura); EndCycle; Če ArrayItems.Quantity()<>0 Nato Zahteva = COM.NewObject("Zahteva"); Request.Text = "IZBERI |PricesItemsSliceLast.Commodities AS Nomenklatura, |PricesItemsSliceLast.SalePrice AS Cena, |PricesItemsSliceLast.RateDVAT, |PricesItemsSliceLast.RateNP |FROM |RegisterInformation.PricesSliceLast(|&DateDoc, |T ipPrices = &TypePrices |In inventar Inventar B ( &Array of Nomenclature) |And Inventar and Materials.ThisGroup = FALSE |In Registrar LINK Document.Setting SalesPrices) AS NomenclaturePricesSliceLast"; Request.SetParameter("Matrika elementov", Matrika elementov); Request.SetParameter("DataDoc", EndDay(ParametersStructure.DataDoc)); Request.SetParameter("PriceType", COM.Directories.PriceTypes.GetRef(COM.NewObject("UniqueIdentifier", ParameterStructure.PriceType.Identifier))); TZ = COM.NewObject("Tabela vrednosti"); TK = Request.Run().Upload(); V nasprotnem primeru TK = Nova tabela vrednosti; TK.Columns.Add("Nomenklatura"); TK.Columns.Add("Cena"); TK.Columns.Add("Odstotek"); TK.Columns.Add("stopnja DDV"); endIf;

Problem je ravno pri artiklu ali nizu artiklov, če jih nastavite kot parameter, zahteva vrne prazne cene, če tega parametra sploh ne podate, vrne zahteva pravilne podatke.
V poizvedovalni konzoli te iste zunanje baze podatkov se vse obdela brez težav.
Kaj bi lahko bilo narobe?

odgovor:

Poskusite to narediti prek VremTable. Ustvarite tabelo vrednosti s stolpci oz. kot, izpolnite, potegnite v zahtevo in nato uporabite z notranjo povezavo.

Vprašanje: Com povezava med podatkovno zbirko datotek


Dobro jutro. Imam datotečno bazo podatkov 8.3, iz katere se poskušam povezati z drugo datotečno bazo prek povezave com:

Imenik = "C:\Uporabniki\1C\Workflow (test)"; Uporabnik = "Administrator"; Geslo = ""; Parametri povezave = "Datoteka="+Imenik+";Usr="+Uporabnik+";Pwd="+Geslo+";"; V83 = Nov COMObject("V83.COMConnector"); Poskus povezave = V83.Connect(ConnectionParameters); Poročilo o izjemah ("Ni bilo mogoče vzpostaviti povezave s tokom dokumenta!"); EndAttempt;


Vržena je izjema brez opisa napake.
Obe podatkovni zbirki se prisilno zaženeta v 8.3. Imenik in uporabnik sta podana pravilno. Kaj bi lahko bil razlog?

odgovor:

Napišem vrstico kode V82 = New COMObject(" V83.COMConnector«); preostala koda pa je kot spodaj, brez sprememb.

Ko sta različici izvorne in ciljne platforme različni, pride do napake.

Ni jasno, katero različico knjižnice registrirati in kje jo registrirati?

Mislim, da moram registrirati knjižnico, različica 8.2.18.61, in to naredim prek datoteke bat

regsvr32 /n /i:user "C:\Programske datoteke (x86)\1cv82\8.2.18.61\bin\comcntr.dll"
pavza

msk-test1c:1641 -- to je strežnik 8.3.5.1098
V82 = Nov COMObject("V82. COMConnector"); Poročilo ("Poveži se z računovodstvom 3.0 ..."); Poskus povezave = V82. Connect("srvr = ""msk- test1c:1641""; ref = ""db_test""; usr = ""Administrator""; pwd = ""123"""); Obvesti ("Hura povezava vzpostavljena!"); Poročilo o izjemah ("Ni povezave z bazo podatkov!"); Poročilo(Opis napake()); // Info = InformationAboutError(); // Poročilo ("Opis= "" + Info.Description + """); // Poročilo ("ImeModula= "" + Info.ModuleName + """); // Poročilo ("LineNumber=" + Info.LineNumber); // Poročilo ("SourceLine= "" + Info.SourceString + """); Vrnitev; Konec poskusa;

Kje registrirati knjižnico, na odjemalcu, na strežniku 8.2, na strežniku 8.3? Slika spodaj.
(za različico odjemalec-strežnik in za datotečno različico baze podatkov 1C)

odgovor: Obstajala je naloga komuniciranja z enim terminalom prek spletne storitve. Osnova je, no, recimo lahka. Tudi 0,5 ali hitreje?

Težko rečem – nimam dovolj podatkov. Zadovoljni smo bili z 0,5 sekunde, minus nepotreben odjemalec 1C na stroju tretje osebe, minus sinhronizacija različic knjižnice po posodobitvi mehanizma 1C, minus prekleti comsafearray, normalna imena in tipi polj ... Mislil je na nas iz drugi strani (sistem, ki se integrira z 1C) "ne bodo razumeli", ko se izkaže, da morajo svoje klice 1C prepisati v nov "sistemski komunikacijski model". Toda, ko smo enkrat poskusili eno funkcijo v testni zbirki podatkov, nas zdaj dražijo z "preklopimo na storitev čim prej."

Vprašanje: Kako uporabiti TypeContains za objekte Com?


If Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")) Then There IsNomenclature = True; endIf;

"Props" je bil prejet iz com povezave z drugo bazo podatkov 1c. Napaka se pojavi pri primerjavi:

(ExternalProcessing.Coefficient Recalculation.Form.Form.Form(183)): Napaka pri klicu kontekstne metode (ContainsType)
If Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")) Potem
zaradi:
Prišlo je do izjeme (1C:Enterprise 8.3.8.1964): neujemanje vrste (številka parametra "1")

Sumim, da bi ga bilo treba primerjati s tipom v com? Kako pravilno preveriti vrsto?

odgovor:

Ne gre. Zadevo sem rešil takole:
V bazi podatkov sprejemnika v splošnem modulu s potrjenim potrditvenim poljem za zunanjo povezavo je koda:

Funkcija CheckAttributeType(Attribute, Type) Izvozi Vrni Attribute.Type.ContainsType(Type(Type)); EndFunction

V bazi, iz katere se povezujem, pokličem postopek prek Com:

ComConnection.Avis_ExchangeProcedures.CheckAttributeType(atribut, "DirectoryLink.Nomenclature")

Natisni (Ctrl+P)

Ena od možnosti za izmenjavo podatkov med zbirkami podatkov 1C je izmenjava prek COM povezave. S povezavo COM se lahko povežete iz ene baze podatkov 1C v drugo in berete ali pišete podatke. Ta metoda se lahko uporablja tako v različicah baz podatkov odjemalec-strežnik kot tudi v datotečnih bazah podatkov. Ta članek obravnava te vrste povezav na platformi 8.3

com povezava

Za aplikacijo 1C lahko ustvarite dve vrsti objektov COM. To so stare povezave V83.Aplikacija in com povezave V83.COMConnector . V primeru V83.Aplikacija Zažene se skoraj popolna kopija aplikacije 1C. V primeru uporabe V83.COMConnector Zažene se majhen strežniški del. Hitrost delovanja je v tem primeru višja, vendar nekatere funkcije morda ne bodo na voljo. Predvsem delo z obrazci in skupnimi moduli, za katere lastnost dela z zunanjimi povezavami ni nastavljena. Večinoma bi morali uporabiti V83.COMConnector in samo v primeru pomanjkanja funkcionalnosti V83.Aplikacija. Razlika v hitrosti delovanja je lahko še posebej opazna pri bazah podatkov velikega obsega. Za platformo 8.2 uporabljeno V82.Application ali V82.COMConnector

Vzpostavite povezavo OLE

Connection = New COMObject(“V83.Application” ) ;

Vzpostavite povezavo COM

Connection = New COMObject(“V83.COMConnector” ) ;

Povezovalni niz

//Za možnost odjemalec-strežnik
Povezavni niz= “Srvr = ““ServerName” “;Ref = “ “BaseName” ;
//Za možnost datotečnega načina:
Povezavni niz= “Datoteka = ““PathKBase” “; Usr = uporabniško ime; Pwd = geslo”;
Poskus
Povezava = Povezava . Povežite se(ConnectionString) ;
Izjema
Sporočilo = Novo sporočiloUporabniku;
Sporočilo . Besedilo = »Povezava z bazo podatkov ni uspela« + DescriptionErrors(); Sporočilo . Poročati();
EndAttempt ;

Prekinitev povezave

Povezava = Nedefinirano;
Za objekt V83.Aplikacija Povezavo je treba prekiniti, sicer ostane nepopolna seja, ki jo je treba nato ročno izbrisati. V primeru V83.COMConnector povezava se samodejno prekine, ko je postopek, v katerem je bila vzpostavljena povezava, končan.In še ena malenkost. Za uporabnika, pod katerim se vzpostavlja povezava, mora biti v nastavitvah onemogočeno potrditveno polje »Zahtevaj potrditev ob zapiranju programa«.

Metoda NewObject().

Če želite ustvariti nov predmet, lahko uporabite metodo NewObject(), na primer:

Za V83.COMConnector

ZahtevaCOM = Povezava. NewObject( "Prošnja ") ;
TableCOM = Povezava. NewObject( "Tabela vrednosti") ;
ArrayCOM = Povezava. NewObject(“Matrika”);

ViewCOM = Connection.NewObject

Za V83.Aplikacija

RequestOLE = Povezava. NewObject(" Prošnja ") ;
TableOLE = Povezava. NewObject("Tabela vrednosti") ;
ArrayOLE = Connection.NewObject("Matrika");
ViewCOM = Connection.NewObject(»UniqueIdentifier«, StringUID);

ZahtevaCOM . Besedilo ="IZBERI
| Položaji Organizacij Kodeks,
| Položaji organizacij. Ime
|OD | Imenik. Položaji organizacij
KAKO DO POLOŽAJEV ORGANIZACIJ”;

Rezultat = ZahtevaCOM. Zaženi();
Vzorec = Rezultat. Izberite ();
Adijo Izbor. Naslednji()Cikel
Končni cikel ;
Uporabite lahko tudi upravitelje konfiguracijskih objektov:
ImenikCOM = Povezava. Imeniki. ime imenika;
DokumentCOM = Povezava. Dokumentacija. ImeDokumenta;
RegisterCOM = Povezava. Informacijski registri. RegisterName ;

Prejem in primerjava enumeracije preko COM povezave

Za primerjavo vrednosti elementov oštevilčenja, definiranih v konfiguraciji, je potrebno te elemente pretvoriti v enega od primitivnih tipov, katerih primerjava je enostavna. Takšni tipi so lahko številski ali nizovni. Vrednost elementa oštevilčenja lahko pretvorite v številsko vrsto, kot je ta:

Enum Item = Connection.Directories.Directory1.FindByCode(1).Props1;

PossibleValues ​​​​= Enum Element.Metadata().Enum Values;

EnumerationElementNumber = PossibleValues.Index(PossibleValues.Find(Connection.XMLString(EnumerationElement)));

If EnumerationItemNumber = 0 Then Report( “Enumer value1”);

ElseIfEnumerationItemNumber = 1 Potem Poročilo ("EnumerationValue2");

endIf;

Pridobivanje predmeta prek COM po identifikatorju

Preko upraviteljev konfiguracijskih objektov dobimo objekt com, na primer:
DokumentCOM = Povezava. Dokumentacija. ImeDokumenta;

Nato dobimo edinstven identifikatorski niz:

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

Identifikator = New U uniqueIdentifier(StringUID);
Z linkByIdentifier = Dokumenti[ImeDokumenta].GetLink(Identifikator);

Če morate najti predmet com po dokumentu po identifikatorju, morate napisati takole:

WidCOM = Connection.NewObject(»UniqueIdentifier«, StringUID);
LinkByIdentifier = Connection.Documents[DocumentName].GetLink(WidCOM);

Eden od načinov za prenos podatkov iz ene konfiguracije 1C v drugo je programska povezava z uporabo COM. Mnoga podjetja uporabljajo več različnih baz podatkov, med katerimi morajo obstajati določene povezave in odvisnosti. Če ni potrebno samo prenašati podatkov, ampak tudi izvajati določeno obdelavo podatkov, bo povezava COM optimalen mehanizem. Možnost analize podatkov iz druge baze podatkov 1C je koristna za vsakega razvijalca.

Povezujemo se preko COM z bazo podatkov 1C

Za izvedbo povezave COM v 1C se uporablja poseben mehanizem, imenovan COMConnector. Ta objekt je nameščen skupaj s platformo in se uporablja za povezovanje informacijskih baz. Upoštevati je treba, da se za različici 8.2 in 8.3 uporabljajo predmeti z različnimi imeni - "V82.COMConnector" oziroma "V83.COMConnector".

Ne pozabite, da trajanje povezave COM z bazo podatkov stane licenco - ne nasedajte hkratnemu izvajanju več povezav. To je še posebej pomembno za organizacije, ki imajo omejeno število licenc. To težavo je mogoče rešiti s pomočjo rutinskih nalog, ki se izvajajo, ko ni aktivnih uporabniških povezav z informacijsko bazo.

Da se lahko povežete z drugo bazo podatkov in zahtevate potrebne informacije, morate poznati naslednje podatke:

  1. Katere vrste je - datoteka ali odjemalec-strežnik;
  2. Kje je;
  3. Katero ime in geslo lahko uporabite za prijavo?
  4. Kateri podatki vas zanimajo?

Iz prvih treh točk morate za izvedbo povezave COM ustvariti niz parametrov. Glede na vrsto informacijske varnosti se bo razlikovala videz. Z uporabo prejetega niza se vzpostavi povezava, s pomočjo katere lahko zbirate podatke iz druge baze podatkov za analizo in obdelavo s poljubnimi metodami.

Parametri povezaveFileIB = "File=""Path_to_database""; Usr=""User_name"";Pwd=""Password"""; Parametri povezaveClientServerIB = "Srvr=""Server_Name""; Ref=""Database_Name""; Usr=""User_Name""; Pwd=""Password""";

Funkcija povezave je preprosta in ne bi smela povzročati vprašanj, če so vsi parametri pravilno določeni. Za pospešitev odpravljanja napak in analize možne napake bolje je povezavo zapreti v konstrukcijo “Poskusi”. Funkcija bo vrnila vrednost tipa "COM object", s katero boste delali za pridobitev potrebnih podatkov.

Funkcija &OnServer ConnectToBase() exportConnectionIB Parameters = "File=""E:\1c database\ERP""; Usr=""Administrator"";Pwd=""1"""; V83COMCon= Nov COMObject("V83.COMConnector"); Poskus vrnitve V83COMCon.Connect(Parametri povezave IB); Poročilo o izjemi (Opis napake ()); Vrni Nedefinirano; EndAttempt; EndFunction

Prek povezave COM ne morete samo izbrati podatkov, ampak jih tudi dodati v bazo podatkov, s katero se povezujete. Ne pozabite, da lahko prek objekta COM prenesemo 4 primitivne vrste podatkov. Druge vrste bo treba določiti z uporabo vgrajenih iskalnih funkcij platforme. Upoštevajte, da se funkcije globalne platforme kličejo tudi prek povezave COM.

Podatke prejemamo iz baze podatkov 1C

Ko prejmete želeni objekt, morate prebrati podatke iz druge baze podatkov. Za to uporabimo zahtevo prek povezave COM v 1C 8.3 z uporabo prejete vrednosti tipa "COM object" iz funkcije. Pomembno je, da se najprej povežete z bazo podatkov in nato izvedete zahtevo. Izvedba se izvede z metodo NewObject, pri čemer se kot parameter določi vrsta objekta v obliki niza - "Zahteva".

&OnServer postopek TestCOMOnServer() Connection = ConnectToBase(); If TypeValue(Connection) Type("Undefined") Then RequestBPZO = Connection.NewObject("Request"); RequestBPZO.Text = "IZBERI prvih 15 | DirectoryUser.Name AS Ime |FROM | Directory.users AS DirectoryUser"; Izberite = RequestBPZO.Execute().select(); Medtem ko Selection.next() zanka Report(Selection.Number); EndCycle; endIf; Konec postopka >

Na primer, za pridobitev podatkov o uporabnikih določenega oddelka bomo v zahtevku postavili pogoj preko parametrov. En parameter bo preproste vrste - niz, delitev pa bo povezava do elementa imenika "Struktura podjetja". Rezultat poizvedbe je tabela z navedenimi polji vrste, ki obstaja v bazi podatkov, s katero je prišlo do povezave COM. Če jih morate pretvoriti v druge vrste, uporabite standardne funkcije platforme:

  • Črta();
  • Število ();
  • Datum().
RequestBPZO = Connection.NewObject("Request"); RequestBPZO.Text = "IZBERITE prvih 15 | DirectoryUser.Name AS Ime | FROM | Directory.Users AS DirectoryUser I WHERE | DirectoryUser.Department = &RequiredDepartment | In DirectoryUser.Name kot ""%"" + &RequiredName+ ""%""" ; Zahteva BPZO.SetParameter("Potreben oddelek", Povezava. Imeniki. Struktura podjetja. Iskanje po kodi("00-000023")); RequestBPZO.SetParameter("RequiredName","Ekaterina"); Izberite = RequestBPZO.Execute().select(); Medtem ko Selection.next() zanka Report(Selection.Name); EndCycle;

Če morate prenesti matriko v bazo podatkov za izbiro na podlagi več parametrov, na primer oddelkov, se uporabi tudi ukaz NewObject. Podobno lahko posredujete seznam ali tabelo vrednosti in jih napolnite z elementi druge zbirke podatkov prek povezave. Vsi so na voljo za iskanje obstoječe metode predmeti in mehanizmi platforme.

RequestBPZO = Connection.NewObject.("Request"); RequestBPZO.Text = "IZBERITE prvih 15 | DirectoryUser.Name AS Ime | FROM | Directory.Users AS DirectoryUser I WHERE | DirectoryUser.Department B (&NecessaryDepartment) | In DirectoryUser.Name kot ""%"" + &NecessaryName+ ""%" " "; Niz oddelkov = Connection.NewObject("Array"); Array of Departments.Add(Connection.Directories.Enterprise Structure.Find By Code("00-000023")); Array of Departments.Add(Connection.Directories.Enterprise Structure.Find By Code("00-000038")); Array of Departments.Add(Connection.Directories.Enterprise Structure.Find By Code("00-000046")); Zahteva BPZO.SetParameter("Zahtevan oddelek", niz oddelkov); RequestBPZO.SetParameter("RequiredName","Ekaterina"); Izberite = RequestBPZO.Execute().select(); Medtem ko Selection.next() zanka Report(Selection.Name); EndCycle;

Pri prenosu dokumentov ali elementov imenika se vedno pojavi vprašanje kontrole prenosa določenega objekta. S pomočjo povezav COM je takšne težave mogoče rešiti z enoličnim identifikatorjem. Predmet v bazi podatkov vtičnikov morate poiskati po identifikatorju iz trenutne informacijske varnosti s funkcijo »GetLink«, pri čemer uporabite identifikator kot niz. Če ga ne najdete, ga lahko ustvarite s povezavo COM.

StrIdent = String(Directories.Users.FindByCode("00-0000313").UniqueIdentifier()); Če NI ValueFilled(Connection.Directories.Users.GetLink(Connection.NewObject("UniqueIdentifier", StrIdent))) potem NewUser = Connection.Directories.Users.CreateItem(); NewUser.Name = Directories.Users.FindByCode("00-0000313").Ime; NewUser.Individual = Directories.Users.FindByCode("00-0000313").Individual; NewUser.Write(); endIf;

Poleg tega ima povezava COM pravico do uporabe postopkov in funkcij iz običajnih modulov 1C z omogočeno lastnostjo »Zunanja povezava«. Poleg tega pogoja mora biti klicana funkcija ali postopek izvoz in ne sme vključevati interaktivnih dejanj, izvedenih na strežniku. V nasprotnem primeru boste videli napako o neveljavni operaciji.

Spojina..; VariableFunction = Povezava..; klic funkcije>splošno ime modula>klic postopka>splošno ime modula>

Možnosti zunanje povezave z drugo bazo podatkov v 1C so precej obsežne in vam lahko omogočajo opravljanje številnih nalog. Pomembno je, da znamo pravilno ovrednotiti orodja in izbrati optimalno rešitev. V večini primerov se ta veščina pojavi šele z izkušnjami ali s preučevanjem primerov dela izkušenih strokovnjakov.


Ključne besede: COM, povezava, zunanji, OLE, avtomatizacija, povezava, ComConnector, Srvr

Pri uporabi 1C:Enterprise 8.0 COM povezav za dostop do podatkov so v primerjavi z uporabo strežnika Automation naslednje prednosti:

  1. Hitrejša vzpostavitev povezave, saj ni treba ustvariti ločenega procesa operacijskega sistema in se vsa dejanja izvajajo znotraj klicnega procesa;

  2. Hitrejši dostop do lastnosti in metod objektov 1C:Enterprise, saj organizacija dostopa ne zahteva medprocesne komunikacije;
  3. Manjša poraba virov operacijskega sistema.

Na splošno je delo z 1C:Enterprise 8.0 prek povezave COM podobno delu z 1C:Enterprise v načinu avtomatizacije strežnika. Glavne razlike so naslednje:

  1. V primeru strežnika Automation se zažene polna aplikacija 1C:Enterprise 8.0, v primeru COM povezave pa se zažene relativno majhen strežnik COM v procesu.

  2. Pri delu prek povezave COM funkcionalnosti, tako ali drugače povezane z organizacijo uporabniškega vmesnika 1C:Enterprise 8.0, niso na voljo;
  3. Pri delovanju COM povezave se konfiguracijski aplikacijski modul 1C:Enterprise 8.0 ne uporablja. Njegovo vlogo pri delu s povezavo COM igra zunanji priključni modul.

1.1 Postopek za vzpostavitev COM povezave

Za organizacijo dostopa do podatkov 1C:Enterprise 8.0 prek povezave COM se izvede naslednje zaporedje dejanj:

  1. ustvari se COM objekt z identifikatorjem V8.COMConnector, s pomočjo katerega se vzpostavi povezava;

  2. pokliče se metoda Connect predhodno ustvarjenega objekta V8.COMConnector. Metoda Connect vrne povezavo do objekta povezave COM z informacijsko bazo 1C:Enterprise 8.0;
  3. Preko prejetega objekta COM povezave se dostopa do veljavnih metod, lastnosti in objektov informacijske baze, s katero je vzpostavljena povezava.

Pomembno! Zaradi pomanjkanja uporabniškega vmesnika v povezavi COM ni mogoče uporabiti vseh objektov, lastnosti in metod v povezavi COM.

Objekti 1C:Enterprise, dostopni od zunaj preko COM povezave:

  1. Izvožene spremenljivke in postopki/funkcije zunanjega modula za združevanje

  2. Izvožene spremenljivke in postopki/funkcije skupnih modulov
  3. Vključevanje in izključevanje celotnih modulov z nastavitvijo lastnosti skupnih modulov

  4. Vključevanje in izključevanje fragmentov skupnih modulov z uporabo predprocesorja
  5. Globalni kontekst 1C:Enterprise 8.0, z izjemo objektov, tesno povezanih z odjemalsko aplikacijo (TextDocument, TabularDocument, ...)

1.2 Zunanji priključni modul

Kot smo že omenili, naloge aplikacijskega modula pri delu prek povezave COM opravlja zunanji povezovalni modul. Ta modul ima lahko procedure za obravnavo dogodkov When SystemStarts() in WhenSystemCompletes(), ki lahko vsebujejo dejanja, izvedena ob inicializaciji oziroma prekinitvi povezave.

Postopki, funkcije in globalne spremenljivke, definirane v zunanjem modulu pridružitve s ključno besedo Export, postanejo, tako kot v primeru aplikacijskega modula, del globalnega konteksta.

1.3 Skupni moduli

Za običajne module so bile uvedene lastnosti »Odjemalec«, »Strežnik« in »Zunanja povezava«. Namenjeni so določanju v konfiguraciji uporabe modulov v različici odjemalec - strežnik in v načinu povezave COM.

1.4 Objekt "V8.COMConnector"

Edina naloga, ki jo rešuje COM objekt V8.COMConnector, je vzpostavitev COM povezave z informacijsko bazo 1C:Enterprise 8.0. Z enim primerkom objekta V8.COMConnector je mogoče vzpostaviti neomejeno število povezav. Objekt V8.COMConnector ima eno samo metodo Connect, namenjeno vzpostavitvi COM povezave z informacijsko bazo 1C:Enterprise 8.0.

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

Povezava s sistemom informacijske varnosti je veriga fragmentov oblike Parameter=Vrednost. Fragmenti so med seboj ločeni z ";". Če vrednost vsebuje presledke, mora biti priložena dvojni narekovaji (").

Skupni parametri:

Usr - uporabniško ime;
Pwd - geslo.

Za različico datoteke je definiran naslednji parameter:

Datoteka - imenik informacijske baze.

Za možnost odjemalec-strežnik so določeni naslednji parametri:

Srvr - ime strežnika 1C:Enterprise;
Ref - ime informacijske baze na strežniku.

Metoda Connect vzpostavi povezavo COM z informacijsko bazo 1C:Enterprise 8.0 in vrne povezavo do objekta povezave COM.

// Objekt konektorja je ustvarjen
V8 = Nov COMObject("V8.COMConnector");
// ustvarjen je objekt povezave COM
Povezava = V8.Connect("File=""c:\InfoBases\Trade""; Usr=""Director"";")

1.5 Objekt povezave COM

Povezava COM z informacijsko bazo 1C:Enterprise omogoča popoln dostop do njenega globalnega konteksta (glejte »Kontekst izvajanja programskega modula«). Zato ima lahko povezava COM kot metode: sistemske konstante, vrednosti, določene v konfiguratorju objektov, do katerih dostopate z upravitelji (na primer konstante, oštevilčenja, imeniki, dokumenti, dnevniki dokumentov, poročila, obdelave, načrti za vrste karakteristik, načrti kontov, načrti kalkulacijskih tipov, registri), kot tudi spremenljivke, deklarirane v zunanjem povezovalnem modulu s ključno besedo Export.

Poleg tega ima povezava COM dodatno metodo NewObject, ki jo je mogoče uporabiti za ustvarjanje vrednosti določenih vrst.

tk = Povezava. NewObject("Vrednostna tabela");

String method Omogoča pridobitev nizovnih predstavitev vrednosti 1C:Enterprise.

Pogled = Connection.String(Data.UniqueIdentifier());

1.6. Značilnosti dela s povezavo COM

V avtomatizaciji in v povezavi COM imata TRUE in FALSE naslednje vrednosti: -1 (minus ena) in 0.

Možno je organizirati bazen COM povezav. Hkrati se na sprejemnem strežniku 1C:Enterprise VNAPREJ ustvari več objektov povezave COM, vzpostavljanje povezave pa traja še manj časa, saj ni treba ustvarjati novega objekta.

Implementiran je bil nov objekt Query Builder, zasnovan za ustvarjanje besedil poizvedb na podlagi podanih nastavitev. Ta predmet podpira funkcijo graditelja poročil, ki ni povezana z izpisom poročila v dokument preglednice in drugimi opravili, povezanimi z Uporabniški vmesnik. Ta objekt se lahko uporablja na strežniku 1C:Enterprise in v COM povezavi.

Objekte COM lahko uporabljate pri izvajanju vgrajenega jezika na strežniku 1C:Enterprise.

Napake COM se pretvorijo v izjeme vdelanega jezika.

Če konfiguracija poskuša ustvariti neveljaven objekt, npr. dokument s preglednico, v zunanjem povezovalnem modulu, v skupnem modulu ali v objektnem modulu, povezava COM morda ne bo vzpostavljena ali pa bo izjemoma prekinjena.

Ena od možnosti za izmenjavo podatkov med zbirkami podatkov 1C je izmenjava prek COM povezave.

S povezavo COM se lahko povežete iz ene baze podatkov 1C v drugo in berete ali pišete podatke. Ta metoda se lahko uporablja tako v različicah baz podatkov odjemalec-strežnik kot tudi v datotečnih bazah podatkov. V tem članku si bomo ogledali primere te vrste povezave. Primeri uporabljajo platformo 8.2.

Za aplikacijo 1C lahko ustvarite dve vrsti objektov COM. to V82.Aplikacija in V82.COMConnector. V primeru V82.Aplikacija Zažene se skoraj popolna kopija aplikacije 1C. v primeru uporabe V82.COMConnector Zažene se majhen strežniški del.
Hitrost delovanja je v tem primeru višja, vendar nekatere funkcije morda ne bodo na voljo. Predvsem delo z obrazci in skupnimi moduli, za katere lastnost dela z zunanjimi povezavami ni nastavljena. Večinoma bi morali uporabiti V82.COMConnector in samo v primeru pomanjkanja funkcionalnosti V82.Aplikacija. Razlika v hitrosti delovanja je lahko še posebej opazna pri bazah podatkov velikega obsega.

Pa začnimo

  1. Ustvarimo objekt COM
    • Za V82.Aplikacija Connection = New COMObject("V82.Application" ) ;
    • Za V82.COMConnector Connection = New COMObject("V82.COMConnector" ) ;
  2. Ustvarimo povezovalni niz
    • za strežniško različico baze ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
    • za različico datoteke baze podatkov ConnectionString = "File = " "PathKBase" "; Usr = uporabniško ime; Pwd = geslo";
  3. Povezovanje z bazo podatkov Poskus povezave = Povezava. Connect(ConnectionString) ; Sporočilo o izjemi = Novo sporočiloUporabniku; Sporočilo. Text = + ErrorDescription() ; Sporočilo. Poročati() ; EndAttempt ;
  4. Prekinitev povezave z bazo podatkov Povezava = Nedefinirano;

    Za objekt V82.Aplikacija Povezavo je treba prekiniti, sicer ostane nepopolna seja, ki jo je treba nato ročno izbrisati. V primeru V82.COMConnector povezava se samodejno prekine, ko je postopek, v katerem je bila vzpostavljena povezava, končan.In še ena malenkost.

    Za uporabnika, pod katerim se vzpostavlja povezava, mora biti v nastavitvah onemogočeno potrditveno polje »Zahtevaj potrditev ob zapiranju programa«.

Zdaj pa sestavimo vso kodo

Connection = New COMObject("V82.Application" ) ; //Povezava = Nov COMObject("V82.COMConnector"); ConnectionString = "Srvr = " "Server1C" "; Ref = " "MyBase" "; Usr = Petya; Pwd = 123" ; //ConnectionString = "Datoteka = ""C:\MyBase""; Usr = Petya; Pwd = 123"; Poskus povezave = Povezava. Connect(ConnectionString) ; Sporočilo o izjemi = Novo sporočiloUporabniku; Sporočilo. Besedilo = "Ni bilo mogoče vzpostaviti povezave z bazo podatkov"+ DescriptionError() ; Sporočilo. Poročati() ; EndAttempt ; Povezava = Nedefinirano;

Za vrsto povezave V82.Aplikacija metoda se uporablja za objekt COM, ki je bil prvotno ustvarjen, in za V82.COMConnector metoda se uporabi za povezavo. nadaljnje delo z zahtevo poteka standardna sredstva 1C. v kodi je videti takole:

Zahteva = Povezava. NewObject("Zahteva"); // Za V82.COMConnector Zahteva = Povezava. NewObject("Zahteva"); // Za V82.Aplikacija Prošnja. Besedilo = "IZBERI | Položaji Organizacij Kodeks, | Položaji organizacij. Ime|OD | Imenik. Položaji organizacij AS Položaji organizacij"; Rezultat = Zahteva. Zaženi(); Vzorec = rezultat. Izberite(); Adijo Izbor. Next() Loop EndLoop ;

Za različico 1C:Enterprise 8.3 vse ostane nespremenjeno, razen da morate pri ustvarjanju objektov COM uporabiti "V83.COMConnector" oz "V83.Aplikacija".




Vrh