Internet Windows Android
Kengaytirish

Kirish cheklovlari Android uchun o'zgartirildi. Dasturchi uchun daftar

Ko'pincha, kompyuterda bir nechta odam ishlaganda vaziyat yuzaga keladi va har bir foydalanuvchining shaxsiy fayllari va papkalariga kirish boshqa foydalanuvchilar uchun cheklangan bo'lishi maqsadga muvofiqdir. Siz odatda kirishni rad qilishingiz mumkin yoki uni farqlashingiz mumkin: masalan, bitta foydalanuvchi ochilishi kerak to'liq kirish, boshqasiga - faqat o'qish uchun va umuman kimgadir taqiqlash.

Nega buni, ehtimol, har biringiz mening maslahatimsiz tushunasiz. Va bu erda qanday qilish kerak fayllarga kirishni cheklash Windows 7 da hamma ham bilmaydi. Shuning uchun biz ushbu jarayonni batafsil tahlil qilamiz.

Windows 7 da fayl va papkalarga kirishni cheklash

Boshlash uchun, albatta, biz kirishni cheklaydigan ob'ekt haqida qaror qabul qilish kerak. Shunday qilib, biz fayl yoki papkani tanladik va quyidagi algoritmga muvofiq harakat qilamiz:

1. Sichqonchaning o'ng tugmasi bilan ob'ektni (fayl yoki papkani) bosing va "Xususiyatlar" ni tanlang.

2. Ochilgan oynada "Xavfsizlik" yorlig'ini tanlang. Unda foydalanuvchilarning ma'lum bir fayl yoki papkaga kirish huquqlari aniqlanadi.

Yuqori maydonda tizimda yaratilgan barcha foydalanuvchilar yoki foydalanuvchilar guruhlari ko'rsatiladi. Muayyan elementni bosish orqali siz ma'lum bir foydalanuvchining huquqlarini ko'rishingiz va o'zgartirishingiz mumkin berilgan ob'ekt. Foydalanuvchining ma'lum bir papka yoki faylga "tegishi" ni to'liq oldini olish uchun uni yuqori ro'yxatdan olib tashlang.

3. Agar ma'lum bir foydalanuvchining huquqlarini olib tashlash yoki o'zgartirish imkoni bo'lmasa, unda uning barcha huquqlari "ota-ona" dan meros bo'lib qoladi. Muayyan ob'ektga foydalanuvchi huquqlarini hali ham cheklash uchun quyidagilarni bajaring: fayl xususiyatlaridagi "Xavfsizlik" yorlig'iga qayting va "Kengaytirilgan" tugmasini bosing (foydalanuvchi huquqlarini ko'rsatish bo'limi ostida (yuqoridagi rasmga qarang) .

oyna " Qo'shimcha imkoniyatlar xavfsizlik":

Agar u sukut bo'yicha ochilmasa, "Ruxsat" yorlig'iga o'ting. Keyin "Rolifikatsiyani o'zgartirish" tugmasini bosing. Keyin, "Ota-ona ob'ektlaridan meros bo'lib qolgan ruxsatni qo'shish" belgisini olib tashlang, ogohlantirish xabarini o'qib chiqqandan so'ng, "Qo'shish" tugmasini bosing. Va keyin fayl xususiyatlarining "Xavfsizlik" yorlig'iga qaytguningizcha har doim "OK" tugmasini bosing.

Endi siz foydalanuvchilarning ma'lum bir ob'ektga cheklovlarsiz kirish huquqlarini o'zgartirishingiz mumkin.

kirish ruxsati qiymatlari

Keling, aniq foydalanuvchi huquqlarining ma'nolarini batafsil ko'rib chiqaylik:

  • To'liq kirish - bu erda hamma narsa juda oddiy: ob'ekt bilan barcha operatsiyalarga ruxsat beriladi, shu jumladan ruxsatni o'zgartirish va ob'ekt egasi bo'lish.
  • O'zgartirish - oldingi paragrafdan farq qiladi, chunki u ob'ekt bilan faqat asosiy operatsiyalarni bajarishga ruxsat beriladi, ya'ni. ob'ektni o'qish, o'zgartirish, yaratish va o'chirish. Joriy ob'ektning ruxsatini o'zgartirish va uning egasi bo'lishga yo'l qo'yilmaydi.
  • O'qish va bajarish- o'zi uchun gapiradi: siz ob'ekt tarkibini ko'rishingiz va dasturlarni ishga tushirishingiz mumkin.
  • Jild tarkibini ro'yxatlash- oldingi banddagi kabi, faqat kataloglarga nisbatan.
  • O'qish - faqat ob'ektni ko'rishga ruxsat beriladi.
  • Write - fayllarni yaratish va ularga ma'lumotlarni yozish imkonini beradi.
  • Maxsus ruxsatnomalar- Bular "Kengaytirilgan" tugmasini bosish orqali o'rnatiladigan ruxsatnomalar.
fayl va papkaga ruxsatlarni o'rnatishda alohida e'tibor
  • Men sizga quyidagilarga e'tibor berishni maslahat beraman:
  • Agar siz yuqoriroq ustuvorlikka ega ruxsat uchun katakchani belgilasangiz, qaram ruxsatlarning bayroqlari avtomatik ravishda tekshiriladi.
  • Ruxsatni "O'chirish" ga o'rnatish "Enable" dan yuqoriroq ustuvorlikka ega.
  • Katalog uchun ruxsatlarni o'zgartirish barcha ichki o'rnatilgan ob'ektlar (papkalar va fayllar) uchun ruxsatlarni avtomatik ravishda o'zgartiradi.
  • Agar ma'lum ruxsatlar mavjud bo'lmasa, ular asosiy jilddan meros qilib olinadi.
  • Agar siz ruxsatlarni o'zgartirish huquqiga ega bo'lmasangiz, barcha tasdiqlash qutilari siz uchun mavjud bo'lmaydi.
  • Guruhlar uchun ruxsatlarni o'zgartirganda (masalan: "Administratorlar", "Foydalanuvchilar", "Tizim") ushbu guruhning barcha foydalanuvchilari uchun tegishli ruxsatlar avtomatik ravishda o'zgaradi.
  • "Tizim" guruhi uchun ruxsatlarni o'zgartirmang, bu operatsion tizimning ishlashini buzishi mumkin.

Muayyan ob'ekt uchun ruxsatlarni o'zgartirganda, ehtiyot bo'ling va ehtiyot bo'ling. Bir seansda bir vaqtning o'zida bir nechta ruxsatlarni o'zgartirmang, o'zgartirishlar kiritilgandan so'ng tizimning ishlashini tekshirishni unutmang.

ostida Android boshqaruvi"Kirish cheklovlari o'zgartirildi" deb yozadi

"Kirish cheklovlari o'zgartirildi." Bunday xabar ko'pincha ularning ekranlarida ko'rinadi smartfonlar Moto X, Moto G va Nexus modellari oilalaridagi qurilmalar egalari. Ushbu ogohlantirish bildirishnoma slayderida doimiy ravishda paydo bo'ladi va keyin yo'qoladi. Bundan tashqari, muammo Android qurilmasining dasturiy ta'minoti yoki apparatidagi xatolik tufayli kelib chiqmaydi, bu shunchaki favqulodda qo'ng'iroq funktsiyasidan kelgan oddiy xabar. telefon e. Ushbu bildirishnoma mutlaqo zararsiz bo'lishiga qaramay, u foydalanuvchilarni bezovta qiladi va hatto ularni qo'rqitadi. Haqiqatan ham, ma'lumotga ega bo'lmagan odamlar uchun "Kirish cheklovlari o'zgartirildi" iborasi hamma narsani anglatishi mumkin - ma'lumotlar uzatish yoki ovozli xizmatni blokirovka qilish.

Bildirishnomadan qutulishning biron bir usuli bormi " Kirish cheklovlari o'zgartirildi"? Yo'q. Muayyan tarzda munosabat bildirishga arziydimi? Ba'zan bunga arziydi. Agar siz SMS yuborish yoki qo'ng'iroqlarni qabul qilish imkoniyatini yo'qotgan bo'lsangiz, oddiy qayta ishga tushirish vaziyatni tuzatishi mumkin. Xato xabari, agar siz noto'g'ri SIM-kartadan foydalangan bo'lsangiz yoki kun davomida uyalardagi kartalarni tez-tez almashtirgan bo'lsangiz ham paydo bo'lishi mumkin. Xabarnoma tarmoq o'zgartirilganda ham paydo bo'ladi, ya'ni. 2G dan 3G ga yoki 3G dan 4G ga va aksincha. Va bularning barchasi, asosan, mobil ma'lumotlardan foydalanganda o'zini namoyon qiladi va ulanganda yo'qoladi WiFi tarmoqlari. Umuman olganda, asosiy muammo tarmoqning yo'qolishi yoki 3G dan 2G ga o'tish - kerak bo'lgan foydalanuvchilar uchun mobil tarmoq yuqori tezlikda ma'lumotlarni uzatish qobiliyatiga ega.

Android-da "Kirish cheklovlari o'zgartirildi" xabarnomasidan qanday qutulish mumkin smartfon e?

1-usul: bildirishnomalarni bloklash yoqilgan uchinchi tomon ilovasidan foydalangan holda telefon
Ushbu usuldan foydalanishdan oldin Android qurilmangizda bildirishnomalarni o'chirish uchun o'rnatilgan funksiya mavjudligini tekshiring. Bu xususiyat uchun mavjud bo'lishi mumkin Android 5.0 Lollipop va 6.0 Marshmallow o'rnatilgan smartfon, lekin ba'zi tizim versiyalari kirishga ruxsat bermasligi mumkin.

  1. Sozlamalar ->> Ovozlar va bildirishnomalar - >> Ilovalar bo'limiga o'ting.
  2. Pastga aylantiring va "Telefon" tugmasini bosing;
  3. Bildirishnomalarni o'chirish-ni tanlang.
  4. Agar sizda bunday funktsiya mavjud bo'lsa telefon mavjud emas, siz uchinchi tomon ilovalaridan foydalanishingiz kerak bo'ladi.

Agar siz Android-ga ildiz otgan bo'lsangiz smartfon, siz muammoni osongina engishingiz mumkin. "Ruxsatlar o'zgartirildi" bildirishnomasini bloklaydigan ilovalarni yuklab olishingiz mumkin. Buning uchun siz bajarishingiz kerak quyidagi harakatlar:

  1. Bildirishnomalarni bloklaydigan ilovani yuklab oling - masalan, Bloklash haqida
  2. Ilovani oching (sizdan bildirishnomalarga ruxsat berish so'raladi), "OK" tugmasini bosib kerakli ruxsatni bering.
  3. Keyinchalik, ilovada "Tizim ilovalarini yashirish" katagiga belgini olib tashlashingiz kerak;
  4. Pastga aylantiring va "Telefon" ni bosing (com.android.phone).

Endi qurilmani qayta ishga tushirish va xato hal qilinganligini ko'rish qoladi. Bildirishnomalarni blokirovka qiluvchi ilova ichida siz bir nechta "Telefon" piktogrammalarini topishingiz mumkin. Agar yuqoridagi amallar yordam bermasa, ilovadagi barcha Telefon piktogrammalari uchun bildirishnomalarni oʻchirib koʻring.

2-usul: Notify Clean ilovasini o'rnating (ildiz huquqlariga ega qurilmalar uchun)
Ushbu usuldan foydalanish uchun siz Android-da ildiz huquqlariga ega bo'lishingiz kerak. smartfon va Xposed Framework-ni o'rnating (ko'p foydalanuvchilar Android operatsion tizimiga qo'shimchalarni o'rnatish uchun ushbu dasturning imkoniyatlaridan uzoq va muvaffaqiyatli foydalanganlar).

  1. Notify Clean-ni o'rnating va uni oching
  2. Pastga aylantiring va Telefon ga teging
  3. "Kirish cheklovlari o'zgartirildi" tugmasini bosing;
  4. Qurilmangizni qayta yoqing va qurilmangizda bildirishnomalar o‘chirilganligiga ishonch hosil qiling.

Agar Android smartfon yoki planshetida "Kirish cheklovlari o'zgartirildi" deb aytsa nima qilish kerak

"Rol" konfiguratsiya ob'ekti konfiguratsiya ob'ektlari bo'yicha operatsiyalar (harakatlar) uchun huquqlar to'plamini beradi.

"To'liq huquqlar" roli.

Bu faqat rol (oldindan belgilanmagan) bo'lib, unda barcha konfiguratsiya ob'ektlarida barcha turdagi huquqlar uchun belgilash katakchalari mavjud.

Uning boshqa rollardan farqi - "Ma'muriyat" huquqining mavjudligi.

Agar kamida bitta foydalanuvchi yaratilgan bo'lsa, tizim "Ma'muriyat" huquqini tekshirishni boshlaydi - kamida bitta foydalanuvchi unga ega bo'lishi kerak.

Rekord darajasida kirishni cheklash

Qator darajasidagi xavfsizlik (RLS) - rekord darajadagi cheklov.

Ma'lumotlarga kirishni cheklash mexanizmi kirish huquqlarini nafaqat metadata ob'ektlari darajasida, balki ma'lumotlar bazasi ob'ektlari darajasida ham boshqarish imkonini beradi. Ma'lumotlarga kirishni cheklash uchun quyidagi ob'ektlardan foydalanish mumkin:

  • rollar,
  • seans imkoniyatlari,
  • funktsional imkoniyatlar,
  • imtiyozli umumiy modullar,
  • kalit so'z so'rovlar tilida ALLOWED.

Mexanizm ushbu jadvallarning satr maydonlari qiymatlariga o'rnatilgan ixtiyoriy shartlarga muvofiq metama'lumotlar ob'ektlari jadvali yozuvlariga kirishni cheklash uchun mo'ljallangan. Masalan, faqat "sizning" kontragentlaringiz, tashkilotlaringiz va boshqalar uchun yozuvlarni ko'rish.

1C da kirish cheklovlarini texnik amalga oshirish

1C ma'lumotlar bazasiga so'rov yaratadi. Server klasteri so'rovga QAYER bo'limini qo'shadi, unda RLS orqali kirishni cheklash sharti matni mavjud, keyin bu so'rov ma'lumotlar bazasiga yuboriladi, olingan ma'lumotlar 1C mijoziga qaytariladi.


Ushbu mexanizm mijozning har qanday so'rovi uchun ishlaydi:

  • hisobotlarda
  • dinamik ro'yxatlar va muntazam ro'yxat shakllarida
  • tasodifiy so'rovlarda.

Mexanizmning bunday amalga oshirilishi ishlashga katta ta'sir qiladi.

Kirish cheklovlarini chetlab o'tish usullari.

Katta resurslarni talab qiladigan operatsiyalarda (masalan, hujjatlarni qayta joylashtirish) kodning bir qismi imtiyozli modullarga o'tkazilishi mumkin.

A) imtiyozli modul xususiyatlarida "Imtiyozli" bayroqli umumiy moduldir.

Uning o'ziga xosligi shundaki, undagi kod hech qanday kirishni nazorat qilmasdan, shu jumladan RLS-da bajariladi.


B) shuningdek imtiyozli rejimini yoqish mumkin hujjat obyekti modullari uchun. Bu hujjatning xususiyatlarida, bayroqda amalga oshiriladi

  • Tutib turganda imtiyozli rejim
  • Rejadan chiqarishda imtiyozli rejim


C) Usul SetPrivilegedMode()

