کاربر فعلی 1s 8.3 در مشتری. نحوه دریافت اطلاعات در مورد نقش های پیکربندی

پارامترهای مورد بررسی در 1C: Enterprise به عنوان یک شی فوق داده ارائه می شوند. در اصل، چیزی بیش از یک متغیر سراسری نیست که به جلسه جاری محدود شده است.

یک متغیر سراسری همان متغیر دیگری است، اما ویژگی خاص آن این است که از هر نقطه برنامه قابل دسترسی است و در مورد پارامتر جلسه، این فقط در جلسه جاری کار می کند.

از آنجا که پارامتر جلسهیک شی ابرداده است، دارای ویژگی های خاصی است:

  • ممکن است از نوع خاصی باشد.انواع مجاز توسط پلت فرم تعیین می شود. لیست آنها بسیار گسترده است، اما حتی اگر در این لیستنیازی به شما نیست، همیشه می توانید مقدار را سریال کنید و آن را در یک پارامتر به عنوان یک رشته ذخیره کنید.
  • حقوق مربوط به آن، مانند هر شیء فراداده دیگری، می تواند توسط نقش ها (اعم از نوشتن و خواندن) محدود شود. با این حال، هنگام استفاده از آن در RLS یک ویژگی وجود دارد، اما در زیر مورد بحث قرار خواهد گرفت.
  • محدودیتی در میزان داده ای که می توان به صورت سریال قرار داد دارد.حجم آنها نباید بیش از 4 گیگابایت باشد.

اگر نوع پارامتر جلسه این است:

  • FixedArray
  • FixedCollection
  • ساختار ثابت

سپس مقدار عنصر مجموعه می تواند باشد تعریف نشده

حوزه اصلی پارامترها استفاده از مقادیر آنها در پرس و جوهای RLS (Record Level Access Restriction) است.

به عنوان مثال، باید یک شرط برای کاربر فعلی در درخواست RLS تعیین کنیم. برای انجام این کار، پارامتر جلسه "CurrentUser" را تنظیم کرده و مقدار را از کد زبان داخلی تنظیم می کنیم:

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

Table.User = &CurrentUser

هنگام استفاده از پارامتر session به این روش، مجوزهای خواندن برای پارامتر در نظر گرفته نمی شود، اما می توانید سعی کنید مقدار آنها را از زبان داخلی دریافت کنید:

CurrentUser = SessionParameters.CurrentUser;


شما می توانید یک پارامتر جلسه، یعنی مقدار آن را فقط به صورت برنامه نویسی و فقط روی سرور تنظیم کنید. برای انجام این کار، باید یک رویه سرور را از مشتری فراخوانی کنید. هنگام دسترسی به یک پارامتر جلسه (تنظیم، دریافت)، اگر پارامتر مقداردهی اولیه نشود، رویه فراخوانی می شود SettingSessionParametersدر ماژول جلسه این روش یک پارامتر دارد پارامترهای مورد نیاز- آرایه ای از شناسه پارامترهای جلسه مجموعه. SettingSessionParametersهمچنین هنگام برقراری ارتباط با پایگاه اطلاع رسانیقبل از تماس با سایر گردانندگان در این مورد پارامترهای مورد نیازبرابر خواهد بود تعریف نشده

توصیه می شود از مقداردهی اولیه تاخیری (تنبلی) استفاده کنید، یعنی پارامترهای جلسه را در صورت تقاضا و نه در هنگام راه اندازی سیستم، مقداردهی اولیه کنید، زیرا همه پارامترهای جلسه مستقیماً هنگام راه اندازی سیستم مورد نیاز نیستند. مقداردهی اولیه Lazy به این صورت انجام می شود:

رویه SettingSessionParameters(SessionParametersNames) اگر SessionParametersNames تعریف نشده باشد سپس اگر ParameterName = "CurrentUser" سپس SessionParameters.CurrentUser = ; ElseIf ParameterName = "CurrentOrganization" ThenSessionParameters.CurrentOrganization = ; // و غیره. endIf; endIf; EndProcedurevalue>value>>

