Kako postaviti pametne telefone i računala. Informativni portal

Com veza u 1s. Tri kita rada s COM objektima


Ključne riječi: COM, veza, vanjski, OLE, automatizacija, povezivanje, ComConnector, Srvr

Kada koristite 1C:Enterprise 8.0 COM veze za pristup podacima, postoje sljedeće prednosti u usporedbi s korištenjem poslužitelja automatizacije:

  1. Brža uspostava veze, budući da ne zahtijeva kreiranje zasebnog procesa operacijskog sustava, a sve radnje se izvode unutar procesa pozivanja;

  2. Brži pristup svojstvima i metodama objekata 1C:Enterprise, budući da organizacija žalbe ne zahtijeva organizaciju međuprocesne komunikacije;
  3. Manja potrošnja resursa operativnog sustava.

Općenito, rad s 1C:Enterprise 8.0 putem COM veze sličan je radu s 1C:Enterprise u načinu poslužitelja automatizacije. Glavne razlike su sljedeće:

  1. U slučaju poslužitelja za automatizaciju, pokreće se potpuna aplikacija 1C:Enterprise 8.0, au slučaju COM veze pokreće se relativno mali COM poslužitelj u procesu.

  2. Kada radite preko COM veze, funkcionalnost nije dostupna na ovaj ili onaj način povezana s organizacijom korisničkog sučelja 1C:Enterprise 8.0;
  3. Pri radu s COM vezom ne koristi se konfiguracijski aplikacijski modul 1C:Enterprise 8.0. Njegovu ulogu pri radu s COM vezom igra vanjski priključni modul.

1.1 Kako uspostaviti COM vezu

Da biste organizirali pristup podacima 1C:Enterprise 8.0 putem COM veze, izvodi se sljedeći niz radnji:

  1. kreira se COM objekt s identifikatorom V8.COMConnector , uz pomoć kojeg se uspostavlja veza;

  2. poziva se metoda Connect prethodno kreiranog V8.COMConnector objekta. Metoda Connect vraća vezu na objekt COM veze s informacijskom bazom 1C:Enterprise 8.0;
  3. preko primljenog COM objekta veze pristupa se dopuštenim metodama, svojstvima i objektima infobaze s kojom se uspostavlja veza.

Važno! Zbog nedostatka korisničkog sučelja u COM vezi, ne mogu se koristiti svi objekti, kao ni svojstva i metode u COM vezi.

1C:Enterprise objekti dostupni izvana putem COM veze:

  1. Izvezene varijable i postupci/funkcije modula vanjske veze

  2. Izvezene varijable i procedure/funkcije zajedničkih modula
  3. Uključivanje i isključivanje cijelih modula postavljanjem zajedničkih svojstava modula

  4. Uključivanje i isključivanje fragmenata uobičajenih modula pomoću pretprocesora
  5. Globalni kontekst 1C:Enterprise 8.0, s izuzetkom objekata koji su čvrsto povezani s klijentskom aplikacijom (TextDocument, SpreadsheetDocument, ...)

1.2 Vanjski priključni modul

Kao što je već navedeno, dužnosti aplikacijskog modula pri radu preko COM veze obavlja vanjski modul veze. Ovaj modul može imati procedure rukovatelja događajima AtStartSystemWork() i AtShutdownSystem(), koje mogu sadržavati radnje koje se trebaju izvršiti tijekom inicijalizacije odnosno prekida veze.

Procedure, funkcije i globalne varijable definirane u modulu vanjskog spajanja s ključnom riječi Export postaju, kao u slučaju aplikacijskog modula, dio globalnog konteksta.

1.3 Opći moduli

Svojstva "Klijent", "Poslužitelj" i "Vanjska veza" uvedena su za uobičajene module. Namijenjeni su da u konfiguraciji definiraju korištenje modula u verziji klijent-poslužitelj i u načinu COM veze.

1.4 Objekt "V8.COMConnector".

