ملفات جداول البيانات الخارجية.

مرحبا خبراتشانس!

في هذا المقال ، أريد أن أتحدث عن كيفية تحقيق التكامل مع منصة 1C في مؤسستي. ما دفعني إلى القيام بذلك هو الغياب شبه الكامل لـ معلومات تقنيةحول هذا الموضوع. عند قراءة مقالات وتقارير مختلفة حول موضوع ربط 1C بأي نظام معلومات ، فأنت مقتنع مرارًا وتكرارًا أنها كلها تسويقية وإثباتية بطبيعتها وليست تقنية أبدًا ، وتعكس المشكلة وجوهر حلها.

أحذرك من أن الطريقة لا تدعي بأي حال أنها عالمية. نظرًا لوجود العديد من تكوينات 1C نفسها ، و نظم المعلوماتواللغات والمنصات - وأكثر من ذلك ، فإن عدد التركيبات الممكنة ضخم. هدفي هو إظهار حل واحد ممكن.


كلغة تتكامل مع 1C ، اخترت Python. إنه مناسب جدًا لأتمتة العمليات. يتم تسهيل ذلك من خلال بناء الجملة البسيط (يتم كتابة الكود بسرعة كبيرة) ، والمكتبة القياسية الغنية (أقل حاجة لوحدات الطرف الثالث) ، عبر الأنظمة الأساسية - مع وجود احتمال كبير ، سيعمل الكود المكتوب في نظام التشغيل Linix بنجاح في شبابيك.

بادئ ذي بدء ، سأوجز البيانات التي سنعمل بها. المنظمة - شركة تزويد الطاقة في منطقة الشرق الأقصى - تخدم ما يقرب من 400 ألف مشترك ، والقاعدة هي 1C على تكوين مكتوب ذاتيًا. لكل مشترك ، يتم تخزين مدفوعاته ومستحقاته والخدمات المستهلكة وخطط الحساب وأجهزة القياس والقراءات والعديد من البيانات الأخرى.

مرة واحدة في المنظمة كان هناك برنامج مكتوب في دلفي ويستخدم MSSQL / Firebird كقاعدة بيانات. في تلك الأوقات المجيدة ، كان من الممكن الاتصال بقاعدة البيانات باستخدام أي لغة وتنفيذ العديد من الإجراءات - تحديد المشتركين المدينين ، والمدفوعات اللاحقة المستلمة ، وتسجيل قراءات الأداة. ليس من المستغرب أن تتزايد باستمرار مجموعة البرامج النصية التي تعمل على أتمتة الروتين. يمكن للمبرمجين تنفيذ أي إجراء دون فتح البرنامج نفسه.

للأسف ، مع الانتقال إلى 1C ، انتهى الهدية الترويجية - لم يعد من الممكن الاتصال بقاعدة البيانات مباشرة. بشكل عام ، تعتبر منصة 1C نفسها غير قابلة للتجزئة ولا تتكامل بشكل جيد مع الأنظمة الأخرى. إنه ، كما يقولون ، شيء في حد ذاته. عند تحميل البيانات في 1C ، يجب أن نتذكر أنه لن يكون من السهل استخراجها من هناك. ولكن نظرا لحقيقة أن المنظمة كانت مطالبة بتنفيذ أنظمة الدفع و المساحة الشخصية، كان لا بد من إيجاد حل.

كانت المهام الرئيسية التي واجهتها هي القدرة على الحصول بسرعة على بيانات معينة حساب شخصي- الاسم الكامل والعنوان وأجهزة القياس وقراءات الأداة والمدفوعات والرسوم. بالإضافة إلى تشكيل المستندات - فعل التوفيق ، إيصال الدفع. لذلك ، لا توجد إمكانية للاتصال المباشر بقاعدة البيانات - فقد رأى كل من بحث في قاعدة بيانات 1C على خادم SQL أنه من الصعب اكتشافها في كتلة الجداول مثل aaa1 و aaa2. وبناء استعلامات بأسماء هذه الجداول والحقول هو ببساطة غير واقعي. بالإضافة إلى ذلك ، فإن العديد من جداول 1C (خاصةً الأهم منها ، مثل قطع الأخير ، والأرصدة والثورات) هي جداول افتراضية وموزعة عبر جداول فعلية مختلفة ، وتتجمع في صلات متعددة. هذه الطريقة غير مناسبة.

توفر منصة 1C القدرة على الاتصال بها عبر اتصال COM. مثل العديد من برامج windows ، أثناء تثبيت 1C ، يتم تسجيل كائني COM في النظام - خادم الأتمتة وموصل COM. يمكنك العمل مع كلا الكائنين باستخدام لغة تدعم تقنية COM.

كائن Automation Server هو تطبيق 1C لا يختلف تقريبًا عن تطبيق العميل العادي. الفرق هو أنه بالإضافة إلى ذلك ، هناك إمكانية للتحكم البرمجي في مثيل التطبيق. عند العمل مع كائن COM Connector ، يتم تشغيل إصدار خفيف الوزن من تطبيق 1C ، حيث لا تتوفر النماذج ، بالإضافة إلى الوظائف والأساليب المتعلقة بالواجهة و تأثيرات بصرية. يبدأ التطبيق نفسه في وضع "الاتصال الخارجي". بدء المتغيرات العالمية (على سبيل المثال ، تعريف المستخدم الحاليوإعداداته) في وحدة التوصيل الخارجية 1C. إذا تم استدعاء وظيفة في وضع الاتصال الخارجي في الكود غير المتاح في هذا الوضع ، فسيتم طرح استثناء (والذي سيتم تمريره إلى نص Python الخاص بنا). يجب تأطير الاستدعاءات للوظائف غير الآمنة بتركيبات النموذج

