خمس خطوات إعداد - الوصول إلى الدلائل على مستوى السجل. دفتر ملاحظات للمبرمج تقييد الوصول على مستوى السجل في 1C

إعداد الوصول على مستوى إدخال الدليل.

تم تضمين هذا الإعداد في التكوين منذ وقت ليس ببعيد، وأنا شخصيا أعتقد أن الإعداد مفيد للغاية.

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

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

  1. في هذه المرحلة، من الضروري تحديد مجموعة من مجموعات المستخدمين.

الإداريين؛

مديرين مبيعات؛

مديري المشتريات؛

  1. في المرحلة الثانية، يتم تحديد مجموعات الوصول إلى الدليل.

المشترين.

الموردين؛

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

من الضروري الآن وصف الإعدادات الفعلية التي يجب إجراؤها في 1C.

  1. دعونا نقوم بتمكين "الوصول المقيد على مستوى السجل". الخدمة - إدارة المستخدم والوصول - معلمات الوصول على مستوى السجل. انظر الشكل. 1.

سيتم فتح نموذج المعالجة "معلمات الوصول على مستوى السجل"، انظر الشكل. 2.

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

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

يتم إدخال مجموعات المقاولين في دليل "مجموعات المستخدمين"، انظر الشكل 2. 3.

سيتم فتح نموذج عنصر الدليل "مجموعات المستخدمين"، انظر الشكل. 4.

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

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

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

على سبيل المثال، هؤلاء هم: المشترون، الموردون، غير ذلك. انظر الشكل. 6.

  1. في هذه المرحلة، تحتاج إلى تعيين مجموعة وصول لكل عنصر من عناصر دليل "الأطراف المقابلة". انظر الشكل. 7.

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

  1. هذه المرحلة هي مرحلة الذروة. في هذه المرحلة، يتم تكوين وصول "مجموعات المستخدمين" إلى "مجموعات وصول الطرف المقابل"، ويتم تكوين ذلك باستخدام معالجة "إعداد حقوق الوصول على مستوى السجل"، انظر الشكل 1. 8.

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

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

يتم تكوين بقية الدلائل بالمثل.

مهم:

لا ينطبق الوصول المحدود على دور "الحقوق الكاملة"؛

يجب أن تحتوي مجموعة أدوار المستخدم على دور "المستخدم"؛

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

كيفية تكوين حقوق الوصول في 1C 8.3؟

سننظر في هذه المقالة في كيفية العمل مع المستخدمين في 1C Accounting 8.3:

  • إنشاء مستخدم جديد
  • تكوين الحقوق - الملفات الشخصية والأدوار ومجموعات الوصول
  • كيفية تكوين تقييد الحقوق على مستوى السجل (RLS) في 1C 8.3 - على سبيل المثال، حسب المؤسسة

التعليمات مناسبة ليس فقط لبرنامج المحاسبة، ولكن أيضًا للعديد من البرامج الأخرى المبنية على أساس BSP 2.x: 1C Trade Management 11، وSary and Personnel Management 3.0، وERP 2.0، وإدارة الشركات الصغيرة وغيرها.

في واجهة برنامج 1C، يتم تنفيذ إدارة المستخدم في قسم "الإدارة"، في عنصر "إعداد المستخدمين والحقوق":

كيفية إنشاء مستخدم جديد في 1C

لإنشاء مستخدم جديد في 1C Accounting 3.0 وتعيين حقوق وصول معينة له، يوجد في قائمة "الإدارة" عنصر "إعدادات المستخدم والحقوق". فلنذهب إلى هناك:

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

لنقم بإنشاء مجموعة مستخدمين تسمى "المحاسبة"، وسيكون هناك مستخدمان فيها: "المحاسب 1" و"المحاسب 2".

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

الآن دعونا ننشئ المستخدمين. ضع المؤشر على مجموعتنا وانقر على زر "إنشاء":

في الاسم الكامل سوف نقوم بإدخال “Accountant 1”، وسيتم ضبط اسم تسجيل الدخول على “Accountant1” (وهذا ما سيتم عرضه عند الدخول إلى البرنامج). كلمة المرور ستكون "1".

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

