Skedarët e tabelave të jashtme.

Përshëndetje Khabravchans!

Në këtë artikull, unë dua të flas se si është vendosur integrimi me platformën 1C në organizatën time. Ajo që më shtyu ta bëja këtë ishte mungesa pothuajse e plotë e informacion teknik në këtë temë. Duke lexuar artikuj dhe raporte të ndryshme mbi temën e lidhjes së 1C me çdo sistem informacioni, bindeni vazhdimisht se ato janë të gjitha marketing, natyrë demonstruese dhe asnjëherë teknike, duke pasqyruar problemin dhe thelbin e zgjidhjes së tij.

Ju paralajmëroj se metoda në asnjë mënyrë nuk pretendon të jetë universale. Meqenëse ka shumë konfigurime 1C vetë, dhe sistemet e informacionit, gjuhët dhe platformat - edhe më shumë, numri i kombinimeve të mundshme është i madh. Qëllimi im është të tregoj një zgjidhje të mundshme.


Si një gjuhë që do të integrohet me 1C, zgjodha Python. Është shumë i përshtatshëm për automatizimin e procesit. Kjo lehtësohet nga sintaksa minimaliste (kodi shtypet shumë shpejt), biblioteka e pasur standarde (më pak nevojë për module të palëve të treta), ndër-platformë - me një probabilitet të lartë, kodi i shkruar në Linix OS do të funksionojë me sukses në Dritaret.

Për të filluar, unë do të përshkruaj të dhënat me të cilat do të punojmë. Organizata - një kompani e furnizimit me energji elektrike në rajonin e Lindjes së Largët - u shërben afërsisht 400 mijë pajtimtarëve, baza është 1C në një konfigurim të shkruar vetë. Për çdo pajtimtar ruhen pagesat e tij, llogaritjet, shërbimet e konsumuara dhe skemat e llogaritjes, pajisjet matëse, leximet dhe shumë të dhëna të tjera.

Pasi në organizatë kishte një program të shkruar në Delphi dhe duke përdorur MSSQL / Firebird si bazë të dhënash. Në ato kohë të lavdishme, ishte e mundur të lidheshim me bazën e të dhënave duke përdorur çdo gjuhë dhe të kryeje shumë veprime - të zgjidhni pajtimtarët e debitorit, të postoni pagesat e marra, të regjistroni leximet e instrumenteve. Nuk është për t'u habitur që koleksioni i skripteve që automatizojnë rutinën ka qenë vazhdimisht në rritje. Programuesit mund të kryejnë çdo veprim pa hapur vetë programin.

Mjerisht, me kalimin në 1C, falas mbaroi - nuk ishte më e mundur të lidheshim drejtpërdrejt me bazën e të dhënave. Në përgjithësi, vetë platforma 1C është e pandashme dhe është e integruar dobët me sistemet e tjera. Është, siç thonë ata, një gjë më vete. Kur ngarkoni të dhëna në 1C, duhet të mbani mend se nuk do të jetë aq e lehtë t'i nxirrni ato prej andej. Por duke pasur parasysh faktin se organizatës i kërkohej të zbatonte sistemet e pagesave dhe Zona Personale, duhej gjetur një zgjidhje.

Detyrat kryesore me të cilat u përballa ishin aftësia për të marrë shpejt të dhëna për një specifik llogari personale- Emri i plotë, adresa, pajisjet matëse, leximet e instrumenteve, pagesat, tarifat. Plus, formimi i dokumenteve - një akt pajtimi, faturë pagese. Pra, nuk ka asnjë mundësi për një lidhje të drejtpërdrejtë me bazën e të dhënave - të gjithë ata që shikuan bazën e të dhënave 1C në serverin SQL panë që ishte e vështirë ta kuptonin atë në masën e tabelave si aaa1, aaa2. Dhe të ndërtosh pyetje me emra të tillë tabelash dhe fushash është thjesht joreale. Për më tepër, shumë tabela 1C (veçanërisht ato më të rëndësishmet, si prerja e fundit, balancat dhe rrotullimet) janë virtuale dhe janë të shpërndara nëpër tabela të ndryshme fizike, duke u mbledhur në bashkime të shumta. Kjo metodë nuk është e përshtatshme.

Platforma 1C ofron mundësinë për t'u lidhur me të përmes një lidhjeje COM. Ashtu si shumë programe të Windows, gjatë instalimit të 1C, dy objekte COM regjistrohen në sistem - Serveri i automatizimit dhe lidhësi COM. Ju mund të punoni me të dy objektet duke përdorur një gjuhë që mbështet teknologjinë COM.

