المهام الروتينية والخلفية 1S 8.2. المهام الروتينية والخلفية. تضمين كل أو بعض المهام


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

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

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

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

تحميل مصنف البنك - الأحد 4:30
تحميل أسعار العملات - كل يوم؛ 7:00
استخراج النص - كل يوم؛ 6:00.
تبادل الرسائل عبر حسابات إدارة المستندات - كل يوم؛ كل 10800 ثانية
يتم تحديث الوحدات كل يوم. من الساعة 5:00:00 مرة واحدة يوميا
تحديث مهام المحاسب - كل يوم؛ من الساعة 6:30:00 مرة واحدة يوميا
تحديث فهرس PPD (البحث عن النص الكامل) - كل يوم؛ كل 10800 ثانية
إعادة بناء الوحدات - كل يوم، حسب أيام الأسبوع [السبت]؛ من الساعة 3:00:00 مرة واحدة يوميا
إعادة حساب القيم الحالية للتواريخ النسبية لحظر التغييرات - كل يوم؛ من الساعة 7:00:00 مرة واحدة يوميا
دمج فهرس PPD (البحث عن النص الكامل) - كل يوم؛ من الساعة 4:00:00 مرة واحدة يوميا
إزالة معلومات المزامنة غير ذات الصلة - كل يوم؛ من الساعة 3:30:00 مرة واحدة يوميا
تحديد فترة المجاميع المحسوبة - كل يوم، الخامس من الشهر؛ من الساعة 1:00:00 مرة واحدة يوميا

عند العمل في 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 من اللغة المضمنة؛
  • وفي بعض الحالات الأخرى (على سبيل المثال، عند تحديث تكوين قاعدة البيانات).

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

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

أنشئ مهمة

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

المهمة الروتينية لا يمكن الاستغناء عنها:

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

لإنشائه، عليك الذهاب إلى قاعدة المعلومات في وضع "Configurator". بعد ذلك، ابحث عن فرع "المهام الروتينية" في شجرة التكوين، فهو موجود في علامة التبويب "عام" وانقر فوق الزر "إضافة" (الشكل 1)

دعونا نلقي نظرة فاحصة على نافذة خصائصه (الشكل 2):
الصورة 2

  1. الاسم والمرادف والتعليق - قواعد ومبادئ ملء هذه الحقول متشابهة بالنسبة لجميع كائنات التكوين وليست هناك حاجة لوصفها مرة أخرى؛
  2. اسم الطريقة - إجراء الوحدة العامة الذي يصف الخوارزمية المطلوبة بأكبر قدر ممكن من الدقة (النقر على زر التحديد يفتح الإجراءات المتاحة، والتي يتكون تمثيلها من اسم الوحدة العامة واسم الإجراء في أعمدة مختلفة من الجدول)؛
  3. المفتاح - لا يحدد مدى تفرد المهمة المجدولة، بل يحدد تفرد عملية الخلفية التي يتم إطلاقها بناءً على المهمة؛ وله حد للطول؛
  4. الجدول الزمني – سنخصص فقرة منفصلة من مقالتنا لوصف هذا العنصر؛
  5. الاستخدام - تحديد هذا المربع يحدد نشاط المهمة، ويعني TRUE أنه سيتم إطلاق المهمة وتنفيذها وفقًا للجدول الزمني؛
  6. محددة مسبقًا - إذا كان العنصر يحتوي على خانة الاختيار هذه، فلا يمكن حذف هذه المهام، حيث يتم إنشاؤها تلقائيًا عند حفظ التكوين في قاعدة البيانات؛
  7. عدد التكرارات - في حالة حدوث استثناء أثناء التنفيذ، سيتم إعادة تشغيله، بحيث لا تحدث حلقة لا نهاية لها، ويحد البرنامج من عدد مرات إعادة التشغيل؛
  8. الفاصل الزمني لإعادة المحاولة - الوقت بالثواني بين عمليات إعادة تشغيل المهام المكتملة بشكل غير طبيعي.

دعونا نلقي نظرة فاحصة على الجدول الزمني.

جدول المهام الروتينية

تين. 3

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

علامة التبويب "عام":

  • تاريخ بدء المهمة؛
  • تاريخ انتهاء المعالجة؛
  • تكرار تكرار المهام.

إذا لم يتم تحديد أي تواريخ في علامة التبويب هذه، فلن يتم تحديد موعد نهائي للمهمة.

علامة التبويب "يوميًا" (الشكل 4)
الشكل 4

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

تحتوي علامتي التبويب "يوميًا" و"أسبوعيًا" على معلومات عن الفترات المقابلة.

ميزات العملية

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

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

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

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

بالإضافة إلى ذلك، في عمليات التسليم القياسية 1C، أصبح من الممكن إدارة العمل المقرر مباشرة من البرنامج، دون الدخول في "Configurator". في تكوين "ZUP"، الإصدار 3.1.3.223، يمكنك فتح نموذج الإدارة من القائمة الإدارة->الصيانة->العمليات الروتينية->المهام الروتينية والخلفية (الشكل 5)
الشكل 5

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


يمكنك أيضًا بدء مهمة مباشرةً من النموذج.

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

ستجد تعليمات مفصلة باستخدام المثال أدناه.

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

  • المهام المجدولةهي آلية 1C Enterprise 8.3 خاصة مصممة لتنفيذ إجراء محدد وفقًا لجدول زمني محدد.
  • وظيفة الخلفية- الكائنات التي تم إنشاؤها بواسطة مهمة روتينية تؤدي الإجراء المقصود مباشرة دون مشاركة المستخدم أو مبرمج 1C 8.2.

تعمل آلية المهام المجدولة والخلفية في وضع خادم العميل (SQL)، وذلك بفضل وظيفة نظام إدارة قواعد البيانات (DBMS). إذا كان لديك قاعدة بيانات ملف، فيمكن أيضا تكوين المهمة، ولكن على مبدأ مختلف قليلا.

إعداد وظائف الخلفية في وضع خادم العميل 1C

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

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

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

والإعداد الأكثر إثارة للاهتمام هو جدول:

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

انتباه!لا تنس تعطيل حظر تنفيذ المهام الروتينية والخلفية على مستوى نظام إدارة قواعد البيانات (DBMS)!

يمكن القيام بذلك في الأداة الإدارية لإصدار خادم العميل أو عند إنشاء قاعدة بيانات جديدة:

إعداد المهام الروتينية في وضع الملف 1C

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

في وضع الملف، تتم تهيئة المهمة الروتينية عند تشغيل أسلوب "RunTaskProcessing()".

بالنسبة لمستخدم معين، يمكنك تكوين هذه الطريقة للتشغيل باستخدام طريقة أخرى -

كونيكت ويت هاندلر ( <ИмяПроцедуры>, <Интервал>, <Однократно>).

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

كونيكت ويت هاندلر، 3600 )؛

مقطع فيديو مدته دقيقتان يوضح كيفية إعداد مهمة روتينية في مكون 1C:

آلية العمل

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

آلية المهمة تحل المهام التالية:

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

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

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

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

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

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

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

وظائف الخلفية

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

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

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

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

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

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

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

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

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

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

يتم إنشاء المهام المجدولة وإدارتها برمجيًا من أي اتصال ولا يُسمح بها إلا للمستخدمين الذين لديهم حقوق إدارية.

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

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

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

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

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

أمثلة على جداول المهام الروتينية:

كل ساعة، يوم واحد فقط

فترة تكرار الأيام = 0، فترة تكرار الأيام = 3600

كل يوم مرة واحدة في اليوم

فترة RepeatDays = 1، فترة RepeatDays = 0

يوم واحد، مرة واحدة

أيام تكرار الفترة = 0

كل يوم مرة واحدة في اليوم

أيام تكرار الفترة = 2

كل ساعة من 01.00 إلى 07.00 كل يوم

أيام تكرار الفترة = 1

كرر الفترة خلال اليوم = 3600

وقت البدء = 01.00

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

كل سبت وأحد الساعة 09.00

أيام تكرار الفترة = 1

أيام الأسبوع = 6، 7

وقت البدء = 09.00

كل يوم لمدة أسبوع، تخطي أسبوع

أيام تكرار الفترة = 1

الأسابيع الدورية = 2

الساعة 01.00 مرة واحدة

وقت البدء = 01.00

آخر يوم من كل شهر الساعة 9:00.

أيام تكرار الفترة = 1

يوم في شهر = -1

وقت البدء = 09.00

اليوم الخامس من كل شهر الساعة 9:00

أيام تكرار الفترة = 1

يوم في شهر = 5

وقت البدء = 09.00

الأربعاء الثاني من كل شهر الساعة 9:00 صباحاً

أيام تكرار الفترة = 1

داي ويك إن مونث = 2

أيام الأسبوع = 3

وقت البدء = 09.00

يمكنك التحقق مما إذا كانت المهمة قيد التشغيل لتاريخ معين (طريقة RequiredExecution لكائن TableTasks). يتم دائمًا تنفيذ المهام المجدولة تحت اسم مستخدم محدد. إذا لم يتم تحديد مستخدم المهمة المجدولة، فسيتم التنفيذ نيابة عن المستخدم الافتراضي الذي لديه حقوق إدارية.

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

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

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

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

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

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

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

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

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

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

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

إنشاء بيانات التعريف لمهمة روتينية

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

لإنشاء كائن بيانات تعريف لمهمة روتينية في شجرة التكوين في الفرع "عام" لفرع "المهام الروتينية"، قم بتنفيذ الأمر "إضافة" واملأ الخصائص التالية للمهمة الروتينية في لوحة الخصائص:

اسم الطريقة - يشير إلى اسم طريقة المهمة الروتينية.

المفتاح - حدد قيمة سلسلة عشوائية سيتم استخدامها كمفتاح للمهمة المجدولة.

الجدول - يشير إلى الجدول الزمني للمهمة الروتينية. لإنشاء جدول، انقر فوق الرابط "فتح" وفي نموذج الجدول الذي يفتح، قم بتعيين القيم المطلوبة.

في علامة التبويب "عام"، تتم الإشارة إلى تاريخي البدء والانتهاء للمهمة ووضع التكرار.

في علامة التبويب "يوميًا"، تتم الإشارة إلى الجدول اليومي للمهمة.

تحديد الجدول الزمني:

  • وقت البدء ووقت الانتهاء للمهمة؛
  • وقت إنجاز المهمة، وبعد ذلك سيتم إنهاؤها قسراً؛
  • فترة تكرار المهمة؛
  • مدة التوقف بين التكرارات؛
  • مدة التنفيذ.

يُسمح بتحديد مجموعة تعسفية من الشروط.

في علامة التبويب "أسبوعي"، تتم الإشارة إلى الجدول الأسبوعي للمهمة.

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

في علامة التبويب "شهري"، تتم الإشارة إلى الجدول الشهري للمهمة.

حدد خانات الاختيار الخاصة بالأشهر التي سيتم تنفيذ المهمة فيها. إذا لزم الأمر، يمكنك تحديد يوم معين (شهر أو أسبوع) للتنفيذ من بداية الشهر/الأسبوع أو نهايته.

الاستخدام - إذا تم التعيين، فسيتم تنفيذ المهمة وفقًا للجدول الزمني.

محددة مسبقًا - إذا تم تعيينها، فستكون المهمة مهمة محددة مسبقًا.

عدد مرات إعادة المحاولة في حالة الإنهاء غير الطبيعي - يشير إلى عدد مرات إعادة المحاولة في حالة الإنهاء غير الطبيعي.

الفاصل الزمني لإعادة المحاولة عند الإنهاء غير الطبيعي - يحدد الفاصل الزمني لإعادة المحاولة عند الإنهاء غير الطبيعي. أمثلة

إنشاء مهمة خلفية "تحديث فهرس البحث عن النص الكامل":

ScreenTasks.Run("UpdatingFullTextSearchIndex");

إنشاء مهمة روتينية "استرداد التسلسلات":

الجدول = مهمة جدولة جديدة؛ Schedule.PeriodRepeatDays = 1; Schedule.RepeatPeriodDuringDay = 0;

Task = RoutineTasks.CreateRoutineTask("استعادة التسلسلات"); Job.Schedule = الجدول الزمني؛ مهمة.كتابة();

وحدة التحكم الوظيفية

المعالجة باستخدام ITS، تدير المهام الروتينية:

العمل مع المهام الروتينية

كائنات الوظيفة

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

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

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

الحصول على قائمة المهام

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

مدير الوظائف المجدولة

احصل على الوظائف المجدولة (GetScheduledJobs)

بناء الجملة:

الحصول على المهام الروتينية(<Отбор>)

خيارات:

<Отбор>(خياري)

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

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

قيمة الإرجاع:

النوع: مصفوفة.

وصف:

يتلقى مجموعة من المهام الروتينية لاختيار معين. استلام المهام المجدولة ممكن فقط للمسؤول.

التوفر:

Routine = RoutineTasks.GetRoutineTasks(Selection);

لكل روتين من الدورة الروتينية NewLine = قائمة RoutineTasks.Add(); NewRow.Metadata = Regular.Metadata.View(); NewLine.Name = Regular.Name; NewString.Key = Regular.Key; NewLine.Schedule = Schedule.Schedule; NewLine.User = Regular.UserName; NewString.Prefinite = Regular.Prefinite; NewString.Use = Regular.Use; NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask; إذا كانت المهمة الأخيرة<>غير محدد ثم NewRow.Running = LastTask.Start؛ NewRow.State = LastTask.State; إنهاء إذا؛ EndCycle;

خلق

تم إنشاؤها بواسطة طريقة إنشاء RoutineTask لمدير المهام الروتينية:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Name = الاسم؛ RegularTask.Key = Key; RegularTask.Use = الاستخدام؛ RoutineTask.UserName = UsersChoice; RoutineTask.Number ofRepetitionsAtEmergencyCompletion =NumberofRepetitionsAtEmergencyCompletion; ScheddedTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion; ScheduleTask.Schedule = الجدول الزمني؛ RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Name = الاسم؛ JobObject.Use = True;

يحتوي كائن المهمة على حقل "معلمات" يتم فيه تحديد معلمات الطريقة:

مهمة مجدولة

خيارات(حدود)

الاستخدام:

اقرا و اكتب.

وصف:

النوع: مصفوفة. مجموعة من المعلمات لمهمة مجدولة. يجب أن يتوافق عدد المعلمات وتكوينها مع معلمات طريقة المهمة الروتينية.

التوفر:

الخادم، العميل الكثيف، الاتصال الخارجي.

ملحوظة:

تتوفر إمكانيات القراءة والكتابة للمسؤول فقط.

إزالة

تم الحذف باستخدام طريقة الحذف () لكائن المهمة:

ScheduelTask.Delete();

الحصول على كائن الوظيفة

  • القائمة عبر طريقة GetRoutineTasks:

Routine = RoutineTasks.GetRoutineTasks(Selection);

  • عبر FindByUniqueIdentifier لطريقة إدارة المهام:

المهمة = مجدولةTasks.FindByUniqueIdentifier(UID);