Гэр / Худалдан авалт / 1c rls параметрүүд. RLS ашиглах. Зөвшөөрөгдсөн аргыг ашиглан хязгаарлалт хийх

1c rls параметрүүд. RLS ашиглах. Зөвшөөрөгдсөн аргыг ашиглан хязгаарлалт хийх

1С 8.3 дээр нэвтрэх эрхийг хэрхэн тохируулах вэ?

Энэ нийтлэлд бид 1С Нягтлан бодох бүртгэл 8.3-т хэрэглэгчидтэй хэрхэн ажиллах талаар авч үзэх болно.

  • шинэ хэрэглэгч үүсгэх
  • эрхийг тохируулах - профайл, үүрэг, хандалтын бүлгүүд
  • 1С 8.3-д эрхийн хязгаарлалтыг рекорд түвшинд (RLS) хэрхэн тохируулах талаар - жишээлбэл, байгууллагаар

Заавар нь зөвхөн нягтлан бодох бүртгэлийн хөтөлбөрт төдийгүй BSP 2.x дээр суурилсан бусад олон програмуудад тохиромжтой: 1С Худалдааны менежмент 11, Цалин ба боловсон хүчний менежмент 3.0, ERP 2.0, Жижиг фирмийн удирдлага болон бусад.

1С програмын интерфейс дээр хэрэглэгчийн удирдлагыг "Удирдлага" хэсэгт "Хэрэглэгч ба эрхийг тохируулах" хэсэгт гүйцэтгэдэг.

1С-д хэрхэн шинэ хэрэглэгч үүсгэх вэ

1С Нягтлан бодох бүртгэл 3.0-д шинэ хэрэглэгч үүсгэж, түүнд тодорхой нэвтрэх эрхийг олгохын тулд "Удирдлага" цэсэнд "Хэрэглэгч ба эрхийн тохиргоо" гэсэн зүйл байна. Тийшээ явцгаая:

Хэрэглэгчдийн жагсаалтыг "Хэрэглэгчид" хэсэгт удирддаг. Энд та шинэ хэрэглэгч (эсвэл хэрэглэгчдийн бүлэг) үүсгэх эсвэл одоо байгаа хэрэглэгчийг засах боломжтой. Зөвхөн захиргааны эрхтэй хэрэглэгч хэрэглэгчийн жагсаалтыг удирдах боломжтой.

"Нягтлан бодох бүртгэл" гэсэн хэрэглэгчийн бүлгийг үүсгэцгээе, үүнд "Нягтлан бодогч 1", "Нягтлан бодогч 2" гэсэн хоёр хэрэглэгч байх болно.

Бүлэг үүсгэхийн тулд дээрх зураг дээр тодруулсан товчийг дарж нэрээ оруулна уу. Хэрэв мэдээллийн санд нягтлан бодогчийн үүрэгт тохирох бусад хэрэглэгчид байгаа бол та тэр даруй бүлэгт нэмж болно. Бидний жишээнд ийм зүйл байхгүй тул бид "Хадгалаад хаах" дээр дарна уу.

Одоо хэрэглэгчдийг үүсгэцгээе. Курсорыг манай бүлэг дээр байрлуулаад "Create" товчийг дарна уу:

Бүтэн нэрэндээ бид "Нягтлан бодогч 1" гэж оруулах бөгөөд нэвтрэх нэрийг "Нягтлан бодогч1" гэж тохируулна (програмд ​​ороход энэ нь харагдах болно). Нууц үг нь "1" байх болно.

"Хөтөлбөрт нэвтрэхийг зөвшөөрсөн" болон "Сонголтын жагсаалтад харуулах" нүдийг чагтална уу, эс тэгвээс хэрэглэгч зөвшөөрөл авах үед өөрийгөө харахгүй.

"Эхлүүлэх горим"-ыг "Авто" гэж үлдээгээрэй.

Хандалтын эрхийг тохируулах - үүрэг, профайл

Одоо та энэ хэрэглэгчийн "Хандалтын эрх"-ийг зааж өгөх хэрэгтэй. Гэхдээ та эхлээд үүнийг бичих хэрэгтэй, эс тэгвээс дээрх зурагт үзүүлсэн шиг анхааруулах цонх гарч ирнэ. "Бичлэг", дараа нь "Хандалтын эрх" дээр дарна уу:

Нягтлан бодогчийн профайлыг сонгоно уу. Энэ профайл нь стандарт бөгөөд нягтлан бодогчийн шаарддаг үндсэн эрхээр тохируулагдсан байна. "Бичлэг" дээр товшоод цонхыг хаа.

"Хэрэглэгч (үүсгэх)" цонхонд "Хадгалаад хаах" дээр дарна уу. Мөн бид хоёр дахь нягтлан бодогчийг бий болгож байна. Бид хэрэглэгчдийг идэвхжүүлж, ажиллах боломжтой эсэхийг шалгана:

Нэг хэрэглэгч хэд хэдэн бүлэгт хамаарах боломжтой гэдгийг тэмдэглэх нь зүйтэй.

Бид анхдагч байдлаар хөтөлбөрт хамрагдсан хүмүүсээс нягтлан бодогчдын нэвтрэх эрхийг сонгосон. Гэхдээ зарим эрхийг нэмэх, хасах шаардлагатай нөхцөл байдал байдаг. Үүнийг хийхийн тулд шаардлагатай хандалтын эрх бүхий өөрийн профайлыг үүсгэх боломжтой.

"Бүлгийн профайлд хандах" хэсэг рүү орцгооё.

Нягтлан бодогчиддоо журналын бичилтийг үзэхийг зөвшөөрөх хэрэгтэй гэж бодъё.

Эхнээс нь профайл үүсгэх нь маш их хөдөлмөр шаарддаг тул "Нягтлан бодогч" профайлыг хуулж авцгаая.

Түүнд шаардлагатай өөрчлөлтүүдийг хийцгээе - "Харах бүртгэл" гэсэн үүргийг нэмнэ үү:

Шинэ профайлдаа өөр нэр өгье. Жишээлбэл, "Нэмэлттэй нягтлан бодогч". Мөн "Бүртгэлийн бүртгэлийг харах" нүдийг чагтална уу.

Одоо бид өмнө нь үүсгэсэн хэрэглэгчдийнхээ профайлыг өөрчлөх хэрэгтэй.

1С 8.3 (RLS) дээр бичлэгийн түвшинд эрхийг хязгаарлах

Бичлэгийн түвшинд буюу 1С - RLS (Record Level Security) гэж нэрлэдэгээр эрхийг хязгаарлах нь юу гэсэн үг болохыг олж мэдье. Энэ боломжийг авахын тулд та тохирох нүдийг шалгах хэрэгтэй:

Хөтөлбөр нь үйлдлийг баталгаажуулахыг шаардах бөгөөд ийм тохиргоо нь системийг ихээхэн удаашруулж болзошгүйг танд мэдэгдэх болно. Зарим хэрэглэгчид тодорхой байгууллагын баримт бичгийг харахгүй байх шаардлагатай байдаг. Яг ийм тохиолдлуудад рекорд түвшинд нэвтрэх тохиргоо байдаг.

Бид дахин профайлын удирдлагын хэсэг рүү орж, "Нэмэлттэй нягтлан бодогч" профайл дээр давхар товшоод "Хандалтын хязгаарлалт" таб руу очно уу.

"Хандалтын төрөл" -ийг "Байгууллагууд", "Хандалтын утгууд" -ыг "Хандалтын бүлгүүдэд бүх зөвшөөрөгдсөн, үл хамаарах зүйлүүд" -ийг сонгоно уу. "Хадгалаад хаах" дээр дарна уу.

Одоо бид "Хэрэглэгчид" хэсэгт буцаж очоод, жишээлбэл, "Нягтлан бодогч 1" гэсэн хэрэглэгчийг сонгоно уу. "Хандалтын эрх" товчийг дарна уу:

"Нэмэх" товчийг ашиглан "Нягтлан бодогч 1"-д өгөгдөл нь харагдах байгууллагыг сонгоно уу.

Анхаар! Бичлэгийн түвшинд эрхийг тусгаарлах механизмыг ашиглах нь хөтөлбөрийн гүйцэтгэлд бүхэлд нь нөлөөлж болно. Програмистад зориулсан тэмдэглэл: RLS-ийн мөн чанар нь 1С систем нь хүсэлт бүрт нэмэлт нөхцөл нэмж, хэрэглэгч энэ мэдээллийг уншихыг зөвшөөрсөн эсэх талаар мэдээлэл авах хүсэлт гаргах явдал юм.

Бусад тохиргоо