Objekti i Serverit të Automatizimit është një aplikacion 1C që pothuajse nuk ndryshon nga një aplikacion i rregullt i klientit. Dallimi është se përveç kësaj ekziston mundësia e kontrollit programatik të instancës së aplikacionit. Kur punoni me objektin COM Connector, lëshohet një version i lehtë i aplikacionit 1C, në të cilin formularët nuk janë të disponueshëm, si dhe funksionet dhe metodat që lidhen me ndërfaqen dhe efektet vizuale. Vetë aplikacioni fillon në modalitetin "Lidhja e jashtme". Inicializimi i variablave globale (për shembull, përcaktimi përdoruesi aktual dhe cilësimet e tij) duhet të kryhen në modulin e lidhjes së jashtme 1C. Nëse në modalitetin e lidhjes së jashtme thirret një funksion në kod që nuk është i disponueshëm në këtë modalitet, do të hidhet një përjashtim (i cili do t'i kalohet skriptit tonë python). Thirrjet drejt funksioneve të pasigurta duhet të përshtaten me konstruksionet e formularit

#Nëse JO Lidhja e Jashtme Atëherë Paralajmërim ("Përshëndetje!"); #FundNëse

Meqenëse puna me objektet COM është një teknologji vetëm për Windows, nuk është për t'u habitur që nuk përfshihet në shpërndarjen standarde të Python. Do t'ju duhet të instaloni një shtesë - një grup modulesh që ofrojnë të gjithë funksionalitetin e nevojshëm për programim nën Windows në Python. Mund të shkarkohet si një instalues ​​exe i montuar tashmë. Vetë zgjerimi siguron qasje në regjistër, shërbimet, objektet ODBC, COM, etj. Përndryshe, mund të instaloni menjëherë shpërndarjen ActiveState Python, në të cilën shtrirja Win32 del nga kutia.

Për ca kohë kam eksperimentuar me lidhjen COM në zhvillimin e aplikacioneve në internet, në veçanti, një llogari personale. Disavantazhet e mëposhtme janë identifikuar:

Lidhja COM është e ngadaltë. Performanca e ulët është një minus i njohur i teknologjisë COM.
- Procesi i vendosjes së një lidhjeje me 1C, në varësi të konfigurimit, mund të zgjasë nga 1 deri në 8 sekonda (në rastin tim - 6 sekonda). Eshtë e panevojshme të thuhet, krijimi i një lidhjeje për secilën kërkesë do të bëjë që çdo faqe të ngarkohet në 8 sekonda.
- Meqenëse aplikacionet në ueb python funksionojnë si serverë të pavarur, pika e mëparshme mund të kompensohet duke ruajtur lidhjen në disa ndryshore globale dhe duke e rivendosur atë në rast gabimi. Si të mbaj një lidhje në PHP, unë, sinqerisht, nuk kam menduar ende.
- Ueb aplikacion i humbur ndër-platformë.

Bazuar në pikat e listuara më sipër, u vendos që të ndryshohet parimi i ndërveprimit, duke e ndarë atë në 2 pjesë - e para e varur nga platforma (Windows), duke shkarkuar të dhënat 1C në çdo format të përshtatshëm dhe e dyta, e pavarur nga platforma, e aftë për të duke punuar me të dhëna pa dyshuar asgjë për 1C në parim.

Strategjia e veprimit është si më poshtë: skripti python lidhet me 1C, ekzekuton pyetjet e nevojshme dhe ngarkon të dhënat në bazën e të dhënave SQLite. Ju mund të lidheni me këtë bazë të dhënash nga Python, PHP, Java. Shumica e projekteve tona janë në python, dhe meqenëse e urrej të shkruaj me dorë pyetje të papërpunuara SQL, e gjithë puna me bazën e të dhënave SQLite bëhet përmes ORM SQLAlchemy. Ishte e nevojshme vetëm të përshkruhej struktura e të dhënave të bazës së të dhënave në një stil deklarativ:

Nga sqlalchemy.ext.importi deklarativ declarative_base nga sqlalchemy import Kolona, ​​Integer, Numeric, DateTime, Unicode, Boolean, LargeBinary, ForeignKey Base = declarative_base() class Abonent(Base): __emri i tabelës__" = "Numri i parësor__n E vërtetë) llogari = Kolona(Unicode(32), indeksi=E vërtetë) kodi = Kolona(Unicode(32)) adresa = Kolona(Unicode(512)) fio = Kolona(Unicode(256)) burimi = Kolona(Unicode(16) ) psu = Column(Unicode(256)) tso = Column(Unicode(256)) np = Column(Unicode(256)) street = Column(Unicode(256)) house = Column(Integer) Flat = Column(Integer) mro = Kolona(Unicode(256)) klasa Pagesa(Baza): __emri i tabelës__ = "pagesat" # dhe kështu me radhë...

Tani mjafton ta importoni këtë modul në çdo projekt python dhe mund të punoni me të dhënat.

Unë parashikoj pyetjen tuaj - "pse SQLite"? Arsyeja kryesore është se baza e të dhënave është e nevojshme vetëm për lexim, kështu që nuk duhet të shqetësohemi për problemet me shkrimin në SQLite. Së dyti, formati i kësaj DBMS është i përshtatshëm - është më i përshtatshëm për ta parë atë (ka shumë shërbimet komunale falas, duke përfshirë një super shtesë për FireFox). Së treti, në disa raste kërkohej të merrnin akses te pajtimtarët nga ato makina në të cilat nuk ka lidhje me serverin MySQL. Në këtë rast, mjafton të kopjoni skedarin e bazës së të dhënave SQLite dhe në këtë makinë do të keni akses në të gjitha informacionet.

Shkarkimi ndodh një herë në ditë gjatë natës. Futja e të dhënave në 1C mund të automatizohet në të njëjtën mënyrë. Për shembull, kërkohet të regjistrohen leximet e lëna nga pajtimtarët në faqen e internetit të llogarisë personale. Në këtë rast, ne përsëri lidhemi me 1C dhe krijojmë dhe zbatojmë në mënyrë programore dokumentin "Akti i Marrjes së Dëshmive". Unë do të jap kodin më poshtë.

