الاشتراك 1C في الحدث تفاعلي فقط. استخدام اشتراكات الأحداث لضبط حركات المستندات "من الخارج". تعليمات استخدام برنامج دراسة الأحداث

💖 هل يعجبك؟شارك الرابط مع أصدقائك

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

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

السلوك القياسي

دع مثالنا يستخدم دليلًا معينًا "SimpleDirectory". يحتوي على اشتراكات أحداث تم إنشاؤها لكل حدث يمكن للمطور التدخل فيه. توجد إجراءات معالج الأحداث في الوحدة النمطية المشتركة للخادم المقابلة.

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

كما نرى، في المرحلة الأولية يتم استدعاء معالجات الأحداث "ProcessingFill" (لإنشاء عنصر جديد) أو "On Copying" (لإنشاء عنصر يعتمد على عنصر موجود). في كلتا الحالتين، بعد استدعاء المعالجات المسماة، يتم تنفيذ الإجراء "OnInstallNewCode"، حيث يمكن للمطور تعيين بادئة في التعليمات البرمجية أو تجاوز سلوك النظام الأساسي عند تعيين رمز جديد.

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

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

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

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

الجانب غير الموثق

الآن دعونا نلقي نظرة على موقف مثير للاهتمام. لنفترض أنه بالنسبة لدليلنا "SimpleDirectory" تم تحديد ثلاثة اشتراكات في الحدث "BeforeRecord":

بأي ترتيب تعتقد أنه سيتم استدعاء معالجات هذه الاشتراكات؟ دعونا لا نخمن. سأقدم نتيجة تسجيل عنصر حيث يعرض المعالج لكل اشتراك رسالة باسم الاشتراك المطلوب (انظر لقطة الشاشة التالية).

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

تراجع

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

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

تم تنفيذه في إصدار EDT 1.7.0.567.

في 1C: أدوات تطوير المؤسسات (EDT) قمنا بتنفيذ نموذج أولي لأداة جديدة. الاسم العملي لهذه الأداة هو المحرر جميع اشتراكات الحدث. سيساعدك ذلك على تحليل الاشتراكات في جميع الأحداث الموجودة في حل التطبيق بسهولة.

اشتراكات الحدث

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

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

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


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

جميع اشتراكات الحدث

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


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


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

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


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


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


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


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

من خلال البحث حسب السلسلة، يمكنك العثور بسرعة على الاشتراكات التي تتعلق بالآلية التي تهمك فقط.


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


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


إضافة نقاط التوقف تلقائيا

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

بادئ ذي بدء، يمكنك استدعاء هذه الأداة مباشرة في المحرر.


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


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


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


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

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

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

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

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

دعونا ننظر إلى الحل بمزيد من التفصيل:

لنقم بإنشاء اشتراك جديد في حدث "تسجيل الاتجاهات إلى المدفوعات". يحتوي الاشتراك على عدد من الخصائص التي ستحدد سلوكه:

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

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

معالج- إشارة إلى الإجراء الذي ستتم به المعالجة. دعونا نختار وحدة عامة لهذه الأغراض هدف عام.

بعد الأهداف المذكورة أعلاه، يتم إنشاء إجراء يلزم فيه وضع رمز لملء بيانات الاتجاه (على افتراض أن هذه المعلومات موجودة بالفعل في المدفوعات).

دعونا نلقي نظرة على معلماته:

مصدر- هذا الكائن من النوع DirectoryObject أو DocumentObject الذي يحدث الإجراء له.

رفض- معلمة تسمح لك بإلغاء نشر مستند في ظل ظروف معينة.

وضع- خيارات التنفيذ (العاملة أو غير العاملة)، مما يسمح لك ببناء خوارزميات المعالجة بطرق مختلفة.

دعونا نركز على المعلمة مصدر. بالنسبة لمهمتنا، سيكون نوع هذه المعلمة - DocumentObject. تتوفر مجموعة لهذا النوع الحركات، والذي يحتوي على كافة مجموعات سجلات التسجيل التي يكون هذا المستند هو المسجل لها.

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

لنكتب الكود التالي :

