1c 8.3 احصل على المستخدم الحالي على العميل. كيفية معرفة ما إذا كان هناك دور معين متاح للمستخدم الحالي

يتم تقديم المعلمات قيد الدراسة في 1C: Enterprise ككائن بيانات وصفية. في الأساس ، إنه ليس أكثر من متغير عام مرتبط بالدورة الحالية.

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

بسبب ال معلمة الجلسةهو كائن بيانات وصفية ، وله ميزات معينة:

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

إذا كان نوع معلمة الجلسة:

  • مصفوفة ثابتة
  • مجموعة ثابتة
  • هيكل ثابت

ثم يمكن أن تكون قيمة عنصر المجموعة غير معرف.

المجال الرئيسي للمعلمات هو استخدام قيمها في طلبات RLS (تقييد الوصول على مستوى السجل).

على سبيل المثال ، نحتاج إلى تعيين شرط للمستخدم الحالي في طلب RLS. للقيام بذلك ، قمنا بتعيين معلمة الجلسة "CurrentUser" ، من رمز اللغة المضمنة ، قم بتعيين القيمة:

SessionParameters.CurrentUser =<значение>

Table.User = & CurrentUser

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

CurrentUser = SessionParameters.CurrentUser ،


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

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

الإجراء SettingSessionParameters (SessionParameterNames) إذا كان SessionParameterNames غير معرف ، ثم IfParameterName = "CurrentUser" ثم SessionParameters.CurrentUser =؛ ElseIf ParameterName = "CurrentOrganization" ثم SessionParameters.CurrentOrganization =؛ // إلخ. إنهاء إذا؛ إنهاء إذا؛ EndProcedurevalue> قيمة >>

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

5
عند الحاجة إلى إعداد وصول أكثر دقة ، تأتي آلية RLS - Record Level Security في عملية الإنقاذ. 1C: تم وضع تكوينات نظام المؤسسة 8 في الأصل كبرنامج للمحاسبة متعددة الشركات ، وواحد من ... 3
بدءًا من النظام الأساسي 8.0 لنظام 1C Enterprise ، من الممكن تقييد حقوق وصول المستخدم على مستوى السجل. لهذا ، يتم استخدام آلية RLS (أمان مستوى السجل). يمكن أن يكون هذا الضبط "الدقيق" ... 3
غالبًا ما ألتقي بالأسئلة المتعلقة بالإنشاء البرنامجي وإعداد حقوق المستخدم. في هذه المقالة ، سأقدم أمثلة للتطبيقات القياسية والمدارة التي تنشئ مستخدمًا برمجيًا في ... 2
سؤال: لقد قمت بإضافة مستخدم جديد. أقوم بإنشاء واجهة جديدة (عن طريق نسخ الواجهة الحالية) وتحديد هذه الواجهة باعتبارها الواجهة الرئيسية لهذا المستخدم. المشكلة هي أن الواجهة المنشأة حديثًا ...

  • الإصدارات الحالية 1 ج
  • أمثلة الكود على منصة 1C
الأدوار وحقوق الوصول في 1C 8.x
كيف يمكنني معرفة ما إذا كان هناك دور معين متاح للمستخدم الحالي؟
إذا لم يكن دورًا متاحًا ("المدير") ، فقم بالإبلاغ عن ("عرض الطلبات من المشترين غير مسموح به!") ؛ إنهاء إذا؛
كيف تحصل على معلومات حول أدوار التكوين؟
قائمة الوظائف لأدوار التكوين المحتملة () قائمة الأدوار = قائمة جديدة للقيم ؛ ConfigRoles = Metadata.Roles ، لكل دور من RoleConfiguration Loop ListRoles.Add (Role.Name) ؛ نهاية الدورة قائمة عودة الأدوار ؛ وظائف النهاية
كيف يتم تنفيذ التعليمات البرمجية دون التحقق من الحقوق؟
1. استخدم وحدة ذات امتياز 2. وضع رمز البرنامج الذي يجب تنفيذه بدون تحكم في القيود في وحدة نمطية مشتركة مع تعيين علامة الامتياز على الوحدة النمطية. استخدم الوضع المميز لتنفيذ كود البرنامج على غرار وضع تشغيل رمز الوحدات المميزة. يمكن تمكين / تعطيل الوضع باستخدام اللغة المضمنة: SetPrivilegedMode (<Включить>) معامل<Включить>(مطلوب) النوع: منطقي. يحدد ما إذا كان سيتم تمكين الوضع المميز: صواب - تمكين الوضع ؛ خطأ - قم بإيقاف تشغيل الوضع. تسمح لك الوظيفة PrivilegedMode () بتحديد ما إذا كان الوضع المميز ممكّنًا أم لا. يسمح استخدام الوضع المميز ، أولاً ، بتسريع العمل ، حيث لن تكون هناك قيود على الوصول إلى البيانات ، وثانيًا ، يسمح لك بإجراء عمليات باستخدام البيانات نيابة عن المستخدمين الذين لا تتوفر لهم هذه البيانات. يوصى بوضع الامتياز عندما يكون من الضروري منطقيًا إيقاف عمليات فحص الأذونات ، أو عندما يمكنك إيقاف تشغيل عمليات التحقق من الأذونات لتسريع الأمور. يجوز استخدام الوضع المميز عندما لا ينتهك العمل مع البيانات نيابة عن مستخدم معين حقوق الوصول المحددة لهذا المستخدم.