Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • OS
  • Com veza za 1s. Tri stuba rada sa COM objektima

Com veza za 1s. Tri stuba rada sa COM objektima


Ključne riječi: COM, konekcija, eksterno, OLE, Automatizacija, Connect, ComConnector, Srvr

Kada se koristi za pristup podacima 1C: Enterprise 8.0 COM-veze, postoje sljedeće prednosti u odnosu na korištenje Automation servera:

  1. Brže uspostavljanje veze, jer nema potrebe za kreiranjem posebnog procesa operativnog sistema, a sve radnje se izvode unutar procesa pozivanja;

  2. Brži pristup svojstvima i metodama objekata 1C: Enterprise, jer organizacija poziva ne zahtijeva organizaciju međuprocesne komunikacije;
  3. Manja potrošnja resursa operativnog sistema.

Općenito, rad sa 1C: Enterprise 8.0 preko COM veze sličan je radu sa 1C: Enterprise u režimu automatizacije servera. Glavne razlike su sljedeće:

  1. U slučaju Automation servera, pokreće se punopravna 1C: Enterprise 8.0 aplikacija, a u slučaju COM veze pokreće se relativno mali COM server u procesu.

  2. Kada radite preko COM veze, funkcionalnost nije dostupna na ovaj ili onaj način u vezi sa organizacijom korisničkog sučelja 1C: Enterprise 8.0;
  3. Kada COM veza radi, modul aplikacije za konfiguraciju 1C: Enterprise 8.0 se ne koristi. Njegovu ulogu pri radu sa COM vezom igra eksterni vezni modul.

1.1 Procedura za uspostavljanje COM veze

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

  1. kreira se COM objekat sa identifikatorom V8.COMConnector uz pomoć kojeg se uspostavlja veza;

  2. poziva se metoda Connect prethodno kreiranog objekta V8.COMConnector. Metoda Connect vraća referencu na COM objekt veze sa 1C: Enterprise 8.0 info bazom;
  3. dobijeni COM objekt veze se koristi za pristup dozvoljenim metodama, svojstvima i objektima infobaze s kojom je veza uspostavljena.

Bitan! Zbog nedostatka korisničkog interfejsa u COM vezi, ne mogu se svi objekti, svojstva i metode koristiti u COM vezi.

1C: Poslovni objekti dostupni izvana preko COM veze:

  1. Izvezene varijable i procedure / funkcije vanjskog modula spajanja

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

  4. Uključivanje i isključivanje fragmenata zajedničkih modula pomoću pretprocesora
  5. Globalni kontekst 1C: Enterprise 8.0, osim za objekte koji su čvrsto povezani sa klijentskom aplikacijom (TextDocument, TabularDocument, ...)

1.2 Eksterni priključni modul

Kao što je već napomenuto, odgovornosti aplikativnog modula pri radu preko COM veze obavlja vanjski modul veze. Ovaj modul može imati rukovatelje procedura za događaj AtSystemWorkingSystemWorking () i SystemWorkingCompletion (), u koje se mogu smjestiti akcije izvršene tokom inicijalizacije i prekida veze.

Procedure, funkcije i globalne varijable definirane u modulu eksterne veze s ključnom riječi Export postaju, kao iu slučaju modula aplikacije, dio globalnog konteksta.

1.3 Zajednički moduli

Za uobičajene module uvode se svojstva "Klijent", "Server" i "Spoljna veza". Oni su namijenjeni da u konfiguraciji definiraju upotrebu modula u verziji klijent-server iu načinu COM-veze.

1.4 Objekt "V8.COMConnector"

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

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

