Mijozdagi 1s 8.3 ning joriy foydalanuvchisi. Konfiguratsiya rollari haqida ma'lumotni qanday olish mumkin

1C: Enterprise-da ko'rib chiqilayotgan parametrlar metadata ob'ekti sifatida taqdim etiladi. Aslida, bu joriy sessiyaga bog'langan global o'zgaruvchidan boshqa narsa emas.

Global o'zgaruvchi boshqa har qanday o'zgaruvchiga o'xshaydi, lekin uning o'ziga xos xususiyati shundaki, unga dasturning istalgan joyidan kirish mumkin, seans parametri bo'lsa, bu faqat joriy sessiya doirasida ishlaydi.

Chunki sessiya parametri metadata ob'ekti bo'lib, u ma'lum xususiyatlarga ega:

  • Bu ma'lum bir turdagi bo'lishi mumkin. Ruxsat etilgan turlar platforma tomonidan belgilanadi. Ularning ro'yxati juda keng, ammo mavjud bo'lsa ham bu ro'yxat sizga kerak emas, siz har doim qiymatni ketma-ketlashtirishingiz va uni parametrda satr sifatida saqlashingiz mumkin.
  • Unga bo'lgan huquqlar, boshqa har qanday metama'lumotlar ob'ekti kabi, rollar bilan cheklanishi mumkin (ham yozish, ham o'qish). Biroq, uni RLSda qo'llashning o'ziga xos xususiyati bor, ammo bu quyida muhokama qilinadi.
  • Unda ketma-ketlashtirilgan shaklda joylashtirilishi mumkin bo'lgan ma'lumotlar miqdori chegarasi mavjud. Ularning hajmi 4 GB dan oshmasligi kerak.

Agar seans parametri turi:

  • FixedArray
  • FixedCollection
  • FixedStructure

Keyin yig'ish elementining qiymati bo'lishi mumkin Aniqlanmagan.

Parametrlarning asosiy sohasi RLS (Record Level Access Restriction) so'rovlarida ularning qiymatlaridan foydalanishdir.

Masalan, biz RLS so'rovida joriy foydalanuvchi uchun shart qo'yishimiz kerak. Buning uchun biz "CurrentUser" seans parametrini o'rnatamiz va o'rnatilgan til kodidan qiymatni o'rnatamiz:

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

Jadval.User = &CurrentUser

Seans parametridan shu tarzda foydalanilganda, parametr uchun o'qish ruxsatnomalari hisobga olinmaydi, lekin siz ularning qiymatini o'rnatilgan tildan olishga harakat qilishingiz mumkin:

CurrentUser = SessionParameters.CurrentUser;


Siz seans parametrini, ya'ni uning qiymatini faqat dasturiy va faqat serverda o'rnatishingiz mumkin. Buning uchun mijozdan server protsedurasini chaqirishingiz kerak bo'ladi. Seans parametriga kirishda (sozlash, qabul qilish), agar parametr ishga tushirilmagan bo'lsa, protsedura chaqiriladi. SettingSessionParameters sessiya modulida. Ushbu protsedura bitta parametrga ega Kerakli parametrlar– oʻrnatilgan seans parametrlari identifikatorlari massivi. SettingSessionParameters bilan aloqa o'rnatishda ham chaqiriladi axborot bazasi boshqa barcha ishlovchilarni chaqirishdan oldin. Ushbu holatda Kerakli parametrlar teng bo'ladi Aniqlanmagan.

Kechiktirilgan (dangasa) ishga tushirishdan foydalanish tavsiya etiladi, ya'ni tizim ishga tushganda emas, balki talab bo'yicha seans parametrlarini ishga tushirish tavsiya etiladi, chunki barcha seans parametrlari to'g'ridan-to'g'ri tizimni ishga tushirishda talab qilinmaydi. Lazy ishga tushirish quyidagicha amalga oshiriladi:

Protsedura SettingSessionParameters(SessionParametersNames) Agar SessionParametersNames aniqlanmagan bo'lsa, ParameterName = "CurrentUser" bo'lsa, SessionParameters.CurrentUser = ; ElseIf ParameterName = "CurrentOrganization" ThenSessionParameters.CurrentOrganization = ; // va hokazo. endIf; endIf; EndProcedurevalue>qiymat>>