Puna me objekte COM në Python është paksa e pazakontë. Së pari, "pitoniteti" i kodit humbet - rregullat për emërtimin e variablave dhe funksioneve në 1C, për ta thënë butë, nuk korrespondojnë me Zen e Python. Së dyti, të gjithë e dinë që objektet 1C shpesh quhen karaktere cirilike, të cilat do të shkaktojnë probleme kur zhvillohen në Python ... por ato janë të zgjidhshme. Unë ju sugjeroj të hidhni një sy kodit:

Importo pythoncom import win32com.client V82_CONN_STRING = "Srvr=v8_server;Ref=v8_db;Usr=emri i përdoruesit;Pwd=megapass;" pythoncom.CoInitialize() V82 = win32com.client.Dispatch("V82.COMConnector").Connect(V82_CONN_STRING)

Siç mund ta shihni nga kodi, klienti është inicializuar për të punuar me 1C. Objekti COM përcaktohet me emrin "V82.COMConnector". Ju lutemi vini re se ky emër është i vlefshëm për platformën V8.2, nëse keni versionin 8.1, atëherë emri do të jetë "V81.COMConnector".

Në klientin e inicializuar, ne e quajmë metodën Connect(), duke ia kaluar vargun e lidhjes. Vargu përbëhet nga emri i serverit, baza e të dhënave, përdoruesi dhe fjalëkalimi. Objekti V82 që rezulton ruan lidhjen me aplikacionin 1C. Nuk ka një metodë Disconnect() apo diçka të tillë. Për t'u shkëputur nga baza, mjafton të hiqni objektin nga memoria me funksionin del () ose të caktoni variablin në None.

Duke pasur një objekt, ju mund të përdorni çdo fushë dhe metodë të kontekstit global 1C, të operoni me objekte universale si TabularDocument, TableValues, etj. Është e rëndësishme të theksohet se kur punoni përmes një lidhjeje COM, 1C funksionon në modalitetin "Lidhja e jashtme". Ai nuk përfshin asnjë veçori për punë interaktive, të tilla si dialogët pop-up, njoftimet dhe, më e rëndësishmja, formularët. Jam i sigurt që do të shani zhvilluesit e konfigurimit më shumë se një herë për mbështjelljen e funksionalitetit më të rëndësishëm në procedurën Button1Press() në modulin e formës së dokumentit.

Le të flasim për një gjë kaq të rëndësishme si atributet cirilike. Përkundër faktit se 1C është një mjedis dygjuhësh dhe ekziston një ekuivalent në anglisht për secilën metodë ruse, herët a vonë do t'ju duhet t'i drejtoheni atributit cirilik. Nëse në PHP ose VBSCript kjo nuk do të shkaktojë ndonjë problem,

Set Con = CreateObject("v81.COMConnector") Set v8 =Con.Connect("Lidhja e vargut") Set AccountsManager = v8.Documents.Accounts.... Vendos AccountsRecord= AccountsManager.CreateItem() AccountsRecord.Account = ... .... AccountsWrite.Write()

Atëherë kodi i python thjesht do të rrëzohet me një gabim sintaksor. Çfarë duhet bërë? Të ndryshohet konfigurimi? Jo, thjesht përdorni metodat getattr dhe setattr. Duke kaluar një objekt COM dhe një emër atribut cirilik në këto funksione, mund të merrni dhe vendosni vlerat në përputhje me rrethanat:

#coding=cp1251 katalog = getattr(V82.Katalogët, "Llogaritë Personale")

Sa më poshtë është e rëndësishme: emrat e atributeve, si dhe parametrat e funksioneve dhe metodave, duhet të kalojnë në kodimin cp1251. Prandaj, për të shmangur konfuzionin e kodimit paraprakisht, ka kuptim ta deklaroni atë në fillim të skedarit: #coding=cp1251. Pas kësaj, ju mund të kaloni vargjet pa u shqetësuar për kodimin e tyre. Por! Të gjitha vargjet e marra nga 1C (rezultatet e thirrjeve të funksionit, kërkesat) do të kodohen në UTF-8.

Një shembull i një kodi që ekzekuton një pyetje në mjedisin 1C, përsëritet mbi rezultatin dhe ruan bazën e të dhënave në SQLite:

#coding=cp1251 q = """ SELECT PersonalAccounts.Code AS code, PersonalAccounts.Building.Location.Name + ", " + PersonalAccounts.ShortAddress AS Adresa, PersonalAccounts.Subscriber.Name AS fio, PersonalAccounts,PersonalAccounts,p.AS. EXPRESS(KarakteristikatLlogaritëPersonaleFetëFundi.Vlera AS Drejtoria.Rrjeti TerritorialOrganizatat).Emri AS tso,Llogaritë Personale.Ndërtesa.Settlement.Emri AS np,Llogaritë Personale.Ndërtesa.RrugaASNJË LlogaritëNjëNjerëzore. Veshja. Fëmija. Emri si mro nga një libër referimi. Pak dëshmi si një rrëfim i fytyrës i lidhjes së majtë të regesteve. Karakteristikat e sinjalizimit. Më poshtë (, vidcharacteristics = vlerë (libër referimi. Karakteristikë vizive. Me bazë në formë territori mbikëqyrje. = V82.NewObject( "Query", q) seleksionimi = pyetës.Execute().Zgjidh() CONN = db.lidh() CONN.query(modelet.Abonent).delete() ndërsa përzgjedhja.Next(): abonent = modele.Abonent() abonent.account = selection.code.strip() abonent.code = zgjedhje.kodi abonent.fio = përzgjedhje.fio abonent.adresa = përzgjedhje.adresa abonent.psu = përzgjedhje.psu abonent.tso = përzgjedhje.tso abonent.burimi = u"ASRN" abonent.np = përzgjedhje.np abonent.rrugë = përzgjedhje.rrugë abonent.shtëpi = përzgjedhje.shtëpi abonent.flat = përzgjedhje.banesë abonent.mro = përzgjedhje.mro CONN.add(abonent) CONN.commit()