Niz IB veze je lanac fragmenata oblika Parametar = Vrijednost. Fragmenti su međusobno odvojeni simbolima ";". Ako vrijednost sadrži znakove razmaka, mora se staviti u dvostruke navodnike (").

Uobičajeni parametri:

Usr - korisničko ime;
Pwd - lozinka.

Parametar je definiran za varijantu datoteke:

Fajl - direktorij baze podataka.

Za verziju klijent-server, parametri su definirani:

Srvr - 1C: Ime servera preduzeća;
Ref je naziv infobaze na serveru.

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

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

1.5 Objekt "COM veza"

COM-veza sa informacijskom bazom 1C: Enterprise omogućava potpun pristup njegovom globalnom kontekstu (pogledajte „Kontekst izvršavanja programskog modula“). Stoga COM veza može imati kao svoje metode: sistemske konstante, vrijednosti objekata navedenih u konfiguratoru, pristup kojima se vrši pomoću menadžera (na primjer, konstante, nabrajanja, referentne knjige, dokumenti, časopisi dokumenata, izvještaji, obrada, grafikoni tipova karakteristika, planovi konta, dijagrami tipova obračuna, registri), kao i varijable deklarisane u modulu eksterne veze ključnom rečju Export.

Osim toga, COM veza ima dodatnu metodu NewObject koju možete koristiti za kreiranje vrijednosti određenih tipova.

tz = Veza. NewObject ("Tabela vrijednosti");

String metoda Omogućava vam primanje string prikaza vrijednosti 1C: Enterprise.

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

1.6. Karakteristike rada sa COM-vezom

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

Moguće je organizirati skup COM veza. Istovremeno, na serveru primanja na serveru 1C: Enterprise unaprijed se kreira nekoliko objekata COM veze i potrebno je još manje vremena za uspostavljanje veze, jer nema potrebe za kreiranjem novog objekta.

Implementiran je novi objekat QueryBuilder, dizajniran da generiše tekstove upita na osnovu specificiranih postavki. Ovaj objekt podržava funkcionalnost graditelja izvještaja, koja nije povezana s izlazom izvještaja u dokument proračunske tablice i drugim zadacima koji se odnose na korisničko sučelje. Ovaj objekt se može koristiti na 1C: Enterprise serveru iu COM vezi.

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

COM greške se konvertuju u iznimke ugrađenog jezika.

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

Kada želimo da vidimo podatke iz više tabela istovremeno, tj. da bi se nekoliko tabela sakupilo u jednu, javlja se koncept spajanja tabela i relacija između njih. Postoje četiri vrste veza:

  • lijevo;
  • u redu,
  • interni;
  • kompletan.

Svaki tip ćemo razmotriti na apstraktnom primjeru. Postoje 2 tabele, u prvoj čuvamo opisne informacije o nomenklaturi, u drugoj o njenim ostacima:

Da bismo ga dobili iz ovih tabela, moramo eksplicitno naznačiti koja polja ćemo povezati, po kom uslovu i tipu. Sada će biti jasnije.

Lijeva veza

Koristeći lijevo spajanje, kažemo sistemu da kao rezultat želimo vidjeti sve zapise iz lijeve tablice i zapise s desne strane koji zadovoljavaju uvjet povezivanja. Pretpostavimo da povezujemo tabele po polju proizvoda sa uslovom jednakim, tada dobijamo tabelu oblika:

Request.Text =
„ODABIR
| Nomenklatura proizvoda,
| Nomenklatura.Boja AS Boja
| Residues.Boja AS Boja
| Ostaci, iznos
OD

";

Za stolicu nisu pronađena preslikavanja iz tabele reziduala, tako da su polja popunjena sa NULL vrijednostima, koje se moraju obraditi funkcijom ISNULL, pogledajte Funkcije 1C 8 jezika upita.

Lijevo spajanje funkcionira otprilike kao petlja u petlji - uzima se prvi zapis iz lijeve tablice i svi zapisi s desne strane se skeniraju da bi se vidjelo da li je uvjet veze zadovoljen. Zatim se uzima drugi zapis sa lijeve tabele i tako dalje. Ako iznenada uslov veze bude zadovoljen sa nekoliko zapisa iz desne tabele, tada će se u rezultujuću tabelu dodati nekoliko redova (po broju uspešnih veza). Kao što vidite, rezultujuća tabela nije informativna, podaci nisu odražavaju stvarnu suštinu, stoga je bolje povezati ove tabele u dva polja: Proizvod i Boja, samo što ćemo ovaj put obrađivati ​​NULL:

Request.Text =
„ODABIR
| Nomenklatura proizvoda,
| Nomenklatura.Boja,
| IS NULL (Stanje.Količina, 0) KAO količina
OD
| Nomenklatura AS Nomenklatura
| LEFT JOIN Ostaje KAO ostaje
| Nomenklatura softvera.Proizvod = Stanje.Proizvod

Prava veza

Desni spoj se u suštini ne razlikuje od lijevog spoja. Ako zamijenite tabele, onda će se desni spoj pretvoriti u lijevi, štoviše, kada se koristi konstruktor, sam sistem pretvara sve desne spojeve u lijeve.

Interna veza

Koristeći unutrašnje spajanje, kažemo sistemu da kao rezultat želimo da vidimo samo one zapise koji zadovoljavaju uslov veze i iz desne i iz leve tabele. Dakle, broj rezultujućih zapisa će biti manji ili jednak broju zapisa najkraće tabele koja učestvuje u pridruživanju. Primijenimo unutrašnje spajanje na polja Proizvod i Boja naših tabela:

Request.Text =
„ODABIR
| Nomenklatura proizvoda,
| Nomenklatura.Boja,
| Balans.Quantity AS Količina
OD
| Nomenklatura AS Nomenklatura
| UNUTRAŠNJI PRIKLJUČAK Ostaci KAO ostaci
| Nomenklatura softvera.Proizvod = Stanje.Proizvod
| I Nomenklatura.Boja = Preostaje.Boja ";

Potpuna veza

Puno spajanje će prenijeti na rezultat sve zapise iz obje tabele, oni zapisi koji zadovoljavaju uslov veze biće povezani, oni zapisi koji ne zadovoljavaju uslov veze će se i dalje pojaviti kao rezultat upita, ali sa dijelom NULL polja . Pun je kao lijeva i desna veza u jednom.

Na ovu temu može biti mnogo zadataka, pokušajmo riješiti jedan od njih. Naša organizacija je diler 2 fabrike nameštaja: "Zarya" i "Rassvet". Asortiman sa troškovima svake od tvornica pohranjen je u različitim tabelama. Potrebno je sastaviti jedinstven cjenik, i u njega uvesti proizvode po najnižoj cijeni:

Primenićemo potpunu vezu sa izborom svih polja, povezićemo po proizvodu:

Request.Text =
„ODABIR
| Nomenklatura Zarya Proizvod AS Proizvod Zarya,
| Nomenklatura Dawn Cijena AS Cijena Dawn,
| NomenklaturaDawn.Proizvod AS ProductDawn,
| Nomenklatura Dawn Cijena AS Cijena Dawn
OD

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

Request.Text =
„ODABIR
// IS NULL je raspravljano u odjeljku o funkcijama jezika upita
// ako cijena nije definirana, onda je inicijalizirati
// zašto 1.000.000 vidi objašnjenje ispod
| IS NULL (NomenclatureDawn.Price, 1000000) AS PriceDawn,
| ISNULL (NomenklaturaDawn.Price, 1000000) AS PriceDawn
OD
| Nomenklatura Dawn AS Nomenklatura Dawn
| PUNA POVEZANOST Nomenklatura Dawn KAO Nomenklatura Zora
| Nomenklatura softveraZarya.Tovar = NomenklaturaRassvet.Tovar ";

Ostaje samo odabrati minimalnu cijenu. Konačni tekst zahtjeva će izgledati ovako:

Request.Text =
„ODABIR
| POSTOJI NULL (NomenclatureDawn.Proizvod, NomenclatureDawn.Proizvod) KAO proizvod,
| IZBOR
| WHEN ISNULL (NomenclatureDawn.Cijena, 1000000)> ISNULL (NomenclatureDawn.Price, 1000000)
| THEN IS NULL (Nomenklatura Dawn.Cijena, 1000000)
| ELSE IS NULL (Nomenklatura Zarya.Cijena, 1000000)
| END AS Cijena
OD
| Nomenklatura Dawn AS Nomenklatura Dawn
| PUNA POVEZANOST Nomenklatura Dawn KAO Nomenklatura Zora
| Nomenklatura softveraZarya.Tovar = NomenklaturaRassvet.Tovar ";

Ako cijena nije definirana (NULL), onda se mora inicijalizirati nekom vrijednošću, inače će operacija poređenja za više/manje ispasti s greškom. cijenu inicijaliziramo nerealno velikim iznosom tako da ona "gubi" u operaciji poređenja, jer prema iskazu problema biramo najnižu cijenu.

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

Jedna od opcija za razmjenu podataka između 1C baza je razmjena putem COM veze.

Koristeći COM vezu, možete se povezati s drugom iz jedne 1C baze podataka i čitati ili pisati podatke. Ova metoda se može koristiti iu klijent-server verzijama baza podataka iu bazama podataka datoteka. U ovom članku ćemo analizirati primjere ove vrste veza. Primjeri koriste platformu 8.2.

Možete kreirati dvije vrste COM objekata za 1C aplikaciju. Ovo V82.Primjena i V82.COMConnector... U slučaju da V82.Primjena pokrenuta je gotovo potpuna instanca 1C aplikacije. u slučaju upotrebe V82.COMConnector pokreće se mali serverski dio.
Radna brzina je veća u ovom slučaju, ali neke funkcije možda neće biti dostupne. Konkretno, rad sa obrascima i uobičajenim modulima za koje nije podešeno svojstvo rada sa eksternim spojevima. Uglavnom morate koristiti V82.COMConnector i to samo u slučaju nedostatka funkcionalnosti V82.Primjena... Razlika u brzini može biti posebno uočljiva na velikim bazama podataka.

Pa počnimo

  1. Kreirajmo COM objekat
    • za V82.Primjena Veza = Novi COMObject ("V82.Application");
    • za V82.COMConnector Veza = Novi COMObject ("V82.COMConnector");
  2. Formiramo niz veze
    • za serversku verziju baze podataka ConnectionString = "Srvr =" "ServerName" "; Ref =" "BaseName";
    • za verziju datoteke baze podataka ConnectionString = "Datoteka =" "Putanja do baze" "; Usr = Korisničko ime; Pwd = Lozinka";
  3. Povezujemo se sa bazom Pokušaj povezivanja = Poveži se. Connect (ConnectionString); Poruka izuzetka = Nova poruka korisniku; Poruka. Tekst = + DescriptionErrors (); Poruka. Prijaviti() ; Kraj pokušaja;
  4. Prekidamo vezu sa bazom Veza = Nedefinisano;

    Za objekt V82.Primjena imperativ je prekinuti vezu, inače će nedovršena sesija ostati da visi, koja će se onda morati ručno izbrisati. U slučaju da V82.COMConnector veza se automatski prekida na kraju procedure u kojoj je konekcija napravljena.I tu je još jedan mali trenutak.

    Za korisnika pod kojim je konekcija uspostavljena, polje za potvrdu "Zatraži potvrdu pri zatvaranju programa" u njegovim postavkama mora biti onemogućeno.

Sada sastavite sav kod zajedno.

Veza = Novi COMObject ("V82.Application"); // Veza = Novi COMObject ("V82.COMConnector"); ConnectionString = "Srvr =" "Server1C" "; Ref =" "MyBase" "; Usr = Petya; Pwd = 123"; // ConnectionString = "File =" "S: \ MyBase" "; Usr = Petya; Pwd = 123"; Pokušaj povezivanja = Poveži se. Connect (ConnectionString); Poruka izuzetka = Nova poruka korisniku; Poruka. Tekst = "Povezivanje na bazu podataka nije uspjelo"+ DescriptionErrors (); Poruka. Prijaviti() ; Kraj pokušaja; Veza = Nedefinisano;

Za vrstu veze V82.Primjena metoda se koristi za COM objekat koji je originalno kreiran, i za V82.COMConnector metoda se primjenjuje na vezu. dalji rad sa zahtjevom obavlja se pomoću standardnih 1C alata. u kodu to izgleda ovako:

Zahtjev = Veza. NewObject ("Zahtjev"); // for V82.COMConnector Zahtjev = Veza. NewObject ("Zahtjev"); // for V82.Primjena Upit. Tekst = "ODABIR | Pozicije organizacija Kodeks, | Pozicije organizacija. OD | Imenik. Položaji organizacija AS Pozicije organizacija "; Rezultat = Zahtjev. Pokreni (); Uzorak = rezultat. Odaberite() ; Tokom uzorkovanja. Sljedeće () Loop End of Loop;

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

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

Povezujemo se preko COM-a na 1C bazu

Za implementaciju COM veze u 1C koristi se poseban mehanizam koji se zove COMConnector. Ovaj objekat je instaliran sa platformom i koristi se za povezivanje infobaza. Treba napomenuti da se za verzije 8.2 i 8.3 koriste različiti nazivi objekata - "V82.COMConnector" i "V83.COMConnector", respektivno.

Zapamtite da se licenca gubi za vrijeme COM veze s bazom - ne biste se trebali zanositi simultanim izvršavanjem nekoliko veza. Ovo je posebno važno za organizacije koje imaju ograničen broj licenci. Ovaj problem se može riješiti uz pomoć planiranih zadataka koji se izvode u vrijeme odsustva aktivnih korisničkih veza s info bazom.

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

  1. Koji je to tip - fajl ili klijent-server;
  2. Gdje se nalazi;
  3. Pod kojim imenom i lozinkom ga možete unijeti;
  4. Koji podaci vas zanimaju.

Od prve tri tačke za implementaciju COM veze potrebno je formirati niz parametara. Ovisno o vrsti informacione sigurnosti, ona će se razlikovati po izgledu. Koristeći rezultirajući niz, uspostavlja se veza, uz pomoć koje možete prikupiti podatke iz druge baze podataka za analizu i obradu bilo kojim metodama.

ConnectionParametersFileIB = "Datoteka =" "Putanja_do_baze" "; Usr =" "Korisničko_ime" "; Pwd =" "Lozinka" ""; ConnectionParametersClientServerIB = "Srvr =" "Server_Name" "; Ref =" "Naziv_baze podataka" "; Usr =" "Korisničko_name" "; Pwd =" "Lozinka" "";

Funkcija povezivanja je jednostavna i ne bi trebala postavljati pitanja ako su svi parametri ispravni. Da biste ubrzali otklanjanje grešaka i analizirali moguće greške, bolje je umotati vezu u konstrukciju pokušaja. Funkcija će vratiti vrijednost tipa "COM objekat" s kojom će raditi, primajući potrebne podatke.

& AtServer funkcija ConnectKbase () exportConnectionParametersIB = "File =" "E: \ base 1c \ ERP" "; Usr =" "Administrator" "; Pwd =" "1" ""; V83COMCon = Novi COMObject ("V83.COMConnector"); Pokušaj vraćanja V83COMCon.Connect; Izvještaj o izuzetku (DescriptionErrors ()); Refund Unspecified; Kraj pokušaja; EndFunction

Preko COM veze ne možete samo odabrati podatke, već ih i dodati bazi podataka na koju se povezujete. Zapamtite da postoje 4 primitivna tipa podataka koje možemo prenijeti preko COM objekata. Ostale vrste će se morati specificirati korištenjem ugrađenih funkcija pretraživanja platforme. Imajte na umu da se globalne funkcije platforme također pozivaju preko COM veze.

Podatke primamo iz 1C baze podataka

Nakon što ste primili željeni objekt, potrebno je proč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 objekat" iz funkcije. Važno je prvo se povezati s bazom podataka, a zatim izvršiti zahtjev. Izvršenje se događa putem NewObject metode koja specificira tip objekta kao parametar u obliku stringa - "Zahtjev".

& AtServer procedura TestCOMOnServer () Connection = ConnectKobase (); IfTypeZnch (veza) Tip ("Nedefinirano") Zatim RequestBPZO = Connection.NewObject ("Zahtjev"); QueryBPZO.Text = "IZABIR prvih 15 | Ime korisnika. imenika AS Ime | FROM | Direktorij.users ASDirectoryUser"; Dohvati = QueryBPZO.Run (). Odaberite (); Dok Sample.next () ciklus Izvještaj (Sample.Number); Kraj ciklusa; EndIf; Kraj procedure>

Na primjer, da bismo dobili informacije o korisnicima određenog odjela, u zahtjevu ćemo postaviti uvjet kroz parametre. Jedan parametar će biti jednostavnog tipa - string, i odjel - veza do elementa kataloga "Struktura preduzeća". Rezultat upita je tabela sa navedenim poljima istog tipa kao što postoje u bazi podataka na koju je uspostavljena COM veza. Ako ih trebate pretvoriti u druge tipove, koristite standardne funkcije platforme:

  • Linija();
  • Broj();
  • Datum().
RequestBPZO = Connection.NewObject ("Zahtjev"); QueryBPZO.Text = "SELECT prvih 15 | DirectoryUser.Name KAO Ime | FROM | Directory.Users LIKE DirectoryUser I WHERE | DirectoryUser.Division = & NecessaryDivision | I DirectoryUser.Name kao" "%" "+ & DesiredName +" "%" "" ; RequestBPZO.SetParameter ("NecessaryUnit", Connection. References. EnterpriseStructure.FindByCode ("00-000023")); RequestBPZO.SetParameter ("NecessaryName", "Ekaterina"); Dohvati = QueryBPZO.Run (). Odaberite (); Dok Selection.next () ciklus Izvještaj (Selection.Name); Kraj ciklusa;

Ako trebate prenijeti niz u bazu radi odabira po nekoliko parametara, na primjer, odjeljenja, također se koristi naredba NewObject. Slično, možete prenijeti listu ili tablicu vrijednosti, popunjavajući ih elementima druge baze putem veze. Sve postojeće metode objekata i mehanizama platforme dostupne su vam za pretraživanje.

RequestBPZO = Connection.NewObject ("Zahtjev"); QueryBPZO.Text = "IZABIR prvih 15 | Ime korisnika imenika KAO Ime | FROM | Directory.Korisnici LIKE DirektorijKorisnici I GDJE | DirectoryUser.Division B (& NecessaryDivision) | I DirectoryUser.Name kao" "%" "+ & DesiredName +" " %" ""; OU Array = Connection.NewObject ("Niz"); Subdivisions Array.Add (Veza. Reference. EnterpriseStructure.FindByCode ("00-000023")); Subdivisions Array.Add (Veza. Reference. EnterpriseStructure.FindByCode ("00-000038")); Subdivisions Array.Add (Veza. Reference. EnterpriseStructure.FindByCode ("00-000046")); RequestBPZO.SetParameter ("NecessaryUnit", ArrayUnits); RequestBPZO.SetParameter ("NecessaryName", "Ekaterina"); Dohvati = QueryBPZO.Run (). Odaberite (); Dok Selection.next () ciklus Izvještaj (Selection.Name); Kraj ciklusa;

Prilikom prijenosa dokumenata ili elemenata kataloga uvijek se postavlja pitanje kontrole prijenosa određenog objekta. Uz pomoć COM veza, takve probleme možete riješiti putem jedinstvenog identifikatora. Morate pronaći objekt u bazi podataka koja se može priključiti po identifikatoru iz trenutnog IB-a koristeći funkciju "GetLink" koristeći identifikator u obliku niza. Ako nije pronađen, možete ga kreirati pomoću COM veze.

StrIdent = String (Reference.Users.FindByCode ("00-0000313"). UniqueIdentifier ()); Ako NIJE ValueFilled (Connection.References.Users.GetRef (Connection.NewObject ("UniqueIdentifier", StrIdent))) onda NewUser = Connection.References.Users.CreateItem (); NewUser.Name = Directories.Users.FindByCode ("00-0000313").Naziv; NewUser.Physical = Referentne knjige.Users.FindByCode ("00-0000313").Fizička osoba; NewUser.Write (); EndIf;

Također, COM veza ima pravo da koristi procedure i funkcije iz uobičajenih 1C modula sa omogućenim svojstvom "Spoljna veza". Pored ovog uvjeta, pozvana funkcija ili procedura mora biti eksportabilna i ne mora uključivati ​​interaktivne radnje izvedene na poslužitelju. U suprotnom, vidjet ćete grešku da je operacija nevažeća.

Compound..; VariableOfFunction = Veza ..; poziv funkcije> zajednički naziv modula> poziv procedure> zajednički naziv modula>

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

Top srodni članci