كيفية تصحيح مهمة الخلفية 1S 8.3. تصحيح وظائف الخلفية. عرض القيمة عند التمرير

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

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

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

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

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

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

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

دعونا نلقي نظرة على أهم المعلمات التي يجب ملؤها في خصائصه.

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

وضع جدول زمني

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

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

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

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

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

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

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

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

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

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

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

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

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

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

في بعض الأحيان تكون هناك حاجة لتصحيح أخطاء مهمة الخلفية (الروتينية). وهذا هو بالضبط المكان الذي تنشأ فيه المشكلة غالبًا.

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

لحل هذه المشكلة علينا حل مشكلتين:

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

"C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent

(مأخوذ من معلمات بدء تشغيل خدمة وكيل الخادم 1C:Enterprise 8.1). (هذا لإصدار النظام الأساسي 8.1)

أضف المفتاح إلى النهاية -تصحيح (لا تنس أن تضع مسافة قبل المفتاح -debug)

مثال
. "ImagePath"= كان "C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server" يضع "C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -تصحيح-د "C:\ملفات البرنامج\1cv81\الخادم"

أعد تشغيل وكيل الخادم. مستعد. الآن يمكننا تصحيح سلاسل تنفيذ الخادم.

2. يجب أن تتطابق حالة أحرف اسم الخادم واسم قاعدة البيانات في اتصال العميل بخادم 1C تمامًا.

الاتصال الصحيح:
وظيفة الخلفية عميل - Srvr = "SERVER-NAME"؛ Ref = "Base_Name"؛
اتصال غير صحيح:
وظيفة الخلفية - Srvr = "SERVER-NAME"؛ المرجع = "Base_Name"; عميل - Srvr = "اسم الخادم"؛ Ref = "Base_Name"؛

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

رمز على النحو التالي:

إجراء WriteConnectionWithBase() يصدّر
تسجيل إدخال دفتر اليومية(,سلسلة اتصال قاعدة المعلومات());
نهاية الإجراء

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


الآن نحدد الاتصال التلقائي بمهام الخلفية.

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


ألم تقرأه بعد؟ أنت قد تكون مهتم...

التصحيح 1C- آلية قوية وعملية للغاية لمنصة 1C 8.3، والتي تتيح لك العثور بسرعة على الأخطاء في كود البرنامج (في لغات البرمجة الأخرى يسمى هذا "debug"، من "debug" الإنجليزية).

سننظر أدناه في الطرق الرئيسية لاستخدام آلية تصحيح الأخطاء في شكل تعليمات عملية باستخدام مثال محدد.

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

أسهل طريقة لبدء تصحيح الأخطاء في 1C هي فتح 1C في الوضع ومن هناك بدء وضع التصحيح في وضع التشغيل المطلوب (رفيع/سميك، مُدار/عادي):

تصحيح وظائف الخلفية 1C

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

في هذه النافذة يمكنك ضبط العلم المقابل.

بالإضافة إلى وظائف الخلفية، يمكنك في هذه النافذة تمكين تصحيح أخطاء الاتصالات الخارجية وhttp و.

تحديد نقطة توقف

الخطوة الثانية في تصحيح الأخطاء هي تعيين نقطة توقف (في لغات البرمجة الأخرى - نقطة التوقف).

على سبيل المثال، قمت بتحديد معالج "عند التغيير" في نموذج المستند لتصحيح الأخطاء:

لتعيين نقطة توقف، تحتاج إلى العثور على رمز البرنامج المطلوب والنقر نقرًا مزدوجًا فوق الحقل الموجود على يسار حقل إدخال الرمز (أو اضغط على الزر F9):

لرؤية قائمة بجميع النقاط المثبتة، عليك الذهاب إلى قائمة التصحيح - قائمة نقاط التوقف (alt + F9):

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

نقطة التوقف 1C مع الشرط (الأزرق)

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

على سبيل المثال، لنوقف الحلقة عند السطر رقم 25:

نقطة توقف غير نشطة (رمادي)

تعني نقطة التوقف الرمادية أنها غير نشطة وأن النظام لن يتوقف عند نقطة التوقف هذه. يمكنك جعله غير نشط عن طريق النقر فوق الزر الخاص الموجود في لوحة "Disable Breakpoint" (shift+ctrl+F9):

نقطة توقف الخطأ

يمكن أن يتوقف النظام بسبب خطأ ما؛ للقيام بذلك، تحتاج إلى تعيين العلامة المقابلة في قائمة التصحيح - التوقف عن طريق الخطأ:

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