Këtu CONN është sesioni i lidhjes me bazën e të dhënave SQLite. Krijohet një objekt pyetësor, plotësohet teksti i tij. Siç u përmend më lart, teksti i kërkesës duhet të jetë në cp1251, për të cilin kodimi deklarohet fillimisht. Pas ekzekutimit të pyetjes, të gjithë abonentët fshihen në bazën e të dhënave në mënyrë që të mos shtohen dublikatë, më pas ato shtohen në një cikël dhe vijon kryerja përfundimtare.

Kur punoja me kërkesat, zbulova rregullat e mëposhtme.

Kur zgjidhni fushat, jepini emra latinë, do të jetë shumë më e përshtatshme t'i aksesoni ato përmes një përzgjedhësi (pika), në vend të getattr().
- Zgjidhni vetëm llojet primitive të të dhënave: vargjet, numrat, datat dhe booleans. Asnjëherë mos zgjidhni lidhjet për një objekt (dokument, drejtori)! Në këtë kontekst, ju absolutisht nuk keni nevojë për referenca dhe madje janë të dëmshme, sepse çdo akses në atributin ose metodën e referencës do të rezultojë në një kërkesë përmes një lidhjeje COM. Nëse i aksesoni atributet e lidhjes në një lak, do të jetë jashtëzakonisht i ngadaltë.
- Nëse zgjidhni një fushë Data, ajo do të kthehet si një objekt PyTime. Kjo është lloj i veçantë të dhëna për transferimin e datës dhe kohës në një lidhje COM. Nuk është aq i përshtatshëm për të punuar me të sa me orarin e zakonshëm të datës. Nëse ia kaloni këtë objekt int(), atëherë do të kthehet një vulë kohore, nga e cila më pas mund të merrni datën duke përdorur metodën fromtimestamp().

Tani le të shohim se si formohen dokumentet e shtypura. Fakti është se konsumatorit duhet t'i jepet mundësia të shkarkojë dokumente të përgatitura paraprakisht, për shembull, një faturë pagese ose një akt rakordimi. Këto dokumente gjenerohen në 1C në përputhje me kërkesat e vendosura, zbatimi i tyre në Python do të marrë shumë kohë. Prandaj, është më mirë të gjeneroni dokumente në 1C dhe t'i ruani ato format excel.

Pra, dokumenti i aktit të pajtimit gjenerohet nga një speciale përpunimi i jashtëm. Për ata që nuk janë të njohur me terminologjinë 1C: përpunimi është një program autonom që ka modulin, formularët, shabllonet e tij, të krijuar për të ekzekutuar në mjedisin 1C. Shtë e nevojshme të inicializoni përpunimin, të plotësoni detajet e tij dhe të thërrisni një funksion që do të na kthejë një dokument spreadsheet të destinuar për shikim në 1C. Ky dokument duhet të ruhet në formatin Excel dhe të kopjohet në server ose të shkruhet në bazën e të dhënave.

Lidhja = getattr(V82.Katalogët, "Raportet e Sistemit").FindByDescription("Akti i verifikimit të Elenit") nav_url = V82.GetURL(lidhja, "Raporti") emri = V82.ExternalReports.Connect(nav_url) ExternalReport = V82.ExReporti i Jashtëm. (emri) setattr(Raporti i Jashtëm, "Llogaria Personale", referencë) table_doc = ExternalReport.GetDoc() shteg = V82.GetTempFileName("xls") table_doc.Write(shtegu, V82 .SpreadsheetDocumentDocumentType raport.XLS) raport =(Raporti i llojit të skedarit.XLS). .account = reference.Code.strip() report.type = u"vepro" report.document = open(rruga, "rb").read() CONN.add(raport)

Pjesa e mësipërme bën sa vijon. Përpunimi që formon dokumentin është i lidhur. Përpunimi mund të ndërtohet në konfigurim, të ruhet në disk ose në një bazë të dhënash 1C (në një lloj drejtorie). Meqenëse përpunimi ndryshon shpesh, për të mos përditësuar konfigurimin çdo herë, përpunimi që ndryshon më shpesh ruhet në direktoriumin "ReportsSystem", në atributin e tipit "magazinimi i vlerës" me emrin Raport. Përpunimi mund të inicializohet duke e shkarkuar atë nga baza e të dhënave në disk dhe duke e ngarkuar atë, ose me metodën GetURL(), në të cilën ju duhet të kaloni një lidhje me elementin e drejtorisë dhe emrin e atributit. Ne caktojmë vlerat e atributeve në objektin e marrë të përpunimit, thërrasim funksionin e eksportuar GetDoc() dhe marrim një dokument spreadsheet që ruhet në një skedar të përkohshëm Excel. Përmbajtja e këtij skedari është shkruar në bazën e të dhënave SQlite.

