1c حذف عنصر محدد مسبقًا. عناصر منتظمة ومحددة مسبقًا. الاختلاف في جانب قاعدة البيانات. تحديد غير صالح للعنصر المحدد مسبقًا

يوم جيد.

سنتحدث اليوم عن ابتكار في النظام الأساسي 8.3 فيما يتعلق بالعناصر المحددة مسبقًا.

مقدمة

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

عندما تم تصحيح كل شيء وعمله ، اتضح أن المهمة قد تم تعيينها في الاتجاه المعاكس وأن منطق المالك الوحيد مطلوب لشركة ذات مسؤولية محدودة ، ومنطق الشركة ذات المسؤولية المحدودة هو للمالك الوحيد. نقول "لا مشكلة" ، وفي وضع المؤسسة نعيد تسمية العناصر. من الصعب الدخول إلى الكود. يمر عام ويتم تسليمك مهمة جديدة: بالنسبة لـ SP Sidorov ، قم بإعداد المزيد من المنطق. تذهب إلى أداة التهيئة ، وتكتب المنطق ، وتبدأ في التحقق ولا شيء يعمل ، لأن في مكون IPSidorov وفي المؤسسة - Meteor LLC. الدماغ مكسور وأريد تدمير هذا الخليع. الأبسط والأكثر بديهية هو إخراج اسم عنصر محدد مسبقًا في شكل قائمة. هنا كمين ، يمكنك الحصول على اسم محدد مسبقًا في 8.2 بالطريقة فقط. والطريقة لها مضايقات خاصة بها ، فلا يمكن الحصول عليها في الطلب. أولئك. الإزعاج الأول هو الحصول على اسم محدد مسبقًا بالرجوع إلى الدليل.

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

الآن في العمل

الأول هو أن الكتاب المرجعي لديه الآن خاصية "تحديث البيانات المحددة مسبقًا".

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

مثير جدا ولكن لماذا؟ كيف نقوم بإنشاء عنصر في المرجع؟ وكما يحلو لك ، يمكنك إنشاء ، أو يمكنك ربطه بواحد موجود. الآن البحث لديه السمة "PredefinedDataName". نقوم بإنشاء عنصر كتالوج برمجيًا كالمعتاد من خلال "References.Contractors.CreateElement ()" ونملأ السمة "PredefinedDataName" الخاصة به والتي تساوي اسم العنصر المحدد مسبقًا. أو ، إذا كان العنصر موجودًا بالفعل ، نحصل على الكائن الخاص به ونملأ "PredefinedDataName" فيه مرة أخرى. كل شىء.

وأخيراً القليل من الشراب

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

شكرا للانتباه.

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

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

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

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

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

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

هناك نهج أفضل من حيث تطوير بنية بيانات تعريف التكوين ومن حيث أداء النظام. اليوم سنتحدث عنه.

وقفة واحدة حل

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

للحصول على عنصر محدد مسبقًا ، فإن أفضل خيار هو استخدام الطريقة العامة "قيمة محددة مسبقًا (<Имя>)" ... يتم تمرير المسار الكامل للعنصر المحدد مسبقًا إلى الطريقة كمعامل. يشبه بناء الجملة وظيفة لغة الاستعلام "VALUE ()".

لسهولة التطوير ، أوصي بنقل الوظيفة للحصول على القيمة المرتبطة بعنصر محدد مسبقًا وحدة مشتركة... في تكوين الاختبار ، المتاح للتنزيل على الرابط في نهاية المقالة ، تم إنشاء وحدة نمطية مشتركة "قيم محددة مسبقًا" مع وظيفة تصدير "GetValuePredefinedElement (<ИмяПредопределенногоЭлемента>)" ... يتلقى رمز البرنامج الخاص بالوظيفة ارتباطًا إلى عنصر محدد مسبقًا ، ثم يتلقى ، حسب الطلب ، قيم سمة "القيمة". تُظهر لقطة الشاشة التالية القائمة الكاملة للوظيفة.

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

التأثير على الأداء

تم إجراء اختبار سرعة لكلا خياري البحث: بالاسم وبالمرجع من عنصر محدد مسبقًا. تم البحث من خلال دليل "المنتجات" مع 20000 سجل. عند إجراء الاختبارات على قاعدة بيانات ملف ، تم الحصول على النتائج التالية:

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

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

