Internet Windows Android
Kengaytirish

Com aloqa 1c 8.3 misol so'rovi. COM ob'ektlari bilan ishlashning uchta ustuni

)Hammasi to'g'ri

Shu bilan birga, men bir necha bor ko'rganman, hatto 10 ochko ham tortib olmagan nashrlar shunchaki "o'chib ketgan".
Nega bunday bo'ldi? Ko'rinib turibdiki, kimgadir ularni yoqtirishi aniq.


Men bu haqda gapirayapman va shuni aytmoqchimanki, sizga kerak bo'lgan narsani tushunish uchun reyting haqidagi maqolani o'qimaslik yoki unga +/- unchalik oddiy baho bermaslik yaxshi bo'lardi. Men yoqtirgan narsaga kelsak, men buni shunday tuzatardim: u yulduzlar shu tarzda shakllangani va saytga ko'plab odamlar to'plangani va ko'pchilik yoqtirgani uchun u juda ko'p gol urdi, siz o'zingiz tushunasiz, bu masala imkoniyat, tk. maqola chiqib ketishi bilan bosh sahifa keyin uni faqat so'rov bo'yicha topish mumkin, shuning uchun hamma ovoz berish orqali o'tadi. Va men tushunganimdek, asosiy sahifada saqlash - bu doimiy izohlar = maqolani targ'ib qilish.
Aynan shuning uchun ular do'konlarni ko'chalarga qo'yishadi - axir, ko'pincha tovarlarning sifati va ahamiyatliligi muhim emas, balki joyning o'tkazuvchanligi, yurgan odamlar ertasi kuni tashlaganlarini tez -tez sotib olishadi. faqat jarayon uchun. Bu hammaga uzoq vaqtdan beri ma'lum bo'lgan kasallik - shopomaniya. Yoki oqimni ko'paytirish to'g'ri xaridorning ehtimolini oshiradi.

Va ijobiy va salbiy tomonlari ... sarflangan vaqt va ish uchun shunchaki "rahmat"


Bular. minus ham "rahmat" deb hisoblanadi? Men sizning munosabatingizni bilmoqchi edim, bunday holatlarga qo'yish kerakmi va boshqalar qanchalik qiziq deb o'ylaydilar? Maqola zararli / yomon bo'lganida yoki siz uchun foydasiz / bo'sh bo'lganda qo'yish kerakmi.
Menimcha, maqola reytingning oddiy o'sishiga o'xshaydi, chunki:
1. Men keltirgan turlar muammosiga muallif umuman e'tibor bermadi, garchi u bir qancha izoh yozishga dangasa bo'lmagan.
2. Maqolada aniq noaniqlik bor: unda aytilishicha, bu yagona yo'l

V82 = Yangi COM obyekti ("V82.ComConnector"); Kod = CounterpartySOM.Code;


lekin men buni xotirjamlik bilan shunday ishlov berish yordamida qilaman:

