يفتح
يغلق

خطأ في استخدام مدير القفل. التحكم في قفل بيانات المعاملات، والآلية. العمل مع الأقفال المُدارة باستخدام اللغة المدمجة

الأسباب الرئيسية للتبديل إلى الأقفال المُدارة:

  • السبب الرئيسي هو توصية 1C:Expert بناءً على الشهادة أو 1C:TsUP
  • مشاكل مع المستخدمين المتزامنين ()
  • باستخدام Oracle وPostgreSQL و.

تكلفة العمل:

جوهر الأقفال المدارة

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

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

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

بعد نقل التكوين إلى الوضع المُدار، يتم تنشيط الوظيفة الإضافية لـ "مدير القفل" في النظام الأساسي ويتم الآن التحكم في سلامة البيانات ليس على جانب نظام إدارة قواعد البيانات (DBMS)، ولكن على جانب خادم 1C. يؤدي هذا إلى زيادة الحمل على أجهزة خادم 1C (هناك حاجة إلى معالجات أسرع وذاكرة أكبر)، ويقدم بالفعل تباطؤًا طفيفًا (عدة بالمائة)، ولكنه يحسن الوضع بشكل كبير مع الأقفال (عدد أقل من الأقفال بسبب الأقفال على كائن ما، و ليس على مجموعة من الجداول، ومساحة حظر أقل، وفي بعض الحالات يكون عمر أقفال القراءة أقصر، أي ليس حتى نهاية المعاملة). يؤدي هذا إلى تحسين التزامن العام.


تم تنفيذ التكوينات الجديدة من 1C على الفور في وضع متحكم فيه.

  • سؤال: هل من الممكن إجراء التدقيق أولاً ثم التحويل إلى FM؟

الإجابة: نعم، سيكون التدقيق بمثابة مبرر إضافي لجدوى التحول إلى الأقفال المُدارة وأيضًا لتقييم مساهمة الأقفال التلقائية في التباطؤ العام وما إذا كانت هناك حاجة إلى جهود إضافية إلى جانب النقل.

  • سؤال: للتحويل إلى UX، ما نوع الوصول الذي يجب توفيره - RDP أو TeamViewer؟ أو هل يمكنني أن أرسل لك ملف التكوين؟

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

  • سؤال: لدينا 10 مبرمجين بدوام كامل يغيرون شيئًا ما في المؤتمر كل يوم. يتم استخدام مخزن التكوين المشترك." كيف سيتم تنظيم التفاعل أثناء النقل إلى تجربة المستخدم؟ أم يجب إرسال جميع المبرمجين في إجازة؟

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

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

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

إذا تم ضبط تكوين 1C:Enterprise على وضع القفل التلقائي، ثم يتم تحديد مستوى عزل المعاملة بواسطة نظام إدارة قواعد البيانات (DBMS). في حالة MS SQL، ستكون هذه مستويات قراءة قابلة للتكرار أو قابلة للتسلسل، أي أن عزل البيانات قريب من الحد الأقصى. يؤدي هذا إلى حل مشاكل صحة البيانات، ولكنه قد يؤدي إلى الحظر على مستوى نظام إدارة قواعد البيانات (DBMS) أثناء العمل المكثف للمستخدم. ولذلك، فإن 1C:Enterprise لديه وظائفه الخاصة للعمل مع الأقفال، والتي يتم تنشيطها عن طريق تمكين وضع الأقفال المُدارة. في هذه الحالة، سيتم قراءة مستوى عزل المعاملة لـ MS SQL. ستقوم المنصة نفسها بعزل البيانات دون الاعتماد على نظام إدارة قواعد البيانات.

يتم تمكين وضع القفل المُدار في خصائص التكوين:

كما يمكن ضبط وضع القفل لكائنات تكوين محددة:

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

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

  1. وضع الوثيقة تلقائي، وضع التسجيل تلقائي ->
  2. وضع الوثيقة مُدار، وضع التسجيل مُدار -> سجل بالتسجيل في الوضع المُدار
  3. وضع الوثيقة تلقائي، وضع التسجيل متحكم فيه -> التسجيل عن طريق التسجيل في الوضع التلقائي
  4. وضع المستند مُدار، وضع التسجيل تلقائي -> استثناء (خطأ)

السؤال 06.59 من الامتحان 1C: محترف المنصة. عند ترحيل مستند من خلال أي سجل، إذا كان المستند يحتوي على وضع إدارة قفل المعاملات التلقائي وكان السجل يحتوي على وضع مُدار (يُستخدم الخيار "تلقائي ومُدار" في خصائص التكوين)، فسيؤدي هذا الترحيل إلى:

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

السؤال 06.60 من الامتحان 1C: المنصة الاحترافية. عند نشر مستند من خلال أي سجل، إذا كان المستند يحتوي على وضع مُدار لإدارة أقفال المعاملات، وكان السجل يحتوي على وضع تلقائي (يتم استخدام خيار "تلقائي ومُدار" في خصائص التكوين)، فإن هذا الترحيل سيؤدي إلى:

  1. إلى حالة الخطأ
  2. سيتم إكمال المعاملة بأكملها تلقائيًا
  3. سيتم إكمال المعاملة بأكملها بطريقة خاضعة للرقابة

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

السؤال 06.61 من الامتحان 1C: المنصة الاحترافية. عند نشر مستند من خلال أي سجل، إذا كان المستند يحتوي على وضع تلقائي لإدارة أقفال المعاملات، وكان السجل يحتوي على وضع مُدار (يتم استخدام خيار "مُدار" في خصائص التكوين)، فإن هذا الترحيل سيؤدي إلى:

  1. إلى حالة الخطأ
  2. سيتم إكمال المعاملة بأكملها تلقائيًا
  3. سيتم إكمال المعاملة بأكملها بطريقة خاضعة للرقابة

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

التكوين 1C: يمكن أن يعمل Enterprise 8 في أحد الأوضاع الثلاثة لإدارة الأقفال في المعاملة:

  • آلي؛
  • مُدار - الوضع القياسي للتكوينات الجديدة؛
  • تلقائية ويمكن التحكم فيها.

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

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

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

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

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

خاصة لهذا الغرض، تمتلك مجموعات سجلات التراكم والسجلات المحاسبية خاصية BlockForChange.

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

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

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