#If NOT OuterConnection ثم تحذير ("مرحبًا!") ؛ #إنهاء إذا

نظرًا لأن العمل مع كائنات COM هو تقنية تعمل بنظام windows فقط ، فليس من المستغرب عدم تضمينها في توزيع Python القياسي. ستحتاج إلى تثبيت ملحق - مجموعة من الوحدات التي توفر جميع الوظائف اللازمة للبرمجة تحت Windows في Python. يمكن تنزيله كمثبت exe تم تجميعه بالفعل. يوفر الامتداد نفسه الوصول إلى السجل والخدمات و ODBC وكائنات COM وما إلى ذلك. بدلاً من ذلك ، يمكنك تثبيت توزيعة ActiveState Python على الفور ، حيث يخرج امتداد Win32 من الصندوق.

لبعض الوقت جربت اتصال COM في تطوير تطبيقات الويب ، على وجه الخصوص ، الحساب الشخصي. تم تحديد العيوب التالية:

اتصال COM بطيء. الأداء المنخفض هو عيب معروف لتقنية COM.
- يمكن أن تستغرق عملية إنشاء اتصال بـ 1C ، اعتمادًا على التكوين ، من 1 إلى 8 ثوانٍ (في حالتي - 6 ثوانٍ). وغني عن القول أن إنشاء اتصال لكل طلب سيؤدي إلى تحميل كل صفحة في 8 ثوانٍ.
- نظرًا لأن تطبيقات الويب Python تعمل كخوادم مستقلة ، يمكن تعويض النقطة السابقة عن طريق تخزين الاتصال في متغير عام واستعادته في حالة حدوث خطأ. كيف تحافظ على الاتصال في PHP ، أنا ، بصراحة ، لم أفكر بعد.
- فقد تطبيق الويب عبر الأنظمة الأساسية.

بناءً على النقاط المذكورة أعلاه ، تقرر تغيير مبدأ التفاعل ، وتقسيمه إلى جزأين - الأول يعتمد على النظام الأساسي (Windows) ، وتفريغ بيانات 1C في أي تنسيق مناسب ، والثاني ، مستقل عن النظام الأساسي ، قادر على العمل مع البيانات دون الشك في أي شيء حول 1C من حيث المبدأ.

استراتيجية العمل على النحو التالي: نص بايثون يتصل بـ 1C ، وينفذ الاستعلامات الضرورية ويحمل البيانات إلى قاعدة بيانات SQLite. يمكنك الاتصال بقاعدة البيانات هذه من Python و PHP و Java. تتم معظم مشاريعنا بلغة Python ، وبما أنني أكره كتابة استعلامات SQL الأولية يدويًا ، فإن كل العمل مع قاعدة بيانات SQLite يتم من خلال SQLAlchemy ORM. كان من الضروري فقط وصف بنية بيانات قاعدة البيانات بأسلوب تعريفي:

من sqlalchemy.ext.declarative import expative_base من sqlalchemy import Column، Integer، Numeric، DateTime، Unicode، Boolean، LargeBinary، ForeignKey Base = releaseative_base () class Abonent (Base): __tablename__ = "abonents" id = Column (Integer، basic_key = صواب) الحساب = العمود (Unicode (32) ، الفهرس = صحيح) الكود = العمود (Unicode (32)) العنوان = العمود (Unicode (512)) fio = العمود (Unicode (256)) المصدر = العمود (Unicode (16) ) psu = العمود (Unicode (256)) tso = العمود (Unicode (256)) np = العمود (Unicode (256)) الشارع = العمود (Unicode (256)) المنزل = العمود (عدد صحيح) مسطح = العمود (عدد صحيح) mro = العمود (Unicode (256)) class Payment (Base): __tablename__ = "payments" # وهكذا ...

الآن يكفي استيراد هذه الوحدة إلى أي مشروع بيثون ، ويمكنك العمل مع البيانات.

أتوقع سؤالك - "لماذا SQLite"؟ السبب الرئيسي هو أن قاعدة البيانات مطلوبة للقراءة فقط ، لذلك لا داعي للقلق بشأن مشاكل الكتابة إلى SQLite. ثانيًا ، يعد تنسيق نظام إدارة قواعد البيانات هذا مناسبًا - وهو أكثر ملاءمة لمشاهدته (هناك الكثير المرافق المجانية، بما في ذلك الامتداد الفائق لمتصفح FireFox). ثالثًا ، في بعض الحالات ، كان مطلوبًا الوصول إلى المشتركين من تلك الأجهزة التي لا يوجد اتصال بخادم MySQL عليها. في هذه الحالة ، يكفي نسخ ملف قاعدة بيانات SQLite ، وسيكون بإمكانك الوصول إلى جميع المعلومات على هذا الجهاز.

يحدث التفريغ مرة في اليوم ليلاً. يمكن أتمتة إدخال البيانات في 1C بنفس الطريقة. على سبيل المثال ، يلزم تسجيل القراءات التي تركها المشتركون على موقع الحساب الشخصي. في هذه الحالة ، نتصل مرة أخرى بـ 1C وننشئ وننفذ برمجيًا وثيقة "فعل أخذ الشهادات". سأقدم الرمز أدناه.