Har qanday modul kodining bir qismini imtiyozli qilish imkonini beruvchi tizim buyrug'i.

Kodning keyingi qatoridan imtiyozli bajarish rejimi amal qiladi.

U ushbu rejimni o'chirish chizig'igacha yoki protsedura / funktsiyaning oxirigacha ishlaydi

(To'g'ri);

// bu yerdagi har qanday kod huquqlar nazorati va RLSsiz bajariladi

PrivilegedMode(yolg'on); // yoki protsedura / funktsiyaning oxiri

Imtiyozli rejimni faollashtirish soni o'chirishlar soniga mos kelishi kerak. Biroq, agar imtiyozli rejim protsedura yoki funksiya ichida yoqilgan bo'lsa (bir yoki undan ko'p), lekin u o'chirilmagan bo'lsa, tizim uni avtomatik ravishda protsedura yoki funksiyada bekor qilinayotgan faollashtirishlar soni ko'p marta o'chirib qo'yadi.

Agar protsedura yoki funktsiya usuli chaqirsa PrivilegedMode(False) usul chaqiruvlaridan ko'ra ko'proq PrivilegedMode(to'g'ri) keyin istisno tashlanadi

Funktsiya Privileged Mode() agar imtiyozli rejim yoqilgan bo'lsa, True, agar imtiyozli rejim butunlay o'chirilgan bo'lsa, False qiymatini qaytaradi. Muayyan funktsiyada imtiyozli rejim sozlamalari sonini tahlil qilmaydi.

Barcha chaqirilgan protseduralar va funktsiyalar imtiyozli rejimda ham bajariladi.


Imtiyozli seansni boshlash ham mumkin. Bu imtiyozli rejim tizimning boshidanoq o'rnatiladigan sessiya. Shu bilan birga, operatsiya vaqtida, usul Privileged Mode() har doim True ni qaytaradi va imtiyozli rejimni o'chirish imkoniyati qo'llab-quvvatlanmaydi. Imtiyozli seansni faqat ma'muriy huquqlarga ega foydalanuvchi (Administratsiya huquqi) boshlashi mumkin. Seansni boshlash kalit yordamida amalga oshirilishi mumkin buyruq qatori mijoz dasturini ishga tushirish UsePrivilegedMode yoki prmod infobase ulanish satri parametri.


Tabiiyki, savol tug'iladi: agar uni osongina chetlab o'tish mumkin bo'lsa, nega umuman kirish cheklovlarini o'rnatish kerak?

Xavfsiz rejim.

Ha, imtiyozli bajarish rejimi va ma'lumotlarni tushirish/buzish bilan tashqi ishlov berishni yozish mumkin. Buning oldini olish uchun tizimda global kontekst usuli mavjud

Xavfsiz rejimni o'rnating().

Xavfsiz rejim, boshqa narsalar qatorida, imtiyozli rejimga e'tibor bermaydi.

Bu dastur chaqiruvidan oldin o'rnatilishi kerak. tashqi ishlov berish yoki ularning modullaridan tartib va ​​funksiyalarni eksport qilish.

Ishlash vaqtida taqiqlangan operatsiyalarni bajarishda istisno qiladi.

Bundan tashqari, foydalanuvchilar uchun rol sozlamalari darajasida interaktiv ishga tushirish imkoniyatini o'chirib qo'yishingiz mumkin. tashqi hisobotlar va qayta ishlash.

Kirishni cheklash sozlamalari

RLS faqat huquqlar uchun sozlanishi mumkin:

  • o'qish (tanlash)
  • qo'shish (qo'shish)
  • o'zgartirish (yangilash)
  • o'chirish (o'chirish)

O'qish operatsiyalari uchun va o'chirishda ma'lumotlar bazasidagi ob'ekt ma'lumotlarga kirish chekloviga mos kelishi kerak.

Qo'shish operatsiyasi uchun ma'lumotlarga kirishni cheklash ma'lumotlar bazasiga yozilishi rejalashtirilgan ob'ektga mos kelishi kerak.

O'zgartirish operatsiyasi uchun Ma'lumotlarga kirishni cheklash ob'ektga o'zgartirishdan oldin (o'qilishi kerak bo'lgan ob'ekt uchun) va o'zgartirishdan keyin (yozilishi kerak bo'lgan ob'ekt uchun) mos kelishi kerak.

Boshqa barcha huquqlar uchun bu imkoniyat mavjud emas.

"Nomenklatura" ma'lumotnomasining "o'qish" huquqiga yangi cheklov qo'shamiz. Qo'shilgan cheklovni sozlashingiz mumkin bo'lgan maydonlar ro'yxati ochiladi.

Bu shuni anglatadiki, agar siz belgilangan maydonlarga kirishga harakat qilsangiz, cheklov ishlaydi, lekin belgilanmagan maydonlarga kirishga harakat qilsangiz, cheklov ishlamaydi.

Agar siz bayroqni tanlasangiz Boshqa sohalar”, cheklash jadvalning barcha maydonlari uchun o'rnatiladi, cheklovlar aniq belgilangan maydonlar bundan mustasno.


*Xususiyat: qo'shish, o'zgartirish, o'chirish huquqlari uchun:

  • Cheklov faqat barcha maydonlar uchun sozlanishi mumkin.
  • Faqat bitta chegara bo'lishi mumkin.

"O'qish" huquqi uchun siz bir nechta shartlarni o'rnatishingiz mumkin, ular "VA" mantiqiy operatori bilan birlashtiriladi.

Quyidagi turdagi ma'lumotlar bazasi ob'ektlari uchun cheklovlarda asosiy ma'lumotlar ob'ektining barcha maydonlaridan foydalanish mumkin emas:

  • to'plash registrlarida kirish cheklovlari faqat asosiy cheklash ob'ektining o'lchovlarini o'z ichiga olishi mumkin;
  • cheklovlardagi buxgalteriya registrlarida siz faqat cheklovning asosiy ob'ektining balans o'lchovlaridan foydalanishingiz mumkin

Agar jamlash aylanmalari registrining ma'lumotlariga kirishning cheklanganligi sharoitida jami summalarga kiritilmagan o'lchovlar qo'llanilsa, virtual aylanmalar jadvaliga kirishda saqlangan summalar ishlatilmaydi va so'rov to'liq bajariladi. harakat jadvali.

Kirish cheklovlarini o'rnatish mexanizmi.

1C: Enterprise-da ma'lumotlar bazasida saqlangan ma'lumotlar bo'yicha har qanday operatsiya oxir-oqibat ma'lumotlar bazasiga ma'lumotlarni o'qish yoki o'zgartirish so'rovi bilan kirishga olib keladi. Ma'lumotlar bazasiga so'rovlarni bajarishda 1C: Enterprise ning ichki mexanizmlari kirish cheklovlarini qo'yadi. Bunda:

  • Huquqlar ro'yxati shakllantiriladi(o'qish, qo'shish, yangilash, o'chirish), ma'lumotlar bazasi jadvallari ro'yxati va ushbu so'rov tomonidan ishlatiladigan maydonlar ro'yxati.
  • Barcha rollardan joriy foydalanuvchi kirish cheklovlarini tanlang so'rovga kiritilgan barcha huquqlar, jadvallar va maydonlar uchun ma'lumotlarga. Bundan tashqari, agar biron bir rol biron bir jadval yoki maydon ma'lumotlariga kirish cheklovlarini o'z ichiga olmasa, bu har qanday yozuvdagi kerakli maydonlarning qiymatlari ushbu jadvalda mavjudligini anglatadi. Boshqacha qilib aytganda, ma'lumotlarga kirishni cheklashning yo'qligi WHERE True cheklovi mavjudligini anglatadi.
  • Barcha seans parametrlari va funktsional imkoniyatlarining joriy qiymatlarini oling tanlangan cheklovlarda ishtirok etish.

Seans parametri yoki funktsional parametr qiymatini olish joriy foydalanuvchidan ushbu qiymatni olish huquqiga ega bo'lishini talab qilmaydi. Biroq, ba'zi bir seans parametrining qiymati o'rnatilmagan bo'lsa, unda xatolik yuzaga keladi va ma'lumotlar bazasi so'rovi bajarilmaydi.

