1c ما تفعله وظائف الخلفية بشكل افتراضي. مهام الخلفية: الميزات والقدرات والإعدادات. ميزات العمل في وضع خادم العميل

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

2018-11-20T15:18:30+00:00

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

أولاً، في العنصر "المزيد" -> "إدارة المهام الروتينية...":

في قائمة السياق لقاعدة البيانات المحددة (أو مجموعة قواعد البيانات):

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

هذا ما يبدو عليه مربع الحوار لإدارة المهام الروتينية في قواعد البيانات:

ما هي المهام التي يسمح بحلها في مجموعة قواعد البيانات المطلوبة (أو قاعدة بيانات واحدة)؟

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

يرجى ملاحظة أنه يمكنك تحديد قائمة المهام الروتينية في العديد من العمليات أدناه:

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

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

يمكن أخذ أسماء هذه المهام الروتينية مباشرةً من التقرير الخاص بجميع المهام الروتينية (تمت مناقشة هذا الأمر).

يعرض الحالة الحالية للمهام

للقيام بذلك، انتقل إلى علامة التبويب "سحب" وانقر على الزر "سحب...":

في النتائج يمكننا أن نرى:

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

إذا لزم الأمر، في إعدادات الميزة، يمكننا تضييق قائمة المهام المجدولة، وكذلك عرض المهام الممكّنة فقط:

قم بإيقاف تشغيل كافة المهام أو بعضها

للقيام بذلك، انتقل إلى علامة التبويب "إيقاف التشغيل":

بالنسبة لجميع المهام المجدولة أو المحددة، سيتم إلغاء تحديد مربع الاختيار "استخدام".

هذه هي النتيجة لقاعدة واحدة (انقر للتوسيع)

تضمين كل أو بعض المهام

للقيام بذلك، انتقل إلى علامة التبويب "تمكين":

بالنسبة لجميع المهام المجدولة أو المحددة، سيتم تحديد خانة الاختيار "استخدام".

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

هذه هي النتيجة لقاعدة واحدة (انقر للتوسيع)

نحن ندير إطلاق المهام المجدولة على خادم 1C

للقيام بذلك، انتقل إلى علامة التبويب "خادم 1C":

حدد "حظر" أو "إلغاء الحظر" وانقر فوق الزر "تشغيل".

إعداد جدول المهام

ولكن ماذا لو كنا بحاجة إلى إعداد جدول زمني لبدء مهمة (أو مجموعة مهام) في العديد من قواعد البيانات في وقت واحد؟

للقيام بذلك، انتقل إلى علامة التبويب "إعداد الجدول الزمني":

قمنا بإعداد الجدول الزمني (يتزامن الحوار وقدراته تمامًا مع الحوار القياسي في 1C نفسه) وانقر على "تخصيص...".

نبدأ المهام للتنفيذ

للقيام بذلك، انتقل إلى علامة التبويب "تشغيل":

حدد المهام المطلوبة وانقر على زر "تشغيل":

حفظ إعدادات المهمة إلى ملف خارجي

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

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

استعادة إعدادات المهمة من ملف خارجي

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

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

كلمات فراق

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

1 آلية العمل
2 وظائف الخلفية
3 المهام المجدولة
4 ميزات أداء وظائف الخلفية في إصدارات الملفات وخادم العميل
5 إنشاء البيانات الوصفية لمهمة روتينية
6 وظيفة وحدة التحكم
7 العمل مع المهام الروتينية
7.1 كائنات الوظيفة
7.2 الحصول على قائمة المهام
7.3 الخلق
7.4 إلغاء التثبيت
7.5 الحصول على كائن الوظيفة

آلية العمل

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

يتم تخزين مهام الخلفية التي تكتمل بنجاح أو تفشل لمدة 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، تدير المهام الروتينية: ConsoleTasks.epf

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

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

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

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

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

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

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

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

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

بناء الجملة:

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

خيارات:

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

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

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

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

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

وصف:

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

التوفر:

لكل انتظام من الدورة التنظيمية
NewLine = قائمة المهام المجدولة.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;
إذا كانت LastTask غير محددة إذن
NewLine.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);

[يجب عليك التسجيل لمشاهدة الرابط]

ربما كان على كل مبرمج 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:

المنصات: 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 التي يتم بموجبها تنفيذ المهمة دورًا مهمًا في ذلك.

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

مسح السجلات بشكل دوري (على سبيل المثال، سجل معلومات "إصدارات الكائنات" في تكوين 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

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


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