اتصال com في التطبيق السيطرة. ثلاث حيتان من العمل مع كائنات COM. العمل من خلال اتصال COM هو أسهل مما تعتقد. ما هو الحال

) حسنا

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


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

والإيجابيات والسلبيات ... هي مجرد نوع من "شكرا لك" لفترة قضيتها والعمل


أولئك. ويعتبر ناقص أيضا ل "شكرا"؟ أردت أن أعرف موقفك من ما إذا كان من الضروري وضعه في مثل هذه الحالات، ومدى اهتمام الآخرين؟ هل يتم وضعه عندما تكون المقالة ضارة / سيئة أو عندما تكون عديمة الفائدة لك / فارغة.
في رأيي، تبدو هذه المقالة ببساطة رفع التصنيف، لأن:
1. يتم تجاهل المشكلة مع أنواع الأنواع مع المؤلف بشكل عام، على الرغم من أنه لم يكن كسولا لكتابة مجموعة من التعليقات.
2. في المقال، عدم دقة واضحة: يقال أنه لا يمكنك إلا

V82 \u003d المغامرة الجديدة ("V82.ComConnector")؛ الرمز \u003d counterparty.code؛


لكنني أفعل بهدوء بمساعدة المعالجة مثل هذا:

تقرير (base.pravnikhniki.tragents.nightyponiver ("ذ م م"). كود)؛


وكل شيء على ما يرام! وأنا اختر الاتصال V82.comConnector
من الغريب أنه يبصق المؤلف تماما على حقيقة أن مقالته تحتوي على مثل هذه المشكلات التي أشاروا إليها، ولا تتفاعل بأي شكل من الأشكال.
3. ولكن لا تزال هناك مشكلة عند وجود خطأ ينبثق "فئة غير موجودة"
4. وهناك مشكلة عند تثبيت 8.2، ثم تثبيت 8.1 - جربك لتبادل OLE / COM تبادل نموذجي UT-BP!
5. هل يمكنك تحديد المعالجة الرئيسية على الموقع التي تتيح لك الاتصال بشخصيا عبر OLE / COM لبدء القادمين الجدد، تكتب لهم! بالمناسبة، بالمناسبة، لسبب ما، هو ضجيج معك، لماذا؟ ونتيجة لذلك، كلمتين هي في الأساس 6 للمشاهد.

بشكل عام، أنا لا طين المياه، ولكن أشر إلى فجوات محددة، ولكن ردود الفعل الصفرية. إذا كانت هذه هي التجربة التي تشاركها، فهي نوعا من الخاطئة وغير المكتملة.
أعني حقيقة أن المؤلف سيكون له رغبة في جمع كل مواطن الخلل، ثم يستطيع أن يستمع على الأقل إلى تجربة شخص آخر، وليس لإيقاظ التعليقات. كما أن هناك موقفا عندما يقرأها أكثر معرفة أكثر من المؤلف، يقولون له (بشكل غير صحيح في بعض الأحيان)، وهو يقاتل أيضا. نتيجة لذلك، جميع المعلومات ليست في المقالة، ولكن في التعليقات! مضحك! لذلك يحدث ذلك في كثير من الأحيان، لكنك لا تحتاج إلى الابتعاد عن ما تريد حسب أفضل - أظهر أفضل طريقة، ويتم عرض الآخرين! قم بتضمينه في المقال وسيكون من المفيد، وليس كل نفس مثيرة للاهتمام لقراءة هذه السفينة.

مرحبا habravelov!

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

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


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

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

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

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

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

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

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

# إن لم يكن اتصال خارجي ثم تحذير ("مرحبا!")؛ # endox.

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

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

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

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

استراتيجية العمل هي كما يلي: يتم توصيل البرنامج النصي Python من 1C، والنداء الاستعلامات المرغوبة وتفريغ البيانات في قاعدة SQLite. يمكن توصيل قاعدة البيانات هذه من Python، PHP، Java. يعمل معظم مشاريعنا على Python، وبما أنني لن أخرج من استعلامات SQL RAW بيديك، ثم يتم تنفيذ جميع الأعمال مع قاعدة SQLite عبر Orm Sqlalchemy. كان مطلوبا فقط لوصف بنية البيانات من نمط قاعدة البيانات التصريحي:

من sqlalchemy.ext.ext.ext.Ext.Exlariative expring.base من عمود استيراد SQLAlchemy، عدد صحيح، رقمي، DateTime، Unicode، Boolean، Base Base Base \u003d Admance_Base (BASE): __tablename__ \u003d "LeaBonents" \u003d العمود (عدد صحيح، Primery_Key \u003d صحيح) الحساب \u003d العمود (Unicode (32)، فهرس \u003d صحيح) رمز \u003d عمود (Unicode (32)) \u003d العمود (Unicode (512)) Fio \u003d العمود (Unicode (256)) Source \u003d العمود (Unicode (16) .) PSU \u003d العمود (Unicode (256)) TSO \u003d العمود (Unicode (256)) NP \u003d العمود (Unicode (256)) Street \u003d العمود (Unicode (256)) House \u003d العمود (عدد صحيح) شقة \u003d العمود (عدد صحيح) MRO \u003d العمود (Unicode (256)) الدفع الفئة: __tablename__ \u003d "المدفوعات" # وهلم جرا ...

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

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

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

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

استيراد pythoncom استيراد win32com.client v82_conn_string \u003d "srvr \u003d v8_server؛ ref \u003d v8_db؛ usr \u003d اسم المستخدم؛ pwd \u003d megapass؛" pythoncom.coinitialize () v82 \u003d win32com.client.dispatch ("v82.comconnector"). Connect (v82_conn_string)

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

في العميل المهيئ، نسمي طريقة الاتصال () عن طريق تمرير سلسلة اتصال. تتكون السلسلة من اسم الخادم وقاعدة البيانات والمستخدم وكلمة المرور. الكائن الناتج V82 يبقي الاتصال مع تطبيق 1C. ليس لديه طريقة افصل () أو شيء من هذا القبيل. لفصل الأساس، يكفي حذف كائن من دالة الذاكرة Del () أو تعيين متغير لا شيء.

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

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

اضبط con \u003d createObject ("v81.comconnector") تعيين v8 \u003d con.connect ("stringcleining") تعيين طريقة المحاسبة \u003d v8.Documents. جدولة .... تعيين ممسكة الصحيح \u003d البطارية. إنشاء عنصر () المحاسبة. عقد \u003d .. .... .... ممثلين. تجنيد ()

تعطل التعليمات البرمجية على Python ببساطة مع خطأ في الحصول على خطأ في بناء الجملة. ما يجب القيام به؟ تحرير التكوين؟ لا، يكفي استخدام الأساليب GetAttr و Setattr. يمكن الحصول على كائن COM والاسم السيريلي للسمة لهذه الوظائف، وفقا لذلك وتعيين القيم:

# الترميز \u003d كتالوج CP1251 \u003d getattr (v82.catalogs، "الوجه")

فيما يلي مهم: يجب إرسال أسماء التفاصيل، بالإضافة إلى معلمات الوظائف والأساليب في ترميز CP1251. لذلك، من أجل تجنب Putnice بترميزات مقدما، من المنطقي أن تعلن عنه في بداية الملف: # الترميز \u003d CP1251. بعد ذلك، يمكنك نقل الخطوط دون القلق بشأن ترميزها. لكن! جميع الأوتار التي تم الحصول عليها من 1C (نتائج وظيفة الوظائف، الطلبات) ستكون في ترميز UTF-8.

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