Xuddi shu roldan olingan cheklovlar AND operatsiyasi bilan birlashtiriladi.

Turli rollardan olingan cheklovlar OR operatsiyasi bilan birlashtiriladi.

Tuzilgan shartlar SQL so'rovlariga qo'shiladi, ular yordamida 1C: Enterprise ma'lumotlar bazasiga kirishadi. Ma'lumotlarga kirishni cheklash shartlaridan kirishda huquqlar tekshirilmaydi (na metadata ob'ektlariga, na ma'lumotlar bazasi ob'ektlariga). Bundan tashqari, shartlarni qo'shish mexanizmi "barcha" yoki "ruxsat etilgan" cheklovlarning tanlangan ish rejimiga bog'liq.


*Xususiyat: Agar foydalanuvchi bitta ob'ektga yozuvlar darajasida sozlangan cheklovlar bilan bir nechta rollarga kirish imkoniga ega bo'lsa, bu holda cheklovlar shartlari "OR" mantiqiy operatsiyasi bilan qo'shiladi. Boshqacha qilib aytadigan bo'lsak, foydalanuvchi ruxsatlari yig'indisidir.

Bu quyidagi xulosaga olib keladi: turli rollarda bitta ob'ektga kirishni cheklash shartini kesib o'tishga yo'l qo'ymang, chunki bu holda so'rov matni ancha murakkablashadi va bu ishlashga ta'sir qiladi.

Barcha tomonga.

"Hammasi" usuli yordamida cheklovlar qo'yilganda, 1C: Enterprise ma'lumotlar bazasi so'rovini bajarish jarayonida ushbu foydalanuvchi uchun taqiqlangan ma'lumotlardan foydalanilganmi yoki yo'qligi haqida ma'lumot olishi uchun SQL so'rovlariga shartlar va maydonlar qo'shiladi. . Agar taqiqlangan ma'lumotlardan foydalanilgan bo'lsa, kirish huquqi buzilganligi sababli so'rov bekor qilinadi.

"Hamma" usuli bilan kirish cheklovlarining o'rnatilishi sxematik tarzda rasmda ko'rsatilgan:


"Ruxsat berilgan" usuli.

"Ruxsat berilgan" usuli yordamida cheklovlar qo'yilganda, joriy foydalanuvchi uchun taqiqlangan yozuvlar so'rov natijasiga ta'sir qilmasligi uchun bunday shartlar SQL so'rovlariga qo'shiladi. Boshqacha qilib aytganda, "ruxsat etilgan" rejimda cheklovlar qo'yilganda, taqiqlanadi berilgan foydalanuvchi yozuvlar etishmayotgan deb hisoblanadi va operatsiya natijasi ta'sir qilmaydi, bu rasmda sxematik ko'rsatilgan:


1C: Enterprise ma'lumotlar bazasiga kirishda ma'lumotlar bazasi ob'ektlariga ma'lumotlarga kirish cheklovlari qo'yiladi.

1C: Enterprise mijoz-server versiyasida cheklovlar 1C: Enterprise serverida qo'llaniladi.

Biroq, agar biz so'rovda kirish cheklovlari sozlanmagan, lekin sozlangan cheklovlar bilan jadval qatorlariga havolalar mavjud bo'lgan jadvalga murojaat qilsak, ushbu parametr (RUXSAT BERILGAN) ishlamaydi. Bunday holda, so'rovning natijasi "<Объект не найден>……” mos yozuvlar maydoni qiymati o'rniga.


Agar siz umumiy yoki moslashtirilgan konfiguratsiya so'rovlari yordamida hisobot yoki ishlov berishni ishlab chiqayotgan bo'lsangiz, har doim "Ruxsat berilgan" belgisini tekshiring hisobot ishlashi uchun har qanday foydalanuvchi ostida har qanday huquqlar to'plami bilan.

Ma'lumotlar bazasidan ob'ekt ma'lumotlarini o'qish holatida "Ruxsat berilgan" bayrog'ini o'rnatish mumkin emas. Shuning uchun, bu zarur kirish huquqlari bo'yicha mumkin bo'lgan cheklovlarni hisobga olgan holda ob'ektni o'qish uchun tanlovlarni sozlash foydalanuvchi uchun. Ob'ekt texnologiyasida faqat ruxsat etilgan ma'lumotlarni olish vositalari mavjud emas.

Muhimi, agar so'rovda RUXSAT BERILGAN kalit so'z ko'rsatilmagan bo'lsa, u holda ushbu so'rovda ko'rsatilgan barcha filtrlar so'rovda foydalanilgan ma'lumotlar bazasi ob'ektlarini o'qishga qo'yilgan hech qanday cheklovlarga zid bo'lmasligi kerak. Bundan tashqari, agar so'rovda virtual jadvallar ishlatilsa, virtual jadvallarning o'ziga tegishli filtrlar o'rnatilishi kerak.

Amaliyot 1. RLS sozlamalarida so'rovlar yaratuvchisi.

Katalogga so'rovda "QAYER" bo'limi matnini tuzamiz. Siz so'rovlar yaratuvchisidan foydalanishingiz mumkin.
Konstruktor kesilgan.


"Jadvallar" yorlig'i

Asosiy jadval cheklash sozlanayotgan ob'ekt jadvali bo'ladi.

"Aloqalar" yorlig'ida siz boshqa jadvallarni ham tanlashingiz va ular o'rtasida turli munosabatlarni o'rnatishingiz mumkin.

Shartlar yorlig'i

Bu erda siz kirishni cheklash uchun haqiqiy shartlarni sozlashingiz mumkin.

Jadvalning barcha maydonlariga "o'qish" huquqi uchun birjalar ro'yxati katalogining "Narx" atributi uchun shartlarni qo'shamiz.

"Nomenklatura QAYER Nomenklaturasi. Narxi > 500"

Keling, ushbu oddiy qoida qanday ishlashini ko'rib chiqaylik. Ma'lumot jadvali quyidagi elementlarni o'z ichiga oladi:


Kirish cheklovini o'rnatgandan so'ng, jadval faqat shartni qondiradigan elementlarni ko'rsatadi:


Guruhlar ham yo'qoldi. Cheklov matnini o'zgartiring

"Nomenklatura QAYER Nomenklaturasi. Narxi > 500

YOKI Nomenklatura. Bu guruh"

Xo'sh, endi sizga kerak bo'lgan narsa.


Ro'yxat sozlamalarida "kod" maydonining ko'rinishini olib tashlasangiz, katalogning barcha elementlari ko'rsatiladi, ya'ni. cheklov ish bermadi. Agar siz "Kod" maydonining ko'rinishini o'rnatsangiz, cheklov ishlaydi.


Shu bilan birga, ro'yxat maydonida qidirish elementi ko'rinadigan bo'lishiga qaramay, uning shaklini ochib bo'lmaydi, chunki atributga cheklov o'rnatilgan. Ixtiyoriy so'rovda ham xuddi shunday: "cheklangan" atributni olishga urinayotganda, kirish xatosi bo'ladi.


Agar siz "cheklangan" rekvizitlarni dasturiy ravishda olishga harakat qilsangiz, kirish xatosi ham paydo bo'ladi.


Bundan tashqari, havola orqali ob'ektning biron bir maydoniga kirish imkonsiz bo'ladi, chunki havola olinganda tizim butun ob'ektni o'qiydi va agar u "cheklangan" tafsilotlarga ega bo'lsa, ob'ekt o'qilmaydi.

Shuning uchun, qachon dastur ishi ma'lumotlar bazasi ob'ektlari bilan siz rekord darajadagi mumkin bo'lgan cheklovlarni yodda tutishingiz va so'rov bilan barcha kerakli ob'ekt ma'lumotlarini olishingiz va keyin uni tuzilishga qo'yishingiz yoki imtiyozli modulda kod qismini bajarishingiz kerak.

Kirish cheklovini o'rnatgandan so'ng, huquqlar ro'yxatidagi chiziqning ko'rinishi o'zgardi - u kul rangga aylandi va belgi paydo bo'ldi.

Kirish konfiguratsiyasi cheklovlari (RLS).

  • Xulosa bo'limi yo'q;
  • Siz virtual registr jadvallariga kira olmaysiz;
  • Siz parametrlardan aniq foydalana olmaysiz;
  • Pastki so'rovlardan foydalanish mumkin har qanday>/span> so'rovlar uchun til vositalari, bundan mustasno:
    • IEARXİYADAGI operator;
    • NATIJALARNI taklif qiladi;
    • ichki so'rov natijalari jadval qismlari bo'lmasligi kerak>/span>;
    • virtual jadvallar, xususan Balanslar va aylanmalar

Amaliyot 2. Joriy narx bilan nomenklatura.

Joriy narxdagi ob'ektni ko'proq ko'rsatish kerak bo'lsa, kirishni cheklash ma'lum qiymat, masalan, 100.

Yechim:

Biz "o'qish" huquqi uchun "Nomenklatura" ma'lumotnomasiga kirishni cheklashning yangi qoidasini qo'shamiz.
"Boshqa maydonlar" ni tanlang.
Konstruktorda ichki so'rovni qo'shing. Unda "Tovar narxlari" ma'lumotlar reestri jadvalini tanlang.
"Buyurtma" yorlig'i mavjud emas - bu kirishni cheklash so'rovini yaratish uchun so'rovlar yaratuvchisining xususiyati.
"Kengaytirilgan" yorlig'ida "birinchi 999999999" ni o'rnating, "buyurtma" yorlig'i paydo bo'ldi.
"Davr" maydoni bo'yicha tartibni kamayish tartibida o'rnating.
Keyin biz asosiy jadvalning pastki so'rov bilan ulanishini mos yozuvlar bo'yicha o'rnatamiz.


Kirishni cheklash shablonlari.

Amaliyot 3. "pudratchilar"ga doimiy qiymat bo'yicha cheklash.

Constant-da saqlangan qiymat bo'yicha kontragentlar katalogiga kirish cheklovini o'rnating.

Bundan tashqari, tafsilotlarda "Pudratchilar" katalogidan foydalanadigan barcha ob'ektlar uchun cheklovni o'rnatishingiz kerak.

Yechim

"Hisoblar" ma'lumotnomasi uchun "o'qish" huquqi uchun biz "Shartlar" bo'limiga doimiy so'rovni qo'shish orqali cheklovni o'rnatamiz. Bu Guruhni Unutmang.

Muammoni ko'rmoqdamiz, kontragentlar katalogi to'g'ri filtrlangan va "Counterparty" atributiga ega bo'lgan barcha hujjatlar ko'rsatiladi, ba'zilari "Counterparty" atributidagi "buzilgan" havolalarga ega.

Endi siz "Hisob qaydnomalari" havolasidan foydalanib, barcha ob'ektlar uchun kirishni cheklashni sozlashingiz kerak. Keling, ularni "ob'ektga havolalarni qidirish" xizmati bilan topamiz.

Keling, "Counterparties" katalogidan RLS sharti matnini nusxa ko'chiramiz va biroz o'zgartiramiz. Buni qancha ob'ektlar topilgan bo'lsa, shuncha qilish kerak.

Yoki kodni takrorlash bilan bog'liq muammolarni oldini olish uchun kirishni cheklash naqshidan foydalaning.

Kirishni cheklash shablonlari rol darajasida sozlangan va tahrirlangan roldagi har qanday ob'ekt uchun ishlatilishi mumkin.

Siz shablonga kirishni cheklash matnining istalgan qismini qo'yishingiz mumkin. Shablon "#" belgisi orqali chaqiriladi. Masalan, #TemplateContractor.

1C da # orqali ko'rsatmalar preprotsessorga yoziladi. Kirishni cheklash sozlamalarini bajarish kontekstida platforma qo'ng'iroq matnini shablon matni bilan almashtiradi.

Keling, WHERE so'zidan keyin matnni "TemplateContractor" shabloniga o'tkazamiz, ThisGroup haqidagi matndan tashqari.

Kirishni cheklash shablonlaridagi parametrlar.

Keling, 2-muammoni hal qilishda davom etaylik.

Endi muammo shundaki, katalogdagi asosiy jadval "kontragent", hujjatda "Invoys" deb nomlanadi. Katalogdagi belgilangan maydon "bog'lanish", hujjatda - "Qarshi tomon" deb nomlanadi.

Shablon matnidagi asosiy jadval nomini "#CurrentTable" ga o'zgartiring

"#CurrentTable" oldindan belgilangan parametrdir.

Va nuqta orqali biz kirish parametrining raqamini ko'rsatamiz - “.#Parameter(1)

"#Parameter" ham oldindan belgilangan qiymatdir. Kirish parametrlarining ixtiyoriy sonini o'z ichiga olishi mumkin. Ular seriya raqami bilan ataladi.

Katalogga kirishni cheklash matnida biz quyidagilarni ko'rsatamiz:

Hujjat uchun quyidagilar:

“Tovarlarni QAYERDA sotish #Shablon Pudratchi (“Pudratchi”)”

Kirishni cheklash shablonini chaqirganda, parametrlar unga faqat String sifatida, ya'ni tirnoq ichida uzatilishi kerak.

Asosiy jadval - Nomenklatura

Shablon matni:

#Joriy jadval QAYERDA #Mavjud jadval.#Parameter(1) = #Parameter(2)

Shablon matni ma'lumotlarga kirishni cheklash tilidagi matnning bir qismini o'z ichiga oladi va "#" belgisi bilan ta'kidlangan parametrlarni o'z ichiga olishi mumkin.

"#" belgisidan keyin quyidagilar bo'lishi mumkin:

  • Bittasi kalit so'zlar:
    • Qavslar ichida shablondagi parametr raqamidan keyin parametr;
    • CurrentTable - matnga cheklov qurilayotgan jadvalning to'liq nomini kiritishni bildiradi;
    • Current TableName– o‘rnatilgan tilning joriy versiyasida ko‘rsatma qo‘llaniladigan jadvalning to‘liq nomini (satr qiymati sifatida, qo‘shtirnoq ichida) matnga kiritishni bildiradi;
    • NameCurrentPermission– joriy cheklov amalga oshirilayotgan huquq nomini o‘z ichiga oladi: O‘QISH/O‘QISH, QO‘SHISH/QO‘SHISH, O‘ZGARTIRISH/YANGILASH, O‘CHIRISH/O‘CHIRISH;
  • shablon parametri nomi - matnga mos keladigan shablon parametrining cheklanishini kiritishni anglatadi;
  • "#" belgisi - matnga bitta "#" belgisi qo'shilganligini bildiradi.

Kirishni cheklash ifodasi quyidagilarni o'z ichiga olishi mumkin:

  • Formatda ko'rsatilgan kirishni cheklash namunasi #TemplateName("Shablon parametri qiymati 1", "Shablon parametr qiymati 2",...). Har bir shablon parametri qo'sh tirnoq ichiga olingan. Agar matnda belgi parametrini ko'rsatish kerak bo'lsa qo'sh tirnoq ikkita qo'sh tirnoq qo'llanilishi kerak.
  • Funktsiya StrContains(Biz qidirayotgan joy, nimani izlayotganimiz). Funktsiya WhatLooking for satrida WhatLooking hodisasini qidirish uchun mo'ljallangan. Agar moslik topilsa True, aks holda False qaytaradi.
  • Satrlarni birlashtirish uchun + operatori.

Shablon matnini tahrirlash qulayligi uchun rol formasidagi Cheklash shablonlari yorlig'ida Shablon matnini o'rnatish tugmasini bosing. Ochilgan muloqot oynasida shablon matnini kiriting va OK tugmasini bosing.

Ular yordamida o'rnatib bo'lmaydi setParameter() yoki shunga o'xshash narsa.

Bunday holda, parametrlar:

  • Seans parametrlari
  • Funktsional variantlar

Kirishni cheklash so'rovida seans parametrlarini o'qish imtiyozli rejimda, ya'ni ular bilan ishlash huquqini nazorat qilmasdan sodir bo'ladi.

Amaliyot 4. "Sizning" kontragentlaringizga kirish

Joriy foydalanuvchining "o'z" kontragentlariga kirishini cheklashni o'rnatish kerak.

"Foydalanuvchilar" ma'lumotnomasi, "Qarshi taraflar" ma'lumotnomasi, "Qarshi tomon" rekvizitiga ega hujjatlar mavjud.

Joriy foydalanuvchi faqat u bilan aloqa o'rnatilgan kontragentlar uchun ma'lumotlarni ko'rishi kerak.

Aloqa ham sozlanishi kerak.

Mumkin variantlar:

Foydalanuvchi + kontragent aloqalarini o'rnatish

  • Kontragentlar katalogidagi tafsilotlar
  • Axborot reestri

Muammoning mumkin bo'lgan echimlari:

  • Foydalanuvchini doimiyda saqlash yomon variant, doimiy barcha foydalanuvchilar uchun mavjud.
  • Seans parametrlarida saqlang belgilangan massiv joriy foydalanuvchining kontragentlari - unchalik emas yaxshi variant, ko'plab kontragentlar bo'lishi mumkin
  • Joriy foydalanuvchining sessiya parametrlarini saqlang, keyin "uning" kontragentlari ro'yxatini olishni so'rang - maqbul variant.
  • Boshqa variantlar.

Yechim.

Keling, "CurrentUser" yangi sessiya parametrini yaratamiz va uni to'ldirishni sessiya moduliga yozamiz.

“Menejerlar va kontragentlarning yozishmalari” ma’lumotlar reestrini yarataylik.

Keling, yangi rolni yarataylik va unda "Kirish fakturasi" hujjati uchun yangi kirish cheklovi.

So'rov matnida biz asosiy jadvalni Pudratchi = Pudratchi va menejer = &CurrentUser tomonidan ma'lumotlar registriga ulaymiz. Ichki ulanish turi.

Iloji bo'lsa, kirishni cheklash matnlarida ichki so'rovlardan qochish yaxshiroqdir, chunki bu ob'ekt ma'lumotlar bazasidan har safar o'qilganda bajariladi.

Biz tekshiramiz - cheklovlar ishlaydi

* Xususiyat: Agar siz registrdagi foydalanuvchi kontragentlari ro'yxatini o'zgartirsangiz, kirish cheklovlari foydalanuvchi sessiyasini qayta ishga tushirmasdan darhol kuchga kiradi.

Amaliyot 5. Sana o'zgarmaydi.

Ma'lumotlarni tahrirlash bo'yicha cheklovni o'zgartirishlarni taqiqlash uchun belgilangan sanadan oldinroq amalga oshirish kerak.
Foydalanuvchilar cheklangan bo'lishi kerak.

User, RestrictedDate resursi o'lchovi bilan "ChangeBarDateDate" axborot registrini yarataylik.

Keling, yechimning mantiqini shu tarzda quramiz:

  • agar foydalanuvchi ko'rsatilmagan bo'lsa, unda taqiq barcha foydalanuvchilarga tegishli
  • agar barcha foydalanuvchilar uchun cheklov va ma'lum bir foydalanuvchi uchun cheklov mavjud bo'lsa, unda ma'lum bir foydalanuvchi uchun, qolganlari uchun esa umumiy printsipga muvofiq cheklov mavjud.

Shubhasiz, bunday chegara vaqt o'qida ma'lum bir pozitsiyaga ega bo'lgan ma'lumotlar bazasi ob'ektlari uchun sozlanishi mumkin. Bo'lishi mumkin

  • Hujjatlar
  • Davriy ma'lumotlar registrlari

Keling, "RestrictionsBy ChangeProhibitionDate" yangi rolini yarataylik.

Unda to'g'ri "o'zgartirish" uchun "Kvitansiya hisob-fakturasi" hujjati uchun biz yangi kirish cheklovini qo'shamiz.

Sozlama barcha maydonlar uchun belgilangan.

Cheklov matni:

Hujjatdan kvitansiya schyot-fakturasi. Qabul fakturasi Invoys hisob-fakturasi sifatida

O'zgartirishProhibitionDates.ProhibitionSana TaqiqlanishSanasi AS
FROM

ICHKI JOIN (tanlash
MAKSIMUM(ChangeProhibitionDate.User) foydalanuvchi sifatida
FROM
Axborot reestri O'zgartirishlar taqiqlangan sana sifatida o'zgartirishlar taqiqlangan sana
QAYERDA
(ChangeProhibitionDates.User = &CurrentUser
ORChangeProhibitionDate.User = VALUE(Reference.users.NullReference))) OT_User AS
BYChangeProhibitedDate.User = OT_User.User) quyi soʻrov AS
Invoice Invoice.Date > NestedRequest.BanDate