العمل مع كائنات COM في Python أمر غير معتاد بعض الشيء. أولاً ، يتم فقد "Pythonicity" للشفرة - قواعد تسمية المتغيرات والوظائف في 1C ، بعبارة ملطفة ، لا تتوافق مع Zen of Python. ثانيًا ، يعلم الجميع أن كائنات 1C غالبًا ما تسمى الأحرف السيريلية ، والتي ستسبب مشاكل عند التطوير في Python ... لكنها قابلة للحل. أقترح عليك إلقاء نظرة على الكود:

استيراد استيراد pythoncom win32com.client V82_CONN_STRING = "Srvr = v8_server؛ Ref = v8_db؛ Usr = username؛ Pwd = megapass؛" pythoncom.CoInitialize () V82 = win32com.client.Dispatch ("V82.COMConnector"). قم بتوصيل (V82_CONN_STRING)

كما ترى من الكود ، تمت تهيئة العميل للعمل مع 1C. يتم تعريف كائن COM بالاسم "V82.COMConnector". يرجى ملاحظة أن هذا الاسم صالح لمنصة V8.2 ، إذا كان لديك الإصدار 8.1 ، فسيكون الاسم "V81.COMConnector".

في العميل الذي تمت تهيئته ، نسمي طريقة Connect () ، ونمررها بسلسلة الاتصال. تتكون السلسلة من اسم الخادم وقاعدة البيانات والمستخدم وكلمة المرور. يقوم كائن V82 الناتج بتخزين الاتصال بتطبيق 1C. ليس لديها طريقة Disconnect () أو أي شيء من هذا القبيل. لقطع الاتصال بالقاعدة ، يكفي إزالة الكائن من الذاكرة باستخدام وظيفة del () أو تعيين المتغير إلى None.

بوجود كائن ، يمكنك الوصول إلى أي حقول وأساليب للسياق العام 1C ، والعمل مع كائنات عالمية مثل TabularDocument ، TableValues ​​، إلخ. من المهم ملاحظة أنه عند العمل من خلال اتصال COM ، يعمل 1C في وضع "الاتصال الخارجي". لا يتضمن أي ميزات للعمل التفاعلي ، مثل الحوارات المنبثقة والإشعارات والأهم من ذلك النماذج. أنا متأكد من أنك سوف تلعن مطوري التكوين أكثر من مرة لتضمين أهم وظيفة في إجراء Button1Press () في وحدة نموذج المستند.

دعنا نتحدث عن شيء مهم مثل السمات السيريلية. على الرغم من حقيقة أن 1C هي بيئة ثنائية اللغة وهناك ما يعادل اللغة الإنجليزية لكل طريقة روسية ، فستحتاج عاجلاً أم آجلاً إلى الرجوع إلى السمة السيريلية. إذا كان هذا في PHP أو VBSCript لن يسبب أي مشاكل ،

تعيين Con = CreateObject ("v81.COMConnector") تعيين v8 = Con.Connect ("سلسلة الاتصال") تعيين AccountManager = v8.Documents.Accounts .... Set AccountsRecord = AccountsManager.CreateItem () AccountsRecord.Account = ... . .... AccountsWrite.Write ()

ثم سيتعطل رمز Python مع وجود خطأ نحوي. ما يجب القيام به؟ تحرير التكوين؟ لا ، فقط استخدم طريقتي getattr و setattr. من خلال تمرير كائن COM واسم السمة السيريلية إلى هذه الوظائف ، يمكنك الحصول على القيم وتعيينها وفقًا لذلك:

# coding = كتالوج cp1251 = getattr (V82.Catalogs ، "PersonalAccounts")

ما يلي مهم: يجب تمرير أسماء السمات ، بالإضافة إلى معلمات الوظيفة والطريقة ، في تشفير cp1251. لذلك ، لتجنب ارتباك الترميز مقدمًا ، من المنطقي إعلانه في بداية الملف: # coding = cp1251. بعد ذلك ، يمكنك تمرير السلاسل دون القلق بشأن ترميزها. لكن! سيتم تشفير جميع السلاسل المستلمة من 1C (نتائج استدعاءات الوظائف ، الطلبات) في UTF-8.

مثال على رمز ينفذ استعلامًا في بيئة 1C ، يكرر النتيجة ويحفظ قاعدة البيانات في SQLite:

# coding = cp1251 q = "" "SELECT PersonalAccounts.Code AS code، PersonalAccounts.Building.Location.Name +"، "+ PersonalAccounts.ShortAddress AS address، PersonalAccounts.Subscriber.Name AS fio، PersonalAccounts.Division.Name AS psu، EXPRESS (CharacteristicsPersonalAccountsSliceLast.Value AS Directory. Roditel.Naimenovanie MRO AS OF AS Spravochnik.LitsevyeScheta LitsevyeScheta ترك الانضمام RegistrSvedeniy.HarakteristikiLitsevyeScheta.SrezPoslednih (، VidHarakteristiki = القيمة (Spravochnik.VidyHarakteristik.TerritorialnoSetevayaOrganizatsiya)) HOW TO HarakteristikiLitsevyeSchetaSrezPoslednih LitsevyeScheta.Ssylka HarakteristikiLitsevyeSchetaSrezPoslednih.Obekt = "" "الاستعلام = V82.NewObject ( "Query"، q) select = query.Execute (). اختر () CONN = db.connect () CONN.query (Models.Abonent) .delete () أثناء التحديد .Next (): abonent = Models.Abonent () abonent.account = select.code.strip () abonent.code = select.code abonent.fio = select.fio abonent.address = select.address abonent.psu = select.psu abonent.tso = select.tso abonent.source = u "ASRN" abonent.np = select.np abonent.street = select.street abonent.house = select.house abonent.flat = select.flat abonent.mro = select.mro CONN.add (abonent) CONN.commit ()

