أجهزة الكمبيوتر شبابيك إنترنت

1C استخدام المهام الروتينية. المهام الروتينية والخلفية. المهام التنظيمية المكتملة وغير المكتملة

مفهوم البرمجة غير المتزامنة

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

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

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

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

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

مهام الخلفية في 1C:Enterprise 8

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

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

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

خيار خادم العميل

في إصدار خادم العميل، يتم تنفيذ جدولة المهام بواسطة برنامج جدولة المهام، الموجود فعليًا في مدير المجموعة.

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

خيار الملف

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

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

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

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

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

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

مثال على تنفيذ التعليمات البرمجية غير المتزامنة في 1C:Enterprise 8

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

دعونا نوضح بساطة وأناقة تنفيذ التعليمات البرمجية غير المتزامنة في 1C:Enterprise 8!

الخطوة 1.لنقم بإنشاء نظام جديد لأمن المعلومات لتطوير التكوين

الخطوة 2.في التكوين سنضيف الوحدة العامة "المعالجات غير المتزامنة"

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

دعنا ننتقل إلى مساعد بناء الجملة.

لذلك سوف نحتاج إلى وحدة مشتركة.

الخطوه 3.في الوحدة العامة "المعالجات غير المتزامنة" سنضيف إجراء التصدير OurLongOperation()

الإجراء OurLongOperation(Duration) Export // محاكاة إجراء طويل المدى (المدة ثانية). OperationStartDate = CurrentDate(); بينما CurrentDate() - تاريخ بدء العملية< Длительность Цикл КонецЦикла; КонецПроцедуры

الخطوة 4.أضف معالجة "مفهوم البرمجة غير المتزامنة" إلى التكوين (يمكنك إنشاء معالجة خارجية)

أضف سمة واحدة إلى النموذج:

المدة (العدد)

وفريقين

تنفيذ عملية طويلة؛

إجراء عملية طويلة الأمد بشكل غير متزامن.

الخطوة 5.وفقًا لمساعد بناء الجملة، املأ وحدة النموذج

&في إجراء العميل تنفيذ Long-RunningOperation(Command) ExecuteLong-RunningOperationOnServer(); EndProcedure &OnServer الإجراء ExecuteLongOperationOnServer() AsynchronousHandlers.OURLongOperation(Duration); نهاية الإجراء &في إجراء العميل إجراء عملية طويلة الأمد بشكل غير متزامن (الأمر) إجراء عملية طويلة الأمد بشكل غير متزامن على الخادم ()؛ نهاية الإجراء &في إجراء الخادم تنفيذ عملية طويلة الأمد بشكل غير متزامن على Server() Parameters = New Array; Parameters.Add(Duration); الخلفيةTasks.Execute("AsynchronousHandlers.OURLongOperation"، المعلمات، معرف فريد جديد، "مثال لمفهوم البرمجة غير المتزامنة"); نهاية الإجراء

الخطوة 6.دعونا نبدأ والتحقق!

نتيجة:

إذا نقرنا على زر "إجراء عملية طويلة"، فسيتم حظر واجهة المستخدم لمدة ثواني "المدة"؛

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

يمكننا التحقق من تنفيذ كود البرنامج بشكل غير متزامن من خلال النظر في السجل.

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

مثال على تنفيذ التعليمات البرمجية غير المتزامنة في 1C:Enterprise 8 باستخدام BSP

لنفكر في مثال على تنفيذ مفهوم البرمجة غير المتزامنة في 1C:Enterprise 8 في BSP باستخدام مثال معالجة "الشؤون الحالية".

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

دعونا نحلل رمز البرنامج للنموذج.

حدث النموذج "عندما يستدعي CreatedOnServer" إجراء "RunBackgroundTask" - وهذا ما نحتاج إليه.

دون تشتيت انتباهك بالفروق الدقيقة، دعونا نحلل هذا الإجراء