Gjëja e fundit që mbetet për t'u marrë parasysh është futja programatike e të dhënave në 1C. Le të supozojmë se kërkohet të futen indikacione nga pajtimtarët. Për ta bërë këtë, mjafton të krijoni dhe zhvilloni dokumentin "Akti i marrjes së provave":

#coding=cp1251 acts = getattr(V82.Dokumentet, "Akti i Marrjes së Dëshmive") act = acts.CreateDocument() setattr(act, "Indication", 1024.23) setattr(act, "Pajtimtar", "Ivanov") # Mbushje në detaje të tjera...veproni.Shkruani()
Tani futja e të dhënave është e automatizuar.

Pra, unë kam përshkruar një metodë që bazohet në ngarkimin dhe shkarkimin programatik të të dhënave duke përdorur një lidhje COM. Kjo metodë funksionon me sukses në organizatën time për gati një vit. Baza, e formuar nga 1C, shërben për 3 sisteme pagese, blerje interneti (pagesë me karta përmes Internetit), si dhe një llogari personale. Përveç kësaj, skriptet e ndryshme lidhen me bazën e të dhënave për të automatizuar rutinën.

Megjithë mangësitë e metodës (shpejtësia e ngadaltë e lidhjes COM), në përgjithësi, ajo funksionon në mënyrë të qëndrueshme. Ne kemi të dhëna në një formë të pavarur nga platforma (SQLite), me të cilat mund të punohet nga çdo gjuhë. Dhe pjesa kryesore e kodit është shkruar në Python, që do të thotë se shumë mjete dhe teknika janë të disponueshme që as nuk mund t'i ëndërroni në 1C.

Ky është një nga mënyrat e mundshme ndërveprimi me 1C. Jam i sigurt se nuk është i ri dhe ndoshta tashmë është testuar dhe optimizuar nga dikush. Megjithatë, u përpoqa të parashtroj sa më shumë detaje të procesit për t'ju shpëtuar nga grackat që kam shkelur vetë.

Ju uroj të gjithëve fat dhe mbani mend se 1C nuk është aq e frikshme sa është pikturuar!

Në një program të jashtëm të ndërtuar në .NET Framework 4.x, ju duhet të shikoni një listë të dokumenteve të zgjedhura. Përdoruesi zgjedh llojin e dokumentit, pastaj formohet një listë e dokumenteve në bazën e të dhënave. Paraqitja e lidhjes së dokumentit përdoret si të dhëna të shfaqjes.

Pamja e mëposhtme e ekranit tregon dritaren kryesore të programit.

Shfrytëzimi i Mundësive Klienti/Serveri i Automatizimit, ne mund të lidhemi me bazën e informacionit 1C:Enterprise 8.x nga çdo aplikacion dhe të marrim të dhënat e nevojshme. Për më tepër, duke përdorur aftësitë e .NET Framework, ne mund të përdorim sintaksën e gjuhës programuese të platformës për të punuar përmes objektit COM të lidhjes.

Përpara se të vazhdojmë drejtpërdrejt me zbatimin e programit, le të shohim disa veçori të dobishme të .NET 4.x që e bëjnë më të lehtë punën me Automation Client/Server.

.NET 4.x dhe tipi "dinamik".

Në versionin e platformës .NET 4.x u bë i mundur përdorimi tip dinamik të dhëna "dinamike". Mund të mësoni më shumë rreth veçorive të përdorimit të këtij lloji të të dhënave. lexoni lidhjen e mëposhtme.

Në terma të përgjithshëm, lloji "dinamik" ju lejon të punoni me objekte të llojit "COM" në një mënyrë të thjeshtuar. Me ndihmën e tij, qasja në vetitë dhe metodat e një objekti kryhet "përmes një pike".

Nuk ju kujton gjë? Kodi përmban cirilik dhe është shumë i ngjashëm me sintaksën e gjuhës programuese të platformës.

Zbatimi

Zbatimi i programit është mjaft i thjeshtë. Duke futur vargun e lidhjes së infobazës, përdoruesi zgjedh llojin e dokumentit, pas së cilës krijohet një listë e të gjithë dokumenteve.

Për të krijuar një lidhje, përdoret metoda "GetConnection()", e cila ruan lidhjen e krijuar COM në një ndryshore globale. Kodi i programit Metoda tregohet në pamjen e mëposhtme të ekranit:

Përpara se lista të zgjerohet, ndizet ngjarja "DropDown", e cila gjeneron një listë përzgjedhjeje bazuar në koleksionin e meta të dhënave të dokumentit:

Pasi përdoruesi të zgjedhë një vlerë nga lista rënëse, " SelectedIndexChanged". Kodi i programit të mbajtësit është si më poshtë:


Kjo eshte e gjitha! Nëse vargu i lidhjes është i saktë dhe objekti COM "v82connector" është i instaluar në makinë, atëherë kur të zgjedhim një dokument nga lista e meta të dhënave, do të shohim listën e plotë dokumente të llojit të zgjedhur.

Rezultatet

Programi është krijuar. Siç mund ta shohim, kur zhvillojmë një aplikacion për marrjen e të dhënave nga baza e informacionit 1C: Enterprise, ne mund të përdorim pjesërisht sintaksën e njohur për të. Nga lidhja më poshtë mund të shkarkoni skedarët burimor projekti i krijuar programor.

8.41 Gjatë përcaktimit të llojit të vetive të objektitXDTO informacioni i llojit përfshin:

1. shkruani vetëm emrin