هنا CONN هي جلسة الاتصال بقاعدة بيانات SQLite. يتم إنشاء كائن استعلام ، ويتم تعبئة نصه. كما هو مذكور أعلاه ، يجب أن يكون نص الطلب في cp1251 ، حيث تم التصريح عن الترميز أولاً. بعد تنفيذ الاستعلام ، يتم حذف جميع المشتركين في قاعدة البيانات حتى لا يتم إضافة نسخ مكررة ، ثم يتم إضافتهم في دورة ويتبع الالتزام النهائي.

عند التعامل مع الطلبات ، اكتشفت القواعد التالية.

عند تحديد الحقول ، امنحهم أسماءًا لاتينية ، سيكون الوصول إليها أكثر ملاءمة من خلال محدد (نقطة) ، بدلاً من getattr ().
- اختر أنواع البيانات الأولية فقط: سلاسل وأرقام وتواريخ وبيانات منطقية. لا تقم أبدًا بتحديد روابط إلى كائن (مستند ، دليل)! في هذا السياق ، لا تحتاج مطلقًا إلى مراجع بل إنها ضارة ، لأن أي وصول إلى السمة أو طريقة المرجع سينتج عنه طلب عبر اتصال COM. إذا قمت بالوصول إلى سمات الارتباط في حلقة ، فسيكون ذلك بطيئًا للغاية.
- إذا حددت حقل التاريخ ، فسيتم إرجاعه ككائن PyTime. هذا هو نوع خاصبيانات لنقل التاريخ والوقت في اتصال COM. ليس من الملائم العمل معها كما هو الحال مع التاريخ والوقت المعتاد. إذا قمت بتمرير هذا الكائن إلى int () ، فسيتم إرجاع الطابع الزمني ، والذي يمكنك من خلاله الحصول على التاريخ والوقت باستخدام طريقة fromtimestamp ().

الآن دعونا نلقي نظرة على كيفية تشكيل المستندات المطبوعة. والحقيقة هي أن المستهلك يحتاج إلى إعطائه الفرصة لتنزيل مستندات معدة مسبقًا ، على سبيل المثال ، إيصال دفع أو عقد تسوية. يتم إنشاء هذه المستندات في 1C وفقًا للمتطلبات المحددة ، وسيستغرق تنفيذها في Python الكثير من الوقت. لذلك ، من الأفضل إنشاء المستندات في 1C وحفظها في تنسيق Excel.

لذلك ، يتم إنشاء وثيقة قانون المصالحة بواسطة خاص المعالجة الخارجية. بالنسبة لأولئك الذين ليسوا على دراية بمصطلحات 1C: المعالجة عبارة عن برنامج مستقل له وحدة نمطية ونماذج وقوالب خاصة به ، مصمم للتشغيل في بيئة 1C. من الضروري بدء المعالجة وملء تفاصيلها واستدعاء وظيفة ستعيد إلينا مستند جدول بيانات مخصص للعرض في 1C. يجب حفظ هذا المستند بتنسيق Excel ونسخه إلى الخادم أو كتابته في قاعدة البيانات.

Link = getattr (V82.Catalogs، "SystemReports") FindByDescription ("Elen's Verification Act") nav_url = V82.GetURL (link، "Report") name = V82.ExternalReports.Connect (nav_url) ExternalReport = V82.ExternalReports.Create (الاسم) setattr (ExternalReport، "PersonalAccount"، مرجع) table_doc = ExternalReport.GetDoc () path = V82.GetTempFileName ("xls") table_doc.Write (path، V82 .SpreadsheetDocumentFileType.XLS) report = Models.Report () report .account = reference.Code.strip () report.type = u "act" report.document = open (path، "rb"). اقرأ () CONN.add (تقرير)

المقتطف أعلاه يفعل ما يلي. يتم توصيل المعالجة التي تشكل المستند. يمكن تضمين المعالجة في التكوين أو تخزينها على القرص أو في قاعدة بيانات 1C (في نوع من الدليل). نظرًا لأن العمليات تتغير بشكل متكرر ، حتى لا يتم تحديث التكوين في كل مرة ، يتم تخزين العمليات الأكثر تغييرًا في دليل "ReportsSystems" ، في السمة الخاصة بنوع "تخزين القيمة" بالاسم Report. يمكن تهيئة المعالجة عن طريق تفريغها من قاعدة البيانات إلى القرص وتحميلها ، أو عن طريق طريقة GetURL () ، حيث تحتاج إلى تمرير رابط إلى عنصر الدليل واسم السمة. نقوم بتعيين قيم السمات لكائن المعالجة المستلم ، واستدعاء وظيفة GetDoc () المصدرة ، والحصول على مستند جدول بيانات يتم حفظه في ملف Excel مؤقت. محتوى هذا الملف مكتوب في قاعدة بيانات SQlite.

آخر شيء لا يزال يتعين مراعاته هو الإدخال البرمجي للبيانات في 1C. لنفترض أنه يلزم إدخال إشارات من المشتركين. للقيام بذلك ، يكفي إنشاء وإجراء وثيقة "فعل أخذ الأدلة":