"Тохиргоог хуулах" ба "Тохиргоог арилгах" гэсэн хэсгүүд нь ямар ч асуулт үүсгэдэггүй бөгөөд тэдгээрийн нэр нь өөрөө ярьдаг. Эдгээр нь програм болон тайлангийн харагдах байдлын тохиргоо юм. Жишээлбэл, хэрэв та "Нэршил" лавлахын тулд үзэсгэлэнтэй дүр төрхийг тохируулсан бол үүнийг бусад хэрэглэгчид хуулбарлах боломжтой.

"Хэрэглэгчийн тохиргоо" хэсэгт та програмын харагдах байдлыг өөрчилж, ашиглахад хялбар нэмэлт тохиргоог хийж болно.

"Гадаад хэрэглэгчдэд хандахыг зөвшөөрөх" нүд нь гадны хэрэглэгчдийг нэмэх, тохируулах боломжийг танд олгоно. Жишээлбэл, та 1С дээр суурилсан онлайн дэлгүүр зохион байгуулахыг хүсч байна. Дэлгүүрийн үйлчлүүлэгчид нь гадны хэрэглэгчид байх болно. Хандалтын эрхийг энгийн хэрэглэгчдийн нэгэн адил тохируулдаг.

Programmist1s.ru сайтын материал дээр үндэслэсэн

"Үүрэг" тохиргооны объект нь тохиргооны объектууд дээрх үйлдлүүдийн (үйл ажиллагааны) эрхийг өгдөг.

"Бүтэн эрх" үүрэг.

Энэ бол зүгээр л бүх тохиргооны объектын бүх төрлийн эрхийг шалгадаг үүрэг (урьдчилан тодорхойлоогүй) юм.

Бусад үүргээс ялгарах зүйл нь “Захиргааны” эрх байдаг.

Хэрэв дор хаяж нэг хэрэглэгч үүссэн бол систем нь "Захиргааны" эрх байгаа эсэхийг шалгаж эхэлдэг - дор хаяж нэг хэрэглэгч үүнийг эзэмшсэн байх ёстой.

Бичлэгийн түвшний хандалтын хязгаарлалт

Row Level Security (RLS) – рекорд түвшний хязгаарлалт.

Өгөгдлийн хандалтыг хязгаарлах механизм нь зөвхөн мета өгөгдлийн объектын түвшинд төдийгүй мэдээллийн сангийн объектын түвшинд нэвтрэх эрхийг удирдах боломжийг олгодог. Мэдээллийн хандалтыг хязгаарлахад дараах объектуудыг ашиглаж болно.

  • дүрүүд,
  • сессийн параметрүүд,
  • функциональ сонголтууд,
  • давуу эрхтэй хуваалцсан модулиуд,
  • асуулгын хэл дээр ЗӨВШӨӨРӨЛТЭЙ түлхүүр үг.

Энэхүү механизм нь эдгээр хүснэгтийн мөрийн талбаруудын утгуудад тогтоосон дурын нөхцөл дээр үндэслэн мета өгөгдлийн объектын хүснэгтийн бүртгэлд хандах хандалтыг хязгаарлах зорилготой юм. Жишээлбэл, зөвхөн "таны" түншүүд, байгууллагууд гэх мэт бүртгэлийг харах.

1С дахь хандалтын хязгаарлалтын техникийн хэрэгжилт

1С нь DBMS-д хүсэлт гаргадаг. Серверийн кластер нь хүсэлтэд RLS-ээр нэвтрэхийг хязгаарлах нөхцлийн текстийг агуулсан ХААНА гэсэн хэсгийг нэмж, дараа нь энэ хүсэлтийг DBMS руу илгээж, задалсан өгөгдлийг 1С клиент рүү буцаана.


Энэ механизм нь үйлчлүүлэгчийн хүсэлтийн дагуу ажиллах болно:

  • тайланд,
  • динамик жагсаалт болон ердийн жагсаалт хэлбэрээр
  • захиалгат асуулгад.

Механизмын ийм хэрэгжилт нь гүйцэтгэлд ихээхэн нөлөөлдөг.

Хандалтын хязгаарлалтыг тойрч гарах арга замууд.

Томоохон нөөц шаардсан үйлдлүүдэд (жишээлбэл, баримт бичгийг дахин байршуулах) кодын зарим хэсгийг давуу эрхтэй модулиуд руу шилжүүлж болно.

A) Давуу эрхтэй модуль шинж чанарт "Эрх олгогдсон" туг бүхий нийтлэг модуль юм.

Үүний онцлог нь түүний доторх код нь RLS гэх мэт хандалтын эрхийн хяналтгүйгээр хийгддэг явдал юм.


B) Мөн давуу эрхтэйгоримыг асааж болно баримт бичгийн объектын модулиудын хувьд. Үүнийг баримт бичгийн шинж чанар, туг дээр хийдэг

  • Хийх үед давуу эрх олгох
  • Гүйлгээг цуцлах үед давуу эрхтэй горим


B) арга SetPrivilegedMode()

Системийн команд нь аливаа модулийн кодын нэг хэсгийг давуу эрхтэй болгох боломжийг олгодог.

Кодын дараагийн мөрөөс давуу эрхтэй гүйцэтгэх горим ажиллах болно.

Энэ горимыг идэвхгүй болгох шугам хүртэл эсвэл процедур / функц дуусах хүртэл ажиллана

(Үнэн);

// энд байгаа аливаа кодыг эрхийн хяналт болон RLSгүйгээр гүйцэтгэх болно

PrivilegedMode тохируулах(Худлаа); // эсвэл процедурын төгсгөл / функц

Давуу эрхтэй горимыг хэдэн удаа идэвхжүүлсэн нь түүнийг идэвхгүй болгосон тоотой тохирч байх ёстой. Гэсэн хэдий ч, хэрэв процедур эсвэл функц дотор давуу эрхтэй горим асаалттай (нэг ба түүнээс дээш удаа) байсан ч унтраагаагүй бол процедур эсвэл функцэд бүрэн бус асаалттай байсан ч систем автоматаар унтрах болно.

Хэрэв процедур эсвэл функцэд аргыг дуудвал PrivilegedMode тохируулах(Худал) аргын дуудлагаас илүү хийсэн PrivilegedMode тохируулах(Үнэн), дараа нь үл хамаарах зүйл хаягдах болно

Чиг үүрэг PrivilegedMode() давуу горим идэвхжсэн хэвээр байвал Үнэн, бүрэн идэвхгүй бол Худал буцаана. Энэ нь тодорхой функц дэх давуу горимын тохиргооны тоог шинжлэхгүй.

Бүх дуудагдсан процедур, функцууд нь давуу эрхтэй горимд ажиллах болно.


Мөн давуу эрхтэй сессийг эхлүүлэх боломжтой. Энэ бол системийн эхэн үеэс давуу эрхтэй горимыг бий болгосон сесс юм. Түүнээс гадна, үйл ажиллагааны явцад арга PrivilegedMode() нь үргэлж Үнэнийг буцаадаг бөгөөд давуу горимыг идэвхгүй болгох чадварыг дэмждэггүй. Зөвхөн захиргааны эрхтэй хэрэглэгч (Захиргааны эрх) давуу эрхтэй сессийг эхлүүлэх боломжтой. Үйлчлүүлэгчийн програмыг эхлүүлэх командын мөрийн шилжүүлэгч UsePrivilegedMode эсвэл prmod infobase холболтын стринг параметрийг ашиглан сессийг эхлүүлж болно.


Асуулт мэдээжийн хэрэг гарч ирнэ: Хэрэв үүнийг амархан тойрч гарах боломжтой юм бол яагаад нэвтрэх хязгаарлалт тавих болов?

Аюулгүйн горим.

Тийм ээ, та давуу эрх бүхий гүйцэтгэх горимоор гадаад боловсруулалтыг бичиж, өгөгдлийг буулгах / эвдэх боломжтой. Үүнээс урьдчилан сэргийлэхийн тулд системд глобал контекст арга байдаг

SetSafeMode().

Аюулгүй горим нь бусад зүйлсийн дунд давуу горимыг үл тоомсорлодог.

Гадны процессоруудыг программчлан дуудах эсвэл тэдгээрийн модулиудаас процедур, функцуудыг экспортлохоос өмнө үүнийг суулгасан байх ёстой.

Хориотой үйлдлүүдийг гүйцэтгэх үед ажиллах үед онцгой тохиолдол гардаг.

Нэмж дурдахад, үүргийн тохиргооны түвшинд та хэрэглэгчдэд гадны тайлан, боловсруулалтыг интерактив байдлаар эхлүүлэх боломжийг идэвхгүй болгож болно.

