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

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

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

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

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

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

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

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

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

ما هي التقارير الخارجية ومعالجتها

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

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

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

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

يتم فتح نموذج لملء التفاصيل اللازمة:

ويتم عرض نموذج العقد المطبوع:

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

ما هي ملحقات التكوين

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

تفترض الآلية ثلاثة أنواع من الاستخدام، والتي يتم الإشارة إليها في الواقع في حقل "الغرض" عند إنشاء الامتداد:

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

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

إعداد التقارير الخارجية وتجهيزها للنشر في نموذج الخدمة

يتم إنشاء تقرير أو معالجة إضافية في مكون 1C: Enterprise 8 كتقارير ومعالجة خارجية قياسية وحفظها في ملف بالملحق - .epf (للمعالجة الإضافية) أو .erf (للتقارير الإضافية).

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

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

وفقًا لمعايير خدمة 1cfresh.com، يجب أن يعمل التقرير الإضافي أو المعالجة بشكل كامل عند تنفيذها في الوضع الآمن، أي العمل دون الوصول إلى كائنات خارج التكوين.

يجب إعداد تقرير أو معالجة إضافية للتحميل إلى الخدمة كمجموعة أدوات تسليم. مجموعة التسليم عبارة عن أرشيف (ملف مضغوط) يحتوي على:

  • تقرير إضافي أو ملف معالجة؛
  • ملف بيان xml، الذي يحتوي على معلومات تعريفية إضافية ضرورية لمدير الخدمة لنشر تقرير إضافي أو معالجته في الخدمة.
يتم إجراء الإعداد في قاعدة معلومات منتشرة محليًا للتكوين الذي يهدف إلى إعداد التقرير الإضافي أو المعالجة. نستخدم مساعدًا خاصًا لإنشاء مجموعة التسليم والمعالجة الخارجية وإعداد التقارير الإضافية ومعالجة المنشورات في Service Model.epf. يمكنك قراءة المزيد في الوثائق الخاصة بتقنية نشر حلول 1C Fresh.

تثبيت التقارير الإضافية ومعالجتها في نموذج الخدمة

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

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

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

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

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

نبدأ المعالجة وفقًا للجدول الزمني

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

المعالجة التي سيتم إجراؤها وفقًا للجدول الزمني لا تحتوي على نموذج. كل المنطق مكتوب في وحدة الكائن ويبدو هكذا.



عند إعداد مجموعة التسليم، نضع جدولًا زمنيًا. الآن سيتم تنفيذ المعالجة لدينا كل ساعة.

المزيد عن ملحقات التكوين

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

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

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

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

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

الآن يمكنك تعديل وحدة مدير التنفيذ. نحتاج إلى إضافة نموذج جديد إلى قائمة النماذج القابلة للطباعة وملء مبالغ العملة.

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

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

لا يمكن استخدام التعليقات التوضيحية &قبل و&بعد للوظائف. لذلك، إذا أردنا تغيير خوارزمية دالة من التكوين الرئيسي، فإننا نستخدم التعليق التوضيحي &بدلاً من ذلك.

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

خاتمة

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

يمكنك استخدام ملحقات متعددة لمنطقة بيانات واحدة.
بالنسبة لتفاصيل عمل 1C Fresh في وضع فصل البيانات (تكوين واحد، العديد من المناطق المستقلة)، تعد طريقة التمديد حلاً ممتازًا.

اتضح أنها ذات صلة تماما :)

حسنًا، لنجعل عطلة نهاية الأسبوع هذه مفيدة أيضًا.

لذا، اليوم موضوع آخر عن "العملية التطبيقية لـ 1C":

آلية التمديد في منصة 8.3.6

ما الذي نتحدث عنه؟

في النظام الأساسي 8.3.6، تم تنفيذ آلية جديدة - آلية تمديد تسهل تكييف حل التطبيق لعميل معين.