# coding = cp1251 act = getattr (V82.Documents، "Act of أخذ الشهادات") act = acts.CreateDocument () setattr (act، "Indication"، 1024.23) setattr (act، "Subscriber"، "Ivanov") # Filling بتفاصيل أخرى ..act.Write ()
الآن إدخال البيانات آليًا.

لذا ، فقد حددت طريقة تعتمد على تحميل البيانات وتنزيلها برمجيًا باستخدام اتصال COM. تعمل هذه الطريقة بنجاح في مؤسستي لمدة عام تقريبًا. القاعدة ، المكونة من 1C ، تخدم 3 أنظمة دفع ، الحصول على الإنترنت (الدفع بالبطاقات عبر الإنترنت) ، بالإضافة إلى حساب شخصي. بالإضافة إلى ذلك ، يتم توصيل العديد من البرامج النصية بقاعدة البيانات لأتمتة الروتين.

على الرغم من أوجه القصور في الطريقة (سرعة اتصال COM البطيئة) ، فإنها تعمل بشكل مستقر بشكل عام. لدينا بيانات بصيغة مستقلة عن النظام الأساسي (SQLite) يمكن العمل بها من أي لغة. والجزء الرئيسي من الكود مكتوب بلغة Python ، مما يعني توفر العديد من الأدوات والتقنيات التي لا يمكنك حتى أن تحلم بها في 1C.

هذا هو واحد من الطرق الممكنةالتفاعل مع 1C. أنا متأكد من أنه ليس جديدًا وربما تم بالفعل اختباره وتحسينه بواسطة شخص ما. ومع ذلك ، حاولت تحديد أكبر عدد ممكن من تفاصيل العملية لإنقاذك من المزالق التي خطوتها بنفسي.

أتمنى لك كل التوفيق ، وتذكر أن 1C ليست مخيفة كما تم رسمها!

في برنامج خارجي مبني على .NET Framework 4.x ، تحتاج إلى عرض قائمة بالمستندات المحددة. يختار المستخدم نوع المستند ، ثم يتم تكوين قائمة بالوثائق في قاعدة البيانات. يتم استخدام تمثيل ارتباط المستند كبيانات العرض.

تُظهر لقطة الشاشة التالية النافذة الرئيسية للبرنامج.

استغلال الفرص عميل / خادم الأتمتة ، يمكننا الاتصال بـ 1C: Enterprise 8.x infobase من أي تطبيق والحصول على البيانات اللازمة. علاوة على ذلك ، باستخدام إمكانيات .NET Framework ، يمكننا استخدام بناء جملة لغة برمجة النظام الأساسي للعمل من خلال كائن COM الخاص بالاتصال.

قبل الشروع مباشرة في تنفيذ البرنامج ، دعنا نلقي نظرة على بعض الميزات المفيدة لـ .NET 4.x التي تسهل العمل مع عميل / خادم التشغيل الآلي.

.NET 4.x والنوع "الديناميكي"

في إصدار النظام الأساسي .NET 4.x ، أصبح من الممكن استخدام نوع ديناميكيالبيانات "الديناميكية". يمكنك معرفة المزيد حول ميزات استخدام نوع البيانات هذا. اقرأ الرابط التالي.

بشكل عام ، النوع "الديناميكي" يسمح لك بالعمل مع كائنات من نوع "COM" بطريقة مبسطة. بمساعدتها ، يتم الوصول إلى خصائص وأساليب الكائن "من خلال نقطة".

ألا يذكرك بشيء؟ يحتوي الكود على السيريلية وهو مشابه جدًا لتركيب لغة برمجة النظام الأساسي.

التنفيذ

تنفيذ البرنامج بسيط للغاية. بإدخال سلسلة اتصال قاعدة المعلومات ، يختار المستخدم نوع المستند ، وبعد ذلك يتم إنشاء قائمة بجميع المستندات.

لتأسيس اتصال ، يتم استخدام أسلوب "GetConnection ()" الذي يحفظ اتصال COM الذي تم إنشاؤه إلى متغير عمومي. كود البرنامجالطريقة الموضحة في الصورة التالية:

قبل أن يتم توسيع القائمة ، يتم تشغيل حدث "القائمة المنسدلة" ، والذي يقوم بإنشاء قائمة تحديد بناءً على مجموعة بيانات تعريف المستند:

بعد أن يحدد المستخدم قيمة من القائمة المنسدلة ، فإن " SelectedIndexChanged ". رمز برنامج المعالج هو كما يلي:


هذا كل شئ! إذا كانت سلسلة الاتصال صحيحة وتم تثبيت كائن COM "v82connector" على الجهاز ، فعندما نختار مستندًا من قائمة البيانات الوصفية ، سنرى القائمة الكاملةمستندات من النوع المحدد.

نتائج

تم إنشاء البرنامج. كما نرى ، عند تطوير تطبيق للحصول على البيانات من 1C: Enterprise infobase ، يمكننا جزئيًا استخدام الصيغة المألوفة له. من الرابط أدناه يمكنك التنزيل ملفات المصدرتم إنشاء مشروع البرنامج.

8.41 عند تعريف نوع خاصية العنصرXDTO تتضمن معلومات النوع:

1. اكتب الاسم فقط

2. اكتب الاسم واسم مساحة الاسم

3. اكتب الاسم واسم حزمة XDTO

4. اكتب اسم واسم مصنع XDTO

8.42 مديرويب الخدمات تحل المشكلة:

1. إدارة مجموعة من الاتصالات مع قواعد المعلومات