Hisobot (Asosiy. Ma'lumotnomalar. Pudratchilar. FindByName ("MChJ"). Kod);


va hamma narsa yaxshi! Va men V82.ComConnector ulanishini tanlayman
Qandaydir g'alati, muallif o'z maqolasida ko'rsatilgan muammolarni o'z ichiga olganiga umuman ahamiyat bermaydi, lekin u hech qanday munosabat bildirmaydi.
3. Ammo "Sinf mavjud emas" xatosi paydo bo'lganda muammo haligacha mavjud
4. Va 8.2 o'rnatilganida, keyin 8.1 o'rnatilganda muammo paydo bo'ladi - OLE / COMni odatdagi UT -BP almashinuvi bilan almashtirishga harakat qiling!
5. Saytda OLE / COM orqali ulanish imkonini beradigan asosiy ishlov berishni ko'rsatishingiz mumkin, shunda yangilar vaqtni behuda sarflamaydilar, siz ular uchun yozasiz! Aytgancha, uning surati negadir siz o'zingizni ko'rsatasiz, nega? Natijada, mohiyatan 2 ta so'z, va yana 6 ta sahna ortida.

Umuman olganda, men loyni tashlamayman, lekin aniq bo'shliqlarni ko'rsataman, lekin reaktsiyalar nolga teng. Agar siz bu tajribani baham ko'rayotgan bo'lsangiz, bu qandaydir noto'g'ri va to'liq emas.
Aytmoqchimanki, agar muallif barcha kamchiliklarni yig'ishni xohlagan bo'lsa, u hech bo'lmaganda boshqa birovning tajribasini tinglab, izohlarga jilmas edi. Darhol shunday holat yuzaga keladi, agar uni o'qigan kishi muallifdan ko'ra ko'proq bilsa, ular unga (ba'zida noto'g'ri) aytishadi va u ham kurashadi. Natijada, barcha ma'lumotlar maqolada emas, balki izohlarda! Bu kulguli! Bu tez -tez sodir bo'ladi, lekin ayni paytda siz eng zo'r bo'lishni xohlagan narsangizga tayanishingiz shart emas - men buni eng yaxshi ko'rsataman, boshqalar ko'rsatadilar! Buni maqolaga qo'shing va bunga arziydi, hamma ham bu janjalni o'qishga qiziqmaydi.

Chop etish (Ctrl + P)

1C bazalari o'rtasida ma'lumot almashish variantlaridan biri bu almashishdir COM aloqasi... COM ulanishidan foydalanib, siz 1C ma'lumotlar bazasidan boshqasiga ulanishingiz va ma'lumotlarni o'qishingiz yoki yozishingiz mumkin. Bu usul ham ma'lumotlar bazasining mijoz-server versiyalarida, ham fayl bazalari... Ushbu maqolada 8.3 platformasidagi bunday ulanishlar muhokama qilinadi

com aloqasi

Siz 1C ilovasi uchun ikki turdagi COM ob'ektlarini yaratishingiz mumkin. Bu ole aloqasi V83. Ilova va com ulanishlari V83.COM ulagichi ... Bo'lsa V83. Ilova deyarli 1C ilovasining to'liq namunasi ishga tushirildi. Foydalanilgan taqdirda V83.COM ulagichi kichik server qismi ishga tushadi. Bunday holda, ish tezligi yuqori, lekin ba'zi funktsiyalar mavjud bo'lmasligi mumkin. Xususan, tashqi birikmalar bilan ishlash xususiyati belgilanmagan shakllar va umumiy modullar bilan ishlash. Siz asosan ishlatishingiz kerak V83.COM ulagichi va faqat funksionallik yo'q bo'lganda V83. Ilova... Ish tezligining farqi, ayniqsa, katta ma'lumotlar bazalarida sezilishi mumkin. Platforma uchun 8.2 ishlatiladi V82. Ilova yoki V82.COMConnector

OLE ulanishini o'rnating

Ulanish = Yangi COMObject ("V83. Ilova");

COM aloqasini o'rnating

Ulanish = Yangi COMObject ("V83.COMConnector");

Ulanish chizig'i

// Mijoz-server opsiyasi uchun
StringConnection= "Srvr =" "ServerName" "; Ref =" BaseName ";
// Fayl rejimi opsiyasi uchun:
StringConnection= "Fayl =" "Baza yo'li" "; Usr = Foydalanuvchi nomi; Pwd = Parol ";
Harakat
Ulanish = Ulanish ... Ulanmoq(ConnectionString);
Istisno
Xabar = Foydalanuvchiga yangi xabar;
Xabar ... Matn = "Bazaga ulanib bo'lmadi" + Tavsif xatolar (); Xabar ... Hisobot berish ();
Harakatlarning tugashi;

Aloqani uzing

Ulanish = aniqlanmagan;
Ob'ekt uchun V83. Ilova ulanishni to'xtatish juda muhim, aks holda tugallanmagan seans osilib qoladi, uni qo'lda o'chirish kerak bo'ladi. Bo'lsa V83.COM ulagichi Ulanish protsedura oxirida avtomatik ravishda uziladi va yana bir kichik lahza bor. Ulanish o'rnatiladigan foydalanuvchi uchun uning sozlamalarida "Dastur yopilganda tasdiqlash so'rovi" katakchasi o'chirilgan bo'lishi kerak.

NewObject () usuli

Yangi ob'ekt yaratish uchun NewObject () usulidan foydalanishingiz mumkin, masalan:

uchun V83.COM ulagichi

COM so'rovi = Ulanish. NewObject ( "So'rov") ;
TableCOM = Ulanish. NewObject ( "Qadriyatlar jadvali") ;
ArrayCOM = Ulanish. NewObject ("qator");

WidCOM = Connection.NewObject

uchun V83. Ilova

OLE so'rovi = Ulanish. NewObject (" So'rov ") ;
OLE jadvali = Ulanish. NewObject("Qadriyatlar jadvali") ;
ArrayOLE = Connection.NewObject("Qator");
WidCOM = Connection.NewObject("UniqueIdentifier", StringUID);

COM so'rovi ... Matn ="TANLASH
| Tashkilotlarning lavozimlari. Kod,
| Tashkilotlarning pozitsiyalari.
| QANDAY | Ma'lumotnomalar. Tashkilotlarning pozitsiyalari
AS tashkilotlarining pozitsiyalari ";

Natija = RequestCOM. Yugurish ();
Namuna = Natija. Tanlash ();
Namuna olish paytida. Keyingi()Tsikl
Tsiklning oxiri;
Siz shuningdek konfiguratsiya ob'ektlari menejerlaridan foydalanishingiz mumkin:
ReferenceCOM = Ulanish. Ma'lumotnomalar. Katalog nomi;
DocumentCOM = Ulanish. Hujjatlar. Hujjat nomi;
COM = ulanishni ro'yxatdan o'tkazing. Axborot registrlari... Ro'yxatdan o'tish nomi;

COM ulanishi orqali enumni qabul qilish va solishtirish

Konfiguratsiyada aniqlangan sanash elementlarining qiymatlarini solishtirish uchun bu elementlarni ibtidoiy turlardan biriga aylantirish zarur, ularni solishtirish qiyin emas. Bu turlar raqamli yoki mag'lubiyatli bo'lishi mumkin. Hisoblash elementining qiymatini shunga o'xshash raqamli turga o'zgartirishingiz mumkin

EnumerationElement = Connection.Directories.Directory1.FindByCode (1) .Props1;

MumkinValues ​​= EnumerationElement.Metadata (). EnumerationValues;

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

Agar EnumerationElementNumber = 0 bo'lsa, hisobot bering ( "Hisoblash qiymati 1");

ElseIf EnumerationElementNumber = 1 Keyin Hisobot ("EnumerationValue2");

EndIf;

COM orqali ob'ektni identifikator orqali olish

Konfiguratsiya ob'ektlari menejerlari orqali biz com ob'ektini olamiz, masalan:
DocumentCOM = Ulanish. Hujjatlar. Hujjat nomi;

Keyin biz noyob identifikator qatorini olamiz:

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

ID = Yangi U noyob identifikator (StringUID);
BILAN linkById = Hujjatlar [DocumentName] .GetLink (ID);

Agar siz identifikator bo'yicha hujjat bo'yicha com ob'ektini topishingiz kerak bo'lsa, quyidagicha yozishingiz kerak:

WidCOM = Ulanish.NewObject("UniqueIdentifier", StringUID);
ReferenceById = Connection.Dokumenty [DocumentName] .GetLink (UidCOM);

Salom Xabravchilar!

Ushbu maqolada men tashkilotimda 1C platformasi bilan integratsiya qanday o'rnatilgani haqida gapirishni istayman. Meni bunga undagan narsa - deyarli yo'qligi texnik ma'lumotlar bu mavzuda. 1C -ni har qanday axborot tizimiga bog'lash mavzusidagi turli xil maqolalar va hisobotlarni o'qib, ularning barchasi marketing, namoyish va hech qachon texnik emasligiga, muammo va uni hal qilish mohiyatini aks ettirganiga amin bo'lasiz.

Men sizni ogohlantiramanki, bu usul hech qachon universal emas. Ko'p 1C konfiguratsiyalari bo'lgani uchun va axborot tizimlari, tillar va platformalar - bundan ham ko'proq, mumkin bo'lgan kombinatsiyalar soni juda katta. Maqsadim - mumkin bo'lgan echimlardan birini ko'rsatish.


Men Pythonni 1C bilan birlashtiradigan til sifatida tanladim. Bu jarayonni avtomatlashtirish uchun juda mos keladi. Bunga minimalist sintaksis (kod juda tez yoziladi), boy standart kutubxona (uchinchi tomon modullariga ehtiyoj kam), o'zaro faoliyat platforma yordam beradi-katta ehtimol bilan Linix OS-da yozilgan kod Windowsda muvaffaqiyatli ishlaydi.

Boshlash uchun men ishlayotgan ma'lumotlarni tasvirlab beraman. Uzoq Sharq mintaqasidagi energiya sotuvchi tashkilot, o'z-o'zidan yozilgan konfiguratsiyadagi 1C bazasida, taxminan 400 ming abonentga xizmat ko'rsatadi. Har bir abonent uchun uning to'lovlari, to'lovlari, iste'mol qilingan xizmatlar va hisoblash sxemalari, o'lchash asboblari, o'qishlar va boshqa ko'plab ma'lumotlar saqlanadi.

Bir marta tashkilotda Delphi -da yozilgan va ma'lumotlar bazasi sifatida MSSQL / Firebird -dan foydalanadigan dastur bor edi. O'sha ulug'vor paytlarda, har qanday til yordamida ma'lumotlar bazasiga ulanish va ko'plab harakatlarni amalga oshirish mumkin edi - qarzdor abonentlarni tanlash, to'lovlarni qabul qilish, postlarni o'qish. Ajablanarlisi shundaki, tartibni avtomatlashtiradigan skriptlar to'plami tobora o'sib bordi. Dasturchilar dasturni o'zi ochmasdan turib har qanday harakatni bajarishi mumkin edi.

Afsuski, 1C ga o'tish bilan bepul o'yin tugadi - endi bazaga to'g'ridan -to'g'ri ulanish mumkin emas edi. Umuman olganda, 1C platformasining o'zi bo'linmaydi va boshqa tizimlar bilan integratsiyaga mos kelmaydi. U, ular aytganidek, o'zi bir narsadir. Ma'lumotni 1C -ga yuklashda shuni esdan chiqarmaslik kerakki, ularni u erdan chiqarish unchalik oson bo'lmaydi. Ammo tashkilot to'lov tizimlarini amalga oshirishi kerakligini hisobga olib Shaxsiy kabinet, qandaydir yechim topish kerak edi.

Mening oldimga qo'yilgan asosiy vazifalar ma'lum bir shaxsiy hisob ma'lumotlarini - ism, manzil, o'lchash asboblari, asboblarni o'qish, to'lovlar, to'lovlarni tezda olish qobiliyati edi. Bundan tashqari, hujjatlarni shakllantirish - yarashtirish akti, to'lov kvitansiyasi. Shunday qilib, ma'lumotlar bazasiga to'g'ridan -to'g'ri bog'liqlik yo'q - SQL serveridagi 1C ma'lumotlar bazasiga qaraganlarning barchasi aaa1, aaa2 shaklidagi jadvallar massasini tushunish qiyinligini ko'rishdi. Jadvallar va maydonlarning bunday nomlari bilan so'rovlar tuzish haqiqatga to'g'ri kelmaydi. Bundan tashqari, ko'plab 1C jadvallari (ayniqsa, ikkinchisining kesilishi, qoldiqlari va inqiloblari kabi eng muhimlari) virtual bo'lib, turli jismoniy jadvallar bo'ylab tarqalgan bo'lib, ular bir nechta birikmalar yordamida yig'iladi. Bu usul mos emas.

1C platformasi unga COM ulanishi orqali ulanish imkoniyatini beradi. Ko'pgina Windows dasturlari singari, 1C -ni o'rnatish paytida tizimda ikkita COM obyekti - Automation Server va COM Connector ro'yxatga olinadi. COM texnologiyasini qo'llab -quvvatlaydigan til yordamida ikkala ob'ekt bilan ham ishlashingiz mumkin.

Automation Server obyekti 1C ilovasi bo'lib, u oddiy mijoz dasturidan deyarli farq qilmaydi. Farqi shundaki, qo'shimcha ravishda, dastur namunasini dasturiy nazorat qilish mumkin bo'ladi. COM Connector ob'ekti bilan ishlashda 1C dasturining engil versiyasi ishga tushiriladi, unda shakllar, shuningdek interfeys bilan bog'liq funktsiyalar va usullar mavjud. vizual effektlar... Ilovaning o'zi "Tashqi ulanish" rejimida ishga tushiriladi. Global o'zgaruvchilarni ishga tushirish (masalan, aniqlash joriy foydalanuvchi va uning sozlamalari) modulda bajarilishi kerak tashqi aloqa 1C. Agar tashqi ulanish rejimida kodda bu rejimda mavjud bo'lmagan funksiya chaqirilsa, istisno paydo bo'ladi (bu bizning python skriptimizga o'tadi). Xavfli funktsiyalarni chaqirish kabi konstruktsiyalar bilan o'ralgan bo'lishi kerak

# Agar tashqi ulanish bo'lmasa, ogohlantirish ("Salom!"); #EndIf

COM ob'ektlari bilan ishlash faqat oyna uchun mo'ljallangan texnologiya bo'lgani uchun, standart Python paketida yo'qligi ajablanarli emas. Siz Python -da Windows ostida dasturlash uchun zarur bo'lgan barcha funktsiyalarni ta'minlaydigan kengaytmani - modullar to'plamini o'rnatishingiz kerak bo'ladi. Uni allaqachon o'rnatilgan exe-o'rnatuvchi sifatida yuklab olish mumkin. Kengaytmaning o'zi ro'yxatga olish kitobi, xizmatlar, ODBC, COM ob'ektlari va boshqalarga kirishni ta'minlaydi. Shu bilan bir qatorda, Win32 kengaytmasi bilan birga kelgan ActiveState Python tarqatilishini darhol o'rnatishingiz mumkin.

Bir muncha vaqt men veb -ilovalarni, xususan, shaxsiy hisobimni ishlab chiqishda COM ulanishini sinab ko'rdim. Quyidagi kamchiliklar aniqlandi:

COM aloqasi sekin. Yomon ishlash - COM texnologiyasining ma'lum kamchiliklari.
- Konfiguratsiyaga qarab 1C bilan aloqa o'rnatish jarayoni 1 sekunddan 8 sekundgacha davom etishi mumkin (mening holimda 6 soniya). Aytish kerakki, har bir so'rov uchun ulanish o'rnatilsa, har bir sahifa 8 soniyada yuklanadi.
- Python -dagi veb -ilovalar mustaqil serverlar sifatida ishlaganligi sababli, oldingi nuqtani ulanishni ba'zi global o'zgaruvchilarda saqlash orqali to'ldirish mumkin va agar xato bo'lsa, uni qayta tiklash mumkin. Rostini aytsam, PHP -da aloqani qanday saqlab qolish haqida o'ylamaganman.
- Veb-ilovaning o'zaro faoliyat platforma funktsiyasi yo'qoladi.

Yuqorida sanab o'tilgan fikrlarga asoslanib, o'zaro ta'sir qilish tamoyilini o'zgartirishga qaror qilindi, uni 2 qismga bo'lish-birinchi platformaga bog'liq (Windows), 1C ma'lumotlarini qandaydir qulay formatda tushirish, ikkinchisi-platformadan mustaqil, qodir. 1C haqida hech narsadan shubhalanmasdan ma'lumotlar bilan ishlash.

Amallar strategiyasi quyidagicha: python skripti 1C ga ulanadi, kerakli so'rovlarni bajaradi va ma'lumotlarni SQLite ma'lumotlar bazasiga yuklaydi. Siz bu ma'lumotlar bazasiga Python, PHP, Java -dan ulanishingiz mumkin. Bizning loyihalarimizning ko'pchiligi pythonda ishlaydi va men qo'lda SQL so'rovlarini yozishni yomon ko'rganim uchun, SQLite ma'lumotlar bazasi bilan barcha ishlar SQLAlchemy ORM orqali amalga oshiriladi. Ma'lumotlar bazasi ma'lumotlar tuzilishini deklarativ uslubda tasvirlash kerak edi:

Sqlalchemy.ext.declarative import dan sqlalchemy import dan Deklarativ_base dan Ustun, Butun, Sonli, DateTime, Unicode, Boolean, LargeBey, ForeignKey Base = Deklarativ_base () sinf Abonent (Base): __tablename__ = "abonentlar" id = Ustun (Integer, asosiy_ kalit = True) hisob = Ustun (Unicode (32), indeks = True) kod = Ustun (Unicode (32)) manzil = Ustun (Unicode (512)) fio = Ustun (Unicode (256)) manba = Ustun (Unicode (16) ) psu = Ustun (Unicode (256)) tso = Ustun (Unicode (256)) np = Ustun (Unicode (256)) ko'cha = Ustun (Unicode (256)) uy = Ustun (Butun) tekis = Ustun (Butun) mro = Ustun (Unicode (256)) sinf To'lov (baza): __tablename__ = "to'lovlar" # va boshqalar ...

Endi ushbu modulni har qanday python loyihasiga import qilish kifoya va siz ma'lumotlar bilan ishlashingiz mumkin.

Men sizning savolingizni oldindan bilaman - "nima uchun SQLite"? Asosiy sabab, ma'lumotlar bazasi faqat o'qish uchun, shuning uchun SQLite-ga yozish bilan bog'liq muammolar bizni xavotirga solmasligi kerak. Ikkinchidan, ushbu ma'lumotlar bazasi formatining qulayligi - uni ko'rish qulayroq (ko'plab bepul yordamchi dasturlar mavjud, jumladan FireFox uchun super kengaytma). Uchinchidan, ba'zi hollarda abonentlarga MySQL -serverga ulanmagan mashinalardan kirishni talab qilish kerak edi. Bunday holda, SQLite ma'lumotlar bazasi faylini nusxalash kifoya va bu mashina barcha ma'lumotlarga kira oladi.