Seans parametri sessiyaga bog'langanligi sababli, siz fonda ishlaydigan usuldan sessiya parametriga kira olmaysiz, chunki u boshqa seans bo'ladi. Bu nuance hayratlanarli bo'lishi mumkin, shuning uchun kerakli qiymatni usul parametri sifatida o'tkazib, protsedura boshida sessiya parametridan ishga tushirish orqali unga oldindan tayyorgarlik ko'rish yaxshiroqdir.

  • Joriy relizlar 1C
  • 1C PLATFORMASIDAGI KOD NAMALLARI
Rollar, 1C 8.x da kirish huquqlari
Joriy foydalanuvchi uchun ma'lum bir rol mavjudligini qanday bilsam bo'ladi?
If Not RoleAvailable("Manager") then Report("Mijozlarning so'rovlarini ko'rish mumkin emas!"); endIf;
Konfiguratsiya rollari haqida ma'lumotni qanday olishim mumkin?
Funksiya Mumkin rollar roʻyxatiConfiguration() Rollar roʻyxati = yangi qiymatlar roʻyxati; Rollarni sozlash = Metadata.Roles; RoleConfiguration Loop dan har bir rol uchun RoleList.Add(Role.Name); EndCycle; returnListRole; EndFunction
Ruxsatlarni tekshirmasdan kodni qanday bajarish kerak?
1. Imtiyozli moduldan foydalaning 2. Joylashtirish dastur kodi, bu modul uchun o'rnatilgan PRIVILEG bayrog'i bilan umumiy modulga CHEKLAMALARNING BOShQARIShSIZ bajarilishi kerak. Dastur kodini bajarishning imtiyozli rejimidan foydalaning Imtiyozli modullar kodining ishlash rejimiga o'xshash. Tartibni o'rnatilgan til yordamida yoqish/o'chirish mumkin: SetPrivilegedMode(<Включить>) Parametr<Включить>(majburiy) Turi: mantiqiy. Imtiyozli rejim yoqilganligini aniqlaydi: True - rejimni yoqish; False - rejimni o'chiring. PrivilegedMode() funksiyasi imtiyozli rejim yoqilgan yoki yoqilmaganligini aniqlash imkonini beradi. Imtiyozli rejimdan foydalanish, birinchidan, ishni tezlashtirishga imkon beradi, chunki ma'lumotlarga kirishga cheklovlar qo'yilmaydi, ikkinchidan, bu ma'lumotlar mavjud bo'lmagan foydalanuvchilar nomidan ma'lumotlar bilan operatsiyalarni amalga oshirishga imkon beradi. Imtiyozli rejim mantiqiy ravishda ruxsatlarni tekshirishni o'chirib qo'yish kerak bo'lganda yoki ishlarni tezlashtirish uchun ruxsatnomalarni tekshirishni o'chirib qo'ysangiz tavsiya etiladi. Ma'lum bir foydalanuvchi nomidan ma'lumotlar bilan ishlashda ushbu foydalanuvchi uchun belgilangan kirish huquqlarini buzmasa, imtiyozli rejimdan foydalanish mumkin.

5
Ko'proq kerak bo'lganda puxta sozlash kirish, RLS - Record Level Security mexanizmi yordamga keladi. Tizim konfiguratsiyasi "1C: Enterprise" 8 dastlab ko'p kompaniyalar uchun buxgalteriya dasturi sifatida joylashtirilgan va ulardan biri... 3
1C Enterprise tizimining 8.0 platformasidan boshlab, foydalanuvchilarning kirish huquqlarini rekord darajada cheklash mumkin. Buning uchun RLS (Record Level Security) mexanizmi qo'llaniladi. Bunday "nozik" sozlash ... 3
Men tez-tez savollarga duch kelaman dasturiy ta'minot yaratish va foydalanuvchi huquqlari sozlamalari. Ushbu maqolada men foydalanuvchini dasturiy ravishda yaratadigan Oddiy va boshqariladigan ilovalarga misollar keltiraman... 2
Savol: Men yangi foydalanuvchi qo'shdim. yarataman yangi interfeys(mavjudni nusxalash orqali) va ushbu interfeysni ushbu foydalanuvchi uchun asosiy sifatida belgilang. Muammo shundaki, yangi interfeys yaratilgan ...