Хандалтын хязгаарлалтыг тохируулж байна

RLS-ийг зөвхөн эрхээр тохируулах боломжтой:

  • унших (сонгох)
  • нэмэх (оруулах)
  • өөрчлөх (шинэчлэх)
  • устгах

Унших үйлдлүүдийн хувьдустгах ба өгөгдлийн санд байгаа объект нь өгөгдөлд хандах хязгаарлалтыг дагаж мөрдөх ёстой.

Нэмэх үйлдлийн хувьдӨгөгдлийн хандалтын хязгаарлалт нь мэдээллийн санд бичихээр төлөвлөж буй объекттой тохирч байх ёстой.

Өөрчлөх үйл ажиллагаанд зориулагдсанӨгөгдлийн хандалтын хязгаарлалт нь өөрчлөлт хийхээс өмнө (объектыг уншихын тулд) болон өөрчлөлтийн дараа (объектыг бичихийн тулд) аль алинд нь нийцсэн байх ёстой.

Бусад бүх эрхийн хувьд ийм сонголт байхгүй.

“Нэршил” лавлахын “унших” эрхэнд шинэ хязгаарлалт оруулъя. Нэмэгдсэн хязгаарлалтыг тохируулах боломжтой талбаруудын жагсаалт нээгдэнэ.

Энэ нь хэрэв та шалгагдсан талбарт хандахыг оролдвол хязгаарлалт идэвхжих боловч шалгаагүй талбарт хандахыг оролдвол хязгаарлалт ажиллахгүй гэсэн үг юм.

Хэрэв та туг сонговол " Бусад талбарууд", хязгаарлалтыг тодорхой тохируулсан талбаруудаас бусад бүх хүснэгтийн талбаруудад хязгаарлалт тохируулагдах болно.


* Онцлог: нэмэх, өөрчлөх, устгах эрхийн хувьд:

  • Хязгаарлалтыг зөвхөн бүх талбарт тохируулах боломжтой.
  • Зөвхөн нэг хязгаарлалт байж болно.

"Унших" эрхийг авахын тулд та хэд хэдэн нөхцлийг тохируулах боломжтой бөгөөд тэдгээрийг "AND" логик оператортой хослуулах болно.

Үндсэн хязгаарлалтын өгөгдлийн объектын бүх талбарыг дараах төрлийн өгөгдлийн сангийн объектын хязгаарлалтад ашиглаж болохгүй.

  • хуримтлалын бүртгэлд нэвтрэх хязгаарлалт нь зөвхөн хязгаарлалтын үндсэн объектын хэмжилтийг агуулж болно;
  • нягтлан бодох бүртгэлийн бүртгэлд хязгаарлалт нь зөвхөн хязгаарлалтын үндсэн объектын балансын хэмжилтийг ашиглаж болно

Хэрэв эргэлтийн хуримтлалын бүртгэлийн өгөгдөлд нэвтрэх боломж хязгаарлагдмал нөхцөлд нийлбэрт ороогүй хэмжилтийг ашигласан бол эргэлтийн виртуал хүснэгтэд хандах үед хадгалагдсан нийлбэрийг ашиглахгүй бөгөөд хүсэлтийг бүхэлд нь дараах байдлаар гүйцэтгэнэ. хөдөлгөөний хүснэгт.

Хандалтын хязгаарлалт тавих механизм.

1C: Enterprise дахь мэдээллийн санд хадгалагдсан өгөгдөл дээр хийсэн аливаа үйлдэл нь эцсийн дүндээ өгөгдлийг унших, өөрчлөх хүсэлт бүхий мэдээллийн сан руу залгахад хүргэдэг. Өгөгдлийн санд асуулга явуулах явцад 1С: Enterprise-ийн дотоод механизм нь хандалтын хязгаарлалтыг тавьдаг. Үүнд:

  • Эрхийн жагсаалтыг гаргана(унших, нэмэх, өөрчлөх, устгах), өгөгдлийн сангийн хүснэгтүүдийн жагсаалт, энэ асуулгад ашигласан талбаруудын жагсаалт.
  • Одоогийн хэрэглэгчийн бүх дүрээс хандалтын хязгаарлалтыг сонгосонхүсэлтэд хамаарах бүх эрх, хүснэгт, талбарын өгөгдөлд. Түүнээс гадна, хэрэв үүрэг нь хүснэгт эсвэл талбарын өгөгдөлд хандах хязгаарлалтыг агуулаагүй бол энэ нь ямар ч бүртгэлээс шаардлагатай талбаруудын утгыг энэ хүснэгтэд авах боломжтой гэсэн үг юм. Өөрөөр хэлбэл, өгөгдөлд хандах хязгаарлалт байхгүй байна гэдэг нь ХААНА ҮНЭН БАЙНА гэсэн хязгаарлалт байгаа гэсэн үг юм.
  • Бүх сессийн параметрүүд болон функциональ сонголтуудын одоогийн утгыг татаж авнасонгосон хязгаарлалтад оролцох.

Сеансын параметр эсвэл функцийн сонголтын утгыг олж авахын тулд одоогийн хэрэглэгч тухайн утгыг авах зөвшөөрөлтэй байх шаардлагагүй. Гэсэн хэдий ч, хэрэв зарим сесс параметрийн утгыг тохируулаагүй бол алдаа гарч, мэдээллийн сангийн хайлтыг гүйцэтгэхгүй.

Нэг дүрээс үүссэн хязгаарлалтуудыг AND үйлдлийг ашиглан нэгтгэдэг.

Янз бүрийн дүрүүдээс үүссэн хязгаарлалтуудыг OR үйлдлийг ашиглан нэгтгэдэг.

1С: Enterprise нь DBMS-д ханддаг SQL асуулгад бүтээгдсэн нөхцөлүүдийг нэмж оруулсан болно. Хандалтын хязгаарлалтын нөхцлөөс өгөгдөлд хандах үед эрхийг шалгахгүй (мета өгөгдлийн объект болон мэдээллийн сангийн объектын хувьд ч биш). Нэмж дурдахад нөхцөл нэмэх механизм нь "бүх" эсвэл "зөвшөөрөгдсөн" хязгаарлалтын сонгосон аргаас хамаарна.


* Онцлог: Хэрэв хэрэглэгч нэг объектын рекорд түвшинд тохируулсан хязгаарлалт бүхий хэд хэдэн үүрэгт хандах боломжтой бол энэ тохиолдолд хязгаарлалтын нөхцлийг "OR" логик үйлдлийг ашиглан нэмнэ. Өөрөөр хэлбэл, хэрэглэгчийн эрх мэдэл хуримтлагдсан байна.

Энэ нь дараахь дүгнэлтэд хүргэдэг: өөр өөр үүрэг бүхий нэг объект руу нэвтрэх эрхийг хязгаарлах нөхцлийг огтолж болохгүй, учир нь энэ тохиолдолд хүсэлтийн текст нь маш төвөгтэй байх бөгөөд энэ нь гүйцэтгэлд нөлөөлнө.

"Бүх зүйл" арга.

"Бүх" аргыг ашиглан хязгаарлалт тавихдаа SQL асуулгад нөхцөл, талбаруудыг нэмж оруулснаар 1С: Enterprise нь мэдээллийн сангийн асуулга явуулах явцад тухайн хэрэглэгчдэд хориглосон өгөгдлийг ашигласан эсэх талаар мэдээлэл авах боломжтой болно. Хэрэв хориглосон өгөгдлийг ашигласан бол хандалтын зөрчлийн улмаас хүсэлт гацах болно.

"Бүх" аргыг ашиглан нэвтрэх хязгаарлалтыг зурагт схемээр үзүүлэв.


"Зөвшөөрөгдсөн" арга.

"Зөвшөөрөгдсөн" аргыг ашиглан хязгаарлалт хийх үед SQL асуулгад нөхцөл нэмж оруулснаар одоогийн хэрэглэгчдэд хориглосон бичлэгүүд асуулгын үр дүнд нөлөөлөхгүй. Өөрөөр хэлбэл, "зөвшөөрөгдсөн" горимд хязгаарлалт тавих үед тухайн хэрэглэгчдэд хориглосон бичлэгүүд байхгүй гэж тооцогдох бөгөөд зурагт схемээр үзүүлсэн үйлдлийн үр дүнд нөлөөлөхгүй.


1C: Enterprise нь мэдээллийн санд хандах үед мэдээллийн сангийн объектуудад өгөгдөлд хандах хязгаарлалт тавигддаг.