وهنا نرى أنه يتم استخدام مدير المهام الخلفية وطريقة "التشغيل" الخاصة به. لاحظ أن المطورين يقومون بتخزين معرف فريد لمهمة الخلفية.

للقيام بذلك، يستخدم المطورون هذه الطريقة كونيكت ويت هاندلر (<ИмяПроцедуры>, <Интервал>, <Однократно>).



في الإجراء مدمن مخدرات Connectable_CheckTaskComplete()يقوم المطورون باستدعاء الوظيفة اكتملت المهمة (معرف المهمة)


تتحقق هذه الوظيفة من تنفيذ مهمة الخلفية بواسطة المعرف.

تجدر الإشارة إلى أن BSP قام بتطوير وحدات عامة لدعم عمليات الخادم طويلة المدى.

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

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

لقد قمت مؤخرًا بنشر مقال: حان الوقت لأتمتة هذا:

المهام الروتينية والخلفية

تم تصميم محرك المهام لتنفيذ أي تطبيق أو وظيفة وفقًا لجدول زمني أو بشكل غير متزامن.

تعمل آلية المهمة على حل المشكلات التالية:

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

تتكون آلية العمل من العناصر التالية:

  • البيانات الوصفية للمهام الروتينية؛
  • المهام العادية؛
  • وظائف الخلفية؛
  • جدول المهام.

تم تصميم وظائف الخلفية لأداء مهام التطبيق بشكل غير متزامن. يتم تنفيذ مهام الخلفية باستخدام اللغة المضمنة.

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

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

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

أعتقد أن هذا يكفي مع الوصف - فلنبدأ بالتنفيذ:

إنشاء مهمة روتينية

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

الاستخدام– علامة على استخدام مهمة روتينية.

محددة مسبقا- يشير إلى ما إذا كانت المهمة الروتينية محددة مسبقًا.

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

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

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

وضع جدول زمني

جدولإكمال المهمة:

كل ساعة، يوم واحد فقطفترة تكرار الأيام = 0، فترة تكرار الأيام = 3600
كل يوم مرة واحدة في اليومفترة RepeatDays = 1، فترة RepeatDays = 0
يوم واحد، مرة واحدةأيام تكرار الفترة = 0
كل يوم مرة واحدة في اليومأيام تكرار الفترة = 2
كل ساعة من 01.00 إلى 07.00 كل يومperiodRepeatDays = 1RepeatPeriodDuringDay = 3600StartTime = 01.00

وقت الانتهاء = 07.00

كل سبت وأحد الساعة 09.00فترة تكرار الأيام = 1WeekDays = 6، 7StartTime = 09.00
كل يوم لمدة أسبوع، تخطي أسبوعبيريوديريبيتدايز = 1بيريودويكس = 2
الساعة 01.00 مرة واحدةوقت البدء = 01.00
آخر يوم من كل شهر الساعة 9:00.periodRepeatDays = 1DayInMonth = -1StartTime = 09.00
اليوم الخامس من كل شهر الساعة 9:00periodRepeatDays = 1DayInMonth = 5StartTime = 09.00
الأربعاء الثاني من كل شهر الساعة 9:00 صباحاًperiodRepeatDays = 1DayWeekMonth = 2DaysWeek = 3

وقت البدء = 09.00

ميزات تنفيذ مهام الخلفية في متغيرات الملفات وخادم العميل

تختلف آليات تنفيذ مهام الخلفية في الملف وإصدارات خادم العميل.

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

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

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

في إصدار خادم العميل، من الممكن منع تنفيذ المهام الروتينية. يتم حظر تنفيذ المهام الروتينية في الحالات التالية:

  • تم تثبيت حظر صريح للمهام الروتينية على قاعدة المعلومات. يمكن ضبط القفل عبر وحدة التحكم العنقودية؛
  • هناك كتلة اتصال في قاعدة المعلومات. يمكن ضبط القفل عبر وحدة التحكم العنقودية؛
  • تم استدعاء الأسلوب SetExclusiveMode() مع المعلمة True من اللغة المضمنة؛
  • وفي بعض الحالات الأخرى (على سبيل المثال، عند تحديث تكوين قاعدة البيانات).