از آنجایی که پارامتر جلسه به جلسه متصل است، نمی‌توانید از روشی که در پس‌زمینه اجرا می‌شود به پارامتر جلسه دسترسی پیدا کنید زیرا جلسه متفاوتی خواهد بود. این تفاوت جزئی ممکن است تعجب آور باشد، بنابراین بهتر است از قبل با پاس کردن مقدار مورد نظر به عنوان پارامتر متد و مقداردهی اولیه آن از پارامتر جلسه در ابتدای رویه، برای آن آماده شوید.

  • نسخه های فعلی 1C
  • نمونه هایی از کد در پلت فرم 1C
نقش ها، حقوق دسترسی در 1C 8.x
چگونه بفهمم که آیا نقش خاصی در دسترس کاربر فعلی است؟
If Not RoleAvailable ("مدیر") سپس گزارش ("مشاهده درخواست های مشتریان مجاز نیست!"); endIf;
چگونه می توانم اطلاعاتی در مورد نقش های پیکربندی دریافت کنم؟
Function List of Possible RolesConfiguration() List of Roles = new List of Values; RolesConfiguration = Metadata.Roles; برای هر نقش از RoleConfiguration Loop RoleList.Add(Role.Name); چرخه پایان returnListRole; EndFunction
چگونه بدون بررسی مجوزها کد را اجرا کنیم؟
1. استفاده از ماژول ممتاز 2. قرار دادن کد برنامه، که باید بدون کنترل محدودیت ها در یک ماژول مشترک با پرچم PRIVILEGE تنظیم شده برای ماژول اجرا شود. از یک حالت ممتاز اجرای کد برنامه مشابه نحوه عملکرد کد ماژول های ممتاز استفاده کنید. حالت را می توان با استفاده از زبان داخلی روشن/خاموش کرد: SetPrivilegedMode(<Включить>) پارامتر<Включить>(الزامی) نوع: Boolean. تعیین می کند که آیا حالت ممتاز فعال خواهد شد: True - حالت را فعال کنید. نادرست - حالت را خاموش کنید. تابع ()PrivilegedMode به شما امکان می دهد تعیین کنید که حالت ممتاز فعال است یا خیر. استفاده از حالت ممتاز اولاً به شما امکان می دهد سرعت کار را افزایش دهید زیرا محدودیتی در دسترسی به داده ها اعمال نخواهد شد و ثانیاً به شما امکان می دهد از طرف کاربرانی که این داده ها در دسترس آنها نیست عملیاتی را با داده انجام دهید. حالت ممتاز زمانی توصیه می‌شود که منطقاً باید بررسی مجوزها را غیرفعال کنید، یا زمانی که می‌توانید برای سرعت بخشیدن به کارها، بررسی مجوزها را غیرفعال کنید. زمانی که کار با داده ها از طرف یک کاربر خاص، حقوق دسترسی تعیین شده برای این کاربر را نقض نمی کند، استفاده از حالت ممتاز قابل قبول است.

5
زمانی که بیشتر مورد نیاز است تنظیم دقیقدسترسی، مکانیسم RLS - Record Level Security به کمک می آید. تنظیمات سیستم "1C: Enterprise" 8 در ابتدا به عنوان یک برنامه برای حسابداری چند شرکتی قرار گرفت و یکی از... 3
با شروع پلت فرم 8.0 سیستم 1C Enterprise، امکان محدود کردن حقوق دسترسی کاربر در سطح رکورد وجود دارد. برای این منظور از مکانیزم RLS (Record Level Security) استفاده می شود. چنین تنظیم "زیبا" می تواند ... 3
من اغلب با سوالاتی در رابطه با ایجاد نرم افزارو تنظیمات حقوق کاربر در این مقاله مثال هایی برای نرم افزارهای نرمال و مدیریت شده می آورم که به صورت برنامه نویسی یک کاربر در ... 2
سوال: من یک کاربر جدید اضافه کردم. من می آفرینم - درست می کنم رابط جدید(با کپی کردن یک موجود) و این رابط را به عنوان اصلی برای این کاربر مشخص کنید. مشکل این است که رابط جدید ایجاد شده ...