كيفية تشغيل مهمة روتينية 1S 8.3

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

إجراء تشغيل خوارزمية عشوائية في وظيفة الخلفية

لتشغيل الخوارزمية الخاصة بنا في مهمة خلفية منفصلة، ​​سوف نستخدم هذه الطريقة "يجري()"مدير الوظيفة الخلفية: بناء الجملة:ينفذ(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)
  • <ИмяМетода>(مطلوب)؛ النوع: سلسلة
    اسم الإجراء الذي تم تصديره أو وظيفة الوحدة النمطية العامة غير العامة التي يمكن تنفيذها على الخادم، في النموذج ModuleName.MethodName.
  • <Параметры>(خياري)؛ النوع: مصفوفة
    تم تمرير مجموعة من المعلمات إلى الأسلوب. يجب أن يتطابق عدد المعلمات وأنواعها مع معلمات الطريقة. (مزيد من التفاصيل في مساعد بناء الجملة)
  • <Ключ>(خياري)؛ النوع: سلسلة
    إذا تم تحديد مفتاح، فيجب أن يكون فريدًا بين مفاتيح مهام الخلفية النشطة التي لها نفس اسم الأسلوب مثل مهمة الخلفية.
  • <Наименование>(خياري)؛ النوع: سلسلة.
    وصف المهمة.

الإجراء لتشغيل وظيفة الخلفية

في حالتنا، سوف نستخدم إجراء التصدير الموجود في الوحدة العامة "جنرال مودولسيرفر"(أعتقد أنه من غير الضروري توضيح أن الوحدة يجب أن تكون من جانب الخادم) إجراء كتابة معلومات حول المنتجات في الخلفية (معلمة BackgroundTask) طلب بيانات التصدير = طلب جديد ("SELECT | Products.Link AS Nomenclature | FROM | Directory. Nomenclature" منتجات AS");

جلب = DataRequest.Execute().Select();

while Selection.Next() MH Cycle = Information Registers.Product Data.CreateRecordManager(); شكل متحكم فيه(الدعائم مع النوع "سلسلة"):

سيبدو رمز وحدة النموذج المدارة كما يلي: &On the Client إجراءات StartBackgroundJob(Command) StartBackgroundJobOnServer(); نهاية الإجراء &في إجراء الخادم، بدء مهمة الخلفية على الخادم () // تشكيل مصفوفة باستخدام المعلمات Job Parameters = New Array;

JobParameters.Add(TaskParameter);

// نبدأ تنفيذ خوارزمية BackonTasks.Execute في الخلفية (// طريقة التصدير الخاصة بنا في الوحدة العامة " GeneralModuleServer.WriteInformationOnProductsInBackground"، // نقوم بتمرير مصفوفة تحتوي على المعلماتTaskParameters، // حدد مفتاح المهمة New UniqueIdentifier، // تحديد اسم وظيفة الخلفية "وظيفة الخلفية لدينا")؛ نهاية الإجراء

نتيجة التنفيذ

نتيجة لتنفيذ مهمة الخلفية، سيتم إنشاء الإدخالات في سجل المعلومات (وهذا ما نحتاجه).

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

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

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

واجهة المستخدم

بينما مع النموذج غير المتزامن، يستمر المستخدم في العمل بنشاط في النظام.

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

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

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

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

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

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

خيار الملف

بدءًا من الإصدار 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.

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

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

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

وفريقين

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

&في إجراء العميل تنفيذ 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 8.3 عاجلاً أم آجلاً أن يقوم بتكوين تنفيذ مهام معينة وفقًا لجدول زمني. أدناه سأقدم وصف تفصيليمن هذه الآليات، وآمل أن يكون كذلك معلومات مفيدةللمبتدئين 1C المبرمجين. يعد هذا أمرًا مريحًا للغاية، لأنه لا يتطلب إجراءً بشريًا، حيث يتم تكوين المهمة الروتينية مرة واحدة وتعمل وفقًا لجدولك الزمني.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

وهنا نرى أنه يتم استخدام مدير المهام الخلفية وطريقة "التشغيل" الخاصة به. لاحظ أن المطورين يقومون بتخزين معرف فريد لمهمة الخلفية. <ИмяПроцедуры>, <Интервал>, <Однократно>).

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

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

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

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

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

أولا، دعونا معرفة ما يعنيه وما هو الفرق بينهما:

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

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

افتح التكوين وأضف مهمة مجدولة.

خصائص الإعداد

دعونا نفكر في الأكثر المعلمات الهامةوالتي يجب أن تملأ في خصائصها.

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

وضع جدول زمني

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

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

حظر المهام المجدولة

قم بتشغيل الأداة المساعدة القياسية "Administering 1C Enterprise Servers" وافتح خصائص قاعدة المعلومات حيث قمت بإنشاء المهمة الروتينية (لإصدارات خادم العميل من 1C).

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

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

الخلفية والمهام المجدولة في وضع الملف

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

تفعيل المهام المجدولة في في هذه الحالةيتم تنفيذه عند استخدام طريقة "RunTaskProcessing()".

يمكنك أيضًا استخدام البناء التالي:

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

تتبع الأخطاء في وظائف الخلفية

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

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

عند العمل في 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:00periodRepeatDays = 1DayWeekMonth = 2DaysWeek = 3

وقت البدء = 09.00

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

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

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

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

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

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

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

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