مجموعات = المصدر. الحركات؛ الحسابات = مجموعات. التسويات مع الأطراف المقابلة؛ لكل صفحة من صفحات دورة الحسابات. الاتجاه = المصدر. اتجاه؛ إنهاء إذا ؛

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

مزايا هذا النهج:معالجة البيانات خارج الخوارزميات القياسية، وتقليل حجم العمل في البحث عن التغييرات ونقلها عند التحديث، وزيادة الرؤية - كل التعليمات البرمجية في إجراء واحد.

مساوئ هذا النهج:زيادة الوقت المستغرق في إجراء المستندات وتسجيل عناصر الأدلة.

آمل أن تكون هذه المعلومات مفيدة لكل من المبرمجين المبتدئين وزملائهم الأكثر خبرة كوسيلة لتوسيع آفاقهم.

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

يمكن إنشاء الأحداث في نموذج متحكم فيه: On ReadingOnServer، وOnCreatingOnServer، وOnOpening، وما إلى ذلك.

يتم إنشاء الأحداث في نموذج متحكم فيه على العميل وعلى الخادم: BeforeRecord، BeforeRecordOnServer.

يتم استدعاء الأحداث في وحدات مختلفة: ElementForm، ObjectModule، ManagerModule.

يمكن استدعاء بعض الأحداث عدة مرات إذا كان هناك عدة عناصر دليل في القائمة، على سبيل المثال: ReceivingViewProcessing.

يمكن فتح نموذج مُدار كنتيجة لإجراءات مستخدم مختلفة، وستختلف سلاسل استدعاءات الأحداث. سيؤدي أي من إجراءات المستخدم التالية مع الدليل إلى فتح نموذج متحكم فيه: إنشاء عنصر جديد، أو نسخ عنصر، أو تغيير عنصر دليل موجود.

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

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

تعليمات استخدام برنامج دراسة الأحداث

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

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

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

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

ويمكن الاطلاع على جميع الأحداث المسجلة من خلال "تقرير الأحداث" الموجود في قسم "الخدمة".

لمسح جميع الإجراءات والأحداث المسجلة بسرعة، في قسم "الخدمة"، حدد "مسح الأحداث والإجراءات".

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

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

  • إعداد الاشتراكات؛
  • خلق؛
  • ميزات الأداء.

إنشاء اشتراك جديد

مثل أي كائن بيانات تعريف آخر، تتم إضافة الاشتراك في حدث في 1C من المكوّن.

وتقع هذه العناصر في فرع الشجرة "العامة" (الشكل 1).

لإضافة معالج جديد يجب عليك:


تين. 3

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

ميزات عمل الاشتراكات

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

باستخدام مثال إجراء AtWrite() لأي مستند، يمكنك رؤية الترتيب الذي يتم به استدعاء المعالجات.

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

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

وبالتالي يمكن تحديد تسلسل المعالجة على النحو التالي:

  1. تتم معالجة أحداث الوحدة النمطية للكائن؛
  2. تتم معالجة الاشتراكات المرتبطة مباشرة بنوع البيانات الحالي؛
  3. تتم الآن معالجة الكود المرتبط بالنوع العام.

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

نموذج معالج الحدث المفتوح

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

بعض مميزات هذا المعالج:

  • لن يتم إطلاق الحدث إذا كان النموذج القياسي الذي سيتم فتحه محددًا بشكل صارم في التكوين؛
  • يمكن تنفيذ الحدث فقط للنماذج المُدارة؛
  • يجب ألا تحتوي الوحدة العامة التي تحتوي على هذا المعالج على سمة "الخادم" فحسب، بل يجب أن تحتوي أيضًا على مربع اختيار محدد في حقل "Call Server".

من المهم أن نأخذ في الاعتبار أن هذا الاشتراك لا يسمى لكائن معين، ولكن لمديره، أي أن الحقل المصدر يجب أن يحتوي على هذه الكلمة (الشكل 4)

الشكل 4

لتلخيص ما سبق، أود أن أقول إن "الاشتراك في الحدث" هو أداة مفيدة وضرورية للغاية للمطور، والتي تسمح للمطور بتحقيق أهدافه وغاياته دون تدخل كبير في التكوين.

أخبر الأصدقاء