الخيارات الوظيفية. مبدأ العملية ومثال على الاستخدام. بناء نظم المعلومات الموزعة ، والبحث ، والمهام الروتينية ، والخيارات الوظيفية 1 ج مثال الخيارات الوظيفية


30.03.2017

الخيارات الوظيفية 1C 8.3 (الآلية ، الاستخدام)

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

تكوين كائنات بيانات التعريف

لإنجاز هذه المهمة ، نحتاج إلى:
  • خياران وظيفيان هما "UseMultipleWarehouses" و "Do NotUseMultipleWarehouses". الأول مسؤول عن توفر الدليل ، والثاني عن توافر الأمر العام لاستدعاء الخوارزمية لـ "فتح" المستودع
  • الثوابت التي تحمل الاسم نفسه مع النوع "المنطقي" لتخزين قيم الخيارات الوظيفية
  • دليل "المستودعات"
  • الأمر العام "فتح المستودع الرئيسي". لا تنس تحديد مجموعة من الأوامر لها ، وإلا فلا تقم بتطبيق التكوين (سيكون هناك خطأ)
وأضف نظامًا فرعيًا واحدًا حيث نقوم بتضمين جميع الكائنات الموجودة

إعداد الخيارات الوظيفية

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




الوظيفة الثانية "Don't UseMultipleWarehouses" يتم تعيينها عند عدم تعيين "UseMultipleWarehouses" الأول.
أولئك. إذا لم نستخدم مستودعات متعددة (UseMultipleWarehouses = FALSE ولم يكن البحث عن "المستودعات" متاحًا) ، فسيتم عرض الأمر "Open MainWarehouse" ، ويتم التحكم في توفره بواسطة الخيار "Do not UseMultipleWarehouses" (Do notUseMultipleWarehouses = صحيح)

التحقق من سلوك النظام

الخيار رقم 1. UseMultipleWarehouses = صحيح ، Do NotUseMultipleWarehouses = خطأ. دليل "المستودعات" متاح في الواجهة


الخيار رقم 2. UseMultipleWarehouses = خطأ ، Do NotUseMultipleWarehouses = صحيح. الكتاب المرجعي "المستودعات" غير متوفر في الواجهة ، وبدلاً من ذلك يتوفر الأمر العام "Open Main Warehouse"

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

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

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

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

الحالة رقم 1: خيار وظيفي كغلاف فوق كائنات أخرى

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

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

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

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

رقم القضية 2. مستوى إضافي من التجريد

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

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

Constants.DataSaveAbility.Get () ،

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

GetFunctionOption ("DataSavePossibility") ؛

طباعة (Ctrl + P)

1. الغرض من الخيارات الوظيفية

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

2. ما هي الخيارات الوظيفية التي تؤثر

2.1. معلومات عامة

قد تؤثر الخيارات الوظيفية على:
● على واجهة المستخدم - عند إيقاف تشغيل أي خيارات وظيفية ، يخفي النظام جميع العناصر المتعلقة به في واجهة المستخدم. يؤثر هذا على عناصر الواجهة التالية:
● واجهة القيادة العالمية ؛
● سمات النموذج (بما في ذلك أعمدة سمات النموذج من نوع ValueTable أو ValueTree) ؛
● شكل أوامر.
● تنفيذ التقارير باستخدام نظام تكوين البيانات.
الانتباه!إذا كان تطبيق العميل يعمل مع إصدار ملف قاعدة المعلومات من خلال خادم الويب ، فإن تغيير الخيار الوظيفي سيؤدي إلى تغيير واجهة المستخدم فقط بعد إعادة تشغيل خادم الويب (لن تؤدي إعادة تشغيل تطبيق العميل إلى تغيير واجهة المستخدم).
● الخوارزميات المكتوبة باللغة الأولى - من الممكن الحصول على قيم الخيارات الوظيفية من اللغة الأولى واستخدامها في ظروف مختلفة ، على سبيل المثال ، لتقليل كمية الحسابات.
الانتباه! لا تؤثر الخيارات الوظيفية ومعلماتها على تكوين قاعدة البيانات. جميع الجداول والحقول موجودة في قاعدة البيانات بغض النظر عن حالة الخيارات الوظيفية.

2.2. واجهة الأوامر العالمية

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

2.3 الاستمارة