Jedini zadatak koji rješava V8.COMConnector COM objekt je uspostavljanje COM veze s 1C:Enterprise 8.0 infobazom. S jednom instancom V8.COMConnector objekta može se uspostaviti neograničen broj veza. Objekt V8.COMConnector ima jednu metodu Connect koja se koristi za uspostavljanje COM veze s 1C:Enterprise 8.0 infobazom.

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

Niz veze IB je lanac fragmenata oblika Parametar=Vrijednost. Fragmenti su međusobno odvojeni znakom ";". Ako vrijednost sadrži razmake, mora biti u dvostrukim navodnicima (").

Uobičajeni parametri:

usr - korisničko ime;
pwd - lozinka.

Za varijantu datoteke definiran je sljedeći parametar:

Datoteka - imenik infobaze.

Za verziju klijent-poslužitelj definirani su sljedeći parametri:

Srvr - naziv poslužitelja 1C:Enterprise;
Ref - naziv infobaze na poslužitelju.

Metoda Connect uspostavlja COM vezu s informacijskom bazom 1C:Enterprise 8.0 i vraća referencu na objekt COM veze.

// Stvoren je objekt konektora
V8 = Novi COMObject("V8.COMConnector");
// kreirati objekt COM veze
Connection = V8.Connect("File=""c:\InfoBases\Trade""; Usr =""Director"";")

1.5 Objekt "COM veza".

COM veza s informacijskom bazom 1C:Enterprise omogućuje potpuni pristup njezinom globalnom kontekstu (pogledajte "Kontekst izvršavanja modula programa"). Stoga COM veza može imati svoje metode: konstante sustava, vrijednosti objekata navedenih u konfiguratoru, kojima se pristupa pomoću upravitelja (na primjer, konstante, enumeracije, direktoriji, dokumenti, zapisnici dokumenata, izvješća, obrada, planovi vrsta karakteristike, planovi, računi, kalkulacijski tipovi planovi, registri), kao i varijable deklarirane u modulu vanjske veze s ključnom riječi Export.

Osim toga, COM veza ima dodatnu metodu NewObject koja se može koristiti za stvaranje vrijednosti određenih vrsta.

ts = Veza. NewObject("Tablica vrijednosti");

String metoda Omogućuje vam da dobijete string prikaze vrijednosti 1C:Enterprise.

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

1.6. Značajke rada s COM vezom

U automatizaciji i na COM vezi, TRUE i FALSE imaju vrijednosti -1 (minus jedan) i 0.

Moguće je organizirati skup COM veza. Istovremeno se na hostu na poslužitelju 1C:Enterprise UNAPRIJED kreira nekoliko objekata COM veze, a za uspostavljanje veze potrebno je još manje vremena jer nema potrebe za kreiranjem novog objekta.

Implementiran je novi objekt Query Builder, dizajniran za generiranje teksta upita na temelju navedenih postavki. Ovaj objekt podržava funkcionalnost alata za izradu izvješća koja nije povezana s prikazom izvješća u dokumentu proračunske tablice i drugim zadacima povezanim s korisničkim sučeljem. Ovaj objekt se može koristiti na poslužitelju 1C:Enterprise iu COM vezi.

Upotreba COM objekata dostupna je kada je ugrađeni jezik pokrenut na poslužitelju 1C:Enterprise.

COM pogreške prevode se u iznimke 1C:Enterprise.

Ako konfiguracija pokuša stvoriti nevažeći objekt, kao što je dokument proračunske tablice, u modulu vanjske veze, u zajedničkom modulu ili u modulu objekta, tada se COM veza možda neće uspostaviti ili prekinuti s iznimkom.

Kada želimo vidjeti podatke iz više tablica u isto vrijeme, tj. da biste sakupili nekoliko tablica u jednu, javlja se koncept spajanja tablica i odnosa među njima. Priključci su četiri vrste:

  • lijevo;
  • pravo,
  • unutarnji;
  • potpuna.

Svaku vrstu ćemo razmotriti na apstraktnom primjeru. Postoje 2 tablice, u prvoj pohranjujemo opisne podatke o nomenklaturi, u drugoj o njezinim ostacima:

Da bismo dobili jednu iz ovih tablica, moramo eksplicitno odrediti koja polja ćemo povezati, po kojem uvjetu i vrsti. Sada će biti jasnije.

Lijevo pridruživanje

Koristeći lijevo spajanje, kažemo sustavu da kao rezultat želimo vidjeti sve zapise s lijeve tablice i zapise s desne koji zadovoljavaju uvjet veze. Recimo da povežemo tablice poljem proizvoda s uvjetom jednakosti, tada dobijemo tablicu oblika:

Zahtjev.Tekst =
„IZABIRAJ
| Nomenklatura. Proizvod,
| Nomenklatura. Boja KAO Nomenklatura boja,
| Ostaci. Boja KAO Ostaci boje,
| Ostaci.Količina
| OD

";

Za stolicu nije bilo podudaranja iz tablice reziduala, pa su polja ispunjena NULL vrijednostima, koje mora obraditi funkcija ISNULL, pogledajte Funkcije upitnog jezika 1C 8.

Lijevi spoj funkcionira kao petlja unutar petlje - uzima prvi zapis iz lijeve tablice i prolazi kroz sve zapise iz desne tablice kako bi zadovoljio uvjet veze. Zatim se uzima drugi zapis iz lijeve tablice i tako dalje. Ako nekoliko zapisa iz desne tablice iznenada zadovolji uvjet veze, tada će se nekoliko redaka dodati u rezultirajuću tablicu (prema broju uspješnih veza). Kao što vidite, rezultirajuća tablica nije informativna, podaci ne odražavaju prava suština, pa je bolje ove tablice povezati po dva polja: Proizvod i Boja, samo što ćemo ovaj put obraditi NULL-ove:

Zahtjev.Tekst =
„IZABIRAJ
| Nomenklatura. Proizvod,
| Nomenklatura. Boja,
| ISNULL(Ostaje.Količina, 0) AS Količina
| OD
| Nomenklatura KAO Nomenklatura
| LEFT JOIN Reziduali KAO Reziduali
| Softverska nomenklatura.Proizvod = Ostaci.Proizvod

Pravo pridružiti

Desna veza se u biti ne razlikuje od lijeve. Ako zamijenite tablice, desni spoj će se pretvoriti u lijevi, štoviše, kada koristite konstruktor, sustav će sam pretvoriti sve desne spojeve u lijeve.

Unutarnji spoj

Koristeći unutarnje spajanje, kažemo sustavu da kao rezultat želimo vidjeti samo one zapise koji zadovoljavaju uvjet veze i iz desne i iz lijeve tablice. Stoga će broj rezultirajućih zapisa biti manji ili jednak broju zapisa same "kratke tablice" uključene u spajanje. Primijenimo unutarnje spajanje na polja proizvoda i boja naših tablica:

Zahtjev.Tekst =
„IZABIRAJ
| Nomenklatura. Proizvod,
| Nomenklatura. Boja,
| Ostaci. Količina KAO Količina
| OD
| Nomenklatura KAO Nomenklatura
| UNUTARNJI SPOJ Reziduali KAO Reziduali
| Softverska nomenklatura.Proizvod = Ostaci.Proizvod
| I Nomenklatura.Boja = Ostaci.Boja";

Puna veza

Puno spajanje će u rezultat proslijediti sve zapise iz obje tablice, oni zapisi koji zadovoljavaju uvjet povezivanja bit će povezani, oni zapisi koji ne zadovoljavaju uvjet povezivanja i dalje će biti u rezultatu upita, ali s dijelom NULL polja. Komplet je, takoreći, lijevi i desni spoj u jednom.

Na ovu temu može biti mnogo zadataka, pokušajmo riješiti jedan od njih. Naša organizacija je zastupnik 2 tvornice namještaja: Zarya i Rassvet. Asortiman s cijenom svake od tvornica pohranjen je u različitim tablicama. Potrebno je izraditi jedinstveni cjenik, te u njega uzeti proizvode po najnižoj cijeni:

Primijenimo potpunu vezu s izborom svih polja, spojit ćemo po proizvodu:

Zahtjev.Tekst =
„IZABIRAJ
| Nomenklatura Zarya Stavka AS Stavka Zarya,
| NomenklaturaZarya.Price AS PriceZarya,
| Nomenklatura Dawn. Stavka AS Stavka Dawn,
| NomenclatureDawn.Price AS PriceDawn
| OD

Ovo nije baš ono što nam treba, kombinirajmo polje proizvoda u jedno i obradimo NULL-ove:

Zahtjev.Tekst =
„IZABIRAJ
//konstruiraj ISNULL raspravljalo se u odjeljku o funkciji jezika upita
//ako cijena nije definirana, inicijalizirajte je
//zašto 1000000 pogledajte objašnjenja u nastavku
| ISNULL(NomenklaturaZarya.Price, 1000000) AS PriceZarya,
| ISNULL(NomenclatureDawn.Price, 1000000) AS PriceDawn
| OD
| NomenklaturaZarya AS NomenklaturaZarya
| POTPUNA VEZA NomenclatureDawn KAO NomenclatureDawn
| ON NomenclatureDawn.Product = NomenclatureDawn.Product";

Ostaje samo odabrati minimalnu cijenu. Konačno tijelo zahtjeva izgledat će ovako:

Zahtjev.Tekst =
„IZABIRAJ
| ISNULL(NomenclatureDawn.Item, NomenclatureDawn.Item) AS Stavka,
| IZBOR
| WHEN ISNULL(NomenclatureDawn.Price, 1000000) > ISNULL(NomenclatureDawn.Price, 1000000)
| THEN ISNULL(NomenclatureDawn.Price, 1000000)
| ELSE NULL(NomenklaturaZarya.Price, 1000000)
| KRAJ KAO CIJENA
| OD
| NomenklaturaZarya AS NomenklaturaZarya
| POTPUNA VEZA NomenclatureDawn KAO NomenclatureDawn
| ON NomenclatureDawn.Product = NomenclatureDawn.Product";

Ako cijena nije definirana (NULL), tada se mora inicijalizirati nekom vrijednošću, inače operacija usporedbe više/niže neće uspjeti s pogreškom. cijenu inicijaliziramo nerealno velikim iznosom tako da ona "gubi" u operaciji usporedbe, jer prema uvjetu problema biramo najnižu cijenu.

← Funkcije jezika upita 1C 8 | Udružuje se u upitima 1C 8 →

Jedna od mogućnosti razmjene podataka između 1C baza podataka je razmjena putem COM veze.

Pomoću COM veze možete se povezati s jedne 1C baze podataka na drugu i čitati ili pisati podatke. Ovu metodu možete koristiti i u klijent-poslužiteljskim verzijama baza podataka i u bazama podataka datoteka. U ovom ćemo članku analizirati primjere takvih spojeva. Primjeri koriste platformu 8.2.

Za aplikaciju 1C možete stvoriti dvije vrste COM objekata. to V82.Primjena i V82.COMKonektor. U slučaju V82.Primjena pokrenuta je gotovo puna kopija aplikacije 1C. u slučaju upotrebe V82.COMKonektor pokrenut je mali poslužiteljski dio.
Brzina rada u ovom slučaju je veća, ali neke funkcije možda neće biti dostupne. Konkretno, rad s obrascima i zajedničkim modulima za koje nije postavljeno svojstvo rada s vanjskim vezama. Uglavnom biste trebali koristiti V82.COMKonektor i to samo u slučaju nedostatka funkcionalnosti V82.Primjena. Razlika u brzini može biti posebno uočljiva na velikim bazama podataka.

Pa krenimo

  1. Kreirajmo COM objekt
    • za V82.Primjena Veza = Novi COMObject("V82.Application" ) ;
    • za V82.COMKonektor Veza = Novi COMObject("V82.COMConnector" ) ;
  2. Kreirajmo niz veze
    • za poslužiteljsku verziju baze podataka ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
    • za verziju datoteke baze podataka ConnectionString = "File = " "PathKBase" "; Usr = Korisničko ime; Pwd = Lozinka";
  3. Uspostavljanje veze s bazom podataka Pokušaj povezivanja = Povezivanje. Poveži(Niz veze) ; Poruka o iznimci = Nova porukaKorisniku; Poruka. Tekst = + DescriptionErrors() ; Poruka. Prijaviti() ; EndTry ;
  4. Odspajanje od baze Veza = Nedefinirano;

    Za objekt V82.Primjena obavezno je prekinuti vezu jer će u protivnom nedovršena sesija ostati visjeti, koju je potrebno ručno obrisati. U slučaju V82.COMKonektor veza se automatski prekida na kraju procedure u kojoj je veza napravljena.I postoji još jedan mali moment.

    Za korisnika pod kojim se uspostavlja veza, potvrdni okvir "Traži potvrdu pri zatvaranju programa" u njegovim postavkama mora biti isključen.

A sada spojimo sav kod

Veza = Novi COMObject("V82.Application" ) ; //Veza = Novi COMObject("V82.COMConnector"); ConnectionString = "Srvr = ""Server1C""; Ref = ""MyBase""; Usr = Peter; Pwd = 123" ; //ConnectionString = "Datoteka = ""S:\MyBase""; Usr = Peter; Pwd = 123"; Pokušaj povezivanja = Povezivanje. Poveži(Niz veze) ; Poruka o iznimci = Nova porukaKorisniku; Poruka. Tekst = "Nije moguće povezati se s bazom podataka"+ OpisPogreška() ; Poruka. Prijaviti() ; EndTry ; Veza = Nedefinirano;

Za vrstu veze V82.Primjena primjenjuje se na COM objekt koji je izvorno stvoren i za V82.COMKonektor metoda se primjenjuje na vezu. daljnji rad sa zahtjevom provodi se pomoću standardnih 1C alata. u kodu to izgleda ovako:

Zahtjev = Veza. NewObject("Zahtjev") ; // za V82.COMKonektor Zahtjev = Veza. NewObject("Zahtjev") ; // za V82.Primjena Zahtjev. Tekst = "SELECT | Položaji organizacija Kodeks, | Položaji organizacija Naziv| OD | Imenik. Položaji organizacija AS Položaji organizacija "; Rezultat = Zahtjev. Izvrši (); Uzorak = rezultat. Odaberite() ; Dok odabir. Next() Cycle EndCycle ;

Za verziju 1C:Enterprise 8.3 sve ostaje nepromijenjeno, osim što prilikom kreiranja COMObjects morate koristiti "V83.COMConnector" ili V83.Primjena.

Jedan od načina prijenosa podataka iz jedne konfiguracije 1C u drugu je softverska veza pomoću COM-a. Mnoge tvrtke koriste nekoliko različitih baza, između kojih moraju postojati određene veze i ovisnosti. Ako je potrebno ne samo prenijeti podatke, već i izvršiti određenu obradu podataka, tada će COM veza biti optimalan mehanizam. Mogućnost analize podataka iz druge baze podataka 1C korisna je svakom programeru.

Povezujemo se putem COM-a s bazom podataka 1C

Za implementaciju COM veze u 1C koristi se poseban mehanizam nazvan COMConnector. Ovaj objekt se instalira zajedno s platformom i koristi se za povezivanje infobaza. Treba napomenuti da se za verzije 8.2 i 8.3 koriste objekti različitih naziva - "V82.COMConnector" i "V83.COMConnector", respektivno.

Imajte na umu da se licenca troši za vrijeme trajanja COM veze s bazom podataka - ne biste se trebali zanositi stvaranjem nekoliko veza istovremeno. Ovo je posebno važno za organizacije koje imaju ograničen broj licenci. Ovaj se problem može riješiti uz pomoć planiranih zadataka koji se izvode tijekom odsutnosti aktivnih korisničkih veza s informacijskom bazom.

Da biste se mogli spojiti na drugu bazu podataka i zatražiti potrebne podatke, morate znati sljedeće podatke:

  1. Koja je to vrsta - datoteka ili klijent-poslužitelj;
  2. Gdje se nalazi;
  3. Pod kojim imenom i lozinkom ga možete unijeti;
  4. Koji podaci vas zanimaju.

Od prve tri točke, za implementaciju COM veze, trebate formirati niz parametara. Ovisno o vrsti IB-a, razlikovat će se po izgledu. Pomoću primljenog niza uspostavlja se veza s kojom možete prikupljati podatke iz druge baze podataka za analizu i obradu bilo kojim metodama.

ConnectionParametersFileIB = "File=""Path_to_base""; Usr=""User_name"";Pwd=""Password"""; ConnectionParametersClientServerIB = "Srvr=""Server_Name""; Ref=""Base_Name""; Usr=""User_Name""; Pwd=""Password""";

Funkcija povezivanja je jednostavna i ne bi trebala postavljati pitanja ako su svi parametri točni. Kako biste ubrzali otklanjanje pogrešaka i analizu mogućih pogrešaka, bolje je priložiti vezu u konstrukciju "Pokušaj". Funkcija će vratiti vrijednost tipa "COM objekt", s kojom ćete morati raditi, dobivajući potrebne podatke.

&AtServer funkcija ConnectToBase() izvoz Parametri vezeIB = "File=""E:\base 1c\ERP""; Usr=""Administrator"";Pwd=""1"""; V83COMCon= Novi COMObject("V83.COMConnector"); Pokušaj povratka V83COMCon.Connect(ConnectionParametersIB); Izvješće o iznimci(Opis pogreške()); Povratak Nedefinirano; Kraj pokušaja; Završne funkcije

Preko COM veze možete ne samo odabrati podatke, već ih i dodati u bazu podataka na koju se povezujete. Zapamtite da možemo prenijeti 4 primitivna tipa podataka kroz COM objekt. Ostale vrste morat će se specificirati pomoću funkcija pretraživanja ugrađenih u platformu. Imajte na umu da se funkcije globalne platforme također pozivaju putem COM veze.

Podatke primamo iz baze podataka 1C

Nakon što ste primili željeni objekt potrebno je očitati podatke iz druge baze podataka. Da bismo to učinili, primjenjujemo zahtjev putem COM veze u 1C 8.3 koristeći primljenu vrijednost tipa "COM objekt" iz funkcije. Važno je prvo se spojiti na bazu, a zatim izvršiti upit. Izvršenje se odvija putem metode NewObject s naznakom vrste objekta u obliku niza - "Zahtjev" kao parametra.

&OnServer postupak TestCOMOnServer() Connection = ConnectToBase(); If TypeValue(Connection) Type("Undefined") Then QueryBPO = Connection.NewObject("Query"); Query BPZO.Text = "SELECT prvih 15 | Korisnički imenik. Ime KAO Ime | FROM | Korisnički imenik KAO Korisnički imenik"; Odabir = QueryBPO.Run().select(); Dok Sample.next() petlja Report(Selection.Number); EndCycle; Završi ako; Kraj postupka >

Na primjer, da bismo dobili informacije o korisnicima određenog odjela, postavit ćemo uvjet u zahtjevu kroz parametre. Jedan parametar bit će jednostavnog tipa - niz, a odjel - poveznica na element direktorija "Struktura poduzeća". Rezultat upita je tablica s nabrojanim poljima vrste koja postoji u bazi podataka s kojom je došlo do COM veze. Ako ih trebate pretvoriti u druge vrste, upotrijebite standardne funkcije platforme:

  • Crta();
  • Broj();
  • Datum().
RequestBPO = Connection.NewObject("Request"); QueryBPO.Text = "SELECT first 15 | User Directory.Name AS Name |FROM | Directory.Users AS User Directory I WHERE | User Directory.Department = &DesiredDepartment | I UserDirectory.Name kao ""%"" + &DesiredName+ ""%" "" ; BPZO Request.SetParameter("Željeni odjel", Connection.Directories.Enterprise Structure.FindByCode("00-000023")); RequestBPO.SetParameter("RequiredName","Ekaterina"); Odabir = QueryBPO.Run().select(); Dok Selection.next() petlja Report(Selection.Name); EndCycle;

Ako trebate prenijeti niz u bazu podataka za odabir prema nekoliko parametara, na primjer, podjelama, također se koristi naredba NewObject. Slično, možete proslijediti popis ili tablicu vrijednosti, ispunjavajući ih elementima druge baze podataka kroz vezu. Sve postojeće metode objekata i mehanizama platforme dostupne su vam za pretraživanje.

RequestBPO = Connection.NewObject.("Request"); QueryBPO.Text = "SELECT prvih 15 | Imenik korisnika. Naziv AS Ime | FROM | Imenik. Korisnici AS Imenik korisnika I WHERE | Imenik korisnika. Odjel u (&Željeni odjel) | I imenik korisnika. Naziv poput ""%"" + & ŽeljenoName + ""%" ""; Niz podjela = Connection.NewObject("Array"); Odjeli array.Add(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000023")); Odjeli array.Add(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000038")); Odjeli array.Add(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000046")); Upit BPZO.SetParameter("Željena podjela", Niz podjela); RequestBPO.SetParameter("RequiredName","Ekaterina"); Odabir = QueryBPO.Run().select(); Dok Selection.next() petlja Report(Selection.Name); EndCycle;

Kod prijenosa dokumenata ili elemenata imenika uvijek se postavlja pitanje kontrole prijenosa određenog objekta. S COM vezama možete riješiti takve probleme putem jedinstvenog identifikatora. Morate pronaći objekt u pluggable bazi podataka pomoću identifikatora iz trenutnog IB-a pomoću funkcije "GetLink", koristeći identifikator kao niz. Ako ga nema, možete ga stvoriti pomoću COM veze.

StrIdent = String(Directories.Users.FindByCode("00-0000313").UniqueIdentifier()); Ako NIJE ValueFilled(Connection.Catalogs.Users.GetReference(Connection.NewObject("UniqueIdentifier", StrIdent))) then NewUser = Connection.Catalogs.Users.CreateItem(); NewUser.Name = Directories.Users.FindByCode("00-0000313").Name; NewUser.Individual = Directories.Users.FindByCode("00-0000313").Individual; NewUser.Write(); Završi ako;

Također, COM veza ima pravo koristiti postupke i funkcije iz zajedničkih 1C modula s omogućenom imovinom "Vanjska veza". Uz ovaj uvjet, pozvana funkcija ili procedura mora biti funkcija izvoza i ne uključuje interaktivne radnje koje se izvode na poslužitelju. U suprotnom ćete vidjeti pogrešku o nevažećoj operaciji.

Spoj..; VariableFromFunction = Veza..; poziv funkcije>zajednički naziv modula>poziv procedure>zajednički naziv modula>

Mogućnosti vanjske veze s drugom bazom podataka u 1C prilično su opsežne i mogu vam omogućiti obavljanje mnogih zadataka. Važno je znati ispravno procijeniti alate i odabrati najbolje rješenje. U većini slučajeva ova se vještina pojavljuje tek s iskustvom ili proučavanjem primjera rada iskusnih stručnjaka.

Najpopularniji povezani članci