1C: Enterprise-ийн клиент-сервер хувилбарт хязгаарлалтууд 1C: Enterprise сервер дээр хэрэгждэг.

Гэсэн хэдий ч, хэрэв бид асуулгад хандалтын хязгаарлалт тохируулагдаагүй, гэхдээ тохируулсан хязгаарлалттай хүснэгтийн мөрүүдийн лавлагаа агуулсан хүснэгтийг харвал энэ сонголт (ЗӨВШӨӨРӨЛТ) ажиллахгүй. Энэ тохиолдолд асуулгын үр дүн гарч ирнэ "<Объект не найден>......" лавлагааны талбарын утгын оронд.


Хэрэв та стандарт эсвэл захиалгат тохиргооны асуулга ашиглан тайлан боловсруулж байгаа бол, "Зөвшөөрөгдсөн" тугийг үргэлж шалгана уутайлан ажиллахын тулд дурын хэрэглэгчийн дораливаа багц эрхтэй.

Өгөгдлийн сангаас өгөгдлийг объектоор унших тохиолдолд "Зөвшөөрөгдсөн" тугийг тохируулах боломжгүй. Тиймээс зайлшгүй шаардлагатай боломжит хандалтын эрхийн хязгаарлалтыг харгалзан объект унших сонголтыг тохируулаххэрэглэгчийн хувьд. Объект технологид зөвхөн зөвшөөрөгдсөн өгөгдлийг олж авах арга хэрэгсэл байдаггүй.

Хэрэв асуулгад ALLOWED түлхүүр үг заагаагүй бол тухайн асуулгад заасан бүх сонголт нь асуулгад ашигласан мэдээллийн сангийн объектын унших хязгаарлалттай зөрчилдөхгүй байх нь чухал. Түүнээс гадна, хэрэв асуулга нь виртуал хүснэгтийг ашигладаг бол холбогдох сонголтыг виртуал хүснэгтэд өөрөө хийх ёстой.

Дадлага 1. RLS тохиргоон дахь Query builder.

Лавлах асуулгын "ХАААН" хэсгийн текстийг бичье. Та асуулга үүсгэгчийг ашиглаж болно.
Загвар зохион бүтээгч нь хуучирсан дүр төрхтэй байдаг.


"Хүснэгтүүд" таб

Үндсэн хүснэгт нь хязгаарлалтыг тохируулж буй объектын хүснэгт байх болно.

Та мөн "Харилцаа" таб дээрээс бусад хүснэгтүүдийг сонгож, тэдгээрийн хооронд янз бүрийн холболтыг тохируулах боломжтой.

"Нөхцөл" таб

Энд та бодит хандалтын хязгаарлалтын нөхцлийг тохируулах боломжтой

Хүснэгтийн бүх талбарт "унших" эрхийн нөхцөлийг нэрлэсэн лавлахын "Үнэ" шинж чанарт нэмж оруулцгаая.

“Нэршил ХААНА Нэршил.Үнэ > 500”

Энэхүү энгийн дүрэм хэрхэн ажилладагийг харцгаая. Лавлах хүснэгт нь дараах элементүүдийг агуулна.


Хандалтын хязгаарлалтыг тохируулсны дараа хүснэгт нь зөвхөн нөхцөлийг хангасан элементүүдийг харуулах болно:


Бүлгүүд бас алга болсон. Хязгаарлалтын текстийг өөрчилье

“Нэршил ХААНА Нэршил.Үнэ > 500

ЭСВЭЛ Нэршил. Энэ бол бүлэг"

За, одоо чамд хэрэгтэй зүйл.


Хэрэв та жагсаалтын тохиргоонд "код" талбарын дэлгэцийг арилгавал лавлах бүх элементүүд гарч ирэх болно, жишээлбэл. хязгаарлалт ажиллаагүй. Хэрэв та "Код" талбарыг харуулахаар тохируулбал хязгаарлалт ажиллах болно.


Энэ тохиолдолд лавлах элемент жагсаалтын талбарт харагдаж байгаа хэдий ч атрибутад хязгаарлалт тохируулагдсан тул түүний хэлбэрийг нээх боломжгүй. Дурын хүсэлтийн хувьд ижил зүйл тохиолддог: та "хязгаарлагдсан" өмчийг авахыг оролдох үед хандалтын алдаа гарах болно.


Хэрэв та "хязгаарлагдсан" итгэмжлэлүүдийг программчлан авахыг оролдвол хандалтын алдаа гарч ирнэ.


Түүнчлэн, холбоосоор дамжуулан объектын аль ч талбарт хандах боломжгүй болно, учир нь холбоосыг хүлээн авах үед систем нь объектыг бүхэлд нь уншдаг бөгөөд хэрэв "хязгаарлагдсан" дэлгэрэнгүй мэдээллийг агуулж байвал объектыг уншихгүй.

Тиймээс мэдээллийн сангийн объектуудтай программчлан ажиллахдаа бичлэгийн түвшинд байж болох хязгаарлалтуудыг санаж, шаардлагатай бүх объектын өгөгдлийг хүсэлтээр авч, дараа нь бүтцэд байршуулах эсвэл давуу эрхтэй модульд кодын хэсгийг гүйцэтгэх хэрэгтэй.

Хандалтын хязгаарлалтыг тохируулсны дараа эрхийн жагсаалт дахь шугамын дэлгэц өөрчлөгдсөн - саарал болж, дүрс гарч ирэв.

Хандалтыг (RLS) тохируулах үеийн хязгаарлалт.

  • Хураангуй хэсэг байхгүй;
  • Виртуал бүртгэлийн хүснэгтэд хандах боломжгүй;
  • Та параметрүүдийг тодорхой ашиглах боломжгүй;
  • Үүрчилсэн асуулгад ашиглаж болно дурын>/span> асуулгын хэлний хэрэглүүрээс бусад нь:
    • ШАТНАЛТЫН оператор;
    • Үр дүнгийн санал;
    • үүрлэсэн асуулгын үр дүн хүснэгтийн хэсгүүдийг агуулж болохгүй>>/span>;
    • виртуал хүснэгтүүд, ялангуяа үлдэгдэл ба эргэлт

Дадлага 2. Тухайн үеийн үнэ бүхий нэршил.

Хэрэв та одоогийн үнэ нь тодорхой утгаас, жишээлбэл 100-аас дээш байгаа зүйлсийг харуулах шаардлагатай бол хандалтын хязгаарлалт хийнэ үү.

Шийдэл:

Бид "унших" эрхтэй "Нэршил" лавлахын хандалтыг хязгаарлах шинэ дүрмийг нэмж байна.
"Бусад талбарууд" -ыг сонгоно уу.
Бүтээгч дээр бид үүрлэсэн асуулга нэмнэ. Үүнд "Барааны үнэ" мэдээллийн бүртгэлийн хүснэгтийг сонгоно уу.
"Захиалга" таб байхгүй - энэ нь хандалтыг хязгаарлах хүсэлтийг бий болгох асуулгын дизайнерын онцлог юм.
"Нарийвчилсан" таб дээр "эхний 999999999" гэж тохируулснаар "захиалга" таб гарч ирнэ.
Бид "Хугацаа" талбараар буурах дарааллаар эрэмбэлдэг.
Дараа нь бид лавлагаагаар үндсэн хүснэгт болон дэд асуулга хооронд холболтыг тохируулна.


Хандалтыг хязгаарлах загварууд.

Дадлага 3. Тогтмол утгаар “эсрэг талууд”-ыг хязгаарлах.

Constant-д хадгалагдсан утга дээр үндэслэн Counterparties лавлах хандалтын хязгаарлалтыг тохируулъя.

Нэмж дурдахад та "Харилцагч талууд" лавлахыг ашигладаг бүх объектод хязгаарлалт тавих хэрэгтэй.

Шийдэл

"Харилцагч талууд" лавлахын хувьд "Нөхцөл" хэсэгт тогтмол тоонд үүрлэсэн асуулга нэмж "унших" эрхийн хязгаарлалтыг тохируулна. Энэ бол групп гэдгийг битгий мартаарай.

Бид асуудалтай байгааг харж байна, Counterparty лавлах зөв шүүгдэж, "Counterparty" шинж чанартай бүх баримт бичиг гарч ирэх бөгөөд зарим нь "Counterparty" шинж чанарт "эвдэрсэн" холбоостой байна.

Одоо та "Бүртгэл" холбоосыг ашигладаг бүх объектын хандалтын хязгаарлалтыг тохируулах хэрэгтэй. Тэдгээрийг "объект руу холбоос хайх" үйлчилгээг ашиглан олъё.