في نموذج ما ، يمكن أن تؤثر الخيارات الوظيفية على سمات النموذج وأوامره و (نتيجة لذلك) تغير رؤية عناصر النموذج المرتبطة (حقول وأعمدة لسمات النموذج ، وأزرار لأوامر النموذج). عند تطوير نموذج ، من الضروري مراعاة الميزات التالية لسلوك النظام:
<Вид>شيء ( DirectoryObject m ، DocumentObject ، وما إلى ذلك) إذا تم تعطيل كائن التكوين المقابل بواسطة خيار وظيفي. يتم تحليل الخيارات الوظيفية التي لا تحتوي على معلمات فقط.
● السمة الرئيسية للنموذج المدار من النوع قائمة ديناميكيةسيتم تعطيله إذا قام الخيار الوظيفي بتعطيل كائن التكوين المحدد كجدول رئيسي للقائمة الديناميكية. يتم تحليل الخيارات الوظيفية التي لا تحتوي على معلمات فقط.
● يتم تعطيل سمة النموذج لنوع المرجع إذا تم تعطيل كائن التكوين الذي يشكل هذا النوع بواسطة خيار وظيفي. يتم تعطيل سمة النموذج للنوع المركب إذا عطلت الخيارات الوظيفية جميع أنواع المكونات.
● تعطيل الدعائم نوع النموذج<Вид>كائن (بما في ذلك سمة النموذج الرئيسي) ، إذا تم تعطيل كائن التكوين الذي يشكل هذا النوع بواسطة خيار دالة. يتم تحليل الخيارات الوظيفية التي لا تحتوي على معلمات فقط.
● سيتم تعطيل جدول النموذج إذا كان يعرض بيانات سمة نموذج معطلة بواسطة خيار وظيفي.
● لا توجد أنواع في مربع حوار تحديد النوع (على سبيل المثال ، لحقول الإدخال المرتبطة بسمات من النوع المركب) إذا تم تعطيل كائنات التكوين التي تشكل هذه الأنواع بواسطة خيار وظيفي. يتم تخزين المعلومات حول الأنواع التي تم تعطيلها بواسطة الخيارات الوظيفية مؤقتًا على جانب العميل ويتم مسحها بعد 20 دقيقة أو أثناء استدعاء الطريقة تحديث الواجهة().
الانتباه!على عكس واجهة الأوامر ، يتم تعيين قيم معلمات الخيارات الوظيفية فقط لمثيل معين من النموذج.

2.4 نظام تكوين البيانات

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

2.5 صفات

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

أرز. 1. تأثير الخيارات الوظيفية على الأداء

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

3. مخطط العمل العام

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


أرز. 2. خيار وظيفي معلمة

فكر في مثال: لنفترض أن المحاسبة الإجمالية تعتمد على مستودع تملكه مؤسسة معينة (انظر الشكل 98). في قاعدة معلوماتنا
يمكنك الاحتفاظ بسجلات نيابة عن منظمات مختلفة وفي مستودعات مختلفة.
لتخزين قيم الخيارات الوظيفية ، سننشئ سجلاً للمعلومات ، حيث ستكون الأبعاد (محاور الإحداثيات):

● المنظمة (النوع المناسب) ؛
● المستودع (النوع المناسب).

سيكون مورد سجل المعلومات هو قيمة الخيار الوظيفي للمحاسبة الإجمالية.
ثم سيبدو الهيكل العام للتكوين كما يلي:
● سجل المعلومات Sum Accounting:
● البعد التنظيمي ؛
● مستودع البعد.
● المورد الإجمالي للمحاسبة من النوع المنطقي.
● منظمة معلمة الخيارات الوظيفية. تشير خاصية الاستخدام إلى البعد التنظيمي لسجل المعلومات SumAccounting.
● مستودع خيارات وظيفية معلمة. تشير خاصية الاستخدام إلى بُعد محاسبة مجموع المستودع في سجل المعلومات.
● الخيار الوظيفي إجمالي المحاسبة. تشير خاصية التخزين إلى المورد SumAccounting لتسجيل معلومات SumAccounting.
نتيجة لذلك ، من أجل تحديد الحاجة إلى المحاسبة الإجمالية ، نحتاج إلى تحديد قيم معلمات الخيارات الوظيفية (المنظمة والمستودع) في كل حالة محددة والحصول على قيمة الخيار الوظيفي.
لذلك ، في المثال الموضح في الشكل 2 ، بالنسبة للمؤسسة 1 والمستودع 1 ، يُسمح بالمحاسبة الإجمالية ، وبالنسبة للمؤسسة 2 والمستودع 1 ، يُحظر إجمالي المحاسبة.

4. التفاعل مع الأشياء الأخرى

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

5. الخلق

5.1 خلق خيار وظيفي

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

أرز. 3. خلق خيار وظيفي

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


أرز. 4. تخزين قيمة الخيار الوظيفي

