مسكن / أجهزة الألعاب / وحدات في مشروع 1s. الوحدات العامة. وضع علامة على "الانضمام الخارجي"

وحدات في مشروع 1s. الوحدات العامة. وضع علامة على "الانضمام الخارجي"

الوحدات العامة 1 ج- كائن من بيانات تعريف التكوين 1C 8.3 و 8.2 ، والذي يخزن رمز البرنامج الذي يُستدعى غالبًا في التكوين. يمكن استدعاء دالة / إجراء من أي مكان في التكوين (إذا تم تصديرها).

كيفية استخدام الوحدة المشتركة

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

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

خصائص الوحدة العامة

أحد الاختلافات الرئيسية بين الوحدات النمطية المشتركة والوحدات النمطية الأخرى هو أنه لا يمكنك إعلان المتغيرات المشتركة.

احصل على 267 درس فيديو 1C مجانًا:

دعنا نلقي نظرة فاحصة على لوحة خصائص الوحدة المشتركة:

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

إذا كنت قد بدأت في تعلم برمجة 1C ، فنحن نوصي بدورتنا المجانية (لا تنس

1.1 يتم إنشاء الوحدات النمطية المشتركة لتنفيذ الإجراءات والوظائف التي يتم دمجها وفقًا لبعض المعايير. كقاعدة عامة ، يتم وضع إجراءات ووظائف نظام تكوين فرعي واحد (مبيعات ، مشتريات) أو إجراءات ووظائف ذات وظائف مماثلة (العمل مع السلاسل ، الغرض العام) في وحدة نمطية واحدة مشتركة.

1.2 عند تطوير الوحدات النمطية المشتركة ، يجب عليك اختيار أحد سياقات تنفيذ التعليمات البرمجية الأربعة:

نوع الوحدة المشتركة مثال على التسمية استدعاء الخادم الخادم الانضمام الخارجي عميل
(تطبيق عادي)
عميل
(تطبيق مُدار)
1. الخادمالغرض العام (أو خادم الأغراض العامة)
2. خادم للاتصال من العميلالغرض العام
3. عميلعميل الأغراض العامة (أو الأغراض العامة)
4. خدمة الزبائنالغرض العام ClientServer

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

  • الخادم(مربع اختيار استدعاء الخادمإسقاط)،
  • العميل (تطبيق عادي),
  • الانضمام الخارجي.

في هذه الحالة ، من المؤكد أنه يمكن استدعاء إجراءات ووظائف الخادم بمعلمات نوع قابلة للتغيير (على سبيل المثال ، DirectoryObject, كائن المستندإلخ.). كقاعدة عامة ، هذا هو:

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

تتم تسمية الوحدات النمطية الشائعة للخادم وفقًا للقواعد العامة لتسمية كائنات البيانات الوصفية.
علي سبيل المثال: العمل مع الملفات, هدف عام

في بعض الحالات ، يمكن إضافة postfix لمنع تعارض الاسم مع خصائص السياق العام. "الخادم".
علي سبيل المثال: مجدولتاسكسيرفير, تبادل البيانات.

2.2. يتم استدعاء الوحدات النمطية المشتركة للخادم من العميلتحتوي على إجراءات الخادم والوظائف المتاحة للاستخدام من رمز العميل. إنهم يشكلون واجهة برمجة تطبيقات العميل لخادم التطبيق.
يتم وضع هذه الإجراءات والوظائف في وحدات مشتركة مع السمة:

  • الخادم(مربع اختيار استدعاء الخادمجلس)

تتم تسمية الوحدات النمطية الشائعة للخادم المطلوب استدعاؤها من العميل وفقًا للقواعد العامة لتسمية كائنات البيانات الوصفية ويجب تسميتها بـ postfix "استدعاء الخادم".
علي سبيل المثال: العمل مع الملفات

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

أنظر أيضا:قيود على تعيين علامة "استدعاء الخادم" للوحدات النمطية الشائعة

2.3. الوحدات النمطية المشتركة للعميلتحتوي على منطق عمل العميل (وظيفة محددة فقط للعميل) ولها الخصائص التالية:

  • العميل (تطبيق مُدار)
  • العميل (تطبيق عادي)

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

يتم تسمية الوحدات النمطية العامة للعميل باستخدام postfix "عميل".
علي سبيل المثال: WorkFilesClient, الغرض العام العميل

راجع أيضًا: تقليل التعليمات البرمجية من جانب العميل

2.4 في بعض الحالات ، من الممكن إنشاء وحدات نمطية مشتركة بين العميل والخادم مع الإجراءات والوظائف ، والتي يكون محتواها هو نفسه على كل من الخادم والعميل. يتم وضع هذه الإجراءات والوظائف في وحدات مشتركة مع ميزات:

  • العميل (تطبيق مدار)
  • الخادم(مربع اختيار استدعاء الخادمإعادة تعيين)
  • العميل (تطبيق عادي)
  • الانضمام الخارجي

تتم تسمية الوحدات النمطية الشائعة من هذا النوع باستخدام postfix "خدمة الزبائن".
علي سبيل المثال: WorkFilesClient, الغرض العام ClientServer

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

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

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

للتمييز بين الوحدات النمطية الشائعة لنظام فرعي واحد والتي تم إنشاؤها لتنفيذ الإجراءات والوظائف التي يتم إجراؤها في سياقات مختلفة ، يوصى بمنحها الإصلاحات اللاحقة الموضحة سابقًا في الفقرات. 2.1-2.4.

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

وفقًا لنظرية البرمجة الشيئية ، يتم تقسيم طرق الكائنات إلى مجموعتين: ثابت وبسيط. الأساليب البسيطة لها حق الوصول إلى مثيل محدد من الفئة فقط. لا تملك الطرق الثابتة إمكانية الوصول إلى بيانات الكائن ، ولكنها تعمل على الفصل ككل.

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

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

وظيفة NewFunction () Export

من أجل استخدام مثل هذه الوظيفة من وحدة كائن ، يجب أولاً ، عند وجود مرجع للكائن المطلوب ، الحصول عليها باستخدام الوظيفة GetObject ().



لكل كائن =. وظيفة جديدة () ؛

وبالمثل ، يمكنك إنشاء متغيرات جديدة يمكن استخدامها من كائنات تكوين متنوعة.

تصدير متغير جديد

DirectoryItem = الدلائل. التسمية. FindByCode ("000000001") ،
الكائن = عنصر الدليل. GetObject () ،
شيء. NewVariable =) ؛