عند استخدام الامتدادات يتم إجراء تعديل التكوين في كيان جديد– توسيع التكوين:

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

وبالتالي، يتلقى العميل نتيجة لذلك إمكانية التحسينالتكوينات وفي نفس الوقت - التحديث التلقائي البسيط.

لكي تتمكن من فهم هذا بمزيد من التفصيل، ننشر العديد من مقاطع الفيديو + ملفات PDF على الامتدادات.

لذلك، هنا نذهب:

الغرض من ملحقات التكوين

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

الكائنات التي يمكن تعديلها في الامتداد

يناقش هذا الفيديو القيود الحالية لآلية الامتدادات. حاليًا، يمكن استخدام عدد محدود فقط من الكائنات في الامتدادات.

العمل مع الملحقات في المكوّن

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

كائنات الاقتراض

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

إنشاء الكائنات الخاصة بك في ملحق التكوين

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

العمل مع الملحقات في وضع المستخدم

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

العمل مع النماذج المُدارة في ملحقات التكوين

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

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

يغطي هذا الفيديو كيفية العمل مع معالجات الأحداث في نماذج ملحق التكوين المُدارة.

يتم توضيح ترتيب تنفيذ معالجات الأحداث في التكوين الرئيسي وفي الامتداد.

تم تنفيذه في الإصدار 8.3.9.1818.

باختصار، الآن بمساعدة الإضافات، يمكنك تغيير وحدات التكوين القياسية وإضافة الوحدات النمطية الخاصة بك.

وبمزيد من التفاصيل، يمكنك تغيير أي وحدات، باستثناء وحدات النماذج العادية:

  • وحدات عامة؛
  • وحدات الكائن (وحدة الكائن، وحدة المدير، وما إلى ذلك) لجميع أنواع الكائنات؛
  • وحدة الجلسة؛
  • وحدة التطبيق المُدارة؛
  • وحدة الاتصال الخارجية؛
  • وحدات الأوامر؛
  • وحدات النموذج؛
  • إلخ.

تجدر الإشارة إلى أنه كان بإمكانك تغيير وحدات النماذج المُدارة من قبل، ولكننا قمنا الآن بإجراء بعض التغييرات على هذه العملية.

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

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

الوحدات الخاصة
يمكنك إنشاء الوحدات المشتركة الخاصة بك في الامتداد.

يتصل
وأخيرًا، يمكنك استدعاء أي من طرق التكوين القياسية في الامتداد الخاص بك.

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

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

اعتراض مكالمات الأسلوب

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

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

التعليق التوضيحي &Before("Procedure1") يعني أنه تم اعتراض إجراء عام يسمى الإجراء1. اسم التعليق التوضيحي "قبل" يعني أنه سيتم تنفيذ الإجراء المعترض Ext_Proc1() أولاً، ثم الإجراء العام الإجراء1().

مجردة وقبل

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

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

مجردة وبعد

يعني هذا التعليق التوضيحي أنه سيتم تنفيذ المعترض بعد تنفيذ الطريقة العامة.

مجردة وبدلا من ذلك

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

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

  • &قبل؛
  • &بعد؛
  • &بدلاً من؛
  • & قبل و & بعد .

سيتم تنفيذ المجموعة الأخيرة من المعترضات (&قبل و&بعد) على النحو التالي:

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

استدعاء أسلوب تم تجاوزه بواسطة &بدلاً من

اتضح أن هناك بعض الظلم. يمكنك تغطية الإجراء أو تأطيره. ويتم حظر الوظيفة بالكامل.

للتخلص من هذا الظلم، قمنا بتطبيق طريقة جديدة باللغة المضمنة - continueCall(). إذا قمت باستدعاء هذا التابع داخل وظيفة المعترض لديك، فسيتم تنفيذ الوظيفة التي تجاوزتها، وبعد ذلك سيعود تنفيذ التعليمات البرمجية إلى المعترض الخاص بك:

في اللغة المضمنة، قد تبدو وظيفة المعترض كما يلي:

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

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