"Counterparties" лавлахаас RLS нөхцлийн текстийг хуулж, бага зэрэг өөрчилье. Үүнийг олдсон объект байгаа хэрээр олон удаа хийх ёстой.

Эсвэл код давхардахаас зайлсхийхийн тулд хандалтын хязгаарлалтын загварыг ашиглана уу.

Хандалтын хязгаарлалтын загварууд нь дүрийн түвшинд тохируулагдсан бөгөөд засварласан дүрийн аль ч объектод ашиглагдах боломжтой.

Та загварт хандалтыг хязгаарлах текстийн дурын хэсгийг нэмж болно. Загварыг "#" тэмдэг ашиглан дууддаг. Жишээ нь, # TemplateCounterparty.

# in 1C-ээр дамжуулан зааварчилгааг урьдчилсан процессорт бичдэг. Хандалтын хязгаарлалтын тохиргоог гүйцэтгэх хүрээнд платформ нь загвар дуудлагын текстийг загварын текстээр сольдог.

EtoGroup-ын тухай бичвэрээс бусад тохиолдолд "Гүйцэтгэгчийн загвар" загварт ХААНА гэдэг үгийн ард бичье.

Хандалтын хязгаарлалтын загвар дахь параметрүүд.

2-р асуудлыг үргэлжлүүлэн шийдье.

Одоо асуудал бол лавлах дахь үндсэн хүснэгтийг "Төлбөрийн нэхэмжлэх" баримт бичигт "эсрэг тал" гэж нэрлэсэн явдал юм. Лавлах дахь шалгаж буй талбарыг "холбоос", баримт бичигт "Counterparty" гэж нэрлэдэг.

Загварын текст дэх үндсэн хүснэгтийн нэрийг "#CurrentTable" болгон өөрчилье.

"#CurrentTable" нь урьдчилан тодорхойлсон параметр юм.

Мөн цэгээр бид оролтын параметрийн дугаарыг заана - “.#Parameter(1)

“#Parameter” нь мөн урьдчилан тодорхойлсон утга юм. Дурын тооны оролтын параметрүүдийг агуулж болно. Тэд серийн дугаараар хаяглагдсан.

Лавлах хандалтын хязгаарлалтын текстэнд бид дараахь зүйлийг зааж өгсөн болно.

Баримт бичгийн хувьд дараахь зүйлийг хийнэ.

“#ЗагварCounterparty (“Counterparty”) ХААНА бараа борлуулах”

Хандалтын хязгаарлалтын загварыг дуудахдаа параметрүүдийг зөвхөн мөр хэлбэрээр, өөрөөр хэлбэл хашилтанд оруулах ёстой.

Үндсэн хүснэгт - Нэршил

Загварын текст нь:

#ОдоогийнХүснэгт ХААНА #ОдоогийнХүснэгт.#Параметр(1) = #Параметр(2)

Загварын текст нь өгөгдлийн хандалтыг хязгаарлах хэл дээрх текстийн хэсгийг агуулж байгаа бөгөөд "#" тэмдгийг ашиглан тодруулсан параметрүүдийг агуулж болно.

"#" тэмдэгтийн араас:

  • Түлхүүр үгсийн нэг нь:
    • Загвар дахь параметрийн дугаарыг хаалтанд оруулсан параметр;
    • CurrentTable – хязгаарлалтыг барьж буй хүснэгтийн бүтэн нэрийг текстэнд оруулахыг заана;
    • Одоогийн хүснэгтийн нэр– Суурилуулсан хэлний одоогийн хувилбарт зааврыг ашигласан хүснэгтийн бүтэн нэрийг текстэнд оруулахыг илэрхийлнэ (мөртийн утга, хашилтанд);
    • NameCurrentAccessRight– УНШИХ, НЭМЭХ, ОРУУЛАХ, ӨӨРЧЛӨХ, ШИНЭЧЛЭХ, УСТГАХ, одоогийн хязгаарлалтыг гүйцэтгэх эрхийн нэрийг агуулсан;
  • загварын параметрийн нэр – текстэд тохирох загварын параметрийн хязгаарлалтыг оруулахыг хэлнэ;
  • "#" тэмдэг нь текстэнд нэг "#" тэмдэгт оруулахыг заана.

Хандалтын хязгаарлалтын илэрхийлэл нь дараахь зүйлийг агуулж болно.

  • Форматад заасан хандалтын хязгаарлалтын загвар #ЗагварНэр("Загвар параметрийн утга 1", "Загвар параметрийн утга 2",...). Загварын параметр бүрийг давхар хашилтанд оруулсан болно. Хэрэв та параметрийн текстэнд давхар хашилтын тэмдэгтийг зааж өгөх шаардлагатай бол хоёр давхар хашилтыг ашиглах ёстой.
  • Функц Str(WhereWeLook, WhatWeLook) агуулна. Энэ функц нь WhereWeLook мөрөнд байгаа WhatWeLook мөрийг хайхад зориулагдсан. Хэрэв үзэгдэл олдвол үнэн, үгүй ​​бол худал буцаана.
  • + оператор нь мөрийг холбоход зориулагдсан.

Загварын текстийг засварлахад хялбар болгохын тулд дүрийн маягтын Хязгаарлалтын загвар таб дээрээс Загвар текстийг тохируулах товчийг дарна уу. Нээгдэх харилцах цонхонд загварын текстийг оруулаад OK дарна уу.

Тэдгээрийг ашиглан суулгах боломжгүй SetParameter()эсвэл үүнтэй төстэй зүйл.

Энэ тохиолдолд параметрүүд нь:

  • Сешн сонголтууд
  • Функциональ сонголтууд

Хандалтыг хязгаарлах хүсэлтэд сессийн параметрүүдийг унших нь давуу эрхтэй горимд, өөрөөр хэлбэл тэдэнтэй ажиллах эрхийг хянахгүйгээр явагддаг.

Дадлага 4. "Таны" түншүүд рүү нэвтрэх

Одоогийн хэрэглэгчийн "тэдний" түншүүд рүү нэвтрэх хязгаарлалтыг тохируулах шаардлагатай.

"Хэрэглэгчид" лавлах, "Харилцагч талууд" лавлах, "Харилцагч" гэсэн дэлгэрэнгүй мэдээлэл бүхий баримт бичиг байдаг.

Одоогийн хэрэглэгч зөвхөн өөртэй нь холбоо тогтоосон түншүүдийн мэдээллийг харах ёстой.

Мөн харилцаа холбоог тохируулах шаардлагатай.

Боломжит сонголтууд:

Хэрэглэгч болон эсрэг талын хооронд холбоо тогтоох

  • Эсрэг талуудын лавлах дахь дэлгэрэнгүй мэдээлэл
  • Мэдээллийн бүртгэл

Асуудлын боломжит шийдлүүд:

  • Хэрэглэгчийг тогтмол хэмжээнд хадгалах нь муу сонголт бөгөөд тогтмолыг бүх хэрэглэгчид ашиглах боломжтой.
  • Сеансын параметрүүдэд одоогийн хэрэглэгчийн эсрэг талуудын тогтмол массивыг хадгалах нь тийм ч сайн сонголт биш бөгөөд олон тооны эсрэг талууд байж болно.
  • Одоогийн хэрэглэгчийн сессийн параметрүүдийг хадгалах, дараа нь "түүний" түншүүдийн жагсаалтыг хүсэх нь хүлээн зөвшөөрөгдсөн сонголт юм.
  • Бусад сонголтууд.

Шийдэл.

"CurrentUser" сессийн шинэ параметрийг үүсгэж, сессийн модульд бөглөцгөөе.

"Менежер ба гүйцэтгэгч нарын дагаж мөрдөх журам" мэдээллийн бүртгэлийг үүсгэцгээе.

"Нэхэмжлэх" баримт бичигт шинэ үүрэг, түүнд хандах хандалтын шинэ хязгаарлалт үүсгэцгээе.

Хүсэлтийн текстэд бид үндсэн хүснэгтийг Account = Account and Manager = &CurrentUser гэсэн мэдээллийн бүртгэлтэй холбох болно. Холболтын төрөл дотоод.

Боломжтой бол өгөгдлийн сангаас энэ объектоос өгөгдлийг унших болгонд хийгдэх тул хандалтыг хязгаарлах бичвэрт үүрлэсэн асуулга хийхээс зайлсхийх нь дээр.

Шалгаж байна - хязгаарлалтууд ажилладаг

* Онцлог: Хэрэв та бүртгэл дэх хэрэглэгчийн эсрэг талуудын жагсаалтыг өөрчилбөл хандалтын хязгаарлалт нь хэрэглэгчийн сессийг дахин эхлүүлэхгүйгээр шууд хүчин төгөлдөр болно.