بالإضافة إلى الاسم ، فإن الكائن له خاصية إلزامية - التخزين. في المحرر ، يمكنك تحديد أحد العناصر له ، والذي سيكون مصدر قيمة الخيار. قائمة العناصر المتاحة تشمل:
● الثوابت ،
● تفاصيل الدلائل ،
● موارد سجل المعلومات.
لا توجد قيود على نوع المصدر لقيمة الخيار ، ولكن فقط تلك الخيارات الوظيفية التي تخزن قيمها في سمات من النوع المنطقي مناسبة للتحكم في الواجهة. تتوفر قيم خيارات الوظيفة مع الأنواع الأخرى فقط للتحليل في 1C: Enterprise.
تحدد الخاصية Privileged Mode on Get كيفية استرداد قيمة خيار الوظيفة (وتخزينها مؤقتًا).


أرز. 5. الوضع المميز عند الحصول على قيمة خيار وظيفي

إذا تم تعيين هذه الخاصية ، فسيتم الحصول على قيمة خيار الوظيفة في الوضع المميز. يتم تخزين القيمة الناتجة مؤقتًا لجميع الجلسات المرتبطة بقاعدة المعلومات هذه.
إذا تم مسح خاصية Privileged Mode on Get ، فسيتم الحصول على قيمة الخيار الوظيفي في الوضع العادي.
يتم إجراء التخزين المؤقت للدورة الحالية. يتم تخزين كل من القيمة (إذا كان من الممكن الحصول عليها) وعلامة استحالة الحصول على القيمة (في حالة تعذر الحصول على القيمة) مؤقتًا.
يتم مسح ذاكرة التخزين المؤقت عندما تتغير قيم معلمات الجلسة.
النصيحة. يوصى بتعيين وضع الامتياز على خاصية Get لجميع الحالات التي لا تحتوي فيها قيمة الخيار الوظيفي على معلومات حساسة.

5.2 إنشاء معلمة الخيارات الوظيفية

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

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

6. الاستعمال

6.1 تخصيص البيانات الوصفية للكائنات

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

أرز. 6. تعيين خيار وظيفي لكائن

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

6.2 تخصيص تفاصيل النموذج والأوامر

يمكن أيضًا استخدام الكائنات التي تنتمي إلى النموذج (السمات والأوامر) في آلية الخيارات الوظيفية.


أرز. 7. تعيين خيار وظيفة لأمر

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

6.3 استخدم في آلية تقييد الوصول إلى البيانات

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

6.4. تحديد قيمة خيار الوظيفة

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

عند استخدام خيارات الوظيفة ذات المعلمات ، يجب مراعاة السلوكيات التالية:
● في نماذج القائمة ، سيتم عرض عمود السمة المرتبط بخيار وظيفي محدد المعلمات إذا كانت قاعدة المعلومات تخزن قيمة واحدة على الأقل ممكّنة لهذا الخيار الوظيفي.
● إذا كنت تريد تعطيل التفاصيل المرتبطة بالخيارات الوظيفية افتراضيًا عند فتح النموذج ، فأنت بحاجة إلى ذلك
قم بتعيين قيم هذه المعلمات على قيم ليست في قاعدة المعلومات (للأدلة - مرجع فارغ ، لسجلات المعلومات - قيم القياس التي لا توجد سجلات لها). في هذه الحالة ، سيكون لخيار الوظيفة القيمة False.
● عند تحديد مرجع مجموعة كمعامل (إذا كان نوع المعلمة لخيار وظيفي يسمح بإنشاء مجموعات) ، وليس مرجعًا لعنصر ، فسيكون سلوك النظام كما يلي:
● إذا تم استخدام السمة التي تخزن قيمة الخيار الوظيفي لكل من العنصر والمجموعة ، فسيتم تحديد قيمة الخيار الوظيفي من خلال قيمة هذه السمة.
● إذا كانت السمة التي يتم فيها تخزين قيمة الخيار الوظيفي غير مستخدمة للمجموعة ، فعند الحصول على قيمة الخيار الوظيفي باستخدام الطرق GetFunctionOption() و () و () ستعيد NULL. إذا تم تحديد معلمات بهذه القيمة ، فإن خيار الوظيفة يؤثر على واجهة المستخدم ، فسيعاملها النظام على أنه معطل (سيكون لخيار الوظيفة القيمة False).
● للتحكم في كائنات البيانات الوصفية ، من الممكن الارتباط بخيار دالة ذات معلمات. في واجهة الأوامر ، لن يتم عرض أوامر هذه الكائنات إلا إذا كانت هناك مجموعة واحدة على الأقل من معلمات الخيارات الوظيفية ، حيث تكون قيمة الخيار الوظيفي هي True. ومع ذلك ، باستخدام الطريقة () ، يمكنك تعيين قيم محددة لمعلمات الخيارات الوظيفية ، ثم الرؤية
سيتم تحديد الأوامر من خلال المعلمات المحددة.
● تستخدم القائمة الديناميكية تلقائيًا الخيارات الوظيفية التي يستخدمها النموذج. إذا تم تعطيل السمات المستخدمة في طلب القائمة الديناميكية مع مجموعة معينة من معلمات الخيارات الوظيفية ، فلن يتم تحديد البيانات المتعلقة بها وعرضها في القائمة الديناميكية ، وستتم إزالة السمة من قوائم السمات المتاحة في البيانات عرض مربع حوار الإعدادات
القائمة الديناميكية (في 1C: وضع المؤسسة).