Yuk tushirish kuniga bir marta kechasi sodir bo'ladi. 1C -ga ma'lumotlarni kiritish xuddi shu tarzda avtomatlashtirilishi mumkin. Masalan, abonentlar qoldirgan o'qishlarni shaxsiy hisobi veb -saytida qayd etish talab qilinadi. Bunday holda, biz yana 1C ga ulanamiz va dastur usulidan foydalanib "O'qish dalolatnomasi" hujjatini tuzamiz va bajaramiz. Men kodni quyida beraman.

Python -da COM ob'ektlari bilan ishlash biroz g'ayrioddiy. Birinchidan, kodning "pitonligi" yo'qoladi - 1C da o'zgaruvchilar va funktsiyalarni nomlash qoidalari, yumshoq qilib aytganda, Python Zen -ga mos kelmaydi. Ikkinchidan, hamma biladi, 1C ob'ektlari ko'pincha kirill alifboslari deb ataladi, bu Python -da ishlab chiqishda muammo tug'diradi ... lekin ularni hal qilish mumkin. Sizga kod bilan tanishishni taklif qilaman:

Pythoncom importi win32com.client V82_CONN_STRING = "Srvr = v8_server; Ref = v8_db; Usr = foydalanuvchi nomi; Pwd = megapass;" pythoncom.CoInitialize () V82 = win32com.client.Dispatch ("V82.COMConnector"). Ulanish (V82_CONN_STRING)