Дадлага 5. Өөрчлөлт хийхийг хориглосон огноо.

Өөрчлөлт хийхийг хориглохын тулд тогтоосон хугацаанаас өмнө өгөгдлийг засварлах хязгаарлалтыг хэрэгжүүлэх шаардлагатай.
Та үүнийг хэрэглэгчдэд хязгаарлах хэрэгтэй.

"Өөрчлөлтийг хориглосон огноо" мэдээллийн бүртгэлийг хэрэглэгч хэмжигдэхүүнээр үүсгэцгээе.

Шийдлийн логикийг дараах байдлаар бүтээцгээе.

  • хэрэв хэрэглэгчийг заагаагүй бол хориг нь бүх хэрэглэгчдэд хамаарна
  • хэрэв бүх хэрэглэгчдэд зориулсан хязгаарлалт, тодорхой хэрэглэгчдэд зориулсан хязгаарлалт байгаа бол хязгаарлалт нь тодорхой хэрэглэгчдэд болон бусад хүмүүст ерөнхий зарчмын дагуу хамаарна.

Мэдээжийн хэрэг, ийм хязгаарлалтыг цагийн тэнхлэг дээр тодорхой байрлалтай мэдээллийн сангийн объектуудад тохируулж болно. Энэ нь байж болох юм

  • Баримт бичиг
  • Тогтмол мэдээллийн бүртгэл

"Өөрчлөлтийг хориглосон огнооны хязгаарлалт" гэсэн шинэ дүр бүтээцгээе.

Үүнд зөв "өөрчлөлт" хийх "Нэхэмжлэх" баримт бичгийн хувьд бид шинэ хандалтын хязгаарлалтыг нэмж оруулах болно.

Бид бүх талбарт тохиргоог зааж өгдөг.

Хязгаарлалтын текст нь:

Баримтаас хүлээн авсан нэхэмжлэх. Хүлээн авалтын нэхэмжлэх

Хориглох огноог өөрчлөх. Хориглох огноог хориглох огноо
FROM

ДОТООД НЭГДСЭН (СОНГОХ
MAX(Өөрчлөх хориотой огноо.Хэрэглэгч) АС Хэрэглэгч
FROM
Мэдээллийн бүртгэл.Өөрчлөлт оруулахыг хориглосон огноо.
ХААНА
(Хориотой огноог өөрчлөх.Хэрэглэгч = &Одоогийн хэрэглэгч
ЭСВЭЛ Хориотой өөрчлөлтүүд.Хэрэглэгч = VALUE(Directory.users.EmptyLink))) AS VZ_User
Өөрчлөлтийг хориглосон огноогоор.User = VZ_User.User) AS NestedQuery
Програм хангамжийн хүлээн авалтын нэхэмжлэх.Огноо > Оруулсан асуулга.Хориг огноо

Шалгаж үзье - хязгаарлалт ажиллаж байна.

Урьдчилан процессорын зааврыг ашиглах

#Нөхцөл1 бол #Тэгвэл

Хүсэлтийн хэсэг 1

#ElseIf2 нөхцөл #Тэгвэл

Хүсэлтийн хэсэг 2

#Үгүй бол

Хүсэлтийн хэсэг 3

#EndIf

Нөхцөл байдалд та логик үйлдлүүд (ба, эсвэл, үгүй ​​гэх мэт) болон сессийн параметрүүдэд хандах боломжтой.

Хандалтын хязгаарлалтыг бий болгох энэ арга нь нөхцөл байдлаас хамааран илүү богино хүсэлтийн текстийг эмхэтгэх тул тохиромжтой юм. Илүү энгийн асуулга нь системийг бага ачаалдаг.

Сул тал нь асуулга үүсгэгч ийм тексттэй ажиллахгүй.

* Онцлог:

Хандалтыг хязгаарлах бичвэрт суулгасан хэлний препроцессорын заавраас ялгаатай нь операторын өмнө Дараа нь та хэш оруулах хэрэгтэй - #Дараа нь

Дасгал 6. “RLS ашиглах”-ыг солино

Хязгаарлалтын системээ рекорд түвшинд хязгаарлалтын хэрэглээг асаах/унтраах свичээр нэмэгдүүлцгээе.

Үүнийг хийхийн тулд бид Constant болон "UseRLS" нэртэй сесс параметрийг нэмнэ.

Тогтмол утгаас сессийн параметрийн утгыг тохируулахын тулд Session Module-д бичье.

Бүх хандалтыг хязгаарлах бичвэрт дараах кодыг нэмье.

“#Хэрэв &UseRLS #Тэгвэл….. #Төгсгөл”

Бид шалгадаг - бүх зүйл ажилладаг.

Гэсэн хэдий ч одоо "радар ашиглах" тугийг асаасны дараа өөрчлөлтүүд шууд хүчин төгөлдөр болохгүй. Яагаад?

Учир нь сесс эхлэх үед сессийн параметрийг тохируулдаг.

Шинэ тогтмол утга бичих үед дахин тохируулах сесс параметрийн утгыг тохируулах боломжтой боловч энэ нь зөвхөн одоогийн хэрэглэгчийн сессэд л ажиллана. Бусад хэрэглэгчид системийг дахин эхлүүлэхийг хүсэх ёстой.


Эхний хэсгийн төгсгөл.

1С: Аж ахуйн нэгжийн платформын найм дахь хувилбар (өнөөдөр 8.3) нь "долоо" -той холбоотой олон өөрчлөлтийг оруулсан бөгөөд үүнд нэвтрэх эрхийг рекорд түвшинд хязгаарлах механизм онцгой анхаарал татаж байв. Онолын хувьд үүнгүйгээр хийх боломжтой боловч зөвхөн дүрүүдийг ашиглан RLS нь илүү нарийн хандалтын тохиргоонд хүрэх боломжийг олгодог. Гэхдээ энэ механизмыг зөв ажиллуулахын тулд та түүний мөн чанарыг тодорхой ойлгож, 1С-ийг хөгжүүлэх хангалттай туршлагатай байх хэрэгтэй.

RLS гэж юу вэ?

Энэхүү функцын мөн чанар нь хөгжүүлэгчийн тодорхой хэрэглэгч эсвэл бүлэг хэрэглэгчдийг өгөгдлийн сангийн хүснэгтийн хүснэгт эсвэл талбарт хандахаас урьдчилан сэргийлэх чадвар юм. Ихэвчлэн хязгаарлалтыг 1С хэрэглэгчдэд нууц, нууц мэдээллийг харах, засварлахаас урьдчилан сэргийлэх зорилгоор ашигладаг, жишээлбэл, бүлэгт багтсан компанийн ажилчдыг зөвхөн байгууллагынхаа баримт бичгийг үзэхийг хязгаарлах. Мөн интерфэйсээс шаардлагагүй мэдээллийг арилгахын тулд бүртгэлийн түвшинд нэвтрэх эрхийг хязгаарлах механизмыг ашиглаж болно.

RLS хязгаарлалтын асуулга бичихийн тулд та үүрэг үүсгэх эсвэл одоо байгаа дүрийг авах хэрэгтэй. 1С 8.3 дээр RLS-ийг тохируулах нь дараах хэрэглэгчийн үйлдлүүдэд ашиглагдаж болно.

  • Нэмэлт;
  • Унших;
  • Устгах;
  • Өөрчлөх.

Хандалтыг тохируулах хамгийн өргөн боломжуудаас гадна RLS нь сул талуудтай:

  1. Хүсэлтийг синтаксийн дүрмийг харгалзан суулгасан хэлээр бичих шаардлагатай тул хөгжүүлэгчийн мэргэшлийн шаардлага;
  2. Нөхцөл байдлыг хурдан дибаг хийх чадвар дутмаг;
  3. Логикийг тайлбарлах хязгаарлагдмал боломжууд: хэт нарийн төвөгтэй нөхцлийг баримт бичгийн модуль, лавлах номонд бичих шаардлагатай хэвээр байх болно;
  4. Мэдээллийн сангийн клиент-сервер хувилбарт асуулгад багтсан хүснэгтүүдийн далд өсөлт боломжтой. Түүнээс гадна, энэ үйл явцыг хянах нь маш хэцүү байдаг;
  5. Нөөцийн шаардлага. RLS хязгаарлалт нь үйлчлүүлэгчийн машин болон сервер дээр маш их хүч зарцуулдаг;
  6. Бага зэрэг баримт бичгийг чөлөөтэй авах боломжтой.