7. العمل مع الخيارات الوظيفية في اللغة المضمنة

طرق السياق العالمية GetFunctionOption ()و GetFunctionInterfaceOption() تُرجع قيمة الدالة
والخيارات. الفرق بينهما هو أن الطريقة الأولى تسمح لك بتحديد مجموعة من معلمات الخيارات الوظيفية ، والطريقة الثانية ترجع قيمة الخيار الوظيفي بناءً على المعلمات المحددة لواجهة الأوامر. النموذج له طريقته الخاصة التي ترجع قيمة الخيار للمعلمات المحددة داخل النموذج - GetFunctionOptionForm().
لتحديث واجهة الأوامر العامة ، قم باستدعاء الطريقة صراحةً SetInterfaceFunctionOptionParameters().
سيتم تحديث واجهة الأوامر لتعكس الحالة الجديدة للخيارات الوظيفية.
ملحوظات F. إذا تغيرت قيمة الخيار الوظيفي في قاعدة البيانات ، فلن يتم تحديث واجهة الأوامر العامة والنماذج المفتوحة في ذلك الوقت تلقائيًا. للقيام بذلك ، استخدم الطريقة واجهة التحديث () بعد كتابة قيم الخيارات الوظيفية لقاعدة البيانات.
يجب أن نتذكر أن تحديد معلمات الخيارات الوظيفية (وتنفيذ الطريقة تحديث الواجهة()) يؤدي إلى النتائج التالية:
● لكل نموذج ، يتم إغلاق جميع الأشكال المساعدة (مع استدعاء المعالجات المقابلة) ؛
● عدم إغلاق النماذج التي ترفض الإغلاق ؛
● يتم تحديث محتوى عناصر النموذج الرئيسي ؛
● إذا كان النموذج الرئيسي هو النموذج النشط وقت تحديث الواجهة ، فسيتم عرض النموذج الرئيسي وفقًا لمجموعة العناصر الجديدة ؛
● إذا كان النموذج الإضافي هو النموذج النشط وقت تحديث الواجهة ، فحينئذٍ:
● سيتم تنفيذ الأمر بفتح نموذج مساعد إذا كان متاحًا بعد تحديث الواجهة ؛
● خلاف ذلك ، يتم تحديث تكوين عناصر النموذج الرئيسي ويتم عرضه ؛
● إذا كان النموذج النشط في وقت تحديث الواجهة عبارة عن نموذج مساعد مفتوح بأمر غير مرتبط بشريط تنقل النموذج ، فبدلاً من هذا النموذج ، سيتم تحديث محتوى عناصر النموذج الرئيسية وعرضه.
لتحديث نموذج معين ، قم بإعادة فتحه أو استدعاء SetFormFunctionOptionsParameters (),
في الوقت نفسه ، لا يعمل تسلسل الإجراءات الموصوفة أعلاه إلا للشكل الذي يُسمى في سياقه إعداد معلمات الخيارات الوظيفية للنموذج.
لا يلزم تحديد المعلمات دفعة واحدة ، يمكنك تغيير قيمة معلمة معينة أو مجموعة من المعلمات بشكل انتقائي. لكن تحديد مجموعة القيم بمكالمة واحدة هو الأكثر كفاءة.
للحصول على قيم المعلمات ، تحتاج إلى استدعاء الوظيفة المقابلة ( GetInterfaceFunctionOptionParameters() أو
GetFormFunctionOptionsParameters ()) ، والتي ستعيد المعلمات المحددة كهيكل ، حيث سيكون اسم المعلمة هو المفتاح.
عند الفتح ، يستخدم النموذج تلقائيًا معلمات الخيارات الوظيفية المحددة لواجهة الأوامر.

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

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

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

& في إجراء العميل AfterWrite (WriteParameters) UpdateInterface () ؛ EndProcedure

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

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


أرز. 7.23.

الآن دعنا ننتقل إلى علامة تبويب نافذة إعدادات الخيارات الوظيفية مُجَمَّعوحدد كل ما يتعلق بكشوف المرتبات (الشكل 7.24). إذا كانت أي كائنات ، على سبيل المثال ، أدلة ، تشير إلى أجزاء مختلفة من التكوين ، فلن نقوم بتمييزها ، وإلا ، عند إيقاف تشغيل الخيار الوظيفي ، فإنها "تختفي" من الواجهة.


أرز. 7.24.

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

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

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

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

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

يعتمد تشغيل الآلية على كائني تكوين:

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

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

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

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