Koddan ko'rinib turibdiki, mijoz 1C bilan ishlash uchun ishga tushiriladi. COM obyekti "V82.COMConnector" nomi bilan belgilanadi. E'tibor bering, bu nom V8.2 platformasi uchun amal qiladi, agar sizda 8.1 versiya bo'lsa, bu nom "V81.COMConnector" bo'ladi.

Boshlangan mijozda biz Connect () usulini chaqiramiz va unga ulanish satrini o'tkazamiz. String server nomi, bazasi, foydalanuvchi va paroldan iborat. Olingan V82 obyekti 1C ilovasi bilan aloqani saqlaydi. Unda Disconnect () usuli yoki shunga o'xshash narsa yo'q. Bazadan uzish uchun del () funktsiyasi yordamida ob'ektni xotiradan o'chirish yoki None o'zgaruvchisini tayinlash kifoya.

Ob'ektga ega bo'lgan holda, siz 1C global kontekstining istalgan maydonlari va usullariga kirishingiz, TabularDocument, TableValues ​​va boshqalar kabi universal ob'ektlar bilan ishlashingiz mumkin. Shuni hisobga olish kerakki, COM ulanishi orqali ishlayotganda, 1C "Tashqi aloqa" rejimida ishlaydi. U hech qanday interaktiv funktsiyalarni bermaydi, masalan, qalqib chiquvchi dialoglar, bildirishnomalar va, eng muhimi, shakllar. Ishonchim komilki, siz hujjat formasi modulidagi Button1Click () protsedurasidagi eng muhim funktsiyalarni o'z ichiga olgan konfiguratsiya ishlab chiquvchilarini bir necha bor la'natlaysiz.

Keling, kiril alifbosi kabi muhim narsa haqida gapiraylik. 1C-bu ikki tilli muhit va har bir rus uslubi uchun ingliz tilidagi analog mavjud bo'lishiga qaramay, ertami-kechmi kirill atributiga murojaat qilish kerak bo'ladi. Agar PHP yoki VBSCript tillarida bu hech qanday muammo tug'dirmasa,