2. shkruani emrin dhe emrin e hapësirës së emrit

3. shkruani emrin dhe emrin e paketës XDTO

4. shkruani emrin dhe emrin e fabrikës XDTO

8.42 MenaxherWEB shërbimet e zgjidhin problemin:

1. menaxhimi i një grupi lidhjesh me infobazat

2. mbështetje për përshkrimet e shërbimeve WSDL, zbatimi i protokollit SOAP

3. Mbështetje e aplikacionit WEB

4. përgjigjet e sakta 1,2

5. përgjigjet e sakta 2.3

6. Përgjigjet 1,2,3 janë të sakta

8.43 Objekti i konfigurimit" W.E.Për shërbim" përdoret për:

2. organizimi i aksesit në ueb shërbimet me lidhje statike

3. funksionalitetin e eksportit të kësaj infobaze

8.44 Objekti i konfigurimit" WSlidhje"përdoret për:

1. organizimi i aksesit dinamik në ueb shërbimet

2. organizimi i ankesave përueb-shërbime por lidhje statike

3. funksionalitetin e eksportit të kësaj infobaze

8.45 Nëse funksioni që zbaton operacioninWEB shërbimi kthen një vlerë. Një vlerë e tillë përcaktohet (kur vendoset objekti përkatës i konfigurimit) se ka llojin:

4. Elementi XML

5. objekt ose vlerëXDTO

6. Përgjigjet 1, 2, 3 janë të sakta

8.46 Kur i referohemiWEB shërbimi me lidhje statike, sekuenca e veprimeve është si më poshtë:

1. marrja e përshkrimeve wsdl, vendosja e një lidhjeje (krijimi i një përfaqësuesi), thirrja e një operacioni shërbimi

2. vendosja e një lidhjeje (krijimi i një përfaqësuesi), thirrja e një operacioni shërbimi

8.47 Kur i referohemiWEB shërbimi përmes një lidhje dinamike, sekuenca e veprimeve është si më poshtë:

1. marrjenwsdl përshkrimet, vendosja e një lidhjeje (krijimi i një përfaqësuesi), aksesi në një operacion shërbimi

2. vendosja e një lidhjeje (krijimi i një përfaqësuesi), thirrja e një operacioni shërbimi

3. operimi i thirrjes në shërbim

8.48 Nëse funksioni që zbaton operacioninWEB shërbimi, merr një vlerë si parametër. Një vlerë e tillë përcaktohet (kur vendoset objekti përkatës i konfigurimit) se ka llojin:

4. Elementi XML

5. objekt ose vlerëXDTO

6. Përgjigjet 1,2,3 janë të sakta

8.49 Si mund të përcaktoni se cilat plane shkëmbimi për një objekt të caktuar aplikacioni specifikojnë regjistrimin automatik?

1. Në dritaren e redaktimit të objektit, seksioni "Shkëmbimi i të dhënave"

2. Duke thirrur dritaren "Properties Palette" në këtë objekt

3. Duke thirrur dritaren "Shtesë" për këtë objekt (skeda "Planet e shkëmbimit")

4. Të gjitha sa më sipër janë të vërteta

5. Përgjigjet 1 dhe 3 janë të sakta

8.50 Për objektet e aplikacionit, në dritaren e redaktimit të objektit të konfigurimit, në skedën "Shkëmbimi i të dhënave", ...

1. objekte, kur ndryshoni të cilat ky objekt duhet të futet në shkëmbim

2. objektet që duhet të ndërrohen kur ndërrohet ky objekt

3. planet e shkëmbimit, kur të kryhet shkëmbimi, ky objekt do të ndryshohet

4. plane shkëmbimi që do të kenë parasysh ndryshimet në këtë objekt

8.51 RedaktimiOLE- objektet kryhen:

1. Redaktori i fletëllogaritjes i integruar në platformë

2. Redaktori i objekteve OLE i integruar në platformë

3. Aplikimi në lidhje meOLE-Objekt

8.52 Skedarët e jashtëm dokumentet e tabelave:

1. Keni një shtesë XML

2. Keni një zgjatjeMXL

3. Mund të ketë ndonjë shtrirje

4. Nuk ekzistojnë. Të gjitha dokumentet e fletëllogaritjes janë të integruara në konfigurim

8.53 Automatizimi-server "1C: Enterprise 8"...

1. siguron akses në të gjitha vetitë dhe metodat e kontekstit të tij global

2. siguron akses në vetitë dhe metodat shtesë për të kryer veprime specifike për të punuar në modalitetin Automatizimi

3. ju lejon të menaxhoni aplikacionin e sistemit 1C:Enterprise8 nga aplikacione të tjera, si dhe të kryeni veprime të ngjashme me ato interaktive

4. të gjitha përgjigjet e dhëna janë të sakta

1. e pamundur

2. i implementuar tërësisht në softuer

3. zbatohet duke përdorur objektin e konfigurimit "Planet e Shkëmbimit".

4. zbatuar nga magjistari i shkëmbimit i integruar në platformë

9. Mirëmbajtja e zgjidhjes së aplikimit

9.1 Cila është radha në të cilën janë instaluar platforma dhe konfigurimi?

1. Së pari duhet të instaloni platformën, më pas të instaloni konfigurimin e bazuar në shabllon

2. Fillimisht duhet të instaloni konfigurimin dhe më pas platformën

3. Rendi i instalimit nuk ka rëndësi

9.2 Instalimi normal i platformës "1C:Enterprise 8"...