الحركة خطوة بخطوة من خلال رمز البرنامج 1C

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

من أجل الانتقال إلى السطر التالي، يجب عليك الضغط على الزر "F11" (الدخول إلى).

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

لكي لا "تفشل"، يكفي الانتقال عبر السطور باستخدام الزر F10 (الخطوة عبر) بدلاً من F11؛ حيث يتيح لك هذا الزر التنقل خلال الإجراءات الموجودة في كود البرنامج.

للانتقال من موضع المؤشر الحالي إلى الموضع المطلوب، وتجاوز الأسطر المتوسطة من التعليمات البرمجية، تحتاج إلى وضع المؤشر على السطر المطلوب والضغط على Shift + F10 (انتقل إلى المؤشر).

تحليل القيم في وضع التصحيح 1C

يمكنك عرض معاني قيم معينة طرق مختلفة:

عرض القيمة عند التمرير

عندما تقوم بالتمرير فوق متغير، يقوم النظام "بتمييز" قيم المتغير:

استخدام تقييم التعبير أو اللوحة

  • استمارة تقييم التعبيريمكن أن يسمى باستخدام قائمة السياقأو الضغط على مفاتيح الاختصار - (Shift + F9)، أو القائمة (تصحيح الأخطاء - تقييم التعبير).
  • لوحة الدرجاتيتم استدعاؤه باستخدام مفاتيح الاختصار Ctrl + Alt + W أو من القائمة (Debugging - Tableau).

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

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

على سبيل المثال:

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

كيفية معرفة مكان استدعاء الإجراء في تصحيح الأخطاء - مكدس الاستدعاءات

في كثير من الأحيان، تحتاج إلى فهم من أين تم استدعاء إجراء أو وظيفة معينة وبأي معلمات. لهذا الغرض، يوفر 1C وظيفة خاصة- "كومة المكالمة". لتشغيل Call Stack، يجب عليك الضغط على مفاتيح التشغيل السريع - Ctrl + Alt + C أو من خلال القائمة (Debugging - Call Stack).

باستخدامه، يمكنك معرفة بالتفصيل من أين تم استدعاء الإجراء وبأي معلمات:

إذا كنت مهتمًا بتقييم الأداء أثناء تصحيح الأخطاء - .

انظر أيضًا مقطع فيديو نظرة عامة حول تصحيح الأخطاء في 1C:

في 1C الحديثة: تكوينات المؤسسة، يتم استخدام وظائف الخلفية على نطاق واسع.

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

تمكين وضع التصحيح على خادم 1C:Enterprise.

أول شيء عليك القيام به هو التأكد من أن خادم 1C:Enterprise يعمل في وضع التصحيح. إذا لم يتم تمكين تصحيح الأخطاء على الخادم، فيجب عليك إيقاف الخدمة راجينتوأعد تشغيله مع المعلمة /debug

قم بتكوين الاتصال التلقائي لوظائف الخلفية في أداة التهيئة

نظرًا لأن مهمة الخلفية لا تحتوي على جزء عميل، يقوم المكوِّن بتكوين الاتصال التلقائي بمهام الخلفية. للقيام بذلك، حدد العنصر في القائمة التصحيح -> الاتصال

في مربع الحوار الذي يفتح، انقر فوق الزر اتصال تلقائيوفي النافذة التالية حدد المربع وظائف الخلفية

أدخل سلسلة الاتصال بقاعدة بيانات 1C بشكل صحيح

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

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

Srvr = "Server1C:1541"؛ Ref = "اختبار"؛

ولسبب ما تم إطلاق مهمة الخلفية دون تحديد المنفذ

Srvr = "Server1C"؛ Ref = "اختبار"؛

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

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

الإجراء LogConnectionString() ExportConnectionString = InformationBaseConnectionString(); تسجيل الدخول (سلسلة الاتصال) ؛ نهاية الإجراء

الآن لننفذ هذا الإجراء عن طريق تشغيل:

&إجراء OnServer WriteConnectionStringOnServer() مهام الخلفية. يجري ( "BackgroundTasksServer.WriteConnectionStringToLog") ; نهاية الإجراء

نفتح سجل التسجيل، وننظر إلى الإدخال بسلسلة الاتصال، ونسجل إعدادات الاتصال بقاعدة البيانات عن طريق القياس مع وظيفة الخلفية.




قمة