أيهما أفضل، &قبل، أم &بعد، أم &بدلاً من ذلك؟

عندما تقوم باعتراض طرق التكوين العامة، فمن المفيد دائمًا أن تضع شيئين في الاعتبار:

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

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

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

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

تسلسل المكالمات عند اعتراض الطرق

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

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

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

سواء في المكوِّن أو في وضع 1C:Enterprise، يكون آخر ملحق متصل هو الأخير في القائمة.

لذلك في هذا المثال، يكون الامتداد العام في الأسفل، والامتداد 2 في الأعلى، والامتداد 1 بينهما. كل امتداد لاحق يعترض (يوسع) ما تحته.

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

مثال 1

على سبيل المثال، إذا تم اعتراض (تأطير) نفس الطريقة العامة في امتدادين، فسيكون تسلسل استدعاء المعالجات كما يلي:

  • سيتم استدعاء المعترض من Extension2 أولاً لأنه في الأعلى. سيكون هذا هو المعترض &قبل لأنه يحتوي على هذا التعليق التوضيحي؛
  • سيتم بعد ذلك استدعاء المعترض من ملحق 1 لأنه التالي في المخطط الدائري. سيكون &قبل مرة أخرى لأنه يحتوي على هذا التعليق التوضيحي؛
  • سيتم بعد ذلك استدعاء الطريقة العامة لأنه لم يعد هناك أي اعتراضات لمنعها من التنفيذ؛
  • وبعد ذلك، بترتيب عكسي للفطيرة، سيتم استدعاء المعترض &After من الامتداد 1 والمعترض &After من الامتداد 2.

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

مثال 2

إذا كانت المعترضات تستخدم طريقة continueCall()، فسيتم تطبيق نفس مبدأ الفطيرة.

  • سيتم استدعاء المعترض من Extension3 أولاً لأنه في الأعلى. سيكون معترضًا &بدلاً من ذلك، لأنه يحتوي على هذا التعليق التوضيحي؛
  • عند محاولة استدعاء طريقة قياسية، سيتم تحليل "الفطيرة" المتبقية. سيتم تحليله بنفس الطريقة تمامًا كما هو موضح في المثال السابق؛
  • ونتيجة لذلك، سيعود تنفيذ التعليمات البرمجية إلى &بدلاً من المعترض، وعند اكتماله، إلى التكوين القياسي.

مثال 3

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

سيقوم هذا المثال بتنفيذ المعترض &بدلاً من ذلك من Extension2 فقط. لأنها تغطي الطريقة القياسية، أي "الفطيرة" الموجودة تحتها بأكملها.

مثال 4

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

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

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

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

أولاً، اسم الطريقة التي تم اعتراضها هو اسم الحدث. على سبيل المثال، قبل التسجيل:

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

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

اعتراض معالجات الأحداث والمعالجات المخصصة في وحدات النموذج

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

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

خارجيًا، يبدو معترض الحدث في وحدة النموذج كما يلي:

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

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

إذا قمت بتجاوز المعالج العام (بدلاً من ذلك)، فسيكون مجرد نقطة.

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

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

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

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

وحدات مشتركة

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

  • ليس من الضروري أن تكون من جانب الخادم العالمي؛
  • لا ينبغي أن يتمتعوا بالامتياز.

عند توسيع وحدة تكوين عامة، توجد قيود مماثلة:

  • لا يمكنك استعارة وحدات الخادم العالمية؛
  • لن يتم تنفيذ التعليمات البرمجية من الملحق الخاص بك إلا في الوضع غير المميز (ما لم يسمح بخلاف ذلك في ملف تعريف الأمان).

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

لا تتوسع أساليب الخادم دائمًا

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

إذا كان حل التطبيق يعمل في إصدار ملف أو في إصدار خادم عميل بدون ملفات تعريف أمان، فعند توصيل الامتداد الخاص بك:

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

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

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

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

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