1. sugjeron instalim i veçantë në çdo kompjuter përdoruesi, përditësimet e mëtejshme të platformës mund të kryhen automatikisht nga serveri

2. përfshin një instalim të veçantë në çdo kompjuter përdoruesi, përditësimet e mëtejshme të platformës mund të kryhen vetëm në çdo kompjuter përdorues

3. përfshin instalimin në një server me kopjim të mëtejshëm të skedarëve të nevojshëm në kompjuterët e përdoruesve, përditësimi i mëtejshëm i platformës mund të bëhet automatikisht nga serveri

4. përfshin instalimin e një versioni lokal për një përdorues

9.3 Çfarë duhet bërë për të përditësuar platformën teknologjike gjatë një instalimi normal të 1C:Enterprise?

1. Në modalitetin e konfiguruesit, specifikoni skedarin e përditësimit

2. Ekzekutoni instaluesin e përfshirë me shpërndarjen

3. Specifikoni skedarin e dorëzimit në modalitetin e konfiguruesit

9.4 Instalimi administrativ...

1. përfshin instalimin e platformës në çdo kompjuter përdorues individual

2. përfshin instalimin e platformës nga Administratori në një kompjuter, me kopjim të mëtejshëm të skedarëve të ekzekutueshëm prej tij në stacionet e punës së përdoruesit rrjet lokal

3. përfshin instalimin e konfigurimit në serverin 1C:Enterprise, me përcaktimin e një përdoruesi me të drejta aksesi administratori

9.5 Gjatë përditësimit të platformës teknologjike gjatë instalimit administrativ të 1C: Enterprise...

1. administratori duhet vetëm të përditësojë platformën në vendndodhjen e instalimit administrativ, përditësimi i platformës në kompjuterët lokalë përdoruesit mund të bëjnë

2. administratori duhet të përditësojë platformën në vendin e instalimit administrativ dhe në të gjithë kompjuterët në rrjetin lokal, përdoruesit nuk kanë të drejtë të përditësojnë

3. Administratori duhet të përditësojë platformën vetëm në kompjuterët në rrjetin lokal, të njëjtën mundësi kanë edhe përdoruesit

4. Administratori duhet të përditësojë platformën vetëm në kompjuterët në rrjetin lokal, përdoruesit nuk e kanë një mundësi të tillë

9.6 A është e mundur gjatë një instalimi normal të 1C: Ndërmarrja në version klient-server, puna e aplikacioneve të klientit dhe serverit të lëshimeve të ndryshme të platformës teknologjike?

1. Lejohet

2. Nuk lejohet, është e nevojshme të përditësohen si aplikacionet e serverit ashtu edhe aplikacionet e klientit

3. Është e lejuar, është e nevojshme të përditësohet aplikacioni i serverit

9.7 Përdorimi i modalitetit të grupit...

1. Lejon të hyjë modaliteti automatik ngarkoni/shkarkoni, testoni dhe korrigjoni bazën e informacionit

2. ju lejon të ekzekutoni të dy mënyrat e programit pa ndërhyrje interaktive

3. ju lejon të kryeni kontrollin e sintaksës dhe kontrollin e konfigurimit

4. Përgjigja e saktë I dhe 2

5. përgjigjet e sakta 1,2 dhe 3

9.8 Opsionet e nisjes nga linja e komandës 1C: Ndërmarrja...

1. përcaktojnë bazë informacioni, përdoruesi, i tij, fjalëkalimi, mënyra e nisjes, rregullat për kryerjen e operacioneve të specifikuara në një skedar të jashtëm

2. përcaktoni bazën e informacionit, përdoruesin, fjalëkalimin e tij, mënyrën e fillimit, rregullat për kryerjen e operacioneve të specifikuara të specifikuara në vijën e komandës

3. Verpa përgjigjet unë dhe 2

4. nuk ka përgjigje të saktë

9.9 Çfarë lejon linja e komandës?

Sistemi 1C: Enterprise mund të lansohet nga një aplikacion i jashtëm si një server OLE Automation dhe siguron qasje në të gjitha atributet dhe metodat e tij konteksti global(Shih "Konteksti i ekzekutimit modul softuerik"). Përveç kësaj, serveri 1C:Enterprise OLE ka metoda shtesë, i cili mund të përdoret për të ekzekutuar një sekuencë operatorësh ose për të vlerësuar një shprehje të specifikuar në gjuhën e integruar 1C:Enterprise.

Për të nisur sistemin 1C: Enterprise si një server OLE Automation nga një aplikacion i jashtëm, kryhet sekuenca e mëposhtme e veprimeve:

  • një objekt është krijuar me një identifikues OLE:
    • V1СEnterprise.Application - version i pavarur i çelësit;
    • V77.Application - çelësi i varur nga versioni;
    • V77S.Application - çelësi i varur nga versioni, versioni SQL;
    • V77L.Application - çelësi i varur nga versioni, versioni lokal;
    • V77M.Application - çelësi i varur nga versioni, versioni i rrjetit.
  • sistemi 1C: Enterprise inicializohet duke përdorur metodën Initialize.
  • atributet dhe metodat e sistemit 1C:Enterprise quhen si server OLE Automation