1C RLS-ийг тохируулсны дараа гарч болох өөр нэг асуудал бол тайлан байж болно. Баримт нь хөгжүүлэгчид RLS-ийн боломжит хязгаарлалтуудыг хангаж, зөвхөн зөвшөөрөгдсөн өгөгдлийг харуулах байдлаар тайлангуудыг бий болгодог. Хэрэв хэрэглэгчид өөр өөр RLS хязгаарлалтыг тохируулсан бол ижил параметрийн тайлан дахь өгөгдөл өөр байж болно. Энэ нь асуулт үүсгэж болзошгүй тул RLS дээр тайлан гаргах эсвэл асуулга бичихдээ эдгээр нөхцөл байдлыг анхаарч үзэх хэрэгтэй.

RLS хязгаарлалт үүсгэх

RLS хязгаарлалт нэмэхийн тулд та хүссэн дүрээ олж, давхар товшиж нээх хэрэгтэй.

Нээгдсэн цонхонд "Эрх" ба "Хязгаарлалтын загвар" гэсэн 2 таб байна. Тодорхой үйлдэлд тодорхой хязгаарлалт тавихын тулд та үүнийг сонгоод баруун доод хэсэгт байрлах ногоон дээр дарах хэрэгтэй. 1С-д суулгасан хэлээр 1C RLS хязгаарлалтыг тохируулах мөр гарч ирнэ.


Хэрэв та 1С синтаксийг мэддэг бол (гарынхаа ар тал шиг) "Хандалтын хязгаарлалт" талбарт шууд бичиж болно. 1С-ийн хөгжүүлэгчид асуулга үүсгэгчийг нээх боломжийг олгосон бөгөөд энэ нь ямар хязгаарлалт хийж болохыг санал болгож, туслах болно. Үүнийг нээхийн тулд та гурван цэг (Сонгох) эсвэл F4 товчлуур дээр дарах хэрэгтэй бөгөөд "Query Builder ..." товчлуур бүхий цонх гарч ирнэ.


Гарч ирэх цонхонд та зөвхөн энэ директорт төдийгүй бусад системийн объектуудад хязгаарлалт тохируулж болно. Үүнийг хийхийн тулд та тэдгээрийг "Хүснэгт ба талбарууд" таб дээр нэмэх хэрэгтэй. Бид "Нэршил" лавлах талбарт хязгаарлалтыг бүртгэж, "OK" дээр дарна уу. Хувьсагчдын нэрсийн талаар болгоомжтой байгаарай: RLS параметрүүдийг хэрэглэгчийн сессийн эхэнд тохируулсан бөгөөд мета өгөгдлийн объектод агуулагдах ёстой.


"Хязгаарлалтын загварууд" таб дээр та ижил RLS тохиргоог 1С 8.3 руу хуулахад шаардлагатай асуултуудыг зааж өгнө. Загвараа нэмсний дараа нэвтрэх эрхийн тохиргоонд нэрийг нь ашиглаж болно.

Мөн хэд хэдэн дүрд нэгэн зэрэг хязгаарлалт нэмэх боломжтой. Үүнийг хийхийн тулд тохиргооны модноос "Үүрэг" хэсэгт хулганы баруун товчийг дараад "Бүх үүрэг" -ийг сонгох хэрэгтэй.


Дүгнэж хэлэхэд, энэ нийтлэл нь 1С хөгжүүлэгчийн зөвлөхүүдэд зориулагдсан бөгөөд юуны түрүүнд 1С: Аж ахуйн нэгжийн хөгжлийн туршлагатай хүмүүст туслах болно гэдгийг тэмдэглэхийг хүсч байна. Хэдийгээр илэрхий энгийн боловч семантикийн мэдлэг, эрхээ зөв хуваарилахын тулд өөрийн аж ахуйн нэгж эсвэл үйлчлүүлэгчийн байгууллагын бизнесийн үйл явцын бүтцийг ойлгох нь тодорхой түвшний мэдлэг, туршлага шаарддаг.

1С Enterprise 8 системд өнөөдөр бид эрхийн механизмыг үргэлжлүүлэн судалж, RLS механизмыг (бүртгэлтийн түвшинд эрхийг хязгаарлах) нарийвчлан судлах болно.

Доор бид энэ аргын давуу болон сул талуудыг авч үзэх бөгөөд жишээг ашиглан 1C Enterprise 8.3-т RLS-ийг тохируулах талаар авч үзэх болно.

1C RLS (Record Level Security) эсвэл бичлэгийн түвшинд эрхийг хязгаарлах- эдгээр нь 1С систем дэх хэрэглэгчийн эрх бөгөөд энэ нь өгөгдөл динамикаар өөрчлөгдөж байгаа нөхцөлд хэрэглэгчдийн эрхийг тусгаарлах боломжийг олгодог.

1C RLS тохиргооны хамгийн түгээмэл төрөл бол байгууллага эсвэл үйлчлүүлэгчид хэрэглэгчийн харагдах байдлыг хязгаарлах явдал юм (хэрэглэгч зөвхөн "өөрийнхөө" өгөгдлийг хардаг).

Гол давуу тал нь механизм байгаа эсэх, механизм нь нэлээд төвөгтэй, сонирхолтой юм. Хэрэглэгчийн эрхийг маш нарийн ялгах боломжийг танд олгоно - хэрэглэгчид системд бусад өгөгдөл байгаа эсэхийг мэдэхгүй байж магадгүй юм.

1С 8 RLS-ийн сул талууд

Алдаа дутагдлуудын дунд системийн гүйцэтгэл мэдэгдэхүйц буурч байгааг тэмдэглэж болно. Энэ нь платформ нь мэдээллийн санд асуулга үүсгэх үед хөгжүүлэгчийн аливаа хүсэлтийг нэмэлт нөхцөлөөр хүндрүүлдэгтэй холбоотой юм.

Мөн сул талуудын дунд энэ функцийг тохируулах нарийн төвөгтэй байдал, дибаг хийхэд хүндрэлтэй байдаг. 1С нь энэ функцийг тохируулах, ажиллуулах талаар маш бага материал гаргасан. Механизмыг зөв тохируулах мэргэжилтэн олоход хэцүү байдаг.

1C RLS рекорд түвшинд эрхийн хязгаарлалтыг тохируулах

Бичлэгийн түвшний зөвшөөрөл (RLS) нь дараах төрлийн эрхийг хязгаарлахад ашиглагддаг:

  • Уншиж байна
  • Нэмэлт
  • Өөрчлөх
  • Устгах

1С дээр 267 видео хичээлийг үнэгүй аваарай:

Гаднах байдлаар RLS (бичлэгийн түвшний эрх) тохируулах нь энгийн . Баримт бичгийн толгой хэсгээс үйлчлүүлэгчийн баримт бичгийн харагдах байдлыг хязгаарлах загварын жишээ:

##Хэрэв &Бичлэгийн түвшний хандалтын эрхийн хязгаарлалтыг ашиглавал ##Тэгвэл