وبالتالي فمن الممكن استكمال الإجراءات والوظائف وخصائص (المتغيرات) المعيارية للكائنات. هذه المتغيرات ديناميكية ، ولا يتم تخزينها في قاعدة المعلومات ولا توجد إلا أثناء العمل مع الكائن المستلم.

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

الإجراء NewProcedure () التصدير

DirectoryItem = الدلائل. التسمية. NewProcedure () ،

أو للمتغير:

تصدير متغير جديد

DirectoryItem = الدلائل. التسمية. متغير جديد

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

عند استخدام وحدة الكائن ، سيبدو الرمز كما يلي:

وظيفة PrintDocument (Link) Export
// يجب أن يتم تمرير هذه الوظيفة ارتباطًا إلى مستند معين
عودة TabDoc ؛
وظائف النهاية

في نموذج المستند ، تحتاج إلى إنشاء إجراء يمرر ارتباطًا للمستند إلى وظيفة الطباعة.

& AtClient
طباعة الإجراء (الأمر)
TabDoc = PrintOnServer () ،
TabDoc. يعرض() ؛
EndProcedure
& على الخادم
وظيفة PrintOnServer ()
Doc = FormAttributeToValue ("كائن") ،
عودة المستند. PrintDocument (رابط الكائن) ؛
وظائف النهاية

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

من وجهة نظر الأداء ، من الأفضل استخدام وحدة المدير كلما أمكن ذلك. في مثالنا ، سيبدو حل المشكلة كما يلي.
وظيفة PrintOnServer ()
إرجاع المستندات. وثيقتنا. PrintDocument (ArrayReferences) ،
وظائف النهاية

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

إذن متى يجب عليك استخدام وحدة الكائن ومتى يجب استخدام وحدة المدير؟

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

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

عادةً ما تتكون وحدة البرامج من ثلاثة أقسام:

  • منطقة إعلان متغير;
  • مجال وصف الإجراء والوظيفة;
  • النص الرئيسي للبرنامج.

مثال على هيكل وحدة البرنامج:

// ******************** منطقة إعلان متغيرة ***************************

تصدير اللقب ؛ / / هذا متغير عالمي
متغير الاسم // هذا متغير وحدة
تغيير الإسم؛ // هذا أيضًا متغير وحدة ويمكن الوصول إليه

// من أي إجراء ووظيفة لوحدتنا

// ***************** منطقة وصف الإجراءات والوظائف ******************

الإجراء 1 ()
المجموع المتغير / / الإجمالي متغير محلي (متغير إجرائي)

المجموع = اللقب + "" + الاسم الأول + "" + اسم العائلة ؛

EndProcedure

الوظيفة Function1 ()

// بيانات الوظيفة

العودة (اسم العائلة + "" + الاسم الأول) ؛

وظائف النهاية

// ************************* النص الرئيسي للبرنامج ******************** *

اللقب = "إيفانوف" ؛
الاسم = "إيفان" ؛
الاسم الأوسط = "إيفانوفيتش" ؛

//******************************************************************************

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

مجال وصف الإجراءات والوظائفيتم وضعها من البيان الأول للإجراء أو بيان الوظيفة إلى أي بيان قابل للتنفيذ خارج نص إعلان الإجراء أو الوظيفة.

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

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

ينظر النظام ككل إلى كل وحدة برنامج منفصلة ، لذلك يتم تنفيذ جميع إجراءات ووظائف وحدة البرنامج في سياق واحد.

ينقسم سياق تنفيذ الوحدات النمطية إلى سياقات العميل والخادم. بالإضافة إلى ذلك ، يمكن تجميع بعض وحدات البرامج على جانب العميل وعلى جانب الخادم.

وحدة التطبيق (المدارة أو العادية)

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

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

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

وحدة الاتصال الخارجية

  • يمكن أن تحتوي على جميع المجالات الثلاثة
  • الموجود في قسم الجذر من التكوين

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

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

وحدة الجلسة

  • أجريت على جانب الخادم
  • الموجود في قسم الجذر من التكوين

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

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

الوحدات العامة

  • قد تحتوي على منطقة لوصف الإجراءات والوظائف
  • يتم تنفيذها على الخادم أو جانب العميل (يعتمد على إعدادات الوحدة النمطية)
  • يقع في فرع شجرة كائنات التكوين "عام" - "الوحدات النمطية العامة"

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

يعتمد سلوك الوحدة المشتركة على مجموعة المعلمات (عامة أم لا ، أعلام تجميع متنوعة ، ما إذا كان اتصال الخادم متاحًا ، وما إلى ذلك). فيما يلي بعض النصائح لإعداد الوحدات المشتركة:

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

وحدة النموذج

  • يمكن أن تحتوي على جميع المجالات الثلاثة
  • أجريت على جانب الخادم والعميل

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

تحتوي بنية النموذج المُدار على قسم إعلان متغير ، ووصف للإجراءات والوظائف ، وجسم البرنامج (يتم تنفيذه عند تهيئة النموذج). يمكننا الوصول إلى أحداث النموذج القياسي من خلال قائمة الإجراءات والوظائف المتوقعة للنموذج (Ctrl + Alt + P)، أو من خلال لوحة خصائص النموذج نفسه.

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

وحدة الكائن

  • يمكن أن تحتوي على جميع المجالات الثلاثة
  • أجريت على جانب الخادم

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

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

وحدة مدير الكائن

  • يمكن أن تحتوي على جميع المجالات الثلاثة
  • أجريت على جانب الخادم

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

وحدة القيادة

  • قد تحتوي على قسم يصف الإجراءات والوظائف
  • نفذت من جانب العميل

الأوامر هي كائنات تابعة لكائنات التطبيق أو التكوين ككل. يحتوي كل أمر على وحدة أوامر يمكنك من خلالها وصف إجراء CommandProcess () محدد مسبقًا لتنفيذ هذا الأمر.

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

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

وحدة التطبيق

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

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

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

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

وحدة الاتصال الخارجية

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

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

وحدة الجلسة

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

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

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

الوحدات العامة

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

  • إنها قاعدة أساسية جيدة عدم استخدام العلم "العالمي" في كل مكان. سيؤدي ذلك إلى تقليل وقت بدء تشغيل التطبيق ، بالإضافة إلى تحسين إمكانية قراءة الكود (بالطبع ، إذا كان للوحدة النمطية الشائعة اسم مفيد تمامًا).
  • لا يُنصح باستخدام أكثر من علم تجميع واحد. لا يوجد الكثير من الطرق التي يجب إجراؤها في سياقات مختلفة ، وإذا كانت هذه الأساليب مطلوبة مع ذلك ، فيمكن تخصيص وحدة نمطية مشتركة منفصلة لها.
  • تكون علامة "Call Server" ذات معنى فقط إذا تم تصنيف الوحدة النمطية "On the server". لذلك ، يجب إزالة جميع علامات التجميع الأخرى لتجنب المشاكل المختلفة.
  • إذا كان هناك في أساليب الوحدة النمطية معالجة بيانات مجمعة وقراءة وكتابة في قاعدة البيانات ، ثم لزيادة سرعة العمل ، فمن الأفضل تعطيل التحكم في الوصول عن طريق تعيين علامة "الامتياز". هذا الوضع متاح فقط للوحدات النمطية المشتركة المترجمة على الخادم.

وحدة النموذج

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

وحدة الكائن

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

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

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

وحدة مدير الكائن

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

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

الرموز على المخطط: O.M. العميل - الوحدة النمطية المشتركة للعميل ؛ أوم. الخادم - الوحدة النمطية المشتركة للخادم ؛ م. العميل - إجراءات العميل لوحدة النموذج ؛ م. الخادم - إجراءات الخادم لوحدة النموذج.