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> قيمة >>

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

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

معلمات الجلسة 1C 8.3- متغير يخزن القيمة المعلمة المطلوبةلمدة جلسة المستخدم. في الواقع ، هذا نوع من المتغير الشامل مرتبط بجلسة المستخدم الحالي.

استخدام معلمات الجلسة في 1C

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

مثال على تعيين معلمة الجلسة 1C

لنلقِ نظرة على حالة استخدام نموذجية لمعلمات الجلسة - تعيين المستخدم الحالي. سآخذ مثالا من التحضير ل.

في شجرة البيانات الوصفية ، لنقم بإنشاء معلمة جلسة جديدة - CurrentUser ، قم بتعيين نوع لها - DirectoryReference.

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

في وحدة الجلسة ، دعنا ننشئ إجراءً سيحدد معلمة الجلسة الحالية:

كود الإجراء:

إعداد الإجراء الجلسةالمعلمات (مطلوبة المعلمات) // نحن نبحث عن المادية. الوجه باسم المستخدم CurrentUser = الدلائل. فرادى. FindByName (UserName ()) ، // إذا لم يتم العثور عليها ، فقم بإنشاء واحدة جديدةإذا CurrentUser. فارغ () ثم NewUser = الدلائل. فرادى. CreateElement () ، مستخدم جديد. الاسم = اسم المستخدم () ؛ مستخدم جديد. يكتب() ؛ CurrentUser = مستخدم جديد. وصلة؛ إنهاء إذا ؛ // تعيين معلمة جلسة CurrentUser رابطًا إلى دليل الأفرادمعلمات الجلسة. CurrentUser = CurrentUser ؛ EndProcedure

تحميل...
قمة