# الترميز \u003d CP1251 Q \u003d "" "" اختيار Fairytte. كود مثل رمز، الوجه الوجه. معدات. Naselipart. الاسم + "،" + الوجه. SmartyAddress كعنوان، الوجه Bonient.Name ك Fio، PSU.Division. الاسم. الاسم كما psu، صريحة (desiccreet desiccreet دائم. العلاقة كدليل. التنظيم الاستبدال السلوي). عملية مثل تسو، والوجه المعدات. ناسيليبارت. اسم كحالة NP، الوجه الوجه. معدات. اسم الشارع، الوجه المعدات. ، LitsevyeScheta.Divizion.Roditel.Naimenovanie MRO AS OF AS Spravochnik.LitsevyeScheta LitsevyeScheta ترك الانضمام RegistrSvedeniy.HarakteristikiLitsevyeScheta.SrezPoslednih (، VidHarakteristiki \u003d القيمة (Spravochnik.VidyHarakteristik.TerritorialnoSetevayaOrganizatsiya)) HOW TO HarakteristikiLitsevyeSchetaSrezPoslednih LitsevyeScheta.Ssylka HarakteristikiLitsevyeSchetaSrezPoslednih.Obekt \u003d "" "الاستعلام \u003d v82.newobject ( تحديد "الاستعلام"، س) التحديد \u003d Query.Execute (). اختر () Conn \u003d db.connect () conn.query (model.abonent) .delete () أثناء الاختيار.next (): Obonent \u003d Models.abonent () abonent.Account \u003d selection.code.strip () abonent.code \u003d selection.code abonent.fio \u003d selection.fio abonent.address \u003d selection.address abonent.psu \u003d select.psu abonent.tso \u003d selection.tso abonent.source \u003d u "asrn" abonent.np \u003d selection.np abonent.street \u003d selection.street abonent.house \u003d selection.house abonent.flat \u003d selection.flat.mro \u003d selection.mro conn.add (afonent) conn.commit ()

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

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

اختيار الحقول، قم بتعيين أسماء اللاتينية، سيكون أكثر ملاءمة للحصول عليها من خلال المحدد (النقطة)، بدلا من Getatr ().
- اختر فقط أنواع البيانات Primit: الصفوف والأرقام والتاريخ والمنطقية. لا تختار أبدا روابط كائن (مستند، دليل)! في هذا السياق، فإن المراجع غير مطلوبة تماما وحتى ضارة لك، لأن أي إشارة إلى تفاصيل أو طريقة الرابط سوف يؤدي إلى طلب عبر اتصال COM. إذا اتصلت بسماوات الرابط في الدورة، فسيكون ذلك بطيئا للغاية.
- إذا اخترت حقل نوع الحقل، فسيتم إرجاعه ككائن Pytime. هذا نوع بيانات خاص لنقل وقت التاريخ في اتصال COM. ليست مريحة للغاية للعمل معه، كما هو الحال مع التاريخ المعتاد. إذا قمت بإرسال هذا الكائن إلى Int ()، فسيتم إرجاع الطابع الزمني، والذي يمكنك من خلاله الحصول على طريقة تاريخ DateTimestamp ().

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

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

LINK \u003d GetATTR (V82.catalogs، "ReportSystems"). FindByDescription ("Act Records Elean") Nav_Url \u003d v82.geturl (LINK، "تقرير") الاسم \u003d v82.externalreports.connect (nav_url) externalreport \u003d v82.externalreports.create (name) setattr (externalReport، "الوجه"، المرجع) table_doc \u003d extlertretence.getdoc () path .ACCOUNT \u003d REVERT.CODE.STRIP () Report.type \u003d u "ACT" report.document \u003d فتح (المسار، "RB"). قراءة () Conn.add (تقرير)

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

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

# الترميز \u003d CP1251 Acts \u003d GetATTR (V82.Documents، "Aktsnotchy") ACT \u003d ACTS.CREATEDOCMENTER () Setattr (ACT، "مؤشر"، 1024.23) Setattr (ACT، "المشترك"، "Ivanov") # ملء تفاصيل أخرى. .. act.write ()
الآن العلبة البيانات الآلي.

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

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

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

أتمنى للجميع حظا سعيدا، وتذكر أنه ليس فظيعا للغاية بالنسبة إلى 1C، كما له قليلا!

