قائمة طعام
مجاني
التسجيل
الصفحة الرئيسية  /  إنترنت/ 1s 8.3 تحدد المستخدم الحالي على العميل.

1c 8.3 تحديد المستخدم الحالي على العميل.

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

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

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

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

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

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

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

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

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

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

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

معلمات الجلسة.CurrentUser =<значение>

Table.User = & CurrentUser

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

CurrentUser = SessionParameters.CurrentUser ،


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

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

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

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

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

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

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

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

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

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

احصل على 267 1C مقاطع فيديو تعليمية مجانًا:

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

كود الإجراء:

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