Biz tekshiramiz - cheklov ishlaydi.

Preprotsessor ko'rsatmalaridan foydalanish

#Agar 1-shart #U holda

1-so'rov fragmenti

#ElseIf2-shart #U holda

2-so'rov fragmenti

#Aks holda

3-so'rov fragmenti

#EndIf

Shartlarda siz mantiqiy operatsiyalardan (va. yoki, yo'q, va hokazo) va sessiya parametrlariga kirishdan foydalanishingiz mumkin.

Kirish cheklovlarini qurish kontekstidagi bunday yondashuv qulaydir, chunki shartlarga qarab, qisqaroq so'rov matni tuziladi. Oddiyroq so'rov tizimni kamroq yuklaydi.

Salbiy tomoni shundaki, so'rovlar konstruktori bunday matn bilan ishlamaydi.

* Xususiyat:

Kirishni cheklash matnlarida 1C: Enterprise preprotsessoriga oid ko‘rsatmalardan farqli o‘laroq, Keyin operatoridan oldin xesh belgisi qo‘ying — #Keyin

Amaliyot 6. “RLS dan foydalanish” ni almashtiring

Keling, cheklash tizimimizni rekord darajada cheklovdan foydalanishni yoqadigan/o'chiradigan kalit bilan to'ldiraylik.

Buning uchun Constant va "UseRLS" nomli sessiya parametrini qo'shing.

Seans modulida konstanta qiymatidan seans parametrining qiymatini o'rnatamiz.

Barcha kirishni cheklash matnlariga quyidagi kodni qo'shing:

"#If &UseRLS #U holda….. #EndAgar"

Biz tekshiramiz - hamma narsa ishlaydi.

Biroq, endi "radardan foydalanish" bayrog'i yoqilgandan so'ng, o'zgarishlar darhol kuchga kirmaydi. Nega?

Chunki sessiya parametri sessiya boshlanganda o'rnatiladi.

Yangi doimiy qiymat yozilganda seans parametrlarini tiklash mumkin, lekin bu faqat joriy foydalanuvchi sessiyasi uchun ishlaydi. Boshqa foydalanuvchilarga tizimni qayta ishga tushirishni so'rash kerak.


Birinchi qismning oxiri.

Chop etish (Ctrl+P)

Ma'lumotlarga kirishni cheklash

Ma'lumotlarga kirishni cheklash mexanizmi (shuningdek, RLS, Row Level Security nomi bilan ham tanilgan) kirish huquqlarini nafaqat metadata ob'ektlari darajasida, balki 1C: Enterprise ma'lumotlar bazasi ob'ektlari darajasida ham boshqarish imkonini beradi. Ma'lumotlarga kirishni cheklash uchun quyidagi 1C: Enterprise ob'ektlaridan foydalanish mumkin:
● rollar,
● seans parametrlari,
● funktsional imkoniyatlar,
● imtiyozli umumiy modullar,
● kalit so'z so'rovlar tilida RUXSAT BERILGAN.
Ushbu ob'ektlarni almashish turli funktsiyalarni bajaradigan foydalanuvchilar o'rtasida ma'lumotlarga kirish huquqlarini farqlash zarur bo'lganda maksimal moslashuvchanlikni ta'minlash imkonini beradi.
Ma'lumotlarga kirish cheklovlari quyidagi ma'lumotlar operatsiyalariga (kirish huquqlari) qo'llanilishi mumkin: o'qish (o'qish huquqi), qo'shish (qo'shish huquqi), o'zgartirish (o'zgartirish huquqi) va o'chirish (o'chirish huquqi). Joriy foydalanuvchi quyidagi hollarda so'ralgan operatsiyani bajarishi mumkin:
● O'qish va o'chirish operatsiyalari uchun ma'lumotlar bazasidagi ob'ekt ma'lumotlarga kirish chekloviga mos kelishi kerak.
● Qoʻshish operatsiyasi uchun maʼlumotlarga kirish cheklovi maʼlumotlar bazasiga yozishni rejalashtirgan obʼyektga mos kelishi kerak.
● O'zgartirish operatsiyasi uchun ma'lumotlarga kirishni cheklash ob'ektga o'zgartirishdan oldin (o'qilishi kerak bo'lgan ob'ekt uchun) va o'zgartirishdan keyin (yozilishi kerak bo'lgan ob'ekt uchun) mos kelishi kerak.
Ma'lumotlarga kirishni cheklashda shuni yodda tutingki, o'zgartirish, qo'shish va o'chirish operatsiyalari uchun faqat bitta shart, o'qish uchun esa bir nechta ma'lumotlarga kirish cheklovlari belgilanishi mumkin. Bu shuni anglatadiki, ob'ektning turli sohalarini o'qish uchun turli xil shartlar o'rnatilishi mumkin va shart qo'yishda siz ma'lum bir maydon nomini ham, boshqa maydonlar maxsus maydonini ham belgilashingiz mumkin. Birinchi holda, shart faqat tanlov (ma'lumotlarni o'qiyotgan) cheklash o'rnatilgan maydonni o'z ichiga olgan holda qo'llaniladi va ikkinchi holatda, cheklash ob'ektning barcha maydonlariga qo'llaniladi, bundan tashqari. cheklovlar aniq belgilangan maydonlar uchun.
Muayyan maydonga cheklov o'rnatilganda, agar cheklov bajarilgan bo'lsa, ushbu maydon o'qiladi va Boshqa maydonlarga cheklov o'rnatilganda, ob'ekt ma'lumotlari faqat ma'lumotlarni o'qish so'roviga kiritilgan barcha ob'ekt maydonlari uchun cheklov bajarilgan taqdirda o'qiladi. .
Quyidagi turdagi ma'lumotlar bazasi ob'ektlari uchun turli xil cheklovlar qo'llanilishi mumkin turli xil turlari o'zgartirishlar (qo'shish, o'zgartirish, o'chirish):
● Rejalarni almashish,
● Qo‘llanmalar,
● Hujjatlar,
● Rejalar xususiyatlarining turlari,
● Hisoblar jadvallari,
● turar-joy turlarining rejalari,
● Biznes jarayonlari,
● Vazifalar.
Ma'lumotlar bazasi ob'ektlarining quyidagi turlari uchun nafaqat butun ob'ektni, balki uning alohida maydonlarini ham o'qishga cheklovlar qo'yish mumkin:
● Rejalarni almashish,
● Qo‘llanmalar,
● Hujjatlar,
● Hujjat jurnallari,
● Xarakterli turlarning rejalari,
● Hisoblar jadvallari,
● turar-joy turlarining rejalari,
Axborot registrlari,
● Biznes jarayonlari,
● Vazifalar.
DIQQAT! Xususiyatlar orqali ma'lumotlar bazasi ob'ektlarining maydonlariga kirishda qo'llaniladigan ob'ektlar o'rnatilgan 1C: Enterprise tilidan faqat foydalanilgan maydonning qiymati emas, balki butun ob'ekt o'qiladi. Ko'rinish qabul qilinganda, faqat ko'rinishni yaratishda ishtirok etadigan maydonlarning qiymatlari o'qilishi bundan mustasno.
Kirish cheklovlari rollarda mavjud bo'lib, ular ko'pgina metama'lumotlar ob'ektlari uchun belgilanishi mumkin va so'rovlar tilining kichik to'plami bo'lgan maxsus tilda yoziladi.

Ma'lumotlarga kirishni cheklash tili

Ma'lumotlarga kirish cheklovlari so'rovlar tilining kichik to'plami bo'lgan maxsus tilda tasvirlangan ( batafsil tavsif so'rov tili. Ma'lumotlarga kirishni cheklash tili so'rovlar tiliga nisbatan quyidagi o'zgarishlarga ega:
● Ma'lumotlarga kirishni cheklash so'rovida ma'lumotlar manbai sifatida har doim bitta jadval mavjud bo'lib, u cheklov qo'yilgan ob'ekt jadvali (cheklovning asosiy ob'ekti).
● So‘rov tavsifi qisqartirildi. Ma'lumotlarga kirishni cheklash tili faqat so'rovlar tilining FROM va WHERE bo'limlaridan foydalanadi. Shunday qilib, so'rovlar tilining tavsifi quyidagicha:
[RUXSAT BERILGAN] [TURLI] [ BIRINCHI<Количество> ]
<Tanlov maydonlari ro'yxati>
[FROM <Список источников> ]
[QAYERDA<Условие отбора> ]
[GURUH BO'YICHA <Поля группировки> ]
[BO'LGAN<Условие отбора> ]
[O'ZGARISH UCHUN [ <Список таблиц yuqori daraja> ]]
Ma'lumotlarga kirishni cheklash so'rovi tilining tavsifi quyidagicha:
[Asosiy cheklash obyektining jadval taxalluslari]
[FROM <Список источников> ]
[QAYERDA<Условие отбора> ]

Ma'lumotlarga kirishni cheklash tilida ishlatiladigan quyi so'rovlar cheklangan ruxsat etilgan imkoniyatlarga ega;
● Shart elementlari sifatida seans parametrlari va funksional parametrlarini belgilashingiz mumkin;
● Maʼlumotlarga kirishni cheklash soʻrovining istalgan joyida cheklashlarni yozishni osonlashtirish uchun shablonlardan foydalanish mumkin.
Cheklovning asosiy qismi ma'lumotlar bazasi jadvalidagi ma'lumotlarga kirish chekloviga bo'ysunadigan har bir yozuv uchun baholanadigan shartdir. Agar cheklashning asosiy ob'ekti jadvalining bitta yozuvi uchun shart natijasida bo'sh bo'lmagan jadval (ya'ni 1 yoki undan ortiq yozuvlar mavjud jadval) olingan bo'lsa, yozuv mavjud deb hisoblanadi. Agar shart bo'sh jadvalga olib kelsa, shart shu tarzda bajarilgan yozuv kirish mumkin emas deb hisoblanadi. Bundan tashqari, asosiy cheklash ob'ekti jadvalining yozuvini o'zgartirish
agar yozuv o‘zgartirish amaliyoti amalga oshirilgunga qadar ham, keyin ham huquq uchun belgilangan cheklovni buzmasa, haqiqiy hisoblanadi.

Jadval maydonlari

Ma'lumotlarga kirish cheklovlarida siz quyidagilardan foydalanishingiz mumkin:
● Ma'lumotlarga kirishni cheklash tasvirlangan ob'ektning jadval maydonlari.
Masalan, agar kontragentlar katalogining elementlarini o'qishga cheklov qo'yilgan bo'lsa, cheklashda kontragentlar katalogining maydonlari va uning jadval qismlari ishlatilishi mumkin. Xususan, kontragentlar katalogining elementlarini o'qish bo'yicha eng oddiy cheklovlar quyidagicha ko'rinishi mumkin:

QAYER nomi = "G'isht zavodi"
Yoki shunday:

QAYERDA Mahsulotlar nomi= "G'isht qizil"
Mahsulot qayerda jadval qismi Kontragentlar katalogi.
● Asosiy cheklash ob'ektidagi havolalar orqali kirish mumkin bo'lgan ob'ektlarning jadval maydonlari.
Masalan, agar kontragentlar katalogining asosiy menejeri atributi Foydalanuvchilar katalogiga havola turiga ega bo'lsa, kirishni cheklash, masalan, quyidagi shaklga ega bo'lishi mumkin:

QAYERDA PrimaryManager.Code= "Ivanov"
Yoki:

QAYERDA PrincipalManager.Individual.Name= "Petrovskiy"
● Asosiy cheklash ob'ekti bilan muayyan shartlar va ular ustidagi ifodalar bilan bog'langan ob'ektlarning jadval maydonlari.
Masalan, kontragentlar katalogining elementlarini o'qishga quyidagi cheklov qo'yilishi mumkin:

Qarama-qarshi tomonlar
FROM
Katalog. Pudratchilar AS kontragentlar
CHAPGA QO'SHILING Directory.Users QANDAY foydalanuvchilar
SW = Users.Name
QAYER = "Petrovskiy"
Ushbu cheklash Kontragentlar katalogining ushbu elementi bilan bog'langan "Foydalanuvchilar" katalogi elementlarining "Ism" maydonlarining qiymati bo'yicha maydonlaridan foydalanadi.

Quyi soʻrovlar

Quyi so'rovlar quyidagi yozuvlar to'plamini yaratish uchun ishlatiladi:
● asosiy cheklash ob'ektining jadvali bilan bog'lash uchun;
● IN yoki NO IN solishtirish operatsiyalarining operandi sifatida foydalanish uchun.
Quyi soʻrovlar soʻrovlar tilining istalgan funksiyasidan foydalanishi mumkin, bundan tashqari:
● IEARXİYADA operator;
● NATIJALARNI taklif qiladi;
● o'rnatilgan so'rovlar natijalari jadval qismlarini o'z ichiga olmaydi;
● ba'zi virtual jadvallar, xususan Qoldiqlar va aylanmalar.
Qarama-qarshi tomonlar katalogidan o'qishni cheklashning quyidagi misolida, cheklovning asosiy ob'ektiga ulanish uchun yozuvlar to'plami sifatida kichik so'rov ishlatiladi:

Qarama-qarshi tomonlar
FROM
Katalog. Pudratchilar AS kontragentlar
CHAPGA QO'SHILING
(tanlash
Foydalanuvchilar.Ism, Foydalanuvchilar.Individual
FROM
Directory.Users QANDAY foydalanuvchilar
QAYERDA
Users.Code> “Petechkin”) AS foydalanuvchilari
ON Qarama-qarshi tomonlar.MainManager.Name = Foydalanuvchilar.Ism
QAYERDA Foydalanuvchilar.Individual.Ism= "Petrovskiy"
Quyidagi misolda Individuallarning PassportData katalogidan oʻqishga boʻlgan cheklov koʻrsatilgan, unda quyi soʻrov ishlatiladi.
taqqoslash operatori B operandi sifatida:

QAYERDA
PassportDataIndividual.Individual V
(TURLI TANLANG
Xodimlar. Individual INDIVIDUAL sifatida
FROM
Axborot reestri. Xodimlar AS ishchilari)
Agar siz quyi so'rovdagi jadval bo'limidan ma'lumotlarni olishingiz kerak bo'lsa, unda quyi so'rovning FROM bo'limida jadval bo'limiga to'g'ridan-to'g'ri kirishingiz kerak. Masalan, o'rniga:

Havolani havola sifatida tanlang.
Mahsulotlar nomi QANAQASIGA Mahsulot nomi
FROM Katalog. Pudratchilar
cheklovga joylashtirilgan so'rov sifatida siz quyidagilarni ishlatishingiz kerak:

Seans parametrlari

Ma'lumotlarga kirishni cheklash so'rovlari sessiya parametrlarini o'z ichiga olishi mumkin. Masalan, katalog elementlarini o'qish uchun Elektron pochta guruhlari quyidagi kirish cheklovi o'rnatilishi mumkin:

QAYERDA Owner.AccountAccess.User = &CurrentUser
VA Owner.AccessAccount.Administration= ROS

CurrentUser seans parametridir

Funktsional variantlar

Ma'lumotlarga kirishni cheklash so'rovlari funktsional variantlarni o'z ichiga olishi mumkin. Faqat parametrga bog'liq bo'lmagan funksiya opsiyalaridan foydalanish mumkin. Masalan, agar Nomenklaturani qidirishda Main Warehouse atributi bo'lsa, u holda ushbu atributni o'qishga bo'lgan cheklov quyidagicha ko'rinishi mumkin:

WHERE &Warehouse Accounting = TRUE

Bu erda ombor hisobi funktsional variant hisoblanadi

Foydalanish xususiyatlari

Quyidagi turdagi ma'lumotlar bazasi ob'ektlari uchun cheklovlarda asosiy ma'lumotlar ob'ektining barcha maydonlaridan foydalanish mumkin emas:
● jamg'arish registrlarida kirish cheklovlari faqat asosiy cheklash ob'ektining o'lchovlarini o'z ichiga olishi mumkin;
● Cheklovlardagi buxgalteriya registrlarida siz faqat cheklovning asosiy ob'ektining balans o'lchamlaridan foydalanishingiz mumkin.
ESLATMA. Agar jamg'arish aylanmasi reestri ma'lumotlariga kirishni cheklash sharoitida jamlamalarga kiritilmagan o'lchovlar qo'llanilsa, u holda
aylanmalarning virtual jadvaliga kirishda saqlangan summalar ishlatilmaydi va so'rov harakatlar jadvaliga muvofiq to'liq bajariladi.

Kirishni cheklash harakatlari

Kirish cheklovlari ma'lumotlar bazasi ob'ektlarida (muloqot oynalaridan, o'rnatilgan tildan, so'rovlar orqali) har qanday tegishli operatsiyalar bajarilganda tekshiriladi va ikkita usuldan birida harakat qilishi mumkin:
● Hammasi. "Hammasi" usuli ma'lumotlarning ba'zi operatsiyalarini (muloqot oynalaridan, o'rnatilgan tildan yoki so'rovlar orqali) ushbu operatsiya nazarda tutilgan barcha ma'lumotlar bazasi ob'ektlarida bajarish kerakligini anglatadi. Agar bunday operatsiya tegishli kirish cheklovlari bajarilmagan ma'lumotlar bazasi ob'ektlarini o'qishi yoki o'zgartirishi kerak bo'lsa, operatsiya tugaydi.
kirish buzilishi tufayli ishdan chiqdi.
● Ruxsat berilgan. "Ruxsat etilgan" usul ma'lumotlar bilan operatsiyani bajarishda faqat tegishli kirish cheklovlarini qondiradigan ma'lumotlar bazasi ob'ektlarini o'qish kerakligini anglatadi. Kirish cheklovlariga javob bermaydigan ma'lumotlar bazasi ob'ektlari bunday operatsiya davomida yo'qolgan deb hisoblanadi va operatsiya natijasiga ta'sir qilmaydi.
1C: Enterprise ma'lumotlar bazasiga kirishda ma'lumotlar bazasi ob'ektlariga ma'lumotlarga kirish cheklovlari qo'yiladi. 1C: Enterprise mijoz-server versiyasida cheklovlar 1C: Enterprise serverida qo'llaniladi.
Ma'lumotlar bo'yicha har bir operatsiyani bajarish uchun tanlangan cheklovlarning ta'sir qilish tartibi ushbu operatsiyaning maqsadi va uning natijalari uchun javobgarlik darajasi bilan belgilanadi. Xususan, ko'rsatishda "ruxsat berilgan" usuli qo'llaniladi dinamik ro'yxatlar va boshqa interaktiv tadbirlar. "Hammasi" usuli o'rnatilgan 1C: Enterprise tilidan dastur ob'ektlari bilan har qanday operatsiyalarni bajarishda, shu jumladan ma'lumotlar bazasi ob'ektlariga har qanday o'zgarishlarni amalga oshirishda qo'llaniladi. Shuning uchun, masalan, ma'lumotnomalar, hujjatlar va boshqalar menejerlari uchun Select() usulini tanlash qiyin bo'lishi mumkin, agar mos keladigan ob'ektga etarlicha murakkab cheklov o'rnatilgan bo'lsa, natijani chetlab o'tish qiyin bo'lishi mumkin, chunki har bir shart emas. kirish huquqlarini cheklashda Select() usuli uchun tanlov sifatida etarli darajada ifodalanishi mumkin.
So'rovlarda siz ma'lumotlarga kirish cheklovlari qanday ishlashini boshqarishingiz mumkin. Buning uchun so'rovlar tili kalit so'zni taqdim etadi RUXSAT BERILGAN. Agar so'rovda RUXSAT BERILGAN ko'rsatilmagan bo'lsa, cheklovlar "hamma" usulida qo'llaniladi. Agar RUXSAT BERILGAN so'z ko'rsatilgan bo'lsa, u holda "ruxsat berilgan" usuli tanlanadi.
Muhimi, agar so'rovda RUXSAT BERILGAN kalit so'z ko'rsatilmagan bo'lsa, u holda ushbu so'rovda ko'rsatilgan barcha filtrlar so'rovda foydalanilgan ma'lumotlar bazasi ob'ektlarini o'qishga qo'yilgan hech qanday cheklovlarga zid bo'lmasligi kerak. Bundan tashqari, agar so'rovda virtual jadvallar ishlatilsa, virtual jadvallarning o'ziga tegishli filtrlar o'rnatilishi kerak.
Misol:

TANLASH
Aloqa ma'lumotlariSliceFirst.View
FROM RegisterInformation.ContactInformation.SliceLast(, Type = &Type)
QANAQASIGA Aloqa ma'lumotlariSliceFirst
QAYERDA
ContactInformationSliceFirst.Type = &Type
Ob'ekt texnikasidan foydalanganda RUXSAT BERILGAN rejimda ma'lumotlarga kirish qo'llab-quvvatlanmaydi. Ob'ekt texnikasi ma'lumotlar bo'yicha eng muhim operatsiyalar, shu jumladan ularni o'zgartirish uchun ishlatiladi deb taxmin qilinadi. O'rnatilgan cheklovlardan qat'i nazar, ob'ekt texnologiyasidan foydalangan holda barcha ma'lumotlarni olish uchun siz imtiyozli modulda yoki to'liq huquqlarga ega bo'lgan foydalanuvchi nomidan kerakli harakatlarni bajarishingiz mumkin. Ob'ekt texnologiyasida faqat ruxsat etilgan ma'lumotlarni olish vositalari mavjud emas.

Cheklash mexanizmi

1C: Enterprise-da ma'lumotlar bazasida saqlangan ma'lumotlar bilan bog'liq har qanday operatsiya oxir-oqibat ma'lumotlar bazasiga ba'zi ma'lumotlar bilan kirishga olib keladi.
ma'lumotlarni o'qish yoki o'zgartirish uchun so'rov. Ma'lumotlar bazasiga so'rovlarni bajarishda 1C: Enterprise ning ichki mexanizmlari kirish cheklovlarini qo'yadi. Bunda:
● Huquqlar roʻyxati (oʻqish, qoʻshish, yangilash, oʻchirish), maʼlumotlar bazasi jadvallari roʻyxati va ushbu soʻrov tomonidan foydalaniladigan maydonlar roʻyxati yaratiladi.
● Joriy foydalanuvchining barcha rollaridan so'rovga jalb qilingan barcha huquqlar, jadvallar va maydonlar uchun ma'lumotlarga kirish cheklovlari tanlangan. Bundan tashqari, agar biron bir rol biron bir jadval yoki maydon ma'lumotlariga kirish cheklovlarini o'z ichiga olmasa, bu har qanday yozuvdagi kerakli maydonlarning qiymatlari ushbu jadvalda mavjudligini anglatadi. Boshqacha qilib aytganda, ma'lumotlarga kirishni cheklashning yo'qligi cheklov mavjudligini anglatadi
Haqiqat QAYERDA.
● Tanlangan cheklovlarda ishtirok etuvchi barcha seans parametrlari va funksional parametrlarining joriy qiymatlari olinadi.
Seans parametrining qiymatini joriy foydalanuvchidan olish ushbu qiymatni olish huquqini talab qilmaydi. Biroq, ba'zi bir seans parametrining qiymati o'rnatilmagan bo'lsa, unda xatolik yuzaga keladi va ma'lumotlar bazasi so'rovi bajarilmaydi.
Funktsional variantlarni qidirishga funktsional opsiyaning qidirish xususiyatiga imtiyozli rejim ta'sir qiladi.
Agar bu xususiyat o'chirilgan bo'lsa, u holda joriy foydalanuvchi funktsiya opsiyasi saqlanadigan ob'ektni o'qish huquqiga ega bo'lishi kerak.
● Xuddi shu roldan olingan cheklovlar AND operatsiyasi bilan birlashtiriladi.
● Turli rollardan olingan cheklashlar birgalikda OR qilinadi.
● Tuzilgan shartlar SQL so'rovlariga qo'shiladi, ular yordamida 1C: Enterprise ma'lumotlar bazasini chaqiradi. Ma'lumotlarga kirishni cheklash shartlaridan kirishda huquqlar tekshirilmaydi (na metadata ob'ektlariga, na ma'lumotlar bazasi ob'ektlariga). Bundan tashqari, shartlarni qo'shish mexanizmi "barcha" yoki "ruxsat etilgan" cheklovlarning tanlangan ish rejimiga bog'liq.
"Hamma narsa" usuli
"Hammasi" usuli yordamida cheklovlar qo'yilganda, 1C: Enterprise ma'lumotlar bazasi so'rovini bajarish jarayonida ushbu foydalanuvchi uchun taqiqlangan ma'lumotlardan foydalanilganmi yoki yo'qligi haqida ma'lumot olishi uchun SQL so'rovlariga shartlar va maydonlar qo'shiladi. . Agar taqiqlangan ma'lumotlardan foydalanilgan bo'lsa, so'rov bekor qilinadi. "Hamma" usuli bilan kirish cheklovlarini o'rnatish sxematik tarzda shaklda ko'rsatilgan. biri:

Guruch. 1. “Hammasi” usuli

"Ruxsat berilgan" usuli
"Ruxsat berilgan" usuli yordamida cheklovlar qo'yilganda, joriy foydalanuvchi uchun taqiqlangan yozuvlar so'rov natijasiga ta'sir qilmasligi uchun bunday shartlar SQL so'rovlariga qo'shiladi. Boshqacha qilib aytganda, "ruxsat etilgan" rejimda cheklovlar qo'yilganda, ushbu foydalanuvchi uchun taqiqlangan yozuvlar yo'qolgan deb hisoblanadi, bu sxematik ravishda 3-rasmda ko'rsatilgan.

Ma'lumotlarga kirish cheklovlari bilan bog'liq boshqa ob'ektlar

Ma'lumotlarga kirish cheklovlaridan foydalangan holda konfiguratsiyalarni ishlab chiqishda seans parametrlari, funktsional parametrlar va Imtiyozli bayroqli umumiy modullar kabi metama'lumotlar ob'ektlari foydali bo'lishi mumkin.
Seans parametrlari
Seans parametrlari ma'lumotlarga kirish cheklovlarida xuddi so'rovda so'rov parametrlaridan foydalanish mumkin bo'lgan tarzda ishlatilishi mumkin.
Funktsional variantlar
Parametrga bog'liq bo'lmagan funktsional variantlar ma'lumotlarga kirish cheklovlarida so'rovda so'rov parametrlaridan foydalanish kabi ishlatilishi mumkin.
Imtiyozli umumiy modullar

Agar umumiy modul uchun Imtiyozli katakcha belgilansa, ushbu modulning protseduralari va funktsiyalarini bajarish muhim xususiyatlarga ega bo'ladi:
● 1C: Enterprise mijoz-server versiyasida faqat serverda ishlaydigan modulga imtiyoz berilishi mumkin.
● Imtiyozli modulning protseduralari va funktsiyalari va ulardan chaqiriladigan barcha narsalar cheklash tizimi o'chirilganda amalga oshiriladi.
metadata ob'ektlari va ma'lumotlarga bo'lgan huquqlar. Shunday qilib, imtiyozli moduldan istalgan operatsiyani bajarish mumkin
har qanday ob'ektlar, hatto joriy foydalanuvchi tegishli huquqlarga ega bo'lmasa ham.
Imtiyozli modullar ma'lumotlarga kirish cheklovlarida ishlatiladigan seans parametrlari qiymatlarini dastlabki sozlash uchun mo'ljallangan.
Hali ham umumiy modullar cheklangan huquqlarga ega foydalanuvchi tomonidan ma'lumotlar bo'yicha ba'zi yaxlit harakatlar uchun ishlatilishi mumkin.
Misol uchun, agar foydalanuvchining funktsiyalari hujjatlarni kiritish va joylashtirishni o'z ichiga olsa, lekin foydalanuvchi hujjatni joylashtirishga ta'sir qiladigan ma'lumotlarga kirish huquqiga ega bo'lmasligi kerak bo'lsa, u holda joylashtirish operatsiyasining bajarilishi imtiyozli modulga o'tkazilishi mumkin. Bu foydalanuvchiga boshqa ma'lumotlarga (masalan, registrlarga) huquqlar bermasdan hujjatlarni joylashtirish imkonini beradi.
Imtiyozli rejim
Ma'lumotlar bilan ishlashda imtiyozli rejimni dasturiy ravishda o'rnatish mumkin. Dasturiy ta'minotni o'rnatish imtiyozli rejim
massiv ma'lumotlar bilan ishlashda talab qilinishi mumkin axborot bazasi, va ma'lumotlarga kirish huquqlarini tekshirish mantiqiy emas.
Imtiyozli rejim tavsifi uchun bu yerga qarang.

Preprotsessordan foydalanish

Ma'lumotlarga kirishni cheklash matnini tahrirlashda protsessor ko'rsatmalaridan foydalanish mumkin. Quyidagi ko'rsatmalar mavjud:

#AGAR<Выражение>#KEYIN
#ELSEIF<Выражение>#KEYIN
#BOSHQA
#ENDESSI
<Выражение>- o'zboshimchalik bilan mantiqiy ifoda o'rnatilgan tilda, uning natijasi mantiqiy turdagi. Ifoda quyidagilarni o'z ichiga olishi mumkin:
● solishtirish operatsiyalari<, >, <=, >= , =, <> ;
● mantiqiy amallar VA, OR, EMAS ;
● Sessiya parametrlari - sintaksisi &Parameter , bu erda Parametr seans parametrining nomidir.
Agar #IF yoki #ELSEIF bayonoti ifodasi natijasi True bo'lsa, u holda #THEN kalit so'zidan keyingi matn kirishni cheklash bayonotining natijaviy matniga joylashtiriladi. Agar ifoda False deb baholansa, u holda #THEN kalit so'zidan keyingi matn kirishni cheklash bo'yicha ko'rsatma matniga joylashtirilmaydi. Agar oldingi shartlarning hech biri bajarilmasa, #ELSE bayonotidan keyingi matn kirishni cheklash matniga joylashtiriladi.
ESLATMA. Agar ma'lumotlarga kirishni cheklash matnida dastlabki protsessor ko'rsatmalari mavjud bo'lsa, unda bunday cheklash tahrirlashda sintaksis tekshiruvidan o'tmaydi va konstruktor yordamida o'zgartirilishi mumkin emas.
Misol:

#IF &Joriy foydalanuvchi<>"Klimova" #KEYIN
<текст ограничения доступа>
#ENDESSI
Bu yerda Hozirgi foydalanuvchi- turning sessiya parametri DirectoryLink.Users.
Ushbu qurilish, kirish cheklovlarini o'rnatish sharti Klimova foydalanuvchisidan tashqari barcha foydalanuvchilar uchun katalogdan tekshirilishini anglatadi.

Cheklangan matn shablonlariga kirish

Rol rol shaklining Cheklash shablonlari yorlig'ida tasvirlangan kirishni cheklash shablonlari ro'yxatini o'z ichiga olishi mumkin. Shuningdek, kirishni cheklash shablonlarini kirish cheklovlari va shablonlarini guruh tahrirlash muharririda tahrirlash mumkin.
Har bir kirishni cheklash shablonida nom va matn mavjud. Shablon nomi 1C: Enterprise tizimida qabul qilingan nomlar uchun odatiy qoidalarga amal qiladi.
Shablon matni ma'lumotlarga kirishni cheklash tilidagi matnning bir qismini o'z ichiga oladi va belgi bilan ta'kidlangan parametrlarni o'z ichiga olishi mumkin.
“#”.
Belgidan keyin “#” amal qilishi mumkin:
● Kalit so‘zlardan biri:
● Qavslar ichidagi shablondagi parametrdan keyin parametr raqami;
● CurrentTable – matnga cheklov qurilayotgan jadvalning to‘liq nomini kiritishni bildiradi;
Current TableName– o‘rnatilgan tilning joriy versiyasida ko‘rsatma qo‘llaniladigan jadvalning to‘liq nomini (satr qiymati sifatida, qo‘shtirnoq ichida) matnga kiritishni bildiradi;
● NameCurrentAccessRight - joriy cheklov amalga oshirilayotgan huquq nomini o'z ichiga oladi: O‘QISH/O‘QISH, QO‘SHISH/QO‘SHISH, O‘ZGARISH/
YANGILASH, OʻCHIRISH;
● shablon parametr nomi – matnga mos shablon parametrining cheklanishini kiritishni bildiradi;
● “#” belgisi – matnga bitta “#” belgisini kiritishni bildiradi.

Kirishni cheklash ifodasi quyidagilarni o'z ichiga olishi mumkin:

● Formatda ko'rsatilgan kirishni cheklash namunasi
#TemplateName("Shablon parametr qiymati 1", "Shablon parametr qiymati 2", ...). Har bir shablon parametri qo'sh tirnoq ichiga olingan. Parametr matnida qo'sh tirnoq belgisini belgilashingiz kerak bo'lsa, ikkita qo'sh tirnoqdan foydalaning.
● Funktsiya StrContains (Biz qidirayotgan joy, nima izlayotganimiz). Funktsiya WhatLooking for satrida WhatLooking hodisasini qidirish uchun mo'ljallangan. Agar moslik topilsa True, aks holda False qaytaradi.

● Satrlarni birlashtirish uchun + operatori.
Shablon matnini tahrirlash qulayligi uchun rol formasidagi Cheklash shablonlari yorlig'ida Shablon matnini o'rnatish tugmasini bosing. Ochilgan muloqot oynasida shablon matnini kiriting va OK tugmasini bosing.
1C: Enterprise tizimi shablon matnlari sintaksisini tekshiradi, shablonlardan foydalanish sintaksisini tekshiradi va so'rov matniga rolga kirishni cheklash shablonlari matnlarini so'l bilan almashtiradi.
Shablonni makro almashtirish:
● shablon matnidagi parametrlarni cheklash matnidagi shablondan foydalanish ifodasidan parametr qiymatlari bilan almashtirish;
● so'rov matnidagi shablondan foydalanish ifodasini olingan shablon matni bilan almashtirishda.
Kirishni cheklash naqshlarini o'z ichiga olgan shart uchun so'rov konstruktorini chaqirganda, barcha naqshlarni almashtirish haqida ogohlantirish beriladi.
Quyida cheklash namunalariga misollar keltirilgan:

Foydalanuvchilarning ma'lumotlarga kirishini funktsiyalarga muvofiq moslashuvchan boshqarish uchun ma'lumotlarga kirish cheklovlarini o'rnatishda tavsiya etiladi.
quyidagi tamoyillarga amal qiling:
● Dastlabki tayyorgarlik mos keladigan ma'lumotlar to'plamini (joriy foydalanuvchiga bog'liq bo'lishi mumkin) tanlashingiz kerak. Tanlangan ma'lumotlar, bir tomondan, ma'lumotlarga kirish cheklovlarini imkon qadar soddalashtirishi kerak, ikkinchi tomondan, juda katta bo'lmasligi kerak. Uni sessiya parametrlari bo'yicha taqsimlang.
● Seans modulining SetSessionParameters() ishlovchisida seans parametrlarining qiymatlarini o‘rnating.
● O'zini oqlagan ma'lumotlarga kirish cheklovlarini o'rnating (ma'lumotlar maxfiy yoki tizimning yaxlitligini ta'minlash uchun eng muhimi). Yodda tutingki, kirish cheklovlarini o'rnatish ushbu ma'lumotlarga kirishni sekinlashtirishi mumkin. Haddan tashqari murakkab cheklovlar ham sekinlashuvga olib kelishi mumkin.
● Agar ushbu ma'lumotlarga to'liq kirish huquqini berish nomaqbul bo'lgan foydalanuvchi tomonidan ma'lum cheklangan miqdordagi operatsiyalarni bajarishini ta'minlash kerak bo'lsa, ushbu amallarni imtiyozli modullarga o'tkazing yoki imtiyozli rejimni aniq yoqing va o'chiring. dastur kodining tegishli joylari.
● Ob'ektlarni yozishda tizim amalga oshiradigan turli tekshiruvlarga imtiyozli rejimda kirish mumkin.

Bu, agar konfiguratsiya ushbu ma'lumotlar bilan ishlayotgan bo'lsa, tegishli maydonlar uchun yozuvlar darajasidagi huquqlarga cheklovlarni o'chirmaslikka imkon beradi.
faqat boshqariladigan rejimda rejalashtirilgan:

● kodning ota-onasi, egasi va o'ziga xosligini tekshirishda kataloglar uchun;
● hujjatlar, biznes jarayonlari va raqamlarning yagonaligini tekshirishda topshiriqlar uchun;
● almashinuv rejalari uchun kodning o'ziga xosligini tekshirishda u o'chiriladi;
● ota-onani va kodning o'ziga xosligini tekshirishda hisoblar jadvallari va xarakterli turdagi jadvallar uchun.

Ma'lumotni cheklash so'rovini yaratishda ba'zi cheklovlar va xususiyatlarni yodda tutish kerak:

● Agar ob'ekt jadvali uchun ma'lumotlarga kirish cheklovlari o'rnatilgan bo'lsa va ma'lumotlar so'rovida bunday jadval bilan birlashma ishlatilsa, u holda birlashish sharti (dasturiy ta'minot so'rovi bo'limi) belgilangan kirish cheklovi bilan ob'ektning jadval qismidan foydalanishga ruxsat bermaydi.
● Agar so'rovda so'rovda bitta maydon ishlatmaydigan jadval ko'rsatilgan bo'lsa, u holda ma'lumotlarga kirish uchun barcha cheklovlar ushbu jadvalga o'rnatiladi. Masalan, so'rov MIQDORNI(*) Directory.CounterpartiesDAN TANlang Test katalogi uchun belgilangan barcha kirish cheklovlariga rioya qilgan holda bajariladi. Cheklovlar "OR tomonidan" o'rnatiladi. Bu kamida bitta shart bo'yicha kirish mumkin bo'lgan barcha yozuvlar mavjud bo'lishini anglatadi. Agar ba'zi maydonlar uchun shartlar o'rnatilmagan bo'lsa, so'rov barcha jadval yozuvlari uchun bajariladi.
Agar so'rovda yuqori darajadagi jadval ishlatilsa, u holda ichki o'rnatilgan jadvallar ustunlari uchun belgilangan cheklovlar qo'llanilmaydi.
Agar so'rovda ichki o'rnatilgan jadval ishlatilsa, u holda cheklovlar ichki jadvalga ham, yuqori darajadagi jadvalga ham qo'llaniladi.
Masalan, so'rov MIQDORNI(*) Directory.Counterparties.Agreements.DAN TANlang Kontragentlar ma'lumotnomasi uchun barcha cheklovlarni hisobga olgan holda, shuningdek, Shartnomaning jadval qismi bilan bog'liq cheklovlarni hisobga olgan holda amalga oshiriladi.

● Agar havola qilingan metamaʼlumotlar obyekti koʻrinishini olish uchun zarur boʻlgan maydonlarga kirish quyidagi cheklovlar bilan taqiqlangan boʻlsa
kirish darajasida ma'lumotlar yoki ob'ektga kirish taqiqlangan bo'lsa, bunday ob'ektning taqdimotini olish joriy tranzaksiya jarayoniga ta'sir qilmaydi.

Ma'lumotlarga kirishni cheklash konstruktori

Ma'lumotlarga kirish cheklovlari jadvali maydonida konstruktorni chaqirish uchun kirishni cheklash ustunida tahrirlash rejimiga o'ting va
tanlash tugmasini bosing va ochilgan shaklda Query Builder… tugmasini bosing.
Konstruktor formasi ekranda ko'rsatiladi:


Guruch. 3. Cheklash konstruktorining "Jadvallar va maydonlar" yorlig'i

Uning yordami bilan ma'lumotlarga kirish cheklovlarini o'rnatish shartlari shakllanadi.
Jadvallar va maydonlar yorlig'ida Ma'lumotlar bazasi ro'yxatidan kerakli ob'ektlarni tanlang va ularni Jadvallar ro'yxatiga o'tkazing. Agar bir nechta jadval ko'rsatilgan bo'lsa, unda "Aloqalar" yorlig'i dizayner shakliga qo'shiladi.


Guruch. 4. Cheklash konstruktorining "Links" yorlig'i

Havolalar yorlig'ida jadval maydonlari orasidagi bog'lanishlarga qo'yiladigan shartlar shakllantiriladi. Yangi shartni kiritish uchun Qo'shish tugmasini bosing va 1-jadval ustunidagi jadvallardan birini tanlang. 2-jadval ustunida maydonlari birinchisining maydonlari bilan bog'liq bo'lgan jadvalni tanlang. Shartlar ro'yxati ostida jadvallarni bog'lash shartini tashkil etuvchi boshqaruv elementlari mavjud.
Agar oddiy shart turi tanlansa, u holda Field1 va Field2 da ko'rsatilgan jadvallarning tegishli maydonlari tanlanadi va taqqoslash sharti o'rnatiladi. Agar solishtirilmagan maydonlar tanlansa, u holda Bog'lanish holati ustunidagi Shartlar ro'yxati qatorida quyidagi matn ko'rsatiladi: Noto'g'ri to'ldirilgan shart.
Shartlar yorlig'ida, agar kerak bo'lsa, manba ma'lumotlari tanlanadigan shartlarni belgilashingiz kerak.


Guruch. 5. Cheklash konstruktorining "Shartlar" yorlig'i

Har bir tanlangan maydon uchun shart turini tanlashingiz va parametr nomini ko'rsatishingiz kerak. Seans parametriga parametr sifatida ruxsat beriladi. Bir nechta shartlarga ruxsat beriladi. Bunda shartlar jadvali maydonining Shart ustunida shart matni bir necha qatorda aks ettiriladi.
So'rovni yaratishda istalgan vaqtda "So'rov" tugmasini bosish orqali so'rov matnini ko'rish mumkin.

Kirish cheklovlari va shablonlarini ommaviy tahrirlash

Kirish huquqlarini cheklash va shablonlarni guruhli tahrirlash rejimi Hamma kirish cheklovlari buyrug'i bilan chaqiriladi kontekst menyusi Rol bo'limlari. Ochilgan shaklda ikkita yorliq mavjud: kirish cheklovlari va cheklash shablonlari.


Guruch. 6 Barcha ruxsat cheklovlari va shablonlari

Xatcho‘p Kirish cheklovlari umumiy ro'yxatda barcha kiritilgan kirish cheklovlarini ko'rishingiz mumkin (barcha rollar, ob'ektlar, huquqlar, maydonlar birikmalari uchun).
Bir vaqtning o'zida bir nechta rollar, ob'ektlar, huquqlar va rollar kombinatsiyasi uchun kirish cheklovini qo'shish mumkin.
Roʻyxatni turli mezonlar boʻyicha filtrlashingiz mumkin.


Guruch. 7. Kirish cheklovlarini tanlash

Guruhni tahrirlash rejimi ro'yxatda tanlangan cheklovlarni o'chirish imkonini beradi.
Tanlangan cheklovlarni tahrirlash mumkin. Bunday holda, maydonlar tarkibini va/yoki kirishni cheklashni o'zgartirish mumkin.
Ommaviy tahrirlash rejimi tanlangan cheklovlarni boshqa rollarga nusxalash imkonini ham beradi.

Xatcho‘p Cheklash shakllari siz dastur yechimida mavjud bo'lgan barcha kirishni cheklash shablonlarini ko'rishingiz mumkin, shu bilan birga jadvalda shablon matnining o'zidan faqat birinchi 10 satr ko'rsatiladi, agar shablon matni 10 qatordan ortiq bo'lsa, "..." belgisi bilan tugaydi. Shablonni tahrirlash oynasida shablonning to'liq matni ko'rsatiladi.


8-rasm. Barcha kirishni cheklash shablonlari

Bir vaqtning o'zida bir nechta rollar uchun kirishni cheklash shablonini qo'shish mumkin.

Salom aziz o'quvchilar. Bugun biz Windows operatsion tizimidagi ma'lumotlarga kirishni cheklash bo'yicha bir qator maqolalarni boshlaymiz.

Bugungi postda siz o'rganasiz Windows-ning o'zi yordamida papkalar va fayllarga kirishni qanday cheklash mumkin, lekin taxminan maxsus dasturlar xuddi shunday qilib, men yozgan keyingi maqolalarda gaplashamiz.
Keling, MicroSoft kompaniyasining tug'ma iste'dodlaridan boshlaylik.

O'rnatilgan Windows vositalari bilan fayl va papkalarga kirishni cheklash.

Cheklov kuchga kirishining zaruriy sharti tizimda administrator huquqlariga ega emas, balki bir nechta hisoblarning mavjudligi, shuningdek, fayl tizimi NTFS formatiga mos keladigan disklarda.
Boshqacha qilib aytganda, administrator administrator huquqiga ega bo'lmagan boshqa foydalanuvchilar uchun yozish, o'qish va hokazolarga cheklovlar qo'yadi.
Bo'ylab hisob administrator huquqlari bilan, kerakli papkaning xususiyatlari unga kirish huquqiga ega bo'lgan foydalanuvchilarni ko'rsatadi. Agar huquqsiz foydalanuvchi jildga kirishga harakat qilsa, parol so'raladi.

Guruh ruxsatlarini o'zgartirish [rad etish]:

Shunday qilib, taqiqlar yordamida kirishni cheklaylik. Buning uchun ustiga bosing kerakli papka yoki sichqonchaning o'ng tugmasi bilan faylni tanlang va - " Xususiyatlari", keyin yorlig'iga o'ting -" Xavfsizlik"va ushbu yorliqda - " tugmasini bosing. O'zgartirish».

Keyin oyna ochiladi, u erda biz tugmani bosamiz " Qo'shish". Bu erda biz tanlangan ob'ektlarning nomlarini (loginlar / foydalanuvchi nomlari) kiritamiz, ular jildga kirishni rad etishda davom etadi. Keyin "bosing" Ismlarni tekshiring' to'g'ri ism kiritganingizga ishonch hosil qilish uchun:

Barcha foydalanuvchilarga kirishni bloklash uchun ismni kiriting " Hamma narsa” (katta harflar sezgir), tizim tushunadi. Keyin ustunda taqiqlash"taqiq qilmoqchi bo'lgan narsalar uchun katakchalarni belgilang va "OK" tugmasini bosing.
Natijada, siz ko'rsatgan foydalanuvchilar ko'rsatilgan papka yoki faylga kira olmaydi, lekin agar ular tizimga faqat o'z akkaunti ostida kirsalar, rost. Bilasizmi, agar kimdir tizimga, masalan, administrator huquqlariga ega flesh-diskdan kirsa, u papkaga va uning barcha tarkibiga kirish huquqiga ega bo'ladi.

Guruh ruxsatnomalarini o‘zgartirish [ruxsatnomalar]:

Keling, papkaga kirishni taqiqlash bilan emas, balki faqat ma'lum foydalanuvchilarga huquqlarni ochish orqali cheklaylik.
Buni amalga oshirish uchun biz barcha foydalanuvchilarni kirish ro'yxatidan olib tashlaymiz va u erda faqat bizga kerak bo'lganlarni qo'shamiz.
Elementni o'chirishga urinayotganda xatolik yuz berishi mumkin, chunki ular sukut bo'yicha asosiy katalogdan meros qilib olinadi. Shunday qilib, biz "bosamiz" Qo'shimcha -> Ruxsatlarni o'zgartirish...' va ' belgisini olib tashlang Asosiy ob'ektlardan meros qilib olingan ruxsatlarni qo'shing»
Windows 10 da "ni bosing. Qo'shimcha"keyingi tugmani bosing" Merosni o'chirish".
Tizim so'raydi " Qo'shish"yoki" Oʻchirish". Windows 10 da tizim sizga ikkita variantni ham beradi - " Meroslangan ruxsatlarni ushbu obyektdagi aniq ruxsatlarga aylantiring"va" Ushbu obyektdan meros qilib olingan barcha ruxsatlarni olib tashlang". Menimcha, bu erda hamma narsa aniq. Qo'shish kerakli foydalanuvchi, ustundagi katakchalarni allaqachon belgilab qo'ying " ruxsat berish».

Keling, xulosa qilaylik

Shunday qilib, bugun, aziz o'quvchilar, biz o'rnatilgan dastur yordamida ba'zi papkalar va fayllarga kirishni cheklashning birinchi imkoniyatini ko'rib chiqdik. Windows vositalari. Bu usul eng ishonchli emas, lekin u "maxfiy materiallar" ni tajribasiz foydalanuvchilarning qiziquvchan ko'zlaridan himoya qilish uchun javob beradi.
Keyingi postda biz boshqasini ko'rib chiqamiz Windows xususiyati, sukut bo'yicha tizimga o'rnatilgan bo'lib, bu sizga qimmatli ma'lumotlarni shifrlash va shu bilan unga kirishni cheklash imkonini beradi. Bu EFS (Encrypting File System) - ishlayotgan fayl darajasida ma'lumotlarni shifrlash tizimi Windows tizimlari(Windows 2000 va undan yuqori versiyalaridan boshlab), "uy" versiyalari bundan mustasno.