Одоогийн Хүснэгтийг # Одоогийн Хүснэгтээс Одоогийн Хүснэгт
ЗҮҮН НЭГДЭХ (ТӨРӨЛ ЗҮЙЛИЙГ СОНГОХ
Бүлгийн найрлага.Link AS User Group
FROM
Directory.User Groups.UsersGroups AS Group Composition
ХААНА
GroupComposition.User = &CurrentUser) AS UserGroups
Програм хангамж (&Record-н түвшний хандалтын эрхийн хязгаарлалтууд)
ХААНА (&UseRecordLevelPermissionRestrictions = FALSE
ЭСВЭЛ (1 В БИШ
(ТОП 1-ийг сонго
1 ХЭРХЭН СОНГОХ ВЭ
FROM
Мэдээллийн бүртгэл.Хандалтын объектын төрлүүдийн зорилго Хандалтын объектын төрлүүдийн зорилго
ХААНА
Хандалтын объектын төрлүүдийн зорилго.UserGroup = UserGroups.UserGroup
БА СОНГОЛТ
ХЭЗЭЭ Хандалтын объектын төрлүүдийн зорилго.Хандалтын объектын төрөл = VALUE (Тооцоо. Хандалтын объектын төрлүүд. Эсрэг талууд)
Мөн CurrentTable.#Parameter(1) LINK Directory.Counterparties
БА одоогийн Хүснэгт БИШ.#Параметр(1) = УТГА(Дирectory.Accounts.EmptyLink)
ТЭГВЭЛ СОНГОЛТ ХИЙ
ХЭЗЭЭ 1 В
(ТОП 1-ийг сонго
1
FROM
Лавлах.Харилцагч талууд Гүйцэтгэгчдийн ДОТООД НЭГДСЭН мэдээллийн бүртгэл.Хэрэглэгчийн хандалтын эрхийн тохиргоо AS Хэрэглэгчийн хандалтын эрхийн тохиргоо
BY
UserAccessRightSettings.AccessObject = Counterparties.AccessGroupToCounterparty
Мөн UserAccessRightSettings.AccessObjectType = VALUE(Тооцоо.AccessObjectTypes.Counterparties)
БА (Хэрэглэгчийн хандалтын эрхийн тохиргоо. Хэрэглэгч = Хандалтын объектын төрлүүдийн хуваарилалт. Хэрэглэгчийн бүлэг
ЭСВЭЛ UserAccessRightSettings.User = VALUE(Directory.UserGroups.AllUsers))
Мөн UserAccessRightSettings.Record = ҮНЭН
ХААНА
Counterparties.Link = Одоогийн Хүснэгт.#Parameter(1))
ТЭГВЭЛ ҮНЭН
ӨӨР ХУДАЛ
ТӨГСГӨЛ
БУСДАА ҮНЭН
Төгсгөл = ХУДАЛ))
БА UserGroups БИШ.UserGroup NULL IS)
##EndIf

Үндсэндээ "#ОдоогийнХүснэгт" хүснэгтийг асуух бүрт энэ асуулга нэмэгддэг. Үүнээс бид дээд түвшний хязгаарлалтын механизм ямар нэмэлт ачааллыг авчирдагийг төсөөлж болно.

Таны харж байгаагаар хүсэлт нь "&Хандалтын эрхийн хязгаарлалтыг бичлэгийн түвшинд ашиглах" гэх мэт тусгай параметрүүдтэй байна. Радар дахь эдгээр параметрүүдийг мета өгөгдлийн объектуудаас сонгосон - " ". Дүрмээр бол тэдгээрийг хэрэглэгчийн сессийн эхэнд тохируулдаг.

Өгөгдлийн хандалтыг хязгаарлах бүтээгч

Хөгжүүлэгчийн тав тухыг хангах үүднээс 1C 8.3 нь радарыг тохируулахад туслах тусгай хэрэгсэлтэй - Өгөгдлийн хандалтыг хязгаарлах дизайнер. Үүнийг "Хандалтын хязгаарлалт" талбараас дууддаг. Дараах байдлаар:

1С нь нэвтрэх эрхийн суурилагдсан системтэй (энэ системийг 1С үүрэг гэж нэрлэдэг). Энэ систем нь хөдөлгөөнгүй байдаг - администратор 1С эрхийг олгосон тул ийм байх болно.

Нэмж дурдахад динамик хандалтын эрхийн систем (RLS 1C гэж нэрлэдэг) байдаг. Үүнд хэрэглэгч заасан параметрүүд дээр үндэслэн ажиллаж байх үед 1С эрхийг динамикаар тооцдог.

Төрөл бүрийн програмын аюулгүй байдлын хамгийн түгээмэл тохиргоонуудын нэг бол хэрэглэгчийн бүлгүүдэд унших/бичих зөвшөөрлийн багц бөгөөд дараа нь хэрэглэгчийг бүлэгт оруулах эсвэл хасах явдал юм. Жишээлбэл, ижил төстэй системийг Windows AD (Active Directory) дээр ашигладаг.

1С дахь ийм хамгаалалтын системийг 1С үүрэг гэж нэрлэдэг. 1С-ийн үүрэг нь Ерөнхий/Үүргийн салбар дахь тохиргоонд байрладаг. 1С үүрэг нь 1С эрхийг хуваарилсан бүлгүүдийн үүрэг гүйцэтгэдэг. Дараа нь хэрэглэгчийг энэ бүлэгт оруулах эсвэл хасна.

1С дүрийн нэр дээр давхар товшсоноор 1С дүрийн эрхийн засварлагч нээгдэнэ. Зүүн талд 1С объектуудын жагсаалт байна. Аль нэгийг нь сонгоод нэвтрэх эрхийн сонголтууд баруун талд гарч ирнэ (хамгийн багадаа: унших, нэмэх, өөрчлөх, устгах).

Дээд талын салбарын хувьд (одоогийн тохиргооны нэр) 1С-ийн захиргааны эрх, янз бүрийн сонголтуудыг эхлүүлэх хандалтыг бий болгосон.

Бүх 1С эрхийг хоёр бүлэгт хуваадаг - "энгийн" эрх ба "интерактив" нэмэлттэй ижил эрх. Энэ нь юу гэсэн үг вэ?

Хэрэглэгч маягтыг нээж (жишээлбэл, боловсруулах) түүн дээрх товчлуурыг дарахад суулгагдсан 1С хэл дээрх програм нь тодорхой үйлдлүүдийг гүйцэтгэдэг, жишээлбэл, баримтыг устгах. "Энгийн" 1С эрх нь эдгээр үйлдлүүдийг зөвшөөрөх үүрэгтэй (программын дагуу гүйцэтгэдэг).

Хэрэглэгч өдрийн тэмдэглэл нээж, гар ашиглан бие даан ямар нэгэн зүйл хийж эхлэхэд (жишээлбэл, шинэ баримт бичиг оруулах) эдгээр нь "интерактив" 1С эрх юм.

Хэрэглэгч хэд хэдэн дүрд хандах эрхтэй байж болох бөгөөд энэ тохиолдолд зөвшөөрлүүд хуримтлагдана.

1С объект - дүрүүдийг ашиглан нэвтрэх эрхийг тохируулах боломжуудын задаргаа. Өөрөөр хэлбэл, та лавлах хандалтыг идэвхжүүлж эсвэл идэвхгүй болгож болно. Та үүнийг бага зэрэг асааж болохгүй.

Энэ зорилгоор 1С RLS хэмээх 1С дүрийн системийн өргөтгөл байдаг. Энэ бол хандалтыг хэсэгчлэн хязгаарлах боломжийг олгодог динамик хандалтын эрхийн систем юм. Жишээлбэл, хэрэглэгч зөвхөн тодорхой агуулах, байгууллагын бичиг баримтыг хардаг, бусдыг нь хардаггүй.

Болгоомжтой! Төөрөгдөлтэй RLS 1C схемийг ашиглах үед өөр өөр хэрэглэгчид өөр өөр хэрэглэгчдээс гаргасан ижил тайланг нэгтгэх гэж оролдох үед асуулт гарч ирж магадгүй юм.

Та тодорхой лавлах (жишээ нь, байгууллага) болон тодорхой эрх (жишээ нь, унших) авдаг. Та 1С дүрд уншихыг зөвшөөрдөг. Өгөгдлийн хандалтыг хязгаарлах самбар дээр та асуулгын текстийг тохируулсан бөгөөд энэ нь тохиргооноос хамааран ҮНЭН эсвэл ХУДАЛ гэж буцаана. Тохиргоог ихэвчлэн мэдээллийн бүртгэлд хадгалдаг (жишээлбэл, Нягтлан бодох бүртгэл ба хэрэглэгчийн хандалтын эрхийн тохиргоо гэх мэт тохиргооны мэдээллийн бүртгэл).

Энэ асуулга нь лавлах оруулга бүрийн хувьд динамикаар (уншихыг оролдох үед) гүйцэтгэгддэг. Тиймээс, аюулгүй байдлын асуулга ҮНЭН гэж хариулсан бичлэгүүдийн хувьд хэрэглэгч үүнийг харах болно, харин бусад нь харахгүй.
RLS 1C хязгаарлалтад хамаарах 1С эрхүүдийг саарал өнгөөр ​​тодруулсан.

RLS 1C-ийн ижил тохиргоог хуулах нь загваруудыг ашиглан хийгддэг. Та загвар үүсгэж, түүнийгээ (жишээ нь) MyTemplate гэж нэрлээд, түүнд аюулгүй байдлын хүсэлтийг зааж өгнө үү. Дараа нь 1С хандалтын эрхийн тохиргоонд загварын нэрийг дараах байдлаар зааж өгнө үү: "#МинийЗагвар".

Хэрэглэгч 1С Enterprise горимд ажиллаж байх үед RLS 1C-г ажиллуулахдаа "Эрх хангалтгүй" гэсэн алдааны мессежийг хүлээн авах боломжтой (жишээлбэл, Xxxx лавлахыг унших).

Энэ нь RLS 1C хэд хэдэн бичлэгийг уншихыг хориглосон гэсэн үг юм.

Ийм мессеж гарч ирэхээс урьдчилан сэргийлэхийн тулд 1С хэл дээрх хүсэлтийн текстэнд ALLOWED () гэсэн үгийг ашиглах шаардлагатай.

Жишээлбэл: