اینترنت پنجره ها اندروید
بسط دادن

1c 8.3 کاربر فعلی را روی کلاینت دریافت کنید. چگونه می توان فهمید که آیا نقش خاصی در دسترس کاربر فعلی است یا خیر

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

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

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

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

اگر نوع پارامتر session عبارت است از:

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

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

محدوده اصلی پارامترها استفاده از مقادیر آنها در درخواست های RLS (محدودیت دسترسی به سطح رکورد) است.

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

Session Parameters.CurrentUser =<значение>

Table.User = & CurrentUser

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

CurrentUser = SessionParameters.CurrentUser؛


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

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

رویه SettingSessionParameters (SessionParameterNames) اگر SessionParameterNames نامشخص است سپس If ParameterName = "CurrentUser" سپس SessionParameters.CurrentUser =؛ ElseIf ParameterName = "CurrentOrganization" سپس SessionParameters.CurrentOrganization =؛ // و غیره. EndIf ؛ EndIf ؛ EndProcedure value> value >>

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

جلسات پارامترها 1C 8.3- متغیری که مقدار پارامتر مورد نیاز را در طول جلسه کاربر ذخیره می کند. در واقع ، این یک نوع متغیر جهانی است که به جلسه کاربر فعلی گره خورده است.

استفاده از پارامترهای جلسه در 1C

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

نمونه ای از تنظیم پارامتر جلسه 1C

بیایید یک مورد استفاده معمولی برای پارامترهای جلسه - تنظیم کاربر فعلی را بررسی کنیم. من یک مثال از آماده سازی برای.

در درخت ابرداده ، یک پارامتر session جدید ایجاد کنید - CurrentUser ، یک نوع به آن اختصاص دهید - ReferenceLink.

267 آموزش تصویری 1C را به صورت رایگان دریافت کنید:

در ماژول جلسه ، ما روشی را ایجاد می کنیم که در آن پارامتر جلسه فعلی تعیین می شود:

کد رویه:

روش تنظیم پارامترهای Session (مورد نیاز پارامترها) // بدنبال بدن. صورت با نام کاربری CurrentUser = دایرکتوری ها. اشخاص حقیقی. FindByDesign (نام کاربری ()) ؛ // اگر یافت نشد ، یک مورد جدید ایجاد کنیداگر CurrentUser. Empty () سپس NewUser = Directories. اشخاص حقیقی. CreateElement ()؛ کاربر جدید. نام = نام کاربری ()؛ کاربر جدید. نوشتن ()؛ CurrentUser = NewUser. ارتباط دادن؛ EndIf ؛ // پارامتر جلسه CurrentUser را به مرجع افراد پیوند دهیدپارامترهای جلسه CurrentUser = CurrentUser ؛ پایان رویه

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

  • انتشارات فعلی 1C
  • نمونه هایی از کد روی پلاتفرم 1C
نقش ها ، حقوق دسترسی در 1C 8.x
چگونه می توانم بفهمم که نقش خاصی برای کاربر فعلی در دسترس است؟
اگر RoleAvailable وجود ندارد ("مدیر") سپس گزارش دهید ("مشاهده درخواست های خریداران مجاز نیست!") ؛ EndIf ؛
چگونه می توانم درباره نقشهای پیکربندی اطلاعات کسب کنم؟
FunctionPossibleConfigurationPossibleRoles () RoleList = newList of Values؛ RolesConfigurations = Metadata.Roles؛ برای هر نقش از RoleConfiguration Cycle Role List.Add (Role.Name) ؛ پایان چرخه ؛ بازگشت لیست نقش ؛ EndFunction
چگونه می توانم کد را بدون بررسی حقوق اجرا کنم؟
1. از یک ماژول ممتاز استفاده کنید. 2. قرار دادن کد برنامه ، که باید بدون کنترل محدودیت ها اجرا شود ، در ماژول مشترکبا نصب پرچم PRIVILEGED در ماژول. از حالت اجرای کد برنامه ممتاز مانند حالت اجرای کد ماژول ممتاز استفاده کنید. حالت را می توان با استفاده از زبان داخلی فعال یا غیرفعال کرد: تنظیم حالت ترجیحی (<Включить>) پارامتر<Включить>(الزامی) نوع: بولی تعیین می کند که آیا حالت ممتاز فعال می شود یا خیر: درست - فعال کردن حالت ؛ غلط - حالت را خاموش کنید. تابع () PrivilegedMode به شما امکان می دهد تعیین کنید که حالت ممتاز فعال است یا خیر. استفاده از حالت ممتاز ، اولاً به شما امکان می دهد سرعت کار را افزایش دهید ، زیرا هیچ محدودیتی برای دسترسی به داده ها وجود نخواهد داشت ، و ثانیاً ، به شما امکان می دهد عملیات را با داده ها به نمایندگی از کاربرانی انجام دهید که به این داده ها دسترسی ندارند. توصیه می شود از حالت ممتاز زمانی استفاده کنید که ، از نظر منطقی ، باید بررسی حقوق را غیرفعال کنید ، یا هنگامی که می توانید بررسی حقوق را برای سرعت بخشیدن به کار غیرفعال کنید. استفاده از حالت ممتاز زمانی مجاز است که کار با داده ها به نمایندگی از یک کاربر خاص ، حقوق دسترسی تعیین شده برای این کاربر را نقض نکند.