الاستنتاجات

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

أثناء العمل مع النظام الأساسي ، واجهت مواقف متكررة بعد تغيير الاسم ، على سبيل المثال ، بالنسبة لعنصر الكتاب المرجعي "PriceNomenclature Types" ، تعطلت معظم التقارير غير النموذجية.

كلما زاد عدد الخوارزميات المرتبطة بعناصر الدليل العادية من خلال رمز أو اسم ، قل استقرار النظام.

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

التحميلات:

  1. تفريغ قاعدة الاختبار بأمثلة من المقالة.

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

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

يستخدم هذا العنصر في العديد من وحدات التكوين. لذلك في مستند "استلام البضائع والخدمات" ، عند الترحيل في جميع السجلات حيث يوجد بُعد "الجودة" ، يتم استبدال قيمة العنصر المحدد مسبقًا. فيما يلي قائمة بملء جدول المعاملات في سجل "سلع المنظمات":

// السلع في المنظمات السلع المسجلة.مجموعة الحركات = الحركات. المنتجات إذا كان نوع الإيصال = تحويلات. أنواع سلع الدخل. في المخزون ثم // احصل على جدول قيم يتطابق مع بنية مجموعة سجلات السجل.تحريك الجدول = نقل المجموعة. تفريغ () ؛ // املأ جدول الحركة.هدف عام. LoadInTableValues ​​(جدول حسب المنتجات ، TableMotions) ؛ // حقول مفقودة.جدول الحركات. FillValues ​​(Organization، "Organization") ؛ جدول الحركات. FillValues ​​(غير محدد ، "المفوض") ؛ جدول الحركات. FillValues ​​(المراجع. الجودة. جديد ، "الجودة") ؛ // جودة التعبئة من عنصر محدد مسبقًا

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

اختلافات

تم إنشاء دليل "المنتجات" في تكوين الاختبار. تم إنشاء مجموعة "عناصر الاختبار" فيه. يمكنك رؤية محتوى المجموعة في لقطة الشاشة في بداية المقالة. للإشارة إلى "المنتجات" في قاعدة بيانات SQL ، يوجد جدول مطابق "_Reference37" بالهيكل التالي:

ولكن كيف يمكن تحديد تطابق السمات مع شجرة التكوين والحقول في جدول SQL؟

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

في جدول قيم "الحقول" ، نرى التطابق بين حقول جدول SQL وسمات الكائن في شجرة البيانات الوصفية. في مثالنا ، نأخذ في الاعتبار بنية دليل "المنتجات". تحتوي جميع الأدلة على سمة نوع منطقي قياسية "محددة مسبقًا" ، والتي يتم تعيينها على TRUE للعناصر المحددة مسبقًا:

وفقًا للجدول الذي يحتوي على هيكل تخزين الكتاب المرجعي في قاعدة البيانات ، يمكننا القول بالتأكيد أن الحقل "معرف مسبقًا" يتوافق مع حقل "IsMetadata". إذا نظرنا إلى محتويات جدول "_Reference37" في قاعدة بيانات SQL ، فسنرى ما يلي:

في السجل الخاص بالعنصر المحدد مسبقًا ، يتم تعيين قيمة الحقل "IsMetadata" على "0x01" ، والتي تتوافق مع علامة TRUE. بالنسبة للعناصر العادية ، يتم تعيين القيمة على "0x00". هذا هو الفرق الرئيسي بين العناصر المحددة مسبقًا والعناصر العادية. يتم تخزين جميع الحقول الأخرى في قاعدة البيانات بنفس طريقة تخزين العناصر العادية التي يضيفها المستخدم.

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

وبالتالي ، فإن العناصر المحددة مسبقًا تجعل المجموعة التي يتم وضعها فيها أيضًا "محددة مسبقًا".

انتهاء

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

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

توقيت الدورة 4 دروس:

00:19 التغييرات في دليل الموظفين بعد التنفيذ واجب، فرض 3 دروس من الدورة
00:35 تحرير ترتيب السمات في الدلائل
02:54 إنشاء كتاب مرجعي للتسمية
03:40 إنشاء وتكوين دليل هرمي
05:10 تكوين خدمات ومنتجات المجموعات في دليل التسمية
06:05 تعبئة الكتاب المرجعي للتسمية
07:14 3 طرق لنقل عنصر دليل إلى مجموعة أخرى
08:21 إنشاء دليل المستودعات
09:19 إنشاء عناصر الكتالوج المعرفة مسبقًا
11:25 تعبئة دليل المستودعات
12:20 خذ درس اختبار المواد 4

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

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

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