Koment
Meqenëse programi 1C:Enterprise është njëkohësisht një server OLE Automation dhe një klient OLE Automation, është e mundur nga 1C:Enterprise për të hyrë në një kopje tjetër të 1C:Enterprise (për shembull, në një konfigurim tjetër) për shkëmbimin e të dhënave. Në thelb, të gjitha produktet moderne të softuerit mbështesin mekanizmin OLE Automation, kjo vlen veçanërisht për MS Office, MS FoxPro dhe aplikacionet e shkruara në to, DAO, etj., Kështu që programi 1C: Enterprise mund të integrohet plotësisht me to
.

Koment
Versionet jo të lokalizuara të programeve të jashtme që hyjnë në programin 1C: Enterprise përmes OLE Automation mund të interpretojnë gabimisht identifikuesit e objekteve ruse të llojeve të të dhënave agregate, për shembull, detajet e drejtorisë. Ky shënim nuk zbatohet për produktet dhe programet e MS Office që përdorin objektet OLE si gjuhë për të hyrë në objektet OLE. Microsoft Visual bazë. Rekomandohet të përdorni versione të lokalizuara produkte softuerike, ose përdorni identifikues pa karaktere cirilike në konfigurim. Për të hyrë në atributet dhe metodat e llojeve të të dhënave agregate të sistemit 1C: Enterprise nga aplikacionet e jashtme, rekomandohet të përdorni sinonimet e tyre në anglisht.
.

Koment
Të gjitha objektet e krijuara OLE Automation ekzistojnë për aq kohë sa ekziston një variabël që përmban vlerën e këtij objekti. Prandaj, vetë programi 1C:Enterprise, duke vepruar si një objekt OLE Automation në një program tjetër, do të mbetet në kujtesën e kompjuterit derisa të fshihet ose ndryshohet vlera e ndryshores që e përmban atë si objekt.
.

Atributet e sistemit 1C: Enterprise si një server OLE Automation

Sistemi 1C: Ndërmarrja si një server OLE Automation ofron akses të plotë tek imja konteksti global(shih "Konteksti i ekzekutimit të njësisë së programit"). Prandaj, objekti i serverit 1C:Enterprise OLE mund të ketë si atribute: konstante të sistemit, vlerat e specifikuara në konfigurues konstante, transfertat, regjistrat, llojet e llogaritjes, grupe të llojeve të llogaritjes, si dhe variablat e deklaruar në modulin e programit global me fjalë kyçe Eksporti.

Pyetja 08.13 e provimit 1C: Platforma profesionale. Për të krijuar një objekt që do të përdoret nga një bazë të dhënash 1C:Enterprise 8 për të hyrë në një bazë tjetër informacioni 1C:Enterprise 8 nëpërmjet OLE, përdorni konstruktorin:

  1. Baza e re (InitString)
  2. OLEObjekt i ri
  3. Objekti i ri COMO
  4. Krijimi i një objekti të tillë bëhet me mjete të tjera.
Sintaksa e saktë është e treta

Pyetja 08.51 e provimit 1C: Platforma profesionale. Redaktimi i objekteve OLE kryhet:
  1. Redaktori i integruar i fletëllogaritjes
  2. Redaktori i objekteve OLE i integruar në platformë
  3. Një aplikacion i lidhur me një objekt OLE
Përgjigja e saktë është e treta, shikoni përkufizimin e një objekti OLE.
Pyetja 08.53 e provimit 1C: Platforma profesionale. Serveri i automatizimit "1C: Enterprise 8"...
  1. siguron akses në të gjitha vetitë dhe metodat e kontekstit të tij global
  2. siguron akses në vetitë dhe metodat shtesë për të kryer veprime specifike për të punuar në modalitetin e Automatizimit
  3. ju lejon të menaxhoni aplikacionin e sistemit 1C:Enterprise 8 nga aplikacione të tjera, si dhe të kryeni veprime të ngjashme me ato interaktive
  4. të gjitha përgjigjet e dhëna janë të sakta
Përgjigja e saktë është e katërta - Automatizimi jep qasje pothuajse të plotë në aplikacion.
Pyetja 08.10 e provimit 1C: Platforma profesionale. Në një procedurë që do të thirret kur lidheni me një bazë të dhënash nëpërmjet COM, nuk mund të përdorni:
  1. DocObject=Doc.CreateDocument()
  2. Forma.Open()
  3. Kërkesë=Kërkesë e re
  4. Nuk ka përgjigje të saktë
Përgjigja e saktë është e dyta.

Pyetja 08.03 e provimit 1C: Platforma profesionale. Kur hyni në bazën e të dhënave 1C:Enterprise 8 përmes OLE, ekzekutohet një procedurë - mbajtësi i ngjarjeve "Në fillimin e Sistemit" përcaktoi ...

  1. në modulin e aplikacionit
  2. në modulin e lidhjes së jashtme
  3. në modulin e përgjithshëm
  4. në modulin OLE
Përgjigja e saktë është e para, Automatizimi sheh modulin e aplikacionit.
Pyetja 08.06 e provimit 1C: Platforma profesionale. Kur hyni në bazën e të dhënave 1C:Enterprise 8 përmes COMConnector, ekzekutohet një procedurë - mbajtësi i ngjarjeve "Në fillimin e Sistemit" përcaktoi ...
  1. në modulin e aplikacionit
  2. në modulin e lidhjes së jashtme
  3. në modulin e përgjithshëm
  4. në modulin COM
Përgjigja e saktë është e dyta, vetëm modulet me atributin "Lidhja e jashtme" janë të disponueshme për COM.

Po ngarkohet...
Top