معالجة إطلاق وعرض المهام المجدولةيمكنك تحميل هنا.

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

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

الخلفية والمهمة المجدولة - ما هي وأين تم تكوينها؟

المهمة الروتينية هي آلية مضمنة في 1C تسمح لك بتكوين تسلسل معين من الإجراءات وتنفيذها وفقًا للجدول الزمني والتكرار المحددين.

مهمة الخلفية هي إجراء تم إنشاؤه بواسطة عملية روتينية ولا تتطلب مشاركة مباشرة من المستخدم.

يتم إنشاء مهمة روتينية في وضع المكوّن:

  • في نافذة شجرة التكوين نجد الفرع المقابل (الشكل 1)؛
  • انقر فوق زر الإضافة؛
  • في النافذة التي تفتح، يجب عليك تحديد اسم يسمح لك بتحديد الكائن في التكوين؛

الصورة 2

  • مقابل نقش "الجدول الزمني" (الشكل 2) يوجد نقش "فتح"، يؤدي النقر عليه إلى فتح نافذة لضبط وقت وتكرار تنفيذ المعالج (الشكل 3)؛

تين. 3

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

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

ميزات وظائف الخلفية

السمة الرئيسية لهذه الآلية هي أن عملية الخلفية تعمل بشكل غير متزامن.

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

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

ميزات العمل في وضع خادم العميل

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

وظائف الخلفية في وضع الملف

قبل إصدار النظام الأساسي 8.3.3.641، كان العمل مع وظائف الخلفية في إصدار الملف يمثل بعض الصعوبات:

  1. كان من الضروري إطلاق جلسة منفصلة تعمل على مدار الساعة، لتحل محل المجدول؛
  2. يجب أن تنفذ هذه الجلسة بشكل دوري أسلوب RunJobProcessing().

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

الشكل 4

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

كيفية تعطيل المهام المجدولة

يمكن تعطيل المهام غير المستخدمة بمجرد إلغاء تحديد مربع الاختيار "استخدام" في خصائص الكائن.

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

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

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

لقد قمت مؤخرًا بنشر مقال: حان الوقت لأتمتة هذا:

المهام الروتينية والخلفية

تم تصميم محرك المهام لتنفيذ أي تطبيق أو وظيفة وفقًا لجدول زمني أو بشكل غير متزامن.

تعمل آلية المهمة على حل المشكلات التالية:

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

تتكون آلية العمل من العناصر التالية:

  • البيانات الوصفية للمهام الروتينية؛
  • المهام العادية؛
  • وظائف الخلفية؛
  • جدول المهام.

تم تصميم وظائف الخلفية لأداء مهام التطبيق بشكل غير متزامن. يتم تنفيذ مهام الخلفية باستخدام اللغة المضمنة.

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

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

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

أعتقد أن هذا يكفي مع الوصف - فلنبدأ بالتنفيذ:

إنشاء مهمة روتينية

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

الاستخدام– علامة على استخدام مهمة روتينية.

محددة مسبقا- يشير إلى ما إذا كانت المهمة الروتينية محددة مسبقًا.

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

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

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

وضع جدول زمني

جدولإكمال المهمة:

كل ساعة، يوم واحد فقطفترة تكرار الأيام = 0، فترة تكرار الأيام = 3600
كل يوم مرة واحدة في اليومفترة RepeatDays = 1، فترة RepeatDays = 0
يوم واحد، مرة واحدةأيام تكرار الفترة = 0
كل يوم مرة واحدة في اليومأيام تكرار الفترة = 2
كل ساعة من 01.00 إلى 07.00 كل يومperiodRepeatDays = 1RepeatPeriodDuringDay = 3600StartTime = 01.00