يقوم النظام بإنشاء (إنشاء) النماذج تلقائيًا ، ولكن إذا لزم الأمر ، يمكن للمطور "رسم" النماذج بمفرده.

في المجموع ، هناك 5 أشكال (أنواع من النماذج) للكتب المرجعية:

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

عناصر الدليل المحددة مسبقًا- عناصر الدليل التي أنشأها المطور في وضع Configurator ، والتي يمكن الوصول إليها من لغة 1c المضمنة بالاسم.

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

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

الواجب المنزلي للدرس الرابع من الدورة

سيكون الواجب المنزلي للدرس الرابع من الدورة متاحًا لك على الفور بعد حل الاختبار النظري بنجاح.

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

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

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

يمكن تمييزه بشروط ثلاثة أنواع من الأخطاء:
1. "عنصر محدد مسبقًا مفقود من البيانات" ؛

3. إشارة غير صحيحة لعنصر محدد مسبقًا ؛

1. "عنصر محدد مسبقًا مفقود من البيانات" - oعدم وجود عنصر محدد مسبقًا موصوف في التكوين في بيانات IB.

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

عند الوصول إلى العنصر المفقود في الكود "الدلائل. أنواع ContactInformation.EmailContactPerson" ، يتم عرض الرسالة

عند الإشارة إلى عنصر في الطلب "VALUE (Directory.Types of ContactInformation.EmailContactPerson)" يتم عرض الرسالة التالية:

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

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

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

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

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

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

طلب = طلب جديد ؛ Request.Text = "SELECT | أنواع معلومات الاتصال. Link | FROM | Directory. أنواع معلومات الاتصال كأنواع معلومات الاتصال | أين | أنواع معلومات الاتصال. اسم البيانات المحددة مسبقًا =" " البريد الإلكتروني للشخص المسؤول"" "؛ ElementNoNo.VD = Request.Run (). Empty () ؛

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

2. "العنصر المحدد مسبقًا ليس فريدًا" - hالعناصر المحددة مسبقًا:

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

سيقوم إطار العمل فقط بالإبلاغ عن الخطأ "العنصر المحدد مسبقًا ليس فريدًا" عند محاولة تحرير عنصر مكرر.

حتى لا يحتاج أحد إلى تعديل العنصر ، لن يعرف أحد عن الخطأ.

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

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

يمكن اكتشاف مثل هذه الأخطاء في قاعدة البيانات من خلال استعلام عن النموذج:

حدد أنواع معلومات الاتصال. اسم البيانات المحددة مسبقًا ، والكمية (أنواع مختلفة من معلومات الاتصال.لينك) كرقم معرف مسبقًا من الدليل أنواع معلومات الاتصال كأنواع معلومات الاتصال.

سيعيد هذا الاستعلام قائمة بالعناصر المحددة مسبقًا مع أكثر من عنصر IB مرتبط بها.

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

3. إشارة غير صالحة لعنصر محدد مسبقًا.

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

للقيام بذلك ، ما عليك سوى تنفيذ أحد الأوامر.

// تعريف عنصر الوسيط المعرّف المرتبط بالتقرير المحدد مسبقًا المطلوب (الدلائل. أنواع ContactInformation.EmailContactPerson) // تحديد العنصر المحدد مسبقًا الذي يرتبط به التقرير المحدد (ReferenceOnItem.Name of Predefined Data)

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

حسنًا ، باختصار عن الأخطاء متى العمل البرنامجيأو في وضع التهيئة:

"العنصر المحدد مسبقًا لا ينتمي إلى<Имя справочника>" - يحدث خطأ عند محاولة كتابة عنصر محدد مسبقًا باسم لا يتطابق مع الاسم الموجود في أداة التكوين المشتركة.

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

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

"العناصر المحددة مسبقًا ليست فريدة"- تم عرض خطأ في أداة التهيئة عند تحديث قاعدة المعلومات لإصدار تكوين بدون وضع التوافق 8.3.4. من الضروري التحقق من التكرارات وإزالتها قبل التحديث.

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

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