2. دعم أوصاف خدمة WSDL ، وتنفيذ بروتوكول SOAP

3. دعم تطبيق الويب

4. الإجابات الصحيحة 1،2

5. الإجابات الصحيحة 2.3

6. الإجابات 1 ، 2 ، 3 صحيحة

8.43 تكوين كائن" نحن.للخدمة "يستخدم من أجل:

2. تنظيم الوصول إلى خدمات الويب عن طريق ارتباط ثابت

3. وظيفة التصدير لقاعدة المعلومات هذه

8.44 كائن التكوين" WSوصلة"يستخدم في:

1. تنظيم الوصول الديناميكي إلى خدمات الويب

2. تنظيم النداءات لالويب-الخدمات ولكن ارتباط ثابت

3. تصدير وظائف قاعدة المعلومات هذه

8.45 إذا كانت الوظيفة التي تقوم بتنفيذ العمليةويبخدمة إرجاع قيمة. يتم تعريف هذه القيمة (عند تعيين كائن التكوين المقابل) على أنها من النوع:

4. عنصر XML

5. كائن أو قيمةXDTO

6. الإجابات 1 و 2 و 3 صحيحة

8.46 عند الإشارة إلىويب الخدمة عن طريق ارتباط ثابت ، تسلسل الإجراءات على النحو التالي:

1. الحصول على أوصاف wsdl ، وإعداد اتصال (إنشاء وكيل) ، واستدعاء عملية الخدمة

2. إعداد اتصال (إنشاء وكيل) ، استدعاء عملية الخدمة

8.47 عند الإشارة إلىويب الخدمة عبر ارتباط ديناميكي ، تسلسل الإجراءات على النحو التالي:

1. يستلمwsdl الأوصاف ، وإعداد الاتصال (إنشاء وكيل) ، والوصول إلى عملية الخدمة

2. إعداد اتصال (إنشاء وكيل) ، استدعاء عملية الخدمة

3. استدعاء لعملية الخدمة

8.48 إذا كانت الوظيفة التي تنفذ العمليةويبالخدمة ، تأخذ بعض القيمة كمعامل. يتم تعريف هذه القيمة (عند تعيين كائن التكوين المقابل) على أنها من النوع:

4. عنصر XML

5. كائن أو قيمةXDTO

6. الإجابات 1 ، 2 ، 3 صحيحة

8.49 كيف يمكنك تحديد أي خطط التبادل لكائن تطبيق معين تحدد التسجيل التلقائي؟

1. في نافذة تعديل الكائن ، قسم "تبادل البيانات"

2. من خلال استدعاء نافذة "لوحة الخصائص" إلى هذا الكائن

3. من خلال استدعاء النافذة "الإضافية" لهذا الكائن (علامة التبويب "خطط Exchange")

4. كل ما سبق صحيح

5. الإجابات 1 و 3 صحيحة

8.50 بالنسبة لكائنات التطبيق ، في نافذة تحرير كائن التكوين ، في علامة التبويب "تبادل البيانات" ، ...

1. الكائنات ، عند تغيير هذا الكائن يجب أن يدخل في الصرف

2. الأشياء التي يجب تبادلها عند تغيير هذا الكائن

3. خطط الصرف ، عند إجراء التبادل ، سيتم تغيير هذا الكائن

4. خطط الصرف التي ستأخذ في الاعتبار التغييرات في هذا الكائن

8.51 التحريرOLE- يتم تنفيذ الأشياء:

1. محرر جداول بيانات مدمج في النظام الأساسي

2. محرر كائن OLE مدمج في النظام الأساسي

3. التطبيق متعلق بOLE-هدف

8.52 الملفات الخارجيةمستندات جداول البيانات:

1. الحصول على امتداد XML

2. لديك تمديدام اكس ال

3. يمكن أن يكون لها أي تمديد

4. لا وجود لها. تم تضمين جميع مستندات جداول البيانات في التكوين

8.53 أتمتة-الخادم "1C: Enterprise 8" ...

1. يوفر الوصول إلى جميع خصائص وطرق سياقها العالمي

2. يوفر الوصول إلى خصائص وطرق إضافية لتنفيذ إجراءات خاصة بالعمل في وضع التشغيل الآلي

3. يسمح لك بإدارة تطبيق 1C: نظام Enterprise8 من تطبيقات أخرى ، وكذلك تنفيذ إجراءات مشابهة للتفاعلية

4. جميع الإجابات المقدمة صحيحة

1. مستحيل

2. تنفذ بالكامل في البرمجيات

3. تم تنفيذه باستخدام كائن التكوين "خطط Exchange"

4. ينفذه معالج الصرف المدمج في المنصة

9. صيانة حل التطبيق

9.1 ما هو الترتيب الذي يتم به تثبيت النظام الأساسي والتكوين؟

1. تحتاج إلى تثبيت النظام الأساسي أولاً ، ثم تثبيت التكوين بناءً على النموذج

2. يجب عليك أولا تثبيت التكوين ، وبعد النظام الأساسي

3. ترتيب التثبيت لا يهم

9.2 التثبيت العادي لمنصة "1C: Enterprise 8" ...

1. يقترح تركيب منفصلعلى كل كمبيوتر مستخدم ، يمكن إجراء تحديثات أخرى للنظام الأساسي تلقائيًا من الخادم

2. يتضمن تثبيتًا منفصلاً على كل كمبيوتر مستخدم ، ولا يمكن إجراء المزيد من تحديثات النظام الأساسي إلا على كل كمبيوتر مستخدم

3. يتضمن التثبيت على خادم مع مزيد من نسخ الملفات الضرورية إلى أجهزة كمبيوتر المستخدمين ، ويمكن إجراء مزيد من التحديث للنظام الأساسي تلقائيًا من الخادم

4. يتضمن تثبيت إصدار محلي لمستخدم واحد

9.3 ما الذي يجب القيام به لتحديث النظام الأساسي التكنولوجي أثناء التثبيت العادي لـ 1C: Enterprise؟

1. في وضع التهيئة ، حدد ملف التحديث

2. قم بتشغيل المثبت المضمن في التوزيع

3. حدد ملف التسليم في وضع المكون

9.4 التثبيت الإداري ...

1. يتضمن تثبيت النظام الأساسي على كل كمبيوتر مستخدم فردي

2. يتضمن تثبيت النظام الأساسي من قبل المسؤول على جهاز كمبيوتر واحد ، مع مزيد من نسخ الملفات القابلة للتنفيذ منه إلى محطات عمل المستخدم شبكه محليه

3. يتضمن تثبيت التكوين على 1C: خادم المؤسسة ، مع تعريف مستخدم لديه حقوق وصول المسؤول

9.5 عند تحديث النظام الأساسي التكنولوجي أثناء التثبيت الإداري لـ 1C: المؤسسة ...

1. يحتاج المسؤول فقط إلى تحديث النظام الأساسي في موقع التثبيت الإداري ، تحديث النظام الأساسي في أجهزة الكمبيوتر المحليةيمكن للمستخدمين القيام به

2. يجب على المسؤول تحديث النظام الأساسي في موقع التثبيت الإداري وعلى جميع أجهزة الكمبيوتر على الشبكة المحلية ، لا يحق للمستخدمين التحديث

3. يجب على المسؤول تحديث النظام الأساسي فقط على أجهزة الكمبيوتر الموجودة في الشبكة المحلية ، ويكون للمستخدمين نفس الفرصة

4. يجب على المسؤول تحديث النظام الأساسي فقط على أجهزة الكمبيوتر الموجودة على الشبكة المحلية ، ولا يملك المستخدمون مثل هذه الفرصة

9.6 هل من الممكن أثناء التثبيت العادي لـ 1C: Enterprise in إصدار خادم العميل، عمل تطبيقات العميل والخادم لإصدارات مختلفة من المنصة التكنولوجية؟

1. مسموح به

2. غير مسموح به ، من الضروري تحديث كل من تطبيق الخادم وتطبيقات العميل

3. مسموح ، من الضروري تحديث تطبيق الخادم

9.7 استخدام الوضع الدفعي ...

1. يسمح في الوضع التلقائيتحميل / تنزيل واختبار وتصحيح قاعدة المعلومات

2. يسمح لك بتشغيل كلا الوضعين من البرنامج دون تدخل تفاعلي

3. يسمح لك بإجراء فحص التكوين والتحكم في بناء الجملة

4. الإجابة الصحيحة I و 2

5. الإجابة الصحيحة 1،2 و 3

9.8 خيارات التشغيل من سطر الأوامر 1 ج: المؤسسة ...

1. تحديد قاعدة المعلومات، المستخدم، كلمة المرور الخاصة به، وضع بدء التشغيل، قواعد أداء عمليات محددة في ملف خارجي

2. تحديد قاعدة المعلومات ، المستخدم ، كلمة المرور الخاصة به ، وضع بدء التشغيل ، قواعد تنفيذ العمليات المحددة المحددة في سطر الأوامر

3. يجيب Verpa أنا و 2

4. لا توجد إجابة صحيحة

9.9 ما الذي يسمح به سطر الأوامر؟