وقت الانتهاء = 07.00

كل سبت وأحد الساعة 09.00فترة تكرار الأيام = 1WeekDays = 6، 7StartTime = 09.00
كل يوم لمدة أسبوع، تخطي أسبوعبيريوديريبيتدايز = 1بيريودويكس = 2
الساعة 01.00 مرة واحدةوقت البدء = 01.00
آخر يوم من كل شهر الساعة 9:00.periodRepeatDays = 1DayInMonth = -1StartTime = 09.00
اليوم الخامس من كل شهر الساعة 9:00periodRepeatDays = 1DayInMonth = 5StartTime = 09.00
الأربعاء الثاني من كل شهر الساعة 9:00 صباحاًperiodRepeatDays = 1DayWeekMonth = 2DaysWeek = 3

وقت البدء = 09.00

ميزات تنفيذ مهام الخلفية في متغيرات الملفات وخادم العميل

تختلف آليات تنفيذ مهام الخلفية في الملف وإصدارات خادم العميل.

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

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

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

في إصدار خادم العميل، من الممكن منع تنفيذ المهام الروتينية. يتم حظر تنفيذ المهام الروتينية في الحالات التالية:

  • تم تثبيت حظر صريح للمهام الروتينية على قاعدة المعلومات. يمكن ضبط القفل عبر وحدة التحكم العنقودية؛
  • هناك كتلة اتصال في قاعدة المعلومات. يمكن ضبط القفل عبر وحدة التحكم العنقودية؛
  • تم استدعاء الأسلوب SetExclusiveMode() مع المعلمة True من اللغة المضمنة؛
  • وفي بعض الحالات الأخرى (على سبيل المثال، عند تحديث تكوين قاعدة البيانات).

معالجة إطلاق وعرض المهام المجدولةيمكنك تحميل هنا.

المنصات: 1C: إنتربرايز 8.3، 1C: إنتربرايز 8.2، 1C: إنتربرايز 8.1
التكوينات: جميع التكوينات

2012-11-13
53989

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

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

ويعمل نظام مماثل لمشرفي المواقع، ويتم التحقق من توفر الموقع خلال 24 ساعة. باستخدام آلية "المهام الروتينية" في 1C، يتم تنفيذ مهام المراقبة، بالإضافة إلى المهام الدورية التي يتم تنفيذها وفقًا لجدول زمني في الوضع التلقائي في 1C. دعونا نلقي نظرة فاحصة على هذا الموضوع.

المهام المجدولة 1C

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

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

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

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

إضافة مهمة مجدولة

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

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

في إصدار المحاسبة 2.0، وهو تكوين قياسي، يتم تحديد المهام الروتينية مثل: "إعادة حساب الإجماليات" و"تحديث التكوين" مسبقًا، ولكن مثل "الحركات المؤجلة" و"تبادل البيانات"، على سبيل المثال، غير محددة مسبقًا.

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

أدوات المراقبة والإدارة للمهام الروتينية 1C

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

بمساعدتها يمكنك تنفيذ الإجراءات التالية:

تشغيل وإيقاف مهمة مجدولة؛

تعيين وتغيير الجداول الزمنية؛

تعيين اسم المستخدم الذي سيتم تنفيذ المهمة الروتينية به؛

راجع المهام المكتملة (متى وبأي نتيجة)، بالإضافة إلى أخطاء المهام؛

المهمة الروتينية ونسخ قواعد البيانات

عند استخدام الخادم 1C، قد تنشأ اللحظة التالية:

للبرمجة، تحتاج إلى عمل نسخة من قاعدة البيانات العاملة؛

ضرورة العمل في نسخ قاعدة البيانات (الاختبار)؛

لسبب ما، لم يتم تضمين المهمة المجدولة في قاعدة بيانات الاختبار.

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

المهام التنظيمية المكتملة وغير المكتملة

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

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