Con = CreateObject ("v81.COMConnector") ni o'rnating v8 = Con.Connect ("ConnectionString") AccountsManager = v8.Documents.Invoices ni o'rnating .... AccountsRecord = AccountsManager.CreateElement () AccountsRecord.Contractor = .... ni o'rnating. .... AccountsWrite.Write ()

Keyin Python kodi sintaksik xato bilan ishdan chiqadi. Nima qilsa bo'ladi? Konfiguratsiya tahrirlansinmi? Yo'q, getattr va setattr usullaridan foydalanish kifoya. MAQOMOTI ob'ektini va atributning kirillcha nomini ushbu funktsiyalarga o'tkazib, siz qiymatlarni mos ravishda olishingiz va o'rnatishingiz mumkin:

# kodlash = cp1251 katalogi = getattr (V82. Kataloglar, "Shaxsiy hisoblar")

Quyidagilar muhim: atributlarning nomlari, shuningdek funktsiyalar va usullarning parametrlari cp1251 kodlashda o'tkazilishi kerak. Shuning uchun, kodlash yo'lini oldindan oldini olish uchun, uni faylning boshida e'lon qilish mantiqiy: # coding = cp1251. Shundan so'ng, siz ularni kodlashdan xavotirlanmasdan satrlarni o'tkazishingiz mumkin. Lekin! 1C dan olingan barcha satrlar (funktsional qo'ng'iroqlar natijalari, so'rovlar) UTF-8da kodlangan bo'ladi.

1C muhitida so'rovni bajaradigan kodga misol, natijani takrorlaydi va ma'lumotlar bazasini SQLite -ga saqlaydi:

# coding = cp1251 q = "" "PersonalAccounts.Code AS kodini, PersonalAccounts.Structure.PopulatedPart.Name +", " + PersonalAccounts.ShortAddress AS manzili, PersonalAccounts.A obunachisi.Name AS fio, PersonalAccounts.CA bo'linmasi EXPRESS (XususiyatlarPersonalAccountsSliceLast.Value AS Directory.TerritoriallyNetworkOrganizations). AS tso, PersonalAccounts.Structure.PopulatedPart.Name AS np, PersonalAccounts.Street.Room.Room.Number.AS. Street, FaceAccounts.D., PersonalAccount. AS mro FROM Directory.PersonalAccounts AS PersonalAccounts LEFT JOIN Ma'lumotlarni Ro'yxatdan o'tish. "So'rov", q) tanlash = so'rov.Execute (). () Ni tanlang.) CONN = db.connect () abonent.account = selection.code.strip () abonent.code = tanlash.code abonent.fio = selection.fio abonent.address = tanlash.adress abonent.psu = tanlash.psu abonent.tso = tanlash.tso abonent.source = u "ASRN" abonent.np = tanlash.np abonent.street = tanlash.ko'cha abonent.house = tanlash.

Bu erda CONN - SQLite ma'lumotlar bazasiga ulanish sessiyasi. So'rov obyekti yaratiladi, uning matni to'ldiriladi. Yuqorida ta'kidlab o'tilganidek, so'rov matni cp1251da bo'lishi kerak, u uchun kodlash birinchi bo'lib e'lon qilinadi. So'rov bajarilgandan so'ng, barcha abonentlar dublikatlar qo'shilmasligi uchun ma'lumotlar bazasida o'chiriladi, so'ngra ular tsiklga qo'shiladi va yakuniy majburiyat bajariladi.

So'rovlar bilan ishlashda men quyidagi qoidalarni topdim.