يمكن تشغيل نظام 1C: Enterprise بواسطة تطبيق خارجي كخادم OLE Automation ويوفر الوصول إلى جميع سمات وطرق السياق العالمي(انظر "سياق التنفيذ وحدة البرامجبالإضافة إلى ذلك ، يحتوي خادم 1C: Enterprise OLE طرق إضافية، والتي يمكن استخدامها لتنفيذ سلسلة من العوامل أو تقييم تعبير محدد في 1C المدمج: لغة المؤسسة.

لبدء 1C: نظام Enterprise كخادم OLE Automation من تطبيق خارجي ، يتم تنفيذ التسلسل التالي من الإجراءات:

  • تم إنشاء كائن بمعرف OLE:
    • تطبيق V1СEnterprise.Application - إصدار مفتاح مستقل ؛
    • V77.Application - مفتاح يعتمد على الإصدار ؛
    • V77S.Application - مفتاح يعتمد على الإصدار ، إصدار SQL ؛
    • V77L.Application - مفتاح يعتمد على الإصدار ، إصدار محلي ؛
    • V77M.Application - مفتاح يعتمد على الإصدار وإصدار الشبكة.
  • 1C: يتم تهيئة نظام المؤسسة باستخدام طريقة التهيئة.
  • سمات وطرق 1C: يسمى نظام المؤسسة كخادم أتمتة OLE

تعليق
نظرًا لأن برنامج 1C: Enterprise عبارة عن خادم OLE Automation وعميل OLE Automation ، فمن الممكن من 1C: Enterprise الوصول إلى نسخة أخرى من 1C: Enterprise (على سبيل المثال ، إلى تكوين آخر) لتبادل البيانات. بشكل أساسي ، تدعم جميع منتجات البرامج الحديثة آلية OLE Automation ، وهذا ينطبق بشكل خاص على MS Office و MS FoxPro والتطبيقات المكتوبة عليها ، DAO ، وما إلى ذلك ، لذلك يمكن دمج برنامج 1C: Enterprise بشكل كامل معهم
.

تعليق
الإصدارات غير المترجمة من البرامج الخارجية التي تصل إلى 1C: قد يفسر برنامج المؤسسة من خلال أتمتة OLE بشكل غير صحيح معرفات الكائنات الروسية لأنواع البيانات المجمعة ، على سبيل المثال ، تفاصيل الدليل. لا تنطبق هذه الملاحظة على منتجات وبرامج MS Office التي تستخدم كائنات OLE كلغة للوصول إلى كائنات OLE. مايكروسوفت البصريةالأساسي. يوصى باستخدام الإصدارات المترجمة منتجات البرمجيات، أو استخدم المعرفات بدون أحرف سيريلية في التكوين. للوصول إلى سمات وطرق أنواع البيانات المجمعة لـ 1C: نظام المؤسسة من التطبيقات الخارجية ، يوصى باستخدام مرادفاتها الإنجليزية
.

تعليق
توجد كافة كائنات أتمتة OLE التي تم إنشاؤها طالما أن هناك متغيرًا يحتوي على قيمة هذا الكائن. لذلك ، سيبقى برنامج 1C: Enterprise نفسه ، الذي يعمل ككائن OLE Automation في برنامج آخر ، في ذاكرة الكمبيوتر حتى يتم حذف أو تغيير قيمة المتغير الذي يحتوي عليه ككائن.
.

سمات 1C: نظام المؤسسة كخادم أتمتة OLE

النظام 1C: يوفر Enterprise كخادم أتمتة OLE الوصول الكامللي السياق العالمي(راجع "سياق تنفيذ وحدة البرنامج"). لذلك ، يمكن أن يكون لكائن خادم 1C: Enterprise OLE كسماته: ثوابت النظام ، والقيم المحددة في المكون الثوابت, التحويلات, السجلات, أنواع الحساب, مجموعات من أنواع الحسابات، وكذلك المتغيرات المعلنة في وحدة البرنامج العالمي مع كلمة رئيسيةيصدّر.

السؤال 08.13 من الامتحان 1C: المنصة المهنية. لإنشاء كائن سيتم استخدامه من 1C: قاعدة بيانات Enterprise 8 للوصول إلى قاعدة معلومات أخرى 1C: Enterprise 8 infobase عبر OLE ، استخدم المُنشئ:

  1. قاعدة جديدة (InitString)
  2. OLEObject جديد
  3. COMObject جديد
  4. يتم إنشاء مثل هذا الكائن بوسائل أخرى.
الصيغة الصحيحة هي الثالثة

السؤال 08.51 من الامتحان 1C: منصة المهنية. يتم تحرير كائنات OLE:
  1. محرر جداول بيانات مدمج
  2. محرر كائن OLE المدمج في النظام الأساسي
  3. تطبيق مقترن بكائن OLE
الإجابة الصحيحة هي الثالثة ، راجع تعريف كائن OLE.
السؤال 08.53 من الامتحان 1C: منصة المهنية. خادم الأتمتة "1C: Enterprise 8" ...
  1. يوفر الوصول إلى جميع خصائص وطرق سياقها العالمي
  2. يوفر الوصول إلى خصائص وطرق إضافية لتنفيذ إجراءات خاصة بالعمل في وضع "التنفيذ التلقائي"
  3. يسمح لك بإدارة تطبيق نظام 1C: Enterprise 8 من تطبيقات أخرى ، بالإضافة إلى تنفيذ إجراءات مشابهة للتفاعلية
  4. جميع الإجابات المقدمة صحيحة
الإجابة الصحيحة هي الرابعة - يمنحك التشغيل الآلي وصولاً كاملاً تقريبًا إلى التطبيق.
السؤال 08.10 من الامتحان 1C: المنصة المهنية. في الإجراء الذي سيتم استدعاؤه عند الاتصال بقاعدة بيانات عبر COM ، لا يمكنك استخدام:
  1. DocObject = Doc.CreateDocument ()
  2. Form.Open ()
  3. طلب = طلب جديد
  4. لا توجد إجابة صحيحة
الجواب الصحيح هو الثاني.

السؤال 08.03 من الامتحان 1C: المنصة المهنية. عند الوصول إلى قاعدة بيانات 1C: Enterprise 8 من خلال OLE ، يتم تنفيذ إجراء - تم تعريف معالج الحدث "عند بداية النظام" ...

  1. في وحدة التطبيق
  2. في وحدة الاتصال الخارجي
  3. في الوحدة العامة
  4. في الوحدة النمطية OLE
الجواب الصحيح هو الأول ، يرى الأتمتة وحدة التطبيق.
السؤال 08.06 من الامتحان 1C: المنصة المهنية. عند الوصول إلى قاعدة بيانات 1C: Enterprise 8 من خلال COMConnector ، يتم تنفيذ إجراء - تم تعريف معالج الأحداث "عند بداية النظام" ...
  1. في وحدة التطبيق
  2. في وحدة الاتصال الخارجي
  3. في الوحدة العامة
  4. في وحدة COM
الإجابة الصحيحة هي الثانية ، فقط الوحدات النمطية التي لها سمة "اتصال خارجي" متوفرة لـ COM.

تحميل...
قمة