أحد خيارات تبادل البيانات بين قواعد البيانات 1C هو تبادل من خلال اتصال COM.

مع اتصال COM، يمكنك الاتصال من قاعدة بيانات واحدة إلى بيانات أخرى وقراءة أو كتابة البيانات. يمكنك استخدام هذه الطريقة في إصدارات خادم العميل من قواعد البيانات وقواعد الملفات. في هذه المقالة، سنقوم بتحليل أمثلة من هذا النوع من المركبات. تستخدم الأمثلة من النظام الأساسي 8.2.

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

لذلك، المضي قدما

  1. إنشاء كائن COM
    • ل v82.Application. اتصال \u003d كائن COM الجديد ("V82.Application")؛
    • ل V82.ComConnector. اتصال \u003d كائن COM الجديد ("v82.comConnector")؛
  2. نحن نتشكل اتصال الجمع
    • بالنسبة لمتغير الخادم لاتصال السلسلة \u003d "SRVR \u003d" "IMasorver" "؛ المرجع \u003d" اسم "؛
    • للحصول على إصدار ملف من سلسلة اتصال \u003d "FILE \u003d" "pullbazbaz" "؛ USR \u003d اسم المستخدم؛ PWD \u003d كلمة المرور";
  3. إجراء اتصال بقاعدة البيانات محاولة الاتصال \u003d الاتصال. الاتصال (مركب السلسلة)؛ رسالة استثناء \u003d رسالة مستخدم جديدة؛ رسالة. النص \u003d + الوصف ()؛ رسالة. للإبلاغ ()؛ احتفالات
  4. كسر الاتصال مع القاعدة مركب \u003d غير محدد؛

    للكائن v82.Application. من الضروري الوفاء بالاتصال بالاتصال، وإلا فإن الجلسة غير المكتملة ستعلق، والتي يجب حذفها بعد ذلك يدويا. في حالة V82.ComConnector. يتم تمزيق الاتصال تلقائيا عند اكتمال الإجراء الذي تم فيه إجراء الاتصال. وهناك لحظة قليلة أخرى.

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

الآن سنجمع كل الكود في حفنة

اتصال \u003d كائن COM الجديد ("V82.Application")؛ / / اتصال \u003d كائن COM الجديد ("v82.comConnector")؛ فهرس التجديف \u003d "srvr \u003d" "server1c" "؛ ref \u003d" "mybase" "؛ USR \u003d Petya؛ PWD \u003d 123"؛ // ritching indion \u003d "file \u003d" "c: \\ mybase" "؛ USR \u003d بيتر؛ PWD \u003d 123"؛ محاولة الاتصال \u003d الاتصال. الاتصال (مركب السلسلة)؛ رسالة استثناء \u003d رسالة مستخدم جديدة؛ رسالة. النص \u003d. "فشل الاتصال بقاعدة البيانات" + وصف ()؛ رسالة. للإبلاغ ()؛ احتفالات مركب \u003d غير محدد؛

لنوع الاتصال v82.Application. يتم تطبيق الطريقة على كائن COM، الذي تم إنشاؤه أصلا، ولل V82.ComConnector. الطريقة تنطبق على الاتصال. بعد ذلك، يذهب العمل مع الطلب الوسائل القياسية 1C. في الكود يبدو مثل هذا:

طلب \u003d اتصال. NewObject ("الاستعلام")؛ // ل V82.ComConnector. استعلام \u003d اتصال. NewObject ("الاستعلام")؛ // ل v82.Application. سؤال. نص \u003d "حدد | postganizations. رمز، | مؤسسات الدعم .Name. | هو | دليل. allorganizations كمكتب "؛ النتيجة \u003d الطلب. نفذ ()؛ اختيار \u003d النتيجة. إختر() ؛ بينما عينة. القادم () دورة Endackel؛

للإصدار 1C: Enterprise 8.3 كل شيء يظل دون تغيير، إلا أنه عند إنشاء Comobecs يجب استخدامه "v83.comConnector" أو "V83.Application".