Maydonlarni tanlashda ularga lotin harflari bilan nom bering, ularga getattr () o'rniga selektor (nuqta) orqali murojaat qilish ancha qulayroq bo'ladi.
- Faqat ibtidoiy ma'lumotlar turlarini tanlang: satrlar, raqamlar, sana va boolean. Hech qachon ob'ektga havolalarni tanlamang (hujjat, ma'lumotnoma)! Shu nuqtai nazardan, havolalar siz uchun mutlaqo keraksiz va hatto zararli, chunki har qanday rekvizit yoki havola usuli har qanday qo'ng'iroqni COM aloqasi orqali olib keladi. Agar siz havola atributlariga pastadir orqali kirsangiz, bu juda sekin bo'ladi.
- Agar sana maydonini tanlasangiz, u PyTime obyekti sifatida qaytariladi. Bu COM ulanishida sana / vaqtni o'tkazish uchun maxsus ma'lumotlar turi. U bilan ishlash odatiy datetime kabi qulay emas. Agar siz ushbu ob'ektni int () ga o'tkazsangiz, vaqt tamg'asi qaytariladi, undan siz dattimestamp () usuli yordamida vaqtni olishingiz mumkin.

Endi bosma hujjatlar qanday shakllanishini ko'rib chiqaylik. Gap shundaki, iste'molchiga oldindan tayyorlangan hujjatlarni, masalan, to'lov kvitansiyasi yoki yarashuv hisobotini yuklab olish imkoniyatini berish kerak. Ushbu hujjatlar, 1C ga muvofiq tuziladi belgilangan talablar, Python -da ularni amalga oshirish uzoq davom etadi. Shuning uchun, hujjatlarni 1C da yaratish va ularni saqlash yaxshiroqdir Excel formati.

Shunday qilib, yarashuv aktining hujjati maxsus tuziladi tashqi ishlov berish... 1C terminologiyasi bilan tanish bo'lmaganlar uchun: ishlov berish-bu o'z moduli, shakllari, andozalari bo'lgan, 1C muhitida ishlashga mo'ljallangan mustaqil dastur. Qayta ishlashni boshlash, uning tafsilotlarini to'ldirish va bizni qaytaradigan funktsiyani chaqirish kerak elektron jadval hujjati, 1C da ko'rish uchun mo'ljallangan. Bu hujjat Excel formatida saqlanishi va serverga ko'chirilishi yoki ma'lumotlar bazasiga yozilishi kerak.

Link = getattr (V82.Catalogs, "SystemReports"). FindByDescription ("Elaine yarashtirish akti") nav_url = V82.GetURL (havola, "Hisobot") nomi = V82.ExternalReports.Connect (nav_url) ExternalReport = V82.ExternalReports (ism) setattr (ExternalReport, "Shaxsiy hisob", ma'lumotnoma) table_doc = ExternalReport.GetDoc () path = V82.GetTempFileName ("xls") table_doc.Write (yo'l, V82 .SublicsheetDocumentFileType.XLS) hisobot = modellar.Report () report .account = reference.Code.strip () report.type = u "act" report.document = open (path, "rb"). read () CONN.add (report)

Yuqoridagi parcha quyidagilarni bajaradi. Hujjatni tashkil etuvchi ishlov berish ulangan. Ishlov berish konfiguratsiyaga o'rnatilishi mumkin, diskda yoki 1C ma'lumotlar bazasida saqlanadi (biron bir ma'lumotnomada). Davolanishlar tez -tez o'zgarib turishi sababli, har safar konfiguratsiya yangilanmasa, tez -tez o'zgarib turadigan muolajalar "Tizim hisobotlari" katalogida, "qiymatlar do'koni" turidagi "Hisobot" atributida saqlanadi. Qayta ishlashni ma'lumotlar bazasidan diskka tushirish va yuklash yoki GetURL () usuli yordamida ishga tushirish mumkin, unga katalog elementiga havola va atribut nomini kiritish kerak. Biz atribut qiymatlarini qabul qilingan ishlov berish ob'ektiga belgilaymiz, eksport qilinadigan GetDoc () funktsiyasini chaqiramiz, vaqtinchalik Excel fayliga saqlanadigan elektron jadval hujjatini olamiz. Bu fayl mazmuni SQlite ma'lumotlar bazasiga yozilgan.

Ko'rib chiqilishi kerak bo'lgan oxirgi narsa - bu dasturiy ta'minotni 1C ga kiritish. Aytaylik, siz obunachilardan o'qishni kiritmoqchisiz. Buning uchun "O'qish dalolatnomasi" hujjatini yaratish va bajarish kifoya:

# coding = cp1251 act = getattr (V82.Documents, "ActCreateDocument") act = act.CreateDocument () setattr (harakat, "Ko'rsatma", 1024.23) setattr (harakat, "Abonent", "Ivanov") # Boshqa ma'lumotlarni to'ldirish ... harakat. Yozish ()
Endi ma'lumotlarni kiritish avtomatlashtirilgan.

Shunday qilib, men COM ulanishi yordamida ma'lumotlarni dasturiy ravishda tushirish va yuklashga asoslangan usulni bayon qildim. Bu usul mening tashkilotimda deyarli bir yildan beri muvaffaqiyatli ishlamoqda. 1C -dan tashkil topgan bazada 3 ta to'lov tizimi, Internet ekvayring (Internet orqali kartalar orqali to'lov), shuningdek shaxsiy hisob qaydnomasi mavjud. Bundan tashqari, ma'lumotlar bazasi ulangan turli xil skriptlar tartibni avtomatlashtirish uchun.

Usulning kamchiliklariga qaramay (COM ulanishining sekin tezligi), umuman olganda u barqaror ishlaydi. Bizda har qanday tilda ishlash mumkin bo'lgan mustaqil platformadagi ma'lumotlar (SQLite) mavjud. Kodning asosiy qismi Python -da yozilgan, bu shuni anglatadiki, siz 1C da orzu ham qila olmaydigan ko'plab vositalar va texnikalar mavjud.

Bu biri mumkin bo'lgan usullar 1C bilan o'zaro ta'sir. Ishonchim komilki, bu yangi emas va ehtimol kimdir tomonidan sinovdan o'tgan va optimallashtirilgan. Ammo men sizni o'zim qadam qo'ygan tuzoqlardan qutqarish uchun iloji boricha jarayonning tafsilotlarini aytishga harakat qildim.

Barchangizga omad tilayman va esda tutingki, 1C chizilganidek dahshatli emas!

1C bazalari o'rtasida ma'lumot almashish variantlaridan biri bu COM ulanishi orqali almashishdir.

COM ulanishidan foydalanib, siz 1C ma'lumotlar bazasidan boshqasiga ulanishingiz va ma'lumotlarni o'qishingiz yoki yozishingiz mumkin. Bu usul ham ma'lumotlar bazasining mijoz-server versiyalarida, ham fayllar bazasida ishlatilishi mumkin. Ushbu maqolada biz bunday ulanishlarning misollarini tahlil qilamiz. Misollar 8.2 platformasidan foydalanadi.

Siz 1C ilovasi uchun ikki turdagi COM ob'ektlarini yaratishingiz mumkin. u V82. Ilova va V82.COM ulagichi... Bo'lsa V82. Ilova deyarli 1C ilovasining to'liq namunasi ishga tushirildi. ishlatilgan taqdirda V82.COM ulagichi kichik server qismi ishga tushadi.
Bunday holda, ish tezligi yuqori, lekin ba'zi funktsiyalar mavjud bo'lmasligi mumkin. Xususan, tashqi birikmalar bilan ishlash xususiyati belgilanmagan shakllar va umumiy modullar bilan ishlash. Siz asosan ishlatishingiz kerak V82.COM ulagichi va faqat funksionallik yo'q bo'lganda V82. Ilova... Ish tezligining farqi, ayniqsa, katta ma'lumotlar bazalarida sezilishi mumkin.

Shunday qilib, boshlaylik

  1. Keling, COM ob'ektini yarataylik
    • uchun V82. Ilova Ulanish = Yangi COMObject ("V82. Ilova");
    • uchun V82.COM ulagichi Ulanish = Yangi COMObject ("V82.COMConnector");
  2. Keling, ulanish qatorini tuzamiz
    • ma'lumotlar bazasining server versiyasi uchun ConnectionString = "Srvr =" "ServerName" "; Ref =" "BaseName";
    • ConnectionString ma'lumotlar bazasining fayl versiyasi uchun = "Fayl =" "PathKBase" "; Usr = Foydalanuvchi nomi; Pwd = Parol";
  3. Biz bazaga ulanamiz Ulanishga urinish = Ulanish. Ulanish (ConnectionString); Istisno xabari = Foydalanuvchiga yangi xabar; Xabar. Matn = + DescriptionErrors (); Xabar. Hisobot berish (); Harakatlarning tugashi;
  4. Biz tayanch bilan aloqani uzamiz Ulanish = aniqlanmagan;

    Ob'ekt uchun V82. Ilova ulanishni to'xtatish juda muhim, aks holda tugallanmagan seans osilib qoladi, uni qo'lda o'chirish kerak bo'ladi. Bo'lsa V82.COM ulagichi Ulanish protsedura oxirida avtomatik ravishda uziladi va yana bir kichik lahza bor.

    Ulanish o'rnatiladigan foydalanuvchi uchun uning sozlamalarida "Dastur yopilganda tasdiqlash so'rovi" katakchasi o'chirilgan bo'lishi kerak.

Keling, barcha kodlarni birlashtiramiz.

Ulanish = Yangi COMObject ("V82. Ilova"); // Ulanish = Yangi COMObject ("V82.COMConnector"); ConnectionString = "Srvr =" "Server1C" "; Ref =" "MyBase" "; Usr = Petya; Pwd = 123"; // ConnectionString = "Fayl =" "S: \ MyBase" "; Usr = Petya; Pwd = 123"; Ulanishga urinish = Ulanish. Ulanish (ConnectionString); Istisno xabari = Foydalanuvchiga yangi xabar; Xabar. Matn = "Ma'lumotlar bazasiga ulanib bo'lmadi"+ Tavsif xatolar (); Xabar. Hisobot berish (); Harakatlarning tugashi; Ulanish = aniqlanmagan;

Ulanish turi uchun V82. Ilova usul dastlab yaratilgan COM obyekti uchun ishlatiladi va uchun V82.COM ulagichi usul ulanishda qo'llaniladi. so'rov bilan ishlash davom etadi standart vositalar yordamida 1C. kodda shunday ko'rinadi:

So'rov = Ulanish. NewObject ("So'rov"); // uchun V82.COM ulagichi So'rov = Ulanish. NewObject ("So'rov"); // uchun V82. Ilova So'rov. Matn = "SELECT | Tashkilotlarning lavozimlari. Kod, | Tashkilotlarning pozitsiyalari.| QANDAY | Ma'lumotnoma. Tashkilotlarning pozitsiyalari AS Tashkilotlarning pozitsiyalari "; Natija = So'rov. Yugurish (); Misol = Natija. Tanlash (); Namuna olish paytida. Keyingi () Loop Loop oxiri;

1C: Enterprise 8.3 versiyasi uchun hamma narsa o'zgarishsiz qoladi, faqat COM ob'ektlarini yaratishda siz undan foydalanishingiz kerak "V83.COM ulagichi" yoki "V83. Ilova".

Ma'lumotni bitta 1C konfiguratsiyasidan ikkinchisiga o'tkazish usullaridan biri bu COM yordamida dasturiy ulanishdir. Ko'pgina kompaniyalar turli xil asoslardan foydalanadilar, ular orasida ma'lum bog'liqliklar va bog'liqliklar bo'lishi kerak. Agar nafaqat ma'lumotlarni uzatish, balki ma'lum ma'lumotlarni qayta ishlash zarur bo'lsa, u holda COM ulanishi eng maqbul mexanizm bo'ladi. Boshqa 1C ma'lumotlar bazasidan ma'lumotlarni tahlil qilish qobiliyati har qanday ishlab chiqaruvchi uchun foydalidir.

Biz COM orqali 1C bazasiga ulanamiz

1C da COM ulanishini amalga oshirish uchun COMConnector deb nomlangan maxsus mexanizm ishlatiladi. Bu ob'ekt platforma bilan o'rnatiladi va aloqa uchun ishlatiladi axborot bazalari... Shuni ta'kidlash kerakki, 8.2 va 8.3 -versiyalar uchun moslamalarning har xil nomlari ishlatiladi - "V82.COMConnector" va "V83.COMConnector".

Shuni yodda tutingki, litsenziya bazaga COM ulanishi uchun bekorga sarflanadi - bir vaqtning o'zida bir nechta ulanishlar bajarilmasligi kerak. Bu cheklangan miqdordagi litsenziyaga ega bo'lgan tashkilotlar uchun ayniqsa muhimdir. Bu muammoning yordami bilan hal qilinishi mumkin muntazam vazifalar ular ma'lumotlar bazasiga faol foydalanuvchi ulanishlari bo'lmaganda bajariladi.

Boshqa ma'lumotlar bazasiga ulanish va kerakli ma'lumotlarni so'rash uchun siz quyidagi ma'lumotlarni bilishingiz kerak:

  1. Bu qanday turdagi - fayl yoki mijoz -server;
  2. U qayerda joylashgan;
  3. Siz uni qanday nom va parol ostida kiritishingiz mumkin;
  4. Sizni qanday ma'lumotlar qiziqtiradi.

COM ulanishini amalga oshirish uchun dastlabki uchta nuqtadan boshlab, parametrlar qatorini tuzish kerak. Axborot xavfsizligi turiga qarab farq qiladi tashqi ko'rinish... Olingan mag'lubiyat yordamida ulanish o'rnatiladi, uning yordamida siz boshqa ma'lumotlar bazasidan ma'lumotlarni yig'ish va har qanday usul bilan qayta ishlashingiz mumkin.

ConnectionParametersFileIB = "Fayl =" "Path_to_base" "; Usr =" "Foydalanuvchi nomi" "; Pwd =" "Parol" ""; ConnectionParametersClientServerIB = "Srvr =" "Server_Name" "; Ref =" "Database_name" "; Usr =" "User_name" "; Pwd =" "Password" "";

Ulanish funktsiyasi oddiy va agar barcha parametrlar to'g'ri bo'lsa, savol tug'dirmasligi kerak. Nosozliklarni tuzatish va tahlil qilishni tezlashtirish uchun mumkin bo'lgan xatolar Ulanishni urinish konstruktsiyasiga o'rash yaxshidir. Funktsiya "COM obyekti" turidagi qiymatni qaytaradi, u bilan u kerakli ma'lumotlarni oladi.

& AtServer funktsiyasi ConnectKbase () exportConnectionParametersIB = "Fayl =" "E: \ base 1s \ ERP" "; Usr =" "Administrator" "; Pwd =" "1" ""; V83COMCon = Yangi COMObject ("V83.COMConnector"); V83COMCon.Connect -ni qaytarishga urinish; Istisno hisoboti (DescriptionErrors ()); Qaytarish aniqlanmagan; Harakatlarning tugashi; EndFunksiya

MAQOMOTI ulanishi orqali siz nafaqat ma'lumotlarni tanlashingiz, balki ulanayotgan ma'lumotlar bazasiga qo'shishingiz ham mumkin. Shuni esda tutingki, biz ob'ektni COM 4 orqali o'tkazishimiz mumkin ibtidoiy turlari ma'lumotlar. Boshqa turlarni platformaning o'rnatilgan qidirish funktsiyalari yordamida ko'rsatish kerak bo'ladi. E'tibor bering, global platforma funktsiyalari ham COM ulanishi orqali chaqiriladi.

Biz 1C ma'lumotlar bazasidan ma'lumotlarni olamiz

Kerakli ob'ektni olganingizdan so'ng, siz boshqa ma'lumotlar bazasidan ma'lumotlarni o'qishingiz kerak. Buning uchun biz funktsiyadan olingan "COM ob'ekti" turining qiymatidan foydalanib, 1C 8.3 da COM ulanishi orqali so'rovni qo'llaymiz. Avval ma'lumotlar bazasiga ulanish, so'ngra so'rovni bajarish muhimdir. Ijro NewObject usuli orqali sodir bo'ladi, ob'ekt turini parametr shaklida "so'rov" shaklida belgilaydi.

& AtServer protsedurasi TestCOMOnServer () Ulanish = bazaga ulanish (); IfTypeZnch (Ulanish) turi ("Aniqlanmagan") Keyin RequestBPZO = Connection.NewObject ("So'rov"); QueryBPZO.Text = "SELECT 15 | DirectoryUser.Name AS Name | FROM | Directory.users ASDirectoryUser"; Qabul qilish = QueryBPZO.Run (). Tanlang (); Sample.next () tsikli hisoboti (Sample.Number); Tsiklning oxiri; EndIf; Jarayon tugashi>

Masalan, ma'lum bir bo'lim foydalanuvchilari haqida ma'lumot olish uchun biz so'rovda parametrlar orqali shart qo'yamiz. Bitta parametr oddiy turdagi bo'ladi - satr va bo'lim "Korxona tuzilishi" katalogining elementiga havola bo'ladi. So'rov natijasi - bu COM ulanadigan ma'lumotlar bazasida mavjud bo'lgan turdagi ro'yxatdagi maydonlari bo'lgan jadval. Agar siz ularni boshqa turlarga aylantirishingiz kerak bo'lsa, standart platforma funktsiyalaridan foydalaning:

  • Chiziq ();
  • Raqam ();
  • Sana ().
RequestBPZO = Connection.NewObject ("So'rov"); QueryBPZO.Text = "Avval 15 | DirectoryUser.Name ni AS | FROM | Directory.Users AS AS DirectoryUsers I WHERE | DirectoryUser.Division = & NadedDivision | VA DirectoryUser.Name kabi" "%" " + va DesiredName +" "%" ni tanlang. ""; RequestBPZO.SetParameter ("Kerakli Birlik", Ulanish. References.StructureEnterprise.FindByCode ("00-000023")); RequestBPZO.SetParameter ("Kerakli ism", "Ekaterina"); Qabul qilish = QueryBPZO.Run (). Tanlang (); Selection.next () tsikli hisoboti (Selection.Name); Tsiklning oxiri;

Agar siz bir qator parametrlar, masalan, bo'limlar bo'yicha tanlash uchun massivni bazaga o'tkazishingiz kerak bo'lsa, NewObject buyrug'i ham ishlatiladi. Xuddi shunday, siz ulanish orqali boshqa bazaning elementlari bilan to'ldirib, qiymatlar ro'yxatini yoki jadvalini o'tkazishingiz mumkin. Qidirish uchun hamma narsa mavjud mavjud usullar platformaning ob'ektlari va mexanizmlari.

RequestBPZO = Connection.NewObject. ("So'rov"); QueryBPZO.Text = "" Avval 15 | DirectoryUser.Name ni AS | FROM | Directory.USERLARINI QAYDI DirectoryUser I WHERE | DirectoryUser.Division B (& NothingDivision) | VA DirectoryUser.Name ""%"" + va DesireName + "kabi tanlang. %"" "; OU qatori = Connection.NewObject ("Massiv"); Bo'limlar Array.Add (Ulanish. Manbalar. EnterpriseStructure.FindByCode ("00-000023"))); Bo'limlar Array.Add (Ulanish. Manbalar. EnterpriseStructure.FindByCode ("00-000038"))); Bo'limlar Array.Add (Ulanish. Manbalar. EnterpriseStructure.FindByCode ("00-000046"))); RequestBPZO.SetParameter ("KerakliUnit", ArrayUnits); RequestBPZO.SetParameter ("Kerakli ism", "Ekaterina"); Namuna = QueryBPZO.Run (). Tanlang (); Selection.next () tsikli hisoboti (Selection.Name); Tsiklning oxiri;

Hujjatlar yoki katalog elementlarini o'tkazishda har doim ma'lum bir ob'ektning uzatilishini nazorat qilish haqida savol tug'iladi. COM ulanishlari yordamida siz bunday muammolarni yagona identifikator orqali hal qilishingiz mumkin. Tarmoqli identifikator yordamida "GetLink" funktsiyasidan foydalanib, joriy IB -ning identifikatori orqali ulanadigan ma'lumotlar bazasida ob'ektni topish kerak. Agar topilmasa, uni COM ulanishi yordamida yaratishingiz mumkin.

StrIdent = String (References.Users.FindByCode ("00-0000313"). UniqueIdentifier ()); NOT NOT ValueFilled (Connection.References.Users.GetRef (Connection.NewObject ("UniqueIdentifier", StrIdent)))) keyin NewUser = Connection.References.Users.CreateElement (); NewUser.Name = Directories.Users.FindByCode ("00-0000313"). Ism; NewUser.Physical = Malumot kitoblari.Users.FindByCode ("00-0000313"). Jismoniy shaxs; NewUser.Write (); EndIf;

Bundan tashqari, COM ulanishi protsedura va funksiyalardan foydalanish huquqiga ega umumiy modullar"Tashqi ulanish" xususiyati yoqilgan 1C. Bu shartga qo'shimcha ravishda, chaqirilgan funktsiya yoki protsedura eksport qilinadigan bo'lishi va serverda bajariladigan interaktiv harakatlarni o'z ichiga olmaydi. Aks holda, operatsiyani bekor qilish haqidagi xatoni ko'rasiz.

Murakkab ..; VariableOfFunction = Ulanish ..; funktsiya chaqiruvi> umumiy modul nomi> protsedura chaqiruvi> umumiy modul nomi>

1C -ning boshqa bazasi bilan tashqi ulanish imkoniyatlari juda keng va sizga ko'p vazifalarni bajarishga imkon beradi. Asboblar to'plamini to'g'ri baholay olish va maqbul echimni tanlash imkoniyatiga ega bo'lish muhimdir. Ko'pgina hollarda, bu ko'nikma faqat tajriba bilan yoki tajribali mutaxassislar ishining misollarini o'rganish natijasida paydo bo'ladi.