اترك "وضع بدء التشغيل" كـ "تلقائي".

إعداد حقوق الوصول - الأدوار والملفات الشخصية

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

حدد ملف تعريف المحاسب. يعد ملف التعريف هذا قياسيًا ومزودًا بالحقوق الأساسية التي يطلبها المحاسب. انقر فوق "تسجيل" وأغلق النافذة.

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

وتجدر الإشارة إلى أن نفس المستخدم يمكن أن ينتمي إلى عدة مجموعات.

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

دعنا ننتقل إلى قسم "الوصول إلى ملفات تعريف المجموعة".

لنفترض أننا بحاجة إلى السماح للمحاسبين لدينا بمشاهدة إدخال دفتر اليومية.

إن إنشاء ملف تعريف من البداية يتطلب جهدًا كبيرًا، لذا فلننسخ ملف تعريف "المحاسب":

ودعنا نجري التغييرات اللازمة عليه - أضف الدور "عرض السجل":

دعونا نعطي الملف الشخصي الجديد اسمًا مختلفًا. على سبيل المثال، "محاسب مع الإضافات". وحدد مربع الاختيار "عرض سجل التسجيل".

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

تقييد الحقوق على مستوى التسجيل في 1C 8.3 (RLS)

دعونا نتعرف على ما يعنيه تقييد الحقوق على مستوى السجل، أو كما يسمونه في 1C - RLS (أمان مستوى السجل). للحصول على هذه الفرصة، عليك تحديد المربع المناسب:

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

ننتقل مرة أخرى إلى قسم إدارة الملف الشخصي، وننقر نقرًا مزدوجًا على الملف الشخصي "المحاسب مع الإضافات" وننتقل إلى علامة التبويب "قيود الوصول":

"نوع الوصول" حدد "المؤسسات"، "قيم الوصول" حدد "الجميع مسموح به، يتم تعيين الاستثناءات في مجموعات الوصول". انقر فوق "حفظ وإغلاق".

نعود الآن إلى قسم "المستخدمون" ونختار على سبيل المثال المستخدم "المحاسب 1". انقر فوق الزر "حقوق الوصول":

باستخدام زر "إضافة"، حدد المؤسسة التي سيتم رؤية بياناتها من خلال "المحاسب 1".

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

اعدادات اخرى

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

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

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

بناءً على مواد من: Programmist1s.ru

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

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

تنطبق قيود الوصول عند استخدام نظام RLS الديناميكي على العمليات الأساسية: القراءة والتعديل والإضافة والحذف. هناك ميزة مهمة تتمثل في أن عملية القراءة يمكن أن تطبق قيودًا متعددة على مستوى السجل، في حين أن جميع العمليات الأخرى لها شرط واحد فقط. تسمح لك هذه الآلية بفرض قيود ليس فقط على سجلات معينة، ولكن أيضًا على حقول معينة من السجلات. عند أي نقطة قد تحتاج إلى تحديد حقل، بالإضافة إلى حقل خاص<Прочие поля>.

بناء جملة RLS واللغة

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

يوجد دائمًا جدول بيانات واحد فقط موجود في استعلام RLS ويتم استخدامه فعليًا للشروط.
يتم استخدام الإنشاءات FROM وWHERE فقط.
في مثل هذه الظروف، يمكنك تحديد الخيارات الوظيفية ومعلمات الجلسة كمعلمات استعلام.
غير مسموح باستخدام الجداول الافتراضية.
من الممكن استخدام القوالب لإنشاء القيود
لا ينطبق عاملي التشغيل TOTAL وIN HIERARCHY.

فكر في كيفية إنشاء القيود. على سبيل المثال في الشكل. 1 يظهر أبسط القيود. وهو يتألف من حقيقة أن المستخدم لن يرى سوى طرف مقابل واحد يحمل اسمًا محددًا "Sibirskaya Korona LLC". يمكنك التصفية حسب حقل معين. على سبيل المثال، نريد أن يرى المستخدم فقط المقاولين الموجودين في المجلد الأصلي "الموظفون".

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

كيف تعمل القيود

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

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

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

استخدام القوالب في RLS

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

خذ بعين الاعتبار مثال تكوين 1C: Accounting 8.2 باستخدام القوالب المضمنة. لنفتح دور المحاسب وننتقل إلى علامة التبويب "قوالب القيد". القالب المستخدم هنا هو BasicConditionقراءة المحتوى التالي:

حيث نرى #Parameter(1)=UserAccessRightSettings.AccessObject. هذه هي المعلمة ذاتها التي يمكن أن تتغير اعتمادًا على البيانات المرسلة. علاوة على ذلك، في أي مكان نريد فرض القيود فيه، نستخدم القالب كما يلي:

أي بدلاً من

#Parameter(1)=UserAccessRightSettings.AccessObject

سيظهر في نص القالب

المنظمة=UserAccessRightSettings.AccessObject.

أو في قالب أبسط. اسم القالب #MyLimitations هو كما يلي:

حيث #Parameter(1) = &CurrentUser

نتيجة لتمرير المعلمات إلى قالب #MyLimitations("Executor")، نحصل على ما يلي

حيث المنفذ= &CurrentUser.

نتائج

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

في نظام 1C Enterprise 8، سنواصل اليوم دراسة آلية الحقوق والتعمق أكثر في آلية RLS (تقييد الحقوق على مستوى التسجيل).

أدناه سنلقي نظرة على مزايا وعيوب هذه الطريقة وسننظر في إعداد RLS في 1C Enterprise 8.3 باستخدام مثال.

1C RLS (أمان مستوى السجل) أو تقييد الحقوق على مستوى التسجيل- هذه هي حقوق المستخدم في نظام 1C، والتي تسمح لك بفصل حقوق المستخدمين في سياق البيانات المتغيرة ديناميكيًا.

النوع الأكثر شيوعًا لإعداد 1C RLS هو الحد من رؤية المستخدم عبر المؤسسات أو العملاء (يرى المستخدم بياناته "الخاصة" فقط).

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

عيوب 1C 8 RLS

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

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

إعداد قيود الحقوق على مستوى سجل 1C RLS

تُستخدم أذونات مستوى السجل (RLS) لتقييد أنواع الحقوق التالية:

  • قراءة
  • إضافة
  • يتغير
  • إزالة

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

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

##في حالة استخدام قيود حقوق الوصول على مستوى السجل ##ثم

CurrentTable من #CurrentTable AS CurrentTable
الانضمام الأيسر (حدد مختلف
تكوين المجموعة. ربط AS مجموعة المستخدمين
من
Directory.User Groups.UsersGroups AS تكوين المجموعة
أين
GroupComposition.User = &CurrentUser) AS UserGroups
البرامج (&قيود حقوق الوصول على مستوى السجل)
أين (&UseRecordLevelPermissionRestrictions = FALSE
أو (ليس 1 فولت
(اختر أعلى 1
1 كيفية الاختيار
من
سجل المعلومات الغرض من أنواع كائنات الوصول AS الغرض من أنواع كائنات الوصول
أين
الغرض من أنواع كائنات الوصول.UserGroup = UserGroups.UserGroup
والاختيار
متى الغرض من أنواع كائنات الوصول. نوع كائن الوصول = VALUE (التعداد. أنواع كائنات الوصول. الأطراف المقابلة)
وCurrentTable.#Parameter(1) LINK Directory.Counterparties
وليس CurrentTable.#Parameter(1) = VALUE(Directory.Accounts.EmptyLink)
ثم الاختيار
عندما 1 الخامس
(اختر أعلى 1
1
من
Directory.Counterparties AS Contractors INTERNAL JOIN Information Register.User Access حقوق الإعدادات AS المستخدم إعدادات حقوق الوصول
بواسطة
UserAccessRightSettings.AccessObject = Counterparties.AccessGroupToCounterparty
وUserAccessRightSettings.AccessObjectType = VALUE(Enumeration.AccessObjectTypes.Counterparties)
AND (إعدادات حقوق وصول المستخدم. المستخدم = تعيين أنواع كائنات الوصول. مجموعة المستخدمين
أو UserAccessRightSettings.User = VALUE(Directory.UserGroups.AllUsers))
وUserAccessRightSettings.Record = TRUE
أين
Counterparties.Link = CurrentTable.#Parameter(1))
ثم الحقيقة
آخر خطأ
نهاية
خلاف ذلك صحيح
النهاية = خطأ))
وليست UserGroups.UserGroup فارغة)
##إنهاء إذا

بشكل أساسي، تتم إضافة هذا الاستعلام في كل مرة يتم فيها الاستعلام عن الجدول "#CurrentTable". ومنه يمكننا أن نتخيل الحمل الإضافي الذي تحمله آلية التقييد على مستوى السجل.

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

منشئ قيود الوصول إلى البيانات

من أجل راحة المطور، يحتوي 1C 8.3 على أداة مساعدة خاصة للمساعدة في تكوين الرادار - مصمم تقييد الوصول إلى البيانات. يتم استدعاؤه من حقل "تقييد الوصول". على النحو التالي:

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

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

لحل المشكلة سوف نستخدم منصة 1C:Enterprise 8.2. لنقم بإنشاء تكوين جديد في الخصائص التي سيتم فيها تحديد خيار "التطبيق المُدار" باعتباره وضع التشغيل الرئيسي.

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

يتم ضبط معلمات الجلسة في وحدة خاصة – "وحدة الجلسة"

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

الكود 1C v 8.x الإجراء إعداد معلمات الجلسة (المعلمات المطلوبة)
FullPermissions.SetSessionParameters();
نهاية الإجراء

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

الكود 1C v 8.x وظيفة تحديدCurrentUser()
TechUser = Directory.Users.FindByName(UserName(), True);
عودة مستخدم التقنية؛
وظيفة النهاية

الإجراء SetSessionParameters () تصدير
CurrentUser = DefineCurrentUser();
CurrentOrganization = Directory.Organizations.EmptyLink();
إذا كانت القيمة معبأ (المستخدم الحالي) ثم
CurrentOrganization = CurrentUser.Organization;
إنهاء إذا؛
SessionParameters.User = CurrentUser;
SessionParameters.Organization = CurrentOrganization;
نهاية الإجراء

تصدير FunctionSessionParameterSet(ParameterName).
قيمة الإرجاع مليئة(SessionParameters[ParameterName]);
وظيفة النهاية

دور الوظيفة متاح لتصدير المستخدم (اسم الدور).
return RoleAvailable(RoleName);
وظيفة النهاية

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

الإجراء Code 1C v 8.x قبل بدء تشغيل النظام (فشل)
// سوف نتحقق من وجود الجميع باستثناء المسؤول في دليل "المستخدمين".
إذا لم يكن FullRights.RoleAvailableToUser("FullRights") إذن
إذا لم يكن FullRights.SessionParameterSet("User") إذن
تحذير("المستخدم """ + UserName() + """ غير موجود في الدليل!");
رفض = صحيح؛
يعود؛
إنهاء إذا؛
إنهاء إذا؛
نهاية الإجراء

الآن يمكننا المتابعة مباشرة إلى وصف قيود الوصول. للقيام بذلك، قم بإنشاء دور "المستخدم" وانتقل إلى علامة التبويب "قوالب التقييد"، حيث نضيف قالبًا جديدًا "AccountsReadingChange" مع نص القالب التالي: حيث المنظمة = المنظمة #Parameter(1)


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

دعنا ننتقل إلى علامة التبويب "الحقوق" في دور "المستخدم" ونفتح قائمة الحقوق في دليل "الأطراف المقابلة". سوف نستخدم قالب تقييد "AccountsReadingChange" لحقوق "القراءة" و"التغيير" و"الإضافة".

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

#CounterpartiesReadChange("OR ThisGroup")

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

وهكذا، تم حل مهمة تقييد الوصول على مستوى السجل. لن يتمكن المستخدمون الذين لديهم قيود حالية من الوصول إلا لعرض البيانات وتحريرها لمؤسستهم.