ไม่ได้ระบุค่าพารามิเตอร์ rls 1c สมุดบันทึกของโปรแกรมเมอร์ สร้างข้อจำกัด RLS

โปรแกรม 1C มีระบบสิทธิ์การเข้าถึงในตัวซึ่งอยู่ใน Configurator - General - Roles

ระบบนี้มีลักษณะเฉพาะอย่างไรและจุดประสงค์หลักคืออะไร? ช่วยให้คุณสามารถอธิบายชุดสิทธิ์ที่สอดคล้องกับตำแหน่งของผู้ใช้หรือประเภทของกิจกรรม ระบบนี้สิทธิ์การเข้าถึงมีลักษณะคงที่ซึ่งหมายความว่าเนื่องจากผู้ดูแลระบบตั้งค่าสิทธิ์การเข้าถึงเป็น 1C จึงเป็นเช่นนี้ นอกเหนือจากระบบคงที่แล้วยังมีระบบสิทธิ์การเข้าถึงที่สอง - ไดนามิก (RLS) ในระบบนี้ สิทธิ์การเข้าถึงจะถูกคำนวณแบบไดนามิก ขึ้นอยู่กับ พารามิเตอร์ที่กำหนดในกระบวนการทำงาน

บทบาทใน 1C

ไปยังการตั้งค่าความปลอดภัยทั่วไปใน โปรแกรมที่แตกต่างกันคือชุดที่เรียกว่าชุดสิทธิ์การอ่าน/เขียนสำหรับกลุ่มผู้ใช้ต่างๆ และในอนาคต: การรวมหรือแยกผู้ใช้เฉพาะออกจากกลุ่ม ตัวอย่างเช่นระบบดังกล่าวถูกนำมาใช้ใน ระบบปฏิบัติการโฆษณาวินโดวส์ ( ไดเรกทอรีที่ใช้งานอยู่- ระบบรักษาความปลอดภัยที่ใช้ใน ซอฟต์แวร์ 1C ได้รับชื่อ - บทบาท มันคืออะไร? บทบาทใน 1C เป็นวัตถุที่อยู่ในการกำหนดค่าในสาขา: ทั่วไป - บทบาท บทบาท 1C เหล่านี้คือกลุ่มที่ได้รับมอบหมายสิทธิ์ ในอนาคตสามารถรวมหรือแยกผู้ใช้แต่ละคนออกจากกลุ่มนี้ได้

เมื่อดับเบิลคลิกที่ชื่อบทบาท คุณจะเปิดตัวแก้ไขสิทธิ์สำหรับบทบาทนั้น ทางด้านซ้ายคือรายการวัตถุ ตรวจสอบรายการใดรายการหนึ่งและทางด้านขวาคุณจะเห็นตัวเลือกสำหรับสิทธิ์การเข้าถึงที่เป็นไปได้:

— การอ่าน: การรับบันทึกหรือบางส่วนจากตารางฐานข้อมูล
— การเพิ่ม: บันทึกใหม่ในขณะที่บันทึกรายการที่มีอยู่
— การแก้ไข: การเปลี่ยนแปลงบันทึกที่มีอยู่
— การลบ: บางบันทึก ส่วนที่เหลือไม่เปลี่ยนแปลง

โปรดทราบว่าสิทธิ์การเข้าถึงทั้งหมดสามารถแบ่งออกเป็นสองกลุ่มหลัก - นี่เป็นสิทธิ์ "ยุติธรรม" และนี่คือสิทธิ์อย่างแน่นอนโดยมีการเพิ่มคุณลักษณะ "โต้ตอบ" สิ่งนี้หมายความว่าอย่างไร? และประเด็นก็คือสิ่งนี้

ในกรณีที่ผู้ใช้เปิดแบบฟอร์ม เช่น การประมวลผล และในขณะเดียวกันก็คลิกด้วยเมาส์ โปรแกรมในภาษา 1C ในตัวจะเริ่มดำเนินการเฉพาะ เช่น การลบเอกสาร เป็นต้น สิทธิ์ 1C “อย่างง่าย” มีหน้าที่รับผิดชอบในการอนุญาตให้ดำเนินการดังกล่าวโดยโปรแกรม

ในกรณีที่ผู้ใช้เปิดบันทึกประจำวันและเริ่มป้อนบางอย่างจากแป้นพิมพ์อย่างอิสระ (เช่น เอกสารใหม่) สิทธิ์ "เชิงโต้ตอบ" ของ 1C จะต้องรับผิดชอบในการอนุญาตการดำเนินการดังกล่าว ผู้ใช้แต่ละคนสามารถเข้าถึงหลายบทบาทพร้อมกัน จากนั้นสิทธิ์จะถูกเพิ่มเข้าไป

RLS ใน 1C

คุณสามารถเปิดใช้งานการเข้าถึงไดเร็กทอรี (หรือเอกสาร) หรือปิดใช้งานได้ คุณไม่สามารถ "เปิดใช้งานเพียงเล็กน้อย" เพื่อจุดประสงค์นี้ มีส่วนขยายบางอย่างของระบบบทบาท 1C ซึ่งเรียกว่า RLS นี่คือระบบสิทธิ์การเข้าถึงแบบไดนามิกที่แนะนำข้อจำกัดบางส่วนในการเข้าถึง ตัวอย่างเช่น เฉพาะเอกสารขององค์กรและคลังสินค้าบางแห่งเท่านั้นที่จะพร้อมใช้งานสำหรับผู้ใช้ และเขาจะไม่เห็นส่วนที่เหลือ

โปรดทราบว่าต้องใช้ระบบ RLS อย่างระมัดระวัง เนื่องจากรูปแบบที่ซับซ้อนของมันค่อนข้างยากที่จะเข้าใจ ผู้ใช้ที่แตกต่างกันอาจมีคำถาม เช่น เมื่อเปรียบเทียบรายงานเดียวกันซึ่งสร้างจากผู้ใช้ที่แตกต่างกัน ลองพิจารณาตัวอย่างนี้ คุณเลือกไดเร็กทอรีเฉพาะ (เช่น องค์กร) และสิทธิ์เฉพาะ (เช่น การอ่าน) นั่นคือคุณอนุญาตให้อ่านบทบาท 1C ในกรณีนี้ ในข้อจำกัดการเข้าถึงข้อมูลของแผงควบคุมระยะไกล คุณตั้งค่าข้อความของคำขอตามที่ตั้งค่าเป็นเท็จหรือจริง ขึ้นอยู่กับการตั้งค่า โดยปกติแล้ว การตั้งค่าจะถูกบันทึกไว้ในทะเบียนข้อมูลพิเศษ

คำขอนี้จะดำเนินการแบบไดนามิก (เมื่อพยายามจัดระเบียบการอ่าน) สำหรับรายการไดเร็กทอรีทั้งหมด มันทำงานดังนี้: บันทึกเหล่านั้นซึ่งคำขอความปลอดภัยกำหนดไว้ - จริง ผู้ใช้จะเห็น แต่คนอื่นไม่เห็น สิทธิ์ 1C พร้อมข้อจำกัดที่กำหนดไว้จะถูกเน้นด้วยสีเทา

การดำเนินการคัดลอกการตั้งค่า RLS ที่เหมือนกันนั้นดำเนินการโดยใช้เทมเพลต ขั้นแรก คุณต้องสร้างเทมเพลต โดยเรียกเทมเพลตนั้น เช่น MyTemplate ซึ่งคุณสะท้อนถึงคำขอด้านความปลอดภัย จากนั้นในการตั้งค่าสิทธิ์การเข้าถึง ให้ระบุชื่อของเทมเพลตนี้ในลักษณะนี้: “#MyTemplate”

เมื่อผู้ใช้ทำงานในโหมด 1C Enterprise เมื่อเชื่อมต่อกับ RLS ข้อความแสดงข้อผิดพลาดเช่น: "สิทธิ์ไม่เพียงพอ" (เช่นเพื่ออ่านไดเร็กทอรี XXX เป็นต้น) อาจปรากฏขึ้น สิ่งนี้บ่งชี้ว่าระบบ RLS ถูกบล็อกไม่ให้อ่านบันทึกบางรายการ เพื่อป้องกันไม่ให้ข้อความนี้ปรากฏขึ้นอีก คุณต้องป้อนคำว่า ALLOWED ในข้อความคำขอ

การตั้งค่าสิทธิ์ผู้ใช้ทั้งหมดที่เราจะทำภายในกรอบของบทความนี้อยู่ในส่วนที่ 1C 8.3 “การดูแลระบบ” - “การตั้งค่าผู้ใช้และสิทธิ์” อัลกอริทึมนี้คล้ายกันในการกำหนดค่าส่วนใหญ่กับ แบบฟอร์มควบคุม- โปรแกรมบัญชี 1C จะใช้เป็นตัวอย่าง แต่การตั้งค่าสิทธิ์ในโปรแกรมอื่น (1C UT 11, 1C ZUP 3, 1C ERP) จะทำในลักษณะเดียวกันทุกประการ

ไปที่ส่วน "ผู้ใช้" ของหน้าต่างการตั้งค่า ที่นี่เราเห็นไฮเปอร์ลิงก์สองรายการ: "ผู้ใช้" และ "การตั้งค่าการเข้าสู่ระบบ" รายการแรกช่วยให้คุณสามารถไปที่รายชื่อผู้ใช้ที่กำหนดได้โดยตรง ฐานข้อมูล- ก่อนที่จะสร้างผู้ใช้ใหม่ มาดูการตั้งค่าการเข้าสู่ระบบที่เป็นไปได้ (ไฮเปอร์ลิงก์ทางด้านขวา)

ในแบบฟอร์มการตั้งค่านี้ คุณสามารถกำหนดค่าความซับซ้อนของรหัสผ่านได้ (อย่างน้อย 7 ตัวอักษร เนื้อหาบังคับ ประเภทต่างๆสัญลักษณ์ ฯลฯ) คุณยังสามารถระบุความยาวของรหัสผ่าน ระยะเวลาที่ใช้งานได้ และห้ามผู้ใช้เข้าสู่ระบบโปรแกรมหากไม่ได้ใช้งานในช่วงระยะเวลาหนึ่ง

ตอนนี้คุณสามารถดำเนินการเพิ่มผู้ใช้ใหม่ใน 1C ได้โดยตรง ซึ่งสามารถทำได้โดยคลิกปุ่ม "สร้าง" ดังที่แสดงในภาพด้านล่าง

ก่อนอื่นเรามาระบุกันก่อน ชื่อเต็ม- “Antonov Dmitry Petrovich” และเลือกจากไดเร็กทอรีที่เกี่ยวข้อง รายบุคคล- ที่นี่คุณสามารถระบุแผนกที่พนักงานของเราทำงานอยู่ได้

ชื่อเข้าสู่ระบบ "AntonovDP" ถูกแทนที่ด้วยตัวย่อของชื่อเต็ม "Antonov Dmitry Petrovich" โดยอัตโนมัติ มาตั้งรหัสผ่านและการรับรองความถูกต้อง 1C Enterprise กัน ที่นี่คุณสามารถระบุได้ว่า ให้กับผู้ใช้รายนี้เปลี่ยนรหัสผ่านของคุณเอง

สมมติว่าเราต้องการให้ Dmitry Petrovich Antonov อยู่ในรายการตัวเลือกเมื่อเริ่มต้นฐานข้อมูลนี้ ในการดำเนินการนี้ คุณจะต้องตั้งค่าช่องทำเครื่องหมายในรายการ "แสดงในรายการตัวเลือก" เป็นผลให้หน้าต่างการอนุญาตเมื่อเริ่มโปรแกรมจะมีลักษณะดังแสดงในรูปด้านล่าง

มาดูการตั้งค่าที่สำคัญอีกประการหนึ่งในการ์ดไดเร็กทอรีผู้ใช้ - "อนุญาตให้เข้าสู่ระบบโปรแกรมได้" หากไม่ได้ตั้งค่าความล่าช้า ผู้ใช้จะไม่สามารถเข้าสู่ฐานข้อมูลนี้ได้

สิทธิ์การเข้าถึง

หลังจากกรอกข้อมูลทั้งหมดในบัตรผู้ใช้ - Dmitry Petrovich Antonov เราจะจดบันทึกและดำเนินการตั้งค่าสิทธิ์การเข้าถึงดังแสดงในรูปด้านล่าง

รายการโปรไฟล์การเข้าถึงที่ป้อนไว้ในโปรแกรมก่อนหน้านี้ที่เปิดต่อหน้าเรา ทำเครื่องหมายในช่องที่จำเป็น

เข้าถึงโปรไฟล์กลุ่ม

โปรไฟล์กลุ่มการเข้าถึงสามารถกำหนดค่าได้จากแบบฟอร์มการตั้งค่าผู้ใช้หลักและสิทธิ์ ไปที่ส่วน "กลุ่มการเข้าถึง" และคลิกที่ไฮเปอร์ลิงก์ "โปรไฟล์กลุ่มการเข้าถึง"

มาสร้างกันเถอะ กลุ่มใหม่จากแบบฟอร์มรายการที่เปิดขึ้นมา ในส่วนตารางบนแท็บ "การดำเนินการที่อนุญาต (บทบาท)" ให้ทำเครื่องหมายในช่องสำหรับบทบาทเหล่านั้นที่จะส่งผลต่อสิทธิ์การเข้าถึงของผู้ใช้ที่รวมอยู่ในกลุ่มที่เรากำลังสร้าง บทบาททั้งหมดนี้ถูกสร้างขึ้นและกำหนดค่าในตัวกำหนดค่า ไม่สามารถเปลี่ยนแปลงหรือสร้างขึ้นใหม่จากโหมดผู้ใช้ คุณสามารถเลือกได้จากรายการที่มีอยู่เท่านั้น

RLS: การจำกัดการเข้าถึงระดับบันทึก

ช่วยให้คุณกำหนดค่าการเข้าถึงข้อมูลโปรแกรมได้อย่างยืดหยุ่นมากขึ้นในบางพื้นที่ หากต้องการเปิดใช้งาน ให้ทำเครื่องหมายที่ช่องชื่อเดียวกันในแบบฟอร์มการตั้งค่าผู้ใช้และสิทธิ์

โปรดทราบว่าการเปิดใช้งานการตั้งค่านี้อาจส่งผลเสียต่อประสิทธิภาพของระบบ ประเด็นก็คือกลไก RLS เปลี่ยนแปลงคำขอทั้งหมดขึ้นอยู่กับ ข้อ จำกัด ที่จัดตั้งขึ้น.

ไปที่โปรไฟล์กลุ่มการเข้าถึง "กลุ่มทดสอบ" ที่เราสร้างไว้ก่อนหน้านี้ รูปด้านล่างแสดงให้เห็นว่าหลังจากเปิดใช้งานการจำกัดการเข้าถึงในระดับบันทึกแล้ว แท็บ "การจำกัดการเข้าถึง" เพิ่มเติมจะปรากฏขึ้น

สมมติว่าเราต้องการให้ผู้ใช้ที่กำหนดให้กับกลุ่มทดสอบสามารถเข้าถึงข้อมูลสำหรับทุกองค์กรในฐานข้อมูลนี้ ยกเว้นองค์กรที่ระบุในโปรไฟล์

ในส่วนตารางด้านบน เราจะกำหนดข้อจำกัดการเข้าถึงตามองค์กร ในส่วนล่าง เราจะชี้แจงว่าองค์กร “Roga LLC” จะไม่สามารถเข้าถึงข้อมูล (เอกสาร ไดเรกทอรี ฯลฯ) ได้

1C มีระบบสิทธิ์การเข้าถึงในตัว (ระบบนี้เรียกว่าบทบาท 1C) ระบบนี้เป็นแบบคงที่ - ตามที่ผู้ดูแลระบบมอบหมายสิทธิ์ 1C มันจะเป็นอย่างนั้น

นอกจากนี้ยังมีระบบสิทธิ์การเข้าถึงแบบไดนามิก (เรียกว่า RLS 1C) ในนั้นสิทธิ์ 1C จะถูกคำนวณแบบไดนามิกในขณะที่ผู้ใช้ทำงานตามพารามิเตอร์ที่ระบุ

การตั้งค่าความปลอดภัยที่พบบ่อยที่สุดในโปรแกรมต่างๆ คือชุดสิทธิ์การอ่าน/เขียนสำหรับกลุ่มผู้ใช้ จากนั้นจึงรวมหรือแยกผู้ใช้ออกจากกลุ่ม ตัวอย่างเช่น มีการใช้ระบบที่คล้ายกันใน Windows AD (Active Directory)

ระบบรักษาความปลอดภัยใน 1C เรียกว่าบทบาท 1C บทบาท 1C อยู่ในการกำหนดค่าในสาขาทั่วไป/บทบาท บทบาท 1C ทำหน้าที่เป็นกลุ่มที่ได้รับมอบหมายสิทธิ์ 1C จากนั้นผู้ใช้จะถูกรวมหรือแยกออกจากกลุ่มนี้

เมื่อดับเบิลคลิกที่ชื่อของบทบาท 1C ตัวแก้ไขสิทธิ์สำหรับบทบาท 1C จะเปิดขึ้น ทางด้านซ้ายคือรายการวัตถุ 1C เลือกรายการใดรายการหนึ่งและตัวเลือกสำหรับสิทธิ์การเข้าถึงจะปรากฏทางด้านขวา (อย่างน้อย: อ่าน เพิ่ม เปลี่ยนแปลง ลบ)

สำหรับสาขาบน (ชื่อ การกำหนดค่าปัจจุบัน) มีการสร้างสิทธิ์ผู้ดูแลระบบ 1C และการเข้าถึงการเปิดตัว ตัวเลือกต่างๆ.

สิทธิ์ 1C ทั้งหมดแบ่งออกเป็นสองกลุ่ม - สิทธิ์แบบ "ธรรมดา" และสิทธิ์แบบเดียวกันโดยเพิ่ม "แบบโต้ตอบ" มันหมายความว่าอะไร?

เมื่อผู้ใช้เปิดแบบฟอร์ม (เช่น กำลังประมวลผล) และกดปุ่มบนแบบฟอร์ม โปรแกรมในภาษา 1C ในตัวจะดำเนินการบางอย่าง เช่น การลบเอกสาร สิทธิ์ 1C “เพียง” มีหน้าที่รับผิดชอบในการอนุญาตการดำเนินการเหล่านี้ (ดำเนินการโดยทางโปรแกรม)

เมื่อผู้ใช้เปิดบันทึกประจำวันและเริ่มทำบางสิ่งโดยใช้แป้นพิมพ์อย่างอิสระ (เช่น การป้อนเอกสารใหม่) สิ่งเหล่านี้ถือเป็นสิทธิ์ 1C แบบ "โต้ตอบ"

ผู้ใช้อาจมีสิทธิ์เข้าถึงหลายบทบาท ซึ่งในกรณีนี้สิทธิ์จะถูกสะสม

รายละเอียดของความเป็นไปได้ในการตั้งค่าสิทธิ์การเข้าถึงโดยใช้บทบาท – วัตถุ 1C นั่นคือคุณสามารถเปิดใช้งานการเข้าถึงไดเร็กทอรีหรือปิดใช้งานได้ คุณไม่สามารถเปิดใช้งานได้สักหน่อย

เพื่อจุดประสงค์นี้ มีส่วนขยายของระบบบทบาท 1C ที่เรียกว่า 1C RLS นี่คือระบบสิทธิ์การเข้าถึงแบบไดนามิกที่ช่วยให้คุณสามารถจำกัดการเข้าถึงได้บางส่วน ตัวอย่างเช่น ผู้ใช้เห็นเฉพาะเอกสารสำหรับคลังสินค้าและองค์กรบางแห่ง และจะไม่เห็นส่วนที่เหลือ

อย่างระมัดระวัง! เมื่อใช้รูปแบบ RLS 1C ที่สร้างความสับสน ผู้ใช้ที่แตกต่างกันอาจมีคำถามเมื่อพยายามกระทบยอดรายงานเดียวกันที่สร้างจากผู้ใช้ที่แตกต่างกัน

คุณยึดถือไดเร็กทอรีบางอย่าง (เช่น องค์กร) และสิทธิบางอย่าง (เช่น การอ่าน) คุณอนุญาตให้อ่านบทบาท 1C ในแผงการจำกัดการเข้าถึงข้อมูล คุณตั้งค่าข้อความคิวรีซึ่งส่งคืน TRUE หรือ FALSE ขึ้นอยู่กับการตั้งค่า โดยปกติการตั้งค่าจะถูกจัดเก็บไว้ในการลงทะเบียนข้อมูล (เช่น ข้อมูลการกำหนดค่าการลงทะเบียนการตั้งค่าการบัญชีและสิทธิ์การเข้าถึงของผู้ใช้)

แบบสอบถามนี้ดำเนินการแบบไดนามิก (เมื่อพยายามใช้การอ่าน) สำหรับแต่ละรายการไดเรกทอรี ดังนั้น สำหรับเรกคอร์ดที่แบบสอบถามความปลอดภัยส่งคืน TRUE ผู้ใช้จะเห็นข้อมูลนั้น แต่ส่วนที่เหลือจะไม่เห็น
สิทธิ์ 1C ที่อยู่ภายใต้ข้อจำกัด RLS 1C จะถูกเน้นด้วยสีเทา

การคัดลอกการตั้งค่า RLS 1C เดียวกันทำได้โดยใช้เทมเพลต คุณสร้างเทมเพลต ตั้งชื่อ (เช่น) MyTemplate และระบุคำขอความปลอดภัยในนั้น ถัดไปในการตั้งค่าสิทธิ์การเข้าถึง 1C ให้ระบุชื่อเทมเพลตดังนี้: “#MyTemplate”

เมื่อผู้ใช้ทำงานในโหมด 1C Enterprise เมื่อใช้งาน RLS 1C เขาอาจได้รับข้อความแสดงข้อผิดพลาด "สิทธิ์ไม่เพียงพอ" (เช่น เพื่ออ่านไดเร็กทอรี xxxx)

ซึ่งหมายความว่า RLS 1C ได้บล็อกการอ่านหลายบันทึก

เพื่อป้องกันไม่ให้ข้อความดังกล่าวปรากฏขึ้น จำเป็นต้องใช้คำว่า ALLOWED () ในข้อความคำขอในภาษา 1C ในตัว

ตัวอย่างเช่น:

เวอร์ชันที่แปดของแพลตฟอร์ม 1C: Enterprise (วันนี้ 8.3) มีการเปลี่ยนแปลงมากมายที่เกี่ยวข้องกับ "เจ็ด" ซึ่งกลไกในการจำกัดสิทธิ์การเข้าถึงในระดับบันทึกนั้นมีความโดดเด่นเป็นพิเศษ แม้ว่าในทางทฤษฎีจะสามารถทำได้โดยไม่ต้องใช้มัน แต่การใช้เพียงบทบาทเท่านั้น RLS ช่วยให้คุณประสบความสำเร็จมากขึ้น การปรับแต่งอย่างละเอียดเข้าถึง. แต่ในการใช้งานกลไกนี้อย่างเหมาะสม คุณต้องเข้าใจสาระสำคัญของมันอย่างชัดเจนและมีประสบการณ์เพียงพอในการพัฒนาใน 1C

RLS คืออะไร?

สาระสำคัญของฟังก์ชันนี้คือความสามารถของนักพัฒนาในการป้องกันไม่ให้ผู้ใช้หรือกลุ่มผู้ใช้เฉพาะเข้าถึงตารางหรือฟิลด์ของตารางฐานข้อมูล โดยทั่วไปแล้ว ข้อจำกัดจะถูกใช้เพื่อป้องกันไม่ให้ผู้ใช้ 1C เห็นและแก้ไขข้อมูลที่เป็นความลับ ข้อมูลลับตัวอย่างเช่น จำกัดพนักงานของบริษัทในกลุ่มให้ดูเอกสารเฉพาะสำหรับองค์กรของตนเท่านั้น นอกจากนี้ กลไกในการจำกัดสิทธิ์การเข้าถึงในระดับบันทึกสามารถใช้เพื่อลบข้อมูลที่ไม่จำเป็นออกจากอินเทอร์เฟซได้

หากต้องการเขียนแบบสอบถามสำหรับข้อจำกัด RLS คุณต้องสร้างบทบาทหรือรับบทบาทที่มีอยู่ การตั้งค่า RLS ใน 1C 8.3 สามารถใช้กับการกระทำของผู้ใช้ต่อไปนี้:

  • ส่วนที่เพิ่มเข้าไป;
  • การอ่าน;
  • ลบ;
  • เปลี่ยน.

นอกจากความเป็นไปได้ที่กว้างที่สุดในการปรับแต่งการเข้าถึงแล้ว RLS ยังมีข้อเสีย:

  1. ข้อกำหนดสำหรับคุณสมบัติของนักพัฒนา เนื่องจากคำขอจะต้องเขียนด้วยภาษาในตัว โดยคำนึงถึงกฎไวยากรณ์
  2. ขาดความสามารถในการแก้ไขเงื่อนไขอย่างรวดเร็ว
  3. คุณสมบัติที่จำกัดตามคำอธิบายของตรรกะ: ยังคงต้องเขียนเงื่อนไขที่ซับซ้อนเกินไปในโมดูลของเอกสารและหนังสืออ้างอิง
  4. ในเวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์ของฐานข้อมูล การเติบโตโดยนัยของตารางที่รวมอยู่ในแบบสอบถามเป็นไปได้ ยิ่งไปกว่านั้น การติดตามกระบวนการนี้เป็นเรื่องยากมาก
  5. ข้อกำหนดด้านทรัพยากร ข้อจำกัด RLS ใช้พลังงานมาก เครื่องไคลเอนต์และเซิร์ฟเวอร์
  6. มีเอกสารประกอบเล็กน้อยให้ใช้ฟรี

ปัญหาอื่นที่อาจเกิดขึ้นหลังจากตั้งค่า 1C RLS สามารถรายงานได้ ความจริงก็คือนักพัฒนาจัดเตรียมข้อจำกัด RLS ที่เป็นไปได้และสร้างรายงานในลักษณะที่แสดงเฉพาะข้อมูลที่ได้รับอนุญาตเท่านั้น หากผู้ใช้กำหนดค่าข้อจำกัด RLS ที่แตกต่างกัน ข้อมูลในรายงานสำหรับพารามิเตอร์เดียวกันอาจแตกต่างกัน สิ่งนี้อาจทำให้เกิดคำถาม ดังนั้นคุณต้องคำนึงถึงสถานการณ์เหล่านี้เมื่อออกแบบรายงานหรือเขียนแบบสอบถามใน RLS

สร้างข้อจำกัด RLS

ในการเพิ่มข้อจำกัด RLS คุณต้องค้นหาบทบาทที่ต้องการแล้วเปิดโดยดับเบิลคลิก

หน้าต่างที่เปิดขึ้นประกอบด้วย 2 แท็บ: "สิทธิ์" และ "เทมเพลตการจำกัด" หากต้องการกำหนดข้อจำกัดบางประการสำหรับการดำเนินการเฉพาะ คุณต้องเลือกและคลิกที่เครื่องหมายบวกสีเขียวที่ส่วนล่างขวา บรรทัดจะปรากฏขึ้นซึ่งเราสามารถตั้งค่าข้อ จำกัด 1C RLS ในภาษาที่สร้างใน 1C


หากคุณรู้ไวยากรณ์ 1C (เช่น หลังมือ) คุณสามารถเขียนลงในช่อง "การจำกัดการเข้าถึง" ได้โดยตรง นักพัฒนา 1C ได้จัดเตรียมความสามารถในการเปิดตัวสร้างแบบสอบถาม ซึ่งจะช่วยและแนะนำข้อจำกัดที่สามารถทำได้ หากต้องการเปิดคุณจะต้องคลิกที่ปุ่มที่มีจุดสามจุด (เลือก) หรือ F4 และหน้าต่างที่มีปุ่ม "ตัวสร้างแบบสอบถาม ... " จะปรากฏขึ้น


ในหน้าต่างที่ปรากฏขึ้น คุณสามารถกำหนดค่าข้อจำกัดได้ไม่เพียงแต่สำหรับไดเร็กทอรีนี้เท่านั้น แต่ยังรวมถึงออบเจ็กต์ระบบอื่นๆ ด้วย ในการดำเนินการนี้ คุณจะต้องเพิ่มลงในแท็บ "ตารางและฟิลด์" เราลงทะเบียนข้อจำกัดในช่องของไดเร็กทอรี "ระบบการตั้งชื่อ" และคลิกที่ "ตกลง" โปรดใช้ความระมัดระวังเกี่ยวกับชื่อของตัวแปร: พารามิเตอร์ RLS ได้รับการตั้งค่าเมื่อเริ่มต้นเซสชันผู้ใช้ และจะต้องอยู่ในออบเจ็กต์ข้อมูลเมตา


บนแท็บ "เทมเพลตข้อ จำกัด" คุณระบุแบบสอบถามที่จำเป็นเมื่อคัดลอกการตั้งค่า RLS เดียวกันลงใน 1C 8.3 หลังจากที่คุณเพิ่มเทมเพลตแล้ว คุณสามารถใช้ชื่อเทมเพลตในการตั้งค่าสิทธิ์การเข้าถึงได้

นอกจากนี้ยังสามารถเพิ่มข้อจำกัดให้กับหลายบทบาทได้พร้อมๆ กัน ในการดำเนินการนี้คุณต้องคลิกในแผนผังการกำหนดค่า คลิกขวาเลื่อนเมาส์ไปที่ส่วน "บทบาท" และเลือก "บทบาททั้งหมด"


โดยสรุป ฉันอยากจะทราบว่าบทความนี้มุ่งเป้าไปที่นักพัฒนาที่ปรึกษา 1C และสามารถช่วยผู้ที่มีประสบการณ์ในการพัฒนา 1C:Enterprise เป็นหลักได้ แม้จะมีความเรียบง่ายที่ชัดเจน แต่ความรู้เกี่ยวกับความหมายและความเข้าใจในโครงสร้างของกระบวนการทางธุรกิจขององค์กรของตนเองหรือองค์กรของลูกค้าในการกระจายสิทธิ์ที่ถูกต้องนั้นจำเป็นต้องมีความรู้และประสบการณ์ในระดับหนึ่ง

พิมพ์ (Ctrl+P)

การจำกัดการเข้าถึงข้อมูล

กลไกการจำกัดการเข้าถึงข้อมูล (หรือที่เรียกว่า RLS, Row Level Security) ช่วยให้คุณสามารถจัดการสิทธิ์การเข้าถึงได้ไม่เพียงแต่ในระดับของออบเจ็กต์เมตาดาต้าเท่านั้น แต่ยังรวมถึงระดับของออบเจ็กต์ฐานข้อมูล 1C:Enterprise อีกด้วย หากต้องการจำกัดการเข้าถึงข้อมูล คุณสามารถใช้ออบเจ็กต์ 1C:Enterprise ต่อไปนี้ได้:
● บทบาท
● พารามิเตอร์เซสชัน
● ตัวเลือกการทำงาน
● โมดูลทั่วไปที่ได้รับสิทธิพิเศษ
● คำหลักที่อนุญาตในภาษาที่ใช้ค้นหา
การแชร์ออบเจ็กต์ที่อยู่ในรายการช่วยให้เกิดความยืดหยุ่นสูงสุดเมื่อจำเป็นต้องแยกสิทธิ์การเข้าถึงข้อมูลระหว่างผู้ใช้ที่ทำหน้าที่ต่างกัน
การจำกัดการเข้าถึงข้อมูลสามารถกำหนดได้ในการดำเนินการข้อมูลต่อไปนี้ (สิทธิ์การเข้าถึง): การอ่าน (อ่านขวา) การเพิ่ม (เพิ่มขวา) การแก้ไข (เปลี่ยนขวา) และการลบ (ลบขวา) ผู้ใช้ปัจจุบันจะสามารถดำเนินการที่จำเป็นได้ในกรณีต่อไปนี้:
● สำหรับการดำเนินการอ่านและลบ อ็อบเจ็กต์ที่อยู่ในฐานข้อมูลต้องเป็นไปตามข้อจำกัดการเข้าถึงข้อมูล
● สำหรับการดำเนินการเพิ่ม ข้อจำกัดในการเข้าถึงข้อมูลจะต้องตรงกับออบเจ็กต์ที่คุณวางแผนจะเขียนลงในฐานข้อมูล
● สำหรับการดำเนินการเปลี่ยนแปลง ข้อจำกัดในการเข้าถึงข้อมูลจะต้องตรงกับออบเจ็กต์ทั้งก่อนการเปลี่ยนแปลง (เพื่อให้ออบเจ็กต์ถูกอ่าน) และหลังการเปลี่ยนแปลง (เพื่อให้ออบเจ็กต์ถูกเขียน)
เมื่อใช้ข้อจำกัดการเข้าถึงข้อมูล โปรดจำไว้ว่าคุณสามารถระบุได้เพียงเงื่อนไขเดียวสำหรับการดำเนินการเปลี่ยนแปลง เพิ่ม และลบ แต่สามารถระบุข้อจำกัดการเข้าถึงข้อมูลได้มากกว่าหนึ่งรายการสำหรับการดำเนินการอ่าน ซึ่งหมายความว่าสามารถตั้งค่าเงื่อนไขที่แตกต่างกันสำหรับการอ่านฟิลด์ที่แตกต่างกันของออบเจ็กต์ได้ และเมื่อตั้งค่าเงื่อนไข คุณสามารถระบุทั้งชื่อของฟิลด์เฉพาะและฟิลด์พิเศษ ฟิลด์อื่น ๆ ได้ ในกรณีแรก เงื่อนไขจะถูกนำมาใช้ก็ต่อเมื่อส่วนที่เลือก (ซึ่งอ่านข้อมูล) มีฟิลด์ที่มีการตั้งค่าข้อจำกัดไว้ และในกรณีที่สอง ข้อจำกัดจะถูกนำมาใช้กับฟิลด์ทั้งหมดของออบเจ็กต์ ยกเว้น ฟิลด์ที่มีการกำหนดข้อจำกัดไว้อย่างชัดเจน
เมื่อตั้งค่าข้อจำกัดในฟิลด์ใดฟิลด์หนึ่ง ฟิลด์นี้จะถูกอ่านหากเป็นไปตามข้อจำกัด และเมื่อตั้งค่าข้อจำกัดในฟิลด์อื่น ข้อมูลอ็อบเจ็กต์จะถูกอ่านก็ต่อเมื่อเป็นไปตามข้อจำกัดสำหรับฟิลด์ทั้งหมดของอ็อบเจ็กต์ที่รวมอยู่ใน คำขออ่านข้อมูล
ออบเจ็กต์ฐานข้อมูลประเภทต่อไปนี้อาจมีข้อจำกัดต่างๆ ประเภทต่างๆการเปลี่ยนแปลง (เพิ่ม แก้ไข ลบ):
แผนการแลกเปลี่ยน,
● ไดเรกทอรี
● เอกสาร
● แผนงาน ประเภทของลักษณะ,
● ผังบัญชี
● แผนสำหรับประเภทการคำนวณ
● กระบวนการทางธุรกิจ
● งาน
สำหรับออบเจ็กต์ฐานข้อมูลประเภทต่อไปนี้ เป็นไปได้ที่จะกำหนดข้อจำกัดในการอ่านไม่เพียงแต่ออบเจ็กต์ทั้งหมด แต่ยังรวมถึงแต่ละฟิลด์ด้วย:
● แผนการแลกเปลี่ยน
● ไดเรกทอรี
● เอกสาร
● บันทึกเอกสาร
● แผนสำหรับประเภทของคุณลักษณะ
● ผังบัญชี
● แผนสำหรับประเภทการคำนวณ
● การลงทะเบียนข้อมูล
● กระบวนการทางธุรกิจ
● งาน
ความสนใจ! เมื่อเข้าถึงฟิลด์ของออบเจ็กต์ฐานข้อมูลโดยใช้คุณสมบัติของออบเจ็กต์แอปพลิเคชันจากภาษา 1C:Enterprise ในตัว ออบเจ็กต์ทั้งหมดจะถูกอ่าน ไม่ใช่แค่ค่าของฟิลด์ที่ใช้งานอยู่ ข้อยกเว้นคือเมื่อได้รับมุมมอง เมื่ออ่านเฉพาะค่าของฟิลด์ที่เกี่ยวข้องในการสร้างมุมมองเท่านั้น
ข้อจำกัดการเข้าถึงมีอยู่ในบทบาท ซึ่งสามารถระบุได้สำหรับออบเจ็กต์ข้อมูลเมตาส่วนใหญ่ และเขียนด้วยภาษาพิเศษที่เป็นส่วนย่อยของภาษาคิวรี

ภาษาการจำกัดการเข้าถึงข้อมูล

ข้อจำกัดในการเข้าถึงข้อมูลอธิบายไว้เป็นภาษาพิเศษ ซึ่งเป็นชุดย่อยของภาษาในการสืบค้น ( คำอธิบายโดยละเอียดภาษาแบบสอบถาม ภาษาการจำกัดการเข้าถึงข้อมูลมีการเปลี่ยนแปลงต่อไปนี้โดยสัมพันธ์กับภาษาของการสืบค้น:
● ในคำขอจำกัดการเข้าถึงข้อมูล จะมีหนึ่งตารางเป็นแหล่งข้อมูลเสมอ - นี่คือตารางของออบเจ็กต์ที่ใช้ข้อจำกัดนี้ (ออบเจ็กต์หลักของข้อจำกัด)
● คำอธิบายคำขอถูกตัดให้สั้นลง ภาษาการจำกัดการเข้าถึงข้อมูลจะใช้เฉพาะส่วน FROM และ WHERE ของภาษาคิวรีเท่านั้น ดังนั้น คำอธิบายของภาษาคิวรีจึงมีลักษณะดังนี้:
เลือก [อนุญาต] [ต่างกัน] [ อันดับแรก<Количество> ]
<รายการฟิลด์ตัวเลือก>
[จาก <Список источников> ]
[ที่ไหน<Условие отбора> ]
[จัดกลุ่มตาม <Поля группировки> ]
[มี<Условие отбора> ]
[เพื่อเปลี่ยน [ <Список таблиц ระดับบนสุด> ]]
ในขณะที่คำอธิบายของภาษาแบบสอบถามจำกัดการเข้าถึงข้อมูลมีดังนี้:
[นามแฝงตารางของวัตถุข้อจำกัดหลัก]
[จาก <Список источников> ]
[ที่ไหน<Условие отбора> ]

ในการสืบค้นแบบซ้อนที่ใช้ในภาษาการจำกัดการเข้าถึงข้อมูล ชุดของความสามารถที่อนุญาตจะถูกจำกัด
● คุณสามารถระบุพารามิเตอร์เซสชันและตัวเลือกการทำงานเป็นองค์ประกอบเงื่อนไขได้
● ณ จุดใดก็ตามในคำขอจำกัดการเข้าถึงข้อมูล อนุญาตให้ใช้เทมเพลตที่ทำให้ข้อจำกัดในการเขียนง่ายขึ้น
ส่วนหลักของข้อจำกัดคือเงื่อนไขที่ได้รับการประเมินสำหรับแต่ละบันทึกของตารางฐานข้อมูลที่อยู่ภายใต้ข้อจำกัดการเข้าถึงข้อมูล ระเบียนจะถือว่าพร้อมใช้งานหากเป็นผลมาจากการดำเนินการของเงื่อนไขสำหรับหนึ่งระเบียนตารางของวัตถุหลักของข้อจำกัด ทำให้ได้รับตารางที่ไม่ว่างเปล่า (นั่นคือตารางที่มี 1 ระเบียนขึ้นไป) หากเงื่อนไขส่งผลให้ตารางว่างเปล่า เรกคอร์ดที่ตรงตามเงื่อนไขในลักษณะนี้จะถือว่าไม่สามารถเข้าถึงได้ นอกจากนี้ การเปลี่ยนแปลงรายการตารางของวัตถุข้อจำกัดหลัก
จะถือว่าถูกต้องหากรายการไม่ขัดแย้งกับข้อจำกัดที่ระบุไว้สำหรับสิทธิ์ ทั้งก่อนและหลังการดำเนินการแก้ไข

เขตข้อมูลตาราง

ในการจำกัดการเข้าถึงข้อมูล คุณสามารถใช้:
● ช่องตารางของออบเจ็กต์ที่มีการอธิบายข้อจำกัดการเข้าถึงข้อมูล
ตัวอย่างเช่น หากมีการกำหนดข้อจำกัดในการอ่านองค์ประกอบของไดเร็กทอรีคู่สัญญา ข้อจำกัดดังกล่าวจะสามารถใช้ฟิลด์ของไดเร็กทอรีคู่สัญญาและส่วนที่เป็นตารางได้ โดยเฉพาะอย่างยิ่ง ข้อจำกัดที่ง่ายที่สุดในการอ่านองค์ประกอบของไดเร็กทอรีคู่สัญญาอาจมีลักษณะดังนี้:

ชื่อสถานที่ = “โรงงานอิฐ”
หรือเช่นนี้:

ที่ไหน สินค้า.ชื่อ= “อิฐเป็นสีแดง”
สินค้าอยู่ที่ไหน ส่วนที่เป็นตารางผู้รับเหมาไดเรกทอรี
● ฟิลด์ของตารางของออบเจ็กต์ที่สามารถเข้าถึงได้ผ่านลิงก์ในออบเจ็กต์ข้อจำกัดหลัก
ตัวอย่างเช่น หากแอ็ตทริบิวต์ Main Manager ของไดเร็กทอรี Contractors มีประเภทลิงก์ไปยังไดเร็กทอรี Users ดังนั้นข้อจำกัดในการเข้าถึงอาจมี เช่น แบบฟอร์มต่อไปนี้:

ที่ไหน MainManager.รหัส= “อีวานอฟ”
หรือ:

ที่ไหน ผู้จัดการหลัก.บุคคล.ชื่อ= “เปตรอฟสกี้”
● ฟิลด์ของตารางออบเจ็กต์ที่เกี่ยวข้องกับออบเจ็กต์หลักของข้อจำกัดตามเงื่อนไขและนิพจน์บางประการเหนือสิ่งเหล่านั้น
ตัวอย่างเช่น อาจมีการกำหนดข้อจำกัดต่อไปนี้ในการอ่านองค์ประกอบของไดเร็กทอรีคู่สัญญา:

คู่สัญญา
จาก
สารบบ.คู่สัญญาคู่ค้าอย่างไร
การเชื่อมต่อด้านซ้าย ไดเรกทอรีผู้ใช้ผู้ใช้ AS
ซอฟต์แวร์ = Users.Name
โดยที่ = “เปตรอฟสกี้”
ข้อจำกัดนี้ใช้ฟิลด์ขององค์ประกอบไดเร็กทอรีผู้ใช้ที่เกี่ยวข้องกับองค์ประกอบของไดเร็กทอรีคู่สัญญาตามค่าของฟิลด์ชื่อ

แบบสอบถามที่ซ้อนกัน

การสืบค้นแบบซ้อนจะใช้เพื่อสร้างชุดระเบียนที่สามารถใช้ได้:
● เพื่อเชื่อมโยงไปยังตารางของวัตถุข้อ จำกัด หลัก;
● เพื่อใช้เป็นตัวถูกดำเนินการสำหรับการดำเนินการเปรียบเทียบ B หรือ NOT B
การสืบค้นแบบซ้อนสามารถใช้คุณลักษณะภาษาการสืบค้นได้ ยกเว้น:
● ตัวดำเนินการในลำดับชั้น;
● ข้อเสนอผลลัพธ์;
● ผลลัพธ์ของการสืบค้นแบบซ้อนไม่ควรมีส่วนที่เป็นตาราง
● โดยเฉพาะตารางเสมือนบางตาราง ส่วนที่เหลือและการหมุนเวียน.
ในตัวอย่างต่อไปนี้ของข้อจำกัดในการอ่านจากไดเร็กทอรี Accounts แบบสอบถามย่อยจะถูกใช้เป็นชุดของระเบียนเพื่อเชื่อมโยงกับออบเจ็กต์หลักของข้อจำกัด:

คู่สัญญา
จาก
สารบบ.คู่สัญญาคู่ค้าอย่างไร
การเชื่อมต่อด้านซ้าย
(เลือก
Users.Name, Users.Individual
จาก
ไดเรกทอรีผู้ใช้ผู้ใช้ AS
ที่ไหน
Users.รหัส> “Petechkin”) ในฐานะผู้ใช้
โดย คู่สัญญา ชื่อผู้จัดการหลัก = Users.ชื่อ
ที่ไหน Users.Individual.Name= “เปตรอฟสกี้”
ตัวอย่างต่อไปนี้แสดงข้อจำกัดในการอ่านจากไดเร็กทอรี Passport Data of Individuals ซึ่งใช้เคียวรีแบบซ้อนอยู่
เป็นตัวถูกดำเนินการของการดำเนินการเปรียบเทียบ B:

ที่ไหน
ข้อมูลหนังสือเดินทางบุคคลบุคคลใน
(เลือกต่างๆ
คนงาน.บุคคลในฐานะบุคคล
จาก
ทะเบียนข้อมูลพนักงานในฐานะคนงาน)
หากจำเป็นต้องได้รับข้อมูลจากส่วนที่เป็นตารางในแบบสอบถามแบบซ้อน ในส่วน FROM ของแบบสอบถามแบบซ้อน คุณจะต้องเข้าถึงส่วนที่เป็นตารางโดยตรง ตัวอย่างเช่น แทนที่จะเป็น:

เลือกลิงค์เป็นลิงค์
สินค้า.ชื่อยังไง ชื่อสินค้า
จาก สารบบ.คู่สัญญา
เนื่องจากแบบสอบถามซ้อนอยู่ภายในข้อจำกัด คุณควรใช้:

ตัวเลือกเซสชัน

คำขอจำกัดการเข้าถึงข้อมูลอาจมีพารามิเตอร์เซสชันรวมอยู่ด้วย ตัวอย่างเช่น หากต้องการอ่านองค์ประกอบไดเร็กทอรี กลุ่มอีเมลคุณสามารถตั้งค่าข้อจำกัดการเข้าถึงต่อไปนี้ได้:

ที่ไหน Owner.AccountAccess.User = &ผู้ใช้ปัจจุบัน
และ Owner.AccountAccess.Administration= จริง

CurrentUser เป็นพารามิเตอร์เซสชัน

ตัวเลือกการทำงาน

คำขอจำกัดการเข้าถึงข้อมูลอาจมีตัวเลือกการทำงานด้วย สามารถใช้เฉพาะตัวเลือกการทำงานที่ไม่ขึ้นอยู่กับพารามิเตอร์เท่านั้น ตัวอย่างเช่น หากไดเร็กทอรี Items มีแอ็ตทริบิวต์ MainWarehouse ข้อจำกัดในการอ่านแอ็ตทริบิวต์นี้อาจมีลักษณะดังนี้:

โดยที่และการบัญชีคลังสินค้า = TRUE

โดยที่การบัญชีคลังสินค้าเป็นตัวเลือกที่ใช้งานได้

คุณสมบัติการใช้งาน

ฟิลด์ทั้งหมดของออบเจ็กต์ข้อมูลข้อจำกัดหลักอาจไม่สามารถนำมาใช้ในข้อจำกัดของออบเจ็กต์ฐานข้อมูลประเภทต่อไปนี้:
● ในการลงทะเบียนสะสม ข้อ จำกัด การเข้าถึงสามารถมีการวัดของวัตถุหลักของข้อ จำกัด เท่านั้น;
● ในทะเบียนการบัญชี เฉพาะการวัดงบดุลของวัตถุหลักของข้อจำกัดเท่านั้นที่สามารถนำมาใช้ในข้อจำกัดได้
บันทึก. หากภายใต้เงื่อนไขของการเข้าถึงข้อมูลการลงทะเบียนการสะสมการหมุนเวียนอย่าง จำกัด จะใช้การวัดที่ไม่รวมอยู่ในผลรวมแล้ว
เมื่อเข้าถึงตารางการปฏิวัติเสมือน ยอดรวมที่เก็บไว้จะไม่ถูกใช้ และคำขอจะดำเนินการทั้งหมดตามตารางการเคลื่อนไหว

การดำเนินการจำกัดการเข้าถึง

ข้อจำกัดการเข้าถึงจะถูกตรวจสอบทุกครั้งที่มีการดำเนินการที่เหมาะสมกับออบเจ็กต์ฐานข้อมูล (จากกล่องโต้ตอบ จากภาษาในตัว ผ่านการสืบค้น) และสามารถดำเนินการด้วยวิธีใดวิธีหนึ่งจากสองวิธี:
● ทุกอย่าง เมธอด "ทั้งหมด" หมายความว่าการดำเนินการบางอย่างกับข้อมูล (จากกล่องโต้ตอบ จากภาษาที่มีอยู่แล้ว หรือผ่านการสืบค้น) จะต้องดำเนินการกับออบเจ็กต์ฐานข้อมูลทั้งหมดโดยนัยจากการดำเนินการนี้ หากการดำเนินการดังกล่าวจำเป็นต้องอ่านหรือแก้ไขออบเจ็กต์ฐานข้อมูลที่ไม่เป็นไปตามข้อจำกัดการเข้าถึงที่เหมาะสม การดำเนินการจะสิ้นสุดลง
ผิดปกติเนื่องจากการละเมิดการเข้าถึง
● ได้รับอนุญาต วิธีการ "อนุญาต" หมายความว่าเมื่อดำเนินการกับข้อมูล ควรอ่านเฉพาะออบเจ็กต์ฐานข้อมูลที่ตรงตามข้อจำกัดการเข้าถึงที่เหมาะสมเท่านั้น ออบเจ็กต์ฐานข้อมูลที่ไม่เป็นไปตามข้อจำกัดการเข้าถึงจะถือว่าหายไปเมื่อดำเนินการดังกล่าว และไม่ส่งผลกระทบต่อผลลัพธ์ของการดำเนินการ
ข้อจำกัดในการเข้าถึงข้อมูลถูกกำหนดให้กับออบเจ็กต์ฐานข้อมูล ณ เวลาที่ 1C:Enterprise เข้าถึงฐานข้อมูล ใน 1C:Enterprise เวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์ จะมีการใช้ข้อจำกัดบนเซิร์ฟเวอร์ 1C:Enterprise
วิธีการดำเนินการของข้อ จำกัด ที่เลือกเพื่อดำเนินการแต่ละการดำเนินการกับข้อมูลนั้นถูกกำหนดโดยวัตถุประสงค์ของการดำเนินการนี้และระดับความรับผิดชอบของผลลัพธ์ โดยเฉพาะอย่างยิ่งเมื่อแสดงจะใช้วิธี "อนุญาต" รายการแบบไดนามิกและกิจกรรมเชิงโต้ตอบอื่น ๆ เมธอด "ทั้งหมด" ใช้ในการดำเนินการใดๆ กับออบเจ็กต์แอปพลิเคชันจากภาษา 1C:Enterprise ในตัว รวมถึงการเปลี่ยนแปลงใดๆ กับออบเจ็กต์ฐานข้อมูล ดังนั้น ตัวอย่างเช่น ปัญหาอาจเกิดขึ้นเมื่อสร้างการเลือกสำหรับเมธอด Select() ของผู้จัดการไดเร็กทอรี เอกสาร และอื่นๆ ที่มีการเลี่ยงผลลัพธ์ตามมา หากตั้งค่าข้อจำกัดที่ค่อนข้างซับซ้อนบนออบเจ็กต์ที่เกี่ยวข้อง เนื่องจากไม่ใช่ทุกเงื่อนไขใน การจำกัดสิทธิ์การเข้าถึงสามารถแสดงได้อย่างเพียงพอเป็นตัวเลือกสำหรับเมธอด Select()
ในการสอบถาม คุณสามารถควบคุมวิธีการทำงานของข้อจำกัดการเข้าถึงข้อมูลได้ เพื่อจุดประสงค์นี้ ภาษาของคิวรีจะจัดเตรียมคีย์เวิร์ด อนุญาต- หากคำขอไม่ได้ระบุว่าอนุญาต ข้อจำกัดก็จะมีผลใช้ในลักษณะ "ทั้งหมด" หากมีการระบุคำว่า ALLOWED แสดงว่าวิธี "อนุญาต" จะถูกเลือก
สิ่งสำคัญคือหากแบบสอบถามไม่ได้ระบุคีย์เวิร์ด ALLOWED การเลือกทั้งหมดที่ระบุในแบบสอบถามนั้นจะต้องไม่ขัดแย้งกับข้อจำกัดการอ่านใดๆ บนออบเจ็กต์ฐานข้อมูลที่ใช้ในแบบสอบถาม นอกจากนี้ หากแบบสอบถามใช้ตารางเสมือน จะต้องนำการเลือกที่เกี่ยวข้องไปใช้กับตารางเสมือนด้วย
ตัวอย่าง:

เลือก
ติดต่อข้อมูลส่วนแรก.บทนำ
จาก RegisterInformation.ContactInformation.SliceLast(, Type = &ประเภท)
ยังไง ติดต่อข้อมูล SliceFirst
ที่ไหน
ContactInformationSliceFirst.Type = &ประเภท
เมื่อใช้เทคโนโลยีออบเจ็กต์ ไม่รองรับการเข้าถึงข้อมูลในโหมดอนุญาต สันนิษฐานว่าเทคโนโลยีออบเจ็กต์ถูกใช้สำหรับการดำเนินการที่สำคัญที่สุดกับข้อมูล รวมถึงการเปลี่ยนแปลงข้อมูลด้วย คุณสามารถดำเนินการเพื่อรับข้อมูลทั้งหมดโดยใช้เทคโนโลยีออบเจ็กต์ โดยไม่คำนึงถึงข้อจำกัดที่ตั้งไว้ การดำเนินการที่จำเป็นในโมดูลสิทธิพิเศษหรือในฐานะผู้ใช้ที่มีสิทธิ์เต็ม ไม่มีวิธีการรับเฉพาะข้อมูลที่ได้รับอนุญาตในเทคโนโลยีออบเจ็กต์เท่านั้น

กลไกในการกำหนดข้อจำกัด

การดำเนินการใด ๆ กับข้อมูลที่จัดเก็บไว้ในฐานข้อมูลใน 1C:Enterprise จะนำไปสู่การเข้าถึงฐานข้อมูลในที่สุด
ขออ่านหรือเปลี่ยนแปลงข้อมูล ในกระบวนการดำเนินการสืบค้นไปยังฐานข้อมูล กลไกภายในของ 1C:Enterprise จะกำหนดข้อจำกัดการเข้าถึง ในกรณีนี้:
● รายการสิทธิ์ถูกสร้างขึ้น (อ่าน เพิ่ม เปลี่ยนแปลง ลบ) รายการตารางฐานข้อมูล และรายการฟิลด์ที่ใช้โดยคำขอนี้
● จากบทบาททั้งหมดของผู้ใช้ปัจจุบัน ข้อจำกัดในการเข้าถึงข้อมูลจะถูกเลือกสำหรับสิทธิ์ ตาราง และฟิลด์ทั้งหมดที่เกี่ยวข้องกับคำขอ ยิ่งไปกว่านั้น หากบทบาทไม่มีข้อจำกัดในการเข้าถึงข้อมูลของตารางหรือเขตข้อมูล นั่นหมายความว่าค่าของเขตข้อมูลที่ต้องการจากบันทึกใดๆ จะมีอยู่ในตารางนี้ กล่าวอีกนัยหนึ่ง การไม่มีข้อจำกัดในการเข้าถึงข้อมูลหมายถึงการมีอยู่ของข้อจำกัด
ความจริงอยู่ที่ไหน
● ดึงค่าปัจจุบันของพารามิเตอร์เซสชันทั้งหมดและตัวเลือกการทำงานที่เกี่ยวข้องกับข้อจำกัดที่เลือก
หากต้องการรับค่าของพารามิเตอร์เซสชัน ผู้ใช้ปัจจุบันไม่จำเป็นต้องมีสิทธิ์เพื่อรับค่านั้น อย่างไรก็ตาม หากไม่ได้ตั้งค่าของพารามิเตอร์เซสชันบางอย่าง จะเกิดข้อผิดพลาดและการสืบค้นฐานข้อมูลจะไม่ถูกดำเนินการ
การรับตัวเลือกการทำงานจะได้รับอิทธิพลจากโหมดสิทธิพิเศษตามคุณสมบัติการรับของตัวเลือกการทำงาน
หากล้างคุณสมบัตินี้แล้ว ผู้ใช้ปัจจุบันจะต้องมีสิทธิ์ในการอ่านออบเจ็กต์ที่เก็บตัวเลือกฟังก์ชันไว้
● ข้อจำกัดที่ได้รับจากบทบาทเดียวจะรวมกันโดยใช้การดำเนินการ AND
● ข้อจำกัดที่ได้รับจากบทบาทที่แตกต่างกันจะรวมกันโดยใช้การดำเนินการ OR
● เงื่อนไขที่สร้างขึ้นจะถูกเพิ่มในการสืบค้น SQL ซึ่ง 1C:Enterprise เข้าถึง DBMS เมื่อเข้าถึงข้อมูลจากเงื่อนไขการจำกัดการเข้าถึง จะไม่ดำเนินการตรวจสอบสิทธิ์ (ทั้งสำหรับออบเจ็กต์เมตาดาต้าหรือออบเจ็กต์ฐานข้อมูล) นอกจากนี้ กลไกในการเพิ่มเงื่อนไขขึ้นอยู่กับวิธีดำเนินการที่เลือกของข้อจำกัด "ทั้งหมด" หรือ "อนุญาต"
วิธี "ทุกอย่าง"
เมื่อกำหนดข้อจำกัดโดยใช้เมธอด "ทั้งหมด" เงื่อนไขและฟิลด์จะถูกเพิ่มในการสืบค้น SQL เพื่อให้ 1C:Enterprise สามารถรับข้อมูลเกี่ยวกับว่าในระหว่างดำเนินการสืบค้นฐานข้อมูล ข้อมูลที่ถูกห้ามสำหรับผู้ใช้ที่กำหนดนั้นถูกใช้หรือไม่ หากมีการใช้ข้อมูลที่ต้องห้าม คำขอจะล้มเหลว การกำหนดข้อจำกัดการเข้าถึงโดยใช้วิธี "ทั้งหมด" จะแสดงไว้ในแผนผังในรูป 1:

ข้าว. 1. วิธี “ทุกอย่าง”

วิธีการ "อนุญาต"
เมื่อใช้ข้อจำกัดโดยใช้วิธี "อนุญาต" เงื่อนไขจะถูกเพิ่มลงในแบบสอบถาม SQL เพื่อให้บันทึกที่ไม่ได้รับอนุญาตสำหรับผู้ใช้ปัจจุบันไม่ส่งผลกระทบต่อผลลัพธ์ของแบบสอบถาม กล่าวอีกนัยหนึ่ง เมื่อมีการกำหนดข้อจำกัดในโหมด "อนุญาต" บันทึกที่ห้ามสำหรับผู้ใช้รายใดรายหนึ่งจะถือว่าขาดหายไป ซึ่งแสดงไว้ในแผนผังในรูปที่ 3

ออบเจ็กต์อื่นๆ ที่เกี่ยวข้องกับข้อจำกัดการเข้าถึงข้อมูล

เมื่อออกแบบการกำหนดค่าที่ใช้ข้อจำกัดในการเข้าถึงข้อมูล ออบเจ็กต์ข้อมูลเมตา เช่น พารามิเตอร์เซสชัน ตัวเลือกการทำงาน และโมดูลที่ใช้ร่วมกันพร้อมแฟล็กสิทธิพิเศษอาจมีประโยชน์
ตัวเลือกเซสชัน
พารามิเตอร์เซสชันสามารถนำมาใช้ในการจำกัดการเข้าถึงข้อมูลในลักษณะเดียวกับที่พารามิเตอร์คำขอสามารถนำมาใช้ในคำขอได้
ตัวเลือกการทำงาน
ตัวเลือกการทำงานที่ไม่ขึ้นกับพารามิเตอร์สามารถนำมาใช้ในข้อจำกัดการเข้าถึงข้อมูลได้ในลักษณะเดียวกับที่พารามิเตอร์การสืบค้นสามารถนำมาใช้ในการสืบค้นได้
โมดูลทั่วไปที่ได้รับสิทธิพิเศษ

หากเลือกแฟล็ก Privileged สำหรับโมดูลทั่วไป การดำเนินการตามขั้นตอนและฟังก์ชันของโมดูลนี้จะได้รับข้อมูลเฉพาะที่สำคัญ:
● ใน 1C:Enterprise เวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์ เฉพาะโมดูลที่ดำเนินการบนเซิร์ฟเวอร์เท่านั้นที่สามารถรับสิทธิ์ได้
● การดำเนินการตามขั้นตอนและฟังก์ชันของโมดูลสิทธิพิเศษและทุกสิ่งที่ถูกเรียกจากโมดูลเหล่านั้นจะดำเนินการเมื่อระบบจำกัดถูกปิด
สิทธิ์ในทั้งวัตถุข้อมูลเมตาและข้อมูล ดังนั้น จากโมดูลที่ได้รับสิทธิพิเศษ การดำเนินการใดๆ ก็สามารถดำเนินการได้
ออบเจ็กต์ใด ๆ แม้ว่าผู้ใช้ปัจจุบันจะไม่มีสิทธิ์ที่เหมาะสมก็ตาม
โมดูลสิทธิพิเศษได้รับการออกแบบเพื่อ การติดตั้งครั้งแรกค่าพารามิเตอร์เซสชันที่ใช้ในการจำกัดการเข้าถึงข้อมูล
โมดูลทั่วไปเพิ่มเติมสามารถนำมาใช้สำหรับการดำเนินการแบบองค์รวมกับข้อมูลโดยผู้ใช้ที่มีสิทธิ์จำกัด
ตัวอย่างเช่น หากฟังก์ชันของผู้ใช้รวมถึงการป้อนและการผ่านรายการเอกสาร แต่ผู้ใช้ไม่ควรมีสิทธิ์เข้าถึงข้อมูลที่ได้รับผลกระทบจากการผ่านรายการเอกสาร ดังนั้นการดำเนินการของการดำเนินการผ่านรายการสามารถย้ายไปยังโมดูลที่มีสิทธิ์ได้ สิ่งนี้จะอนุญาตให้ผู้ใช้สามารถโพสต์เอกสารโดยไม่ต้องให้สิทธิ์แก่เขาในข้อมูลอื่น ๆ (เช่น ผู้ลงทะเบียน)
โหมดสิทธิพิเศษ
เป็นไปได้ที่จะติดตั้งโหมดสิทธิพิเศษโดยทางโปรแกรมเมื่อทำงานกับข้อมูล การติดตั้งซอฟต์แวร์โหมดสิทธิพิเศษ
อาจจำเป็นในกรณีที่ต้องดำเนินการกับข้อมูลฐานข้อมูลจำนวนมาก และไม่มีประโยชน์ในการตรวจสอบสิทธิ์การเข้าถึงข้อมูล
สำหรับคำอธิบายของโหมดพิเศษ โปรดดูที่นี่

การใช้พรีโปรเซสเซอร์

เมื่อแก้ไขข้อความจำกัดการเข้าถึงข้อมูล คุณสามารถใช้คำแนะนำของตัวประมวลผลล่วงหน้าได้ มีคำแนะนำต่อไปนี้:

#ถ้า<Выражение>#แล้ว
#เอลเซฟ<Выражение>#แล้ว
#มิฉะนั้น
#ENDSIF
<Выражение>– โดยพลการ การแสดงออกทางตรรกะในภาษาฝังตัวซึ่งมีผลลัพธ์เป็นประเภท Boolean นิพจน์อาจมี:
● การดำเนินการเปรียบเทียบ<, >, <=, >= , =, <> ;
● การดำเนินการเชิงตรรกะและ, หรือ, ไม่ใช่;
● พารามิเตอร์เซสชัน – ใช้ไวยากรณ์ &พารามิเตอร์ โดยที่ พารามิเตอร์ คือชื่อของพารามิเตอร์เซสชัน
หากผลลัพธ์ของนิพจน์ของคำสั่ง #IF หรือ #ELSEIF เป็น True ข้อความผลลัพธ์ของคำสั่งจำกัดการเข้าถึงจะมีข้อความที่อยู่หลังคีย์เวิร์ด #THEN หากผลลัพธ์ของนิพจน์เป็นเท็จ ข้อความที่อยู่หลังคีย์เวิร์ด #THEN จะไม่ถูกวางในข้อความของคำสั่งจำกัดการเข้าถึง ข้อความที่ตามหลังคำสั่ง #ELSE จะถูกวางไว้ในข้อความจำกัดการเข้าถึงที่เป็นผลลัพธ์ หากไม่มีเงื่อนไขใดตรงตามเงื่อนไขก่อนหน้านี้
บันทึก- หากข้อความของการจำกัดการเข้าถึงข้อมูลมีคำสั่งของตัวประมวลผลล่วงหน้า ข้อจำกัดดังกล่าวจะไม่ผ่านการตรวจสอบไวยากรณ์เมื่อทำการแก้ไข และไม่สามารถเปลี่ยนแปลงได้โดยใช้ตัวสร้าง
ตัวอย่าง:

#IF &ผู้ใช้ปัจจุบัน<>“คลิโมวา” #แล้ว
<текст ограничения доступа>
#ENDSIF
ที่นี่ ผู้ใช้ปัจจุบัน– ประเภทพารามิเตอร์เซสชัน DirectoryLink.Users
การออกแบบนี้หมายความว่าเงื่อนไขในการตั้งค่าการจำกัดการเข้าถึงจะถูกตรวจสอบสำหรับผู้ใช้ทั้งหมดจากไดเร็กทอรี ยกเว้นผู้ใช้ Klimova

เทมเพลตข้อความจำกัดการเข้าถึง

บทบาทสามารถประกอบด้วยรายการเทมเพลตการจำกัดการเข้าถึง ซึ่งอธิบายไว้ในแท็บเทมเพลตการจำกัดของแบบฟอร์มบทบาท คุณยังสามารถแก้ไขเทมเพลตการจำกัดการเข้าถึงในตัวแก้ไขเพื่อแก้ไขกลุ่มการจำกัดการเข้าถึงและเทมเพลต
เทมเพลตการจำกัดการเข้าถึงแต่ละเทมเพลตมีชื่อและข้อความ ชื่อเทมเพลตเป็นไปตามกฎปกติสำหรับชื่อที่ใช้ในระบบ 1C:Enterprise
ข้อความเทมเพลตประกอบด้วยข้อความบางส่วนในภาษาที่จำกัดการเข้าถึงข้อมูล และอาจมีพารามิเตอร์ที่ไฮไลต์โดยใช้สัญลักษณ์
“#”.
หลังสัญลักษณ์ “#” อาจปฏิบัติตาม:
● หนึ่งใน คำหลัก:
● พารามิเตอร์ หลังจากนั้นจะระบุหมายเลขของพารามิเตอร์ในเทมเพลตในวงเล็บ
● CurrentTable – ระบุการแทรกลงในข้อความของชื่อเต็มของตารางที่กำลังสร้างข้อจำกัด
ชื่อตารางปัจจุบัน– หมายถึงการแทรกลงในข้อความของชื่อเต็มของตาราง (เป็นค่าสตริงในเครื่องหมายคำพูด) ที่ใช้คำสั่งในภาษาบิวท์อินเวอร์ชันปัจจุบัน
●ชื่อของ CurrentAccessRight – ประกอบด้วยชื่อของสิทธิ์ที่ใช้ข้อจำกัดปัจจุบัน: อ่าน/เพิ่ม/แทรก/เปลี่ยนแปลง/
อัปเดต ลบ;
● ชื่อพารามิเตอร์เทมเพลต – หมายถึงการแทรกข้อจำกัดพารามิเตอร์เทมเพลตที่สอดคล้องกันลงในข้อความ
● สัญลักษณ์ “#” – ระบุการแทรกสัญลักษณ์ “#” หนึ่งสัญลักษณ์ลงในข้อความ

นิพจน์การจำกัดการเข้าถึงอาจประกอบด้วย:

● เทมเพลตการจำกัดการเข้าถึงซึ่งระบุไว้ในรูปแบบ
#TemplateName("ค่าของพารามิเตอร์เทมเพลต 1", "ค่าของพารามิเตอร์เทมเพลต 2", ...) พารามิเตอร์เทมเพลตแต่ละรายการจะอยู่ในเครื่องหมายคำพูดคู่ หากคุณต้องการระบุอักขระเครื่องหมายคำพูดคู่ในข้อความพารามิเตอร์ คุณต้องใช้เครื่องหมายคำพูดคู่สองตัว
● ฟังก์ชั่น หน้าประกอบด้วย (ที่ที่เรากำลังมองหา, สิ่งที่เรากำลังมองหา)- ฟังก์ชันนี้ได้รับการออกแบบมาเพื่อค้นหาการเกิดขึ้นของสตริง WhatWeLook ในสตริง WhereWeLook คืนค่า True หากพบเหตุการณ์นี้ และคืนค่าเป็น False มิฉะนั้น

● ตัวดำเนินการ + สำหรับการต่อสตริง
เพื่อให้ง่ายต่อการแก้ไขข้อความเทมเพลต บนแท็บเทมเพลตข้อจำกัดในแบบฟอร์มบทบาท ให้คลิกปุ่มตั้งค่าข้อความเทมเพลต ในกล่องโต้ตอบที่เปิดขึ้น ให้ป้อนข้อความเทมเพลตแล้วคลิกตกลง
ระบบ 1C:Enterprise ตรวจสอบไวยากรณ์ของข้อความเทมเพลต ตรวจสอบไวยากรณ์ของการใช้เทมเพลต และแทนที่แมโครข้อความของเทมเพลตการจำกัดการเข้าถึงบทบาทลงในข้อความคำขอ
การทดแทนเทมเพลตมาโครคือ:
● แทนที่การเกิดขึ้นของพารามิเตอร์ในข้อความของเทมเพลตด้วยค่าพารามิเตอร์จากนิพจน์สำหรับการใช้เทมเพลตในข้อความของข้อ จำกัด
● แทนที่นิพจน์การใช้เทมเพลตในข้อความคำขอด้วยข้อความเทมเพลตที่เป็นผลลัพธ์
เมื่อคุณเรียกตัวสร้างแบบสอบถามสำหรับเงื่อนไขที่มีเทมเพลตการจำกัดการเข้าถึง จะมีการออกคำเตือนว่าเทมเพลตทั้งหมดจะถูกแทนที่
ต่อไปนี้เป็นตัวอย่างของเทมเพลตข้อจำกัด:

ขอแนะนำเพื่อจัดการการเข้าถึงข้อมูลของผู้ใช้ตามฟังก์ชันต่างๆ เมื่อตั้งค่าข้อจำกัดการเข้าถึงข้อมูล
ปฏิบัติตามหลักการดังต่อไปนี้:
● คุณต้องเลือกชุดข้อมูล (อาจขึ้นอยู่กับผู้ใช้ปัจจุบัน) ที่เหมาะสม การเตรียมการเบื้องต้น- ข้อมูลที่เลือกควรทำให้ข้อ จำกัด ในการเข้าถึงข้อมูลง่ายขึ้นมากที่สุดเท่าที่จะเป็นไปได้และในทางกลับกันไม่ควรมีขนาดใหญ่เกินไป แจกจ่ายตามพารามิเตอร์เซสชัน
● ตั้งค่าพารามิเตอร์เซสชันในตัวจัดการ SetSessionParameters() ของโมดูลเซสชัน
● กำหนดข้อจำกัดการเข้าถึงข้อมูลที่สมเหตุสมผล (ข้อมูลเป็นความลับหรือสำคัญที่สุดสำหรับการรักษาความสมบูรณ์ของระบบ) โปรดทราบว่าการตั้งค่าข้อจำกัดการเข้าถึงอาจทำให้การเข้าถึงข้อมูลนี้ช้าลง ข้อจำกัดที่ซับซ้อนมากเกินไปอาจนำไปสู่การชะลอตัวได้เช่นกัน
● หากจำเป็น ตรวจสอบให้แน่ใจว่าผู้ใช้ดำเนินการกับข้อมูลในจำนวนที่จำกัด เข้าถึงได้เต็มรูปแบบเป็นการไม่เหมาะสมที่จะให้ข้อมูลนี้ ย้ายการดำเนินการเหล่านี้ไปยังโมดูลที่ได้รับสิทธิพิเศษ หรือเปิดและปิดโหมดสิทธิพิเศษอย่างชัดเจนในตำแหน่งที่เหมาะสมในโค้ดโปรแกรม
● การเข้าถึงข้อมูลสำหรับการตรวจสอบต่างๆ ที่ดำเนินการโดยระบบเมื่อเขียนออบเจ็กต์จะดำเนินการในโหมดสิทธิพิเศษ

ซึ่งจะทำให้คุณไม่สามารถปิดใช้งานข้อจำกัดสิทธิ์ระดับบันทึกสำหรับฟิลด์ที่เกี่ยวข้องได้ หากการกำหนดค่าทำงานกับข้อมูลนี้
วางแผนในโหมดควบคุมเท่านั้น:

● สำหรับไดเร็กทอรีเมื่อตรวจสอบพาเรนต์ เจ้าของ และความเป็นเอกลักษณ์ของโค้ด
● สำหรับเอกสาร กระบวนการทางธุรกิจ และงานเมื่อตรวจสอบความเป็นเอกลักษณ์ของตัวเลข
● ปิดการใช้งานสำหรับแผนการแลกเปลี่ยนเมื่อตรวจสอบเอกลักษณ์ของรหัส
● สำหรับแผนภูมิบัญชีและแผนภูมิประเภทลักษณะเฉพาะเมื่อตรวจสอบหลักและความเป็นเอกลักษณ์ของรหัส

เมื่อสร้างแบบสอบถามที่มีข้อจำกัดด้านข้อมูล มีข้อจำกัดและข้อควรพิจารณาบางประการที่ควรคำนึงถึง:

● หากมีการระบุข้อจำกัดการเข้าถึงข้อมูลสำหรับตารางออบเจ็กต์และมีการใช้การรวมกับตารางดังกล่าวในการสืบค้นข้อมูล ดังนั้นในเงื่อนไขการเชื่อมต่อ (ส่วนคำขอซอฟต์แวร์) การใช้ส่วนตารางของออบเจ็กต์ที่มีการจำกัดการเข้าถึงที่ระบุคือ ไม่ได้รับอนุญาต
● ถ้าแบบสอบถามระบุตารางที่ไม่มีการใช้ฟิลด์ใด ๆ ในการสืบค้น ตารางนี้จะมีการกำหนดข้อจำกัดการเข้าถึงข้อมูลทั้งหมด เช่น ขอ เลือกปริมาณ (*) จากไดเร็กทอรี คู่สัญญาจะถูกดำเนินการโดยคำนึงถึงข้อจำกัดการเข้าถึงทั้งหมดที่ระบุไว้สำหรับไดเร็กทอรีทดสอบ ข้อจำกัดถูกกำหนดโดย "โดย OR" ซึ่งหมายความว่าบันทึกทั้งหมดที่มีอยู่ภายใต้เงื่อนไขอย่างน้อยหนึ่งเงื่อนไขจะพร้อมใช้งาน หากไม่มีการระบุเงื่อนไขสำหรับบางฟิลด์ แบบสอบถามจะถูกดำเนินการกับบันทึกทั้งหมดในตาราง
หากแบบสอบถามใช้ตารางระดับบนสุด จะไม่มีการกำหนดข้อจำกัดที่ระบุไว้สำหรับคอลัมน์ของตารางที่ซ้อนกัน
หากแบบสอบถามใช้ตารางที่ซ้อนกัน ข้อจำกัดจะมีผลกับทั้งตารางที่ซ้อนกันและตารางระดับบนสุด
เช่น ขอ เลือกปริมาณ (*) จากไดเรกทอรี คู่สัญญา ข้อตกลงจะถูกดำเนินการโดยคำนึงถึงข้อจำกัดทั้งหมดสำหรับไดเรกทอรีคู่สัญญา ตลอดจนคำนึงถึงข้อจำกัดที่เกี่ยวข้องกับส่วนที่เป็นตารางของข้อตกลง

● หากการเข้าถึงฟิลด์ที่จำเป็นเพื่อให้ได้เป็นตัวแทนของออบเจ็กต์ข้อมูลเมตาอ้างอิงถูกปฏิเสธโดยข้อจำกัดในการเข้าถึง
ข้อมูลหรือการเข้าถึงออบเจ็กต์ถูกปฏิเสธในระดับสิทธิ์การเข้าถึง ดังนั้นการได้รับเป็นตัวแทนของออบเจ็กต์ดังกล่าวจะไม่ส่งผลกระทบต่อความคืบหน้าของธุรกรรมปัจจุบัน

ตัวสร้างข้อจำกัดการเข้าถึงข้อมูล

หากต้องการเรียกตัวสร้างในช่องตาราง Data Access Restrictions ในคอลัมน์ Access Restrictions คุณต้องไปที่โหมดแก้ไขและ
คลิกปุ่มเลือก และในแบบฟอร์มที่เปิดขึ้น ให้คลิกปุ่มตัวสร้างแบบสอบถาม...
แบบฟอร์มคอนสตรัคเตอร์จะแสดงบนหน้าจอ:


ข้าว. 3. แท็บ “ตารางและฟิลด์” ของตัวออกแบบข้อจำกัด

ด้วยความช่วยเหลือของมัน เงื่อนไขถูกสร้างขึ้นสำหรับการตั้งค่าข้อจำกัดการเข้าถึงข้อมูล
บนแท็บ ตารางและเขตข้อมูล ให้เลือกออบเจ็กต์ที่ต้องการในรายการฐานข้อมูล และย้ายไปยังรายการตาราง หากมีการระบุหลายตาราง แท็บลิงก์จะถูกเพิ่มลงในฟอร์มตัวออกแบบ


ข้าว. 4. แท็บ “ลิงก์” ของตัวออกแบบข้อจำกัด

บนแท็บลิงก์ เงื่อนไขจะถูกสร้างขึ้นซึ่งกำหนดให้กับลิงก์ระหว่างเขตข้อมูลตาราง หากต้องการป้อนเงื่อนไขใหม่ ให้คลิกปุ่มเพิ่ม และเลือกตารางใดตารางหนึ่งในคอลัมน์ Table1 ในคอลัมน์ Table2 ให้เลือกตารางที่มีเขตข้อมูลเกี่ยวข้องกับเขตข้อมูลของตารางแรก ด้านล่างรายการเงื่อนไขจะมีตัวควบคุมที่สามารถใช้เพื่อสร้างเงื่อนไขสำหรับการลิงก์ตารางได้
หากเลือกประเภทเงื่อนไขแบบง่าย ดังนั้นใน Field1 และ Field2 ฟิลด์ที่เกี่ยวข้องของตารางที่ระบุจะถูกเลือกและเงื่อนไขการเปรียบเทียบจะถูกตั้งค่า หากเลือกช่องที่ไม่ได้เปรียบเทียบ จากนั้นในบรรทัดรายการเงื่อนไขในคอลัมน์เงื่อนไขลิงก์ข้อความต่อไปนี้จะปรากฏขึ้น: กรอกเงื่อนไขไม่ถูกต้อง
บนแท็บเงื่อนไข หากจำเป็น คุณจะต้องระบุเงื่อนไขที่จะเลือกข้อมูลต้นฉบับ


ข้าว. 5. แท็บ “เงื่อนไข” ของตัวออกแบบข้อจำกัด

สำหรับแต่ละฟิลด์ที่เลือก คุณต้องเลือกประเภทของเงื่อนไขและระบุชื่อของพารามิเตอร์ พารามิเตอร์เซสชันสามารถใช้เป็นพารามิเตอร์ได้ อนุญาตให้มีหลายเงื่อนไข ในกรณีนี้ ในคอลัมน์เงื่อนไขของช่องตารางเงื่อนไข ข้อความเงื่อนไขจะแสดงเป็นหลายบรรทัด
ในระหว่างการสร้างคำขอ คุณสามารถดูข้อความคำขอได้โดยคลิกปุ่มคำขอ

การแก้ไขข้อจำกัดและเทมเพลตการอนุญาตเป็นชุด

โหมดสำหรับการแก้ไขการจำกัดสิทธิ์การเข้าถึงและเทมเพลตแบบกลุ่มถูกเรียกโดยคำสั่งการจำกัดการเข้าถึงทั้งหมดของเมนูบริบทของสาขาบทบาท แบบฟอร์มที่เปิดขึ้นประกอบด้วยสองแท็บ: ข้อจำกัดการเข้าถึง และเทมเพลตข้อจำกัด


ข้าว. 6 ข้อจำกัดและเทมเพลตการอนุญาตทั้งหมด

บนบุ๊กมาร์ก ข้อ จำกัด การเข้าถึงคุณสามารถดูข้อจำกัดการเข้าถึงที่ป้อนทั้งหมดได้ในรายการทั่วไป (สำหรับบทบาท ออบเจ็กต์ สิทธิ์ ชุดค่าผสมของฟิลด์ทั้งหมด)
คุณสามารถเพิ่มข้อจำกัดการเข้าถึงสำหรับบทบาท วัตถุ สิทธิ์ และการรวมกันของบทบาทต่างๆ ได้ในคราวเดียว
คุณสามารถกรองรายการตามเกณฑ์ต่างๆ


ข้าว. 7. การเลือกข้อจำกัดในการเข้าถึง

โหมดการแก้ไขกลุ่มช่วยให้คุณสามารถลบข้อจำกัดที่เลือกไว้ในรายการได้
คุณสามารถแก้ไขข้อจำกัดที่เลือกได้ ในกรณีนี้ คุณสามารถเปลี่ยนองค์ประกอบของฟิลด์และ/หรือข้อจำกัดในการเข้าถึงได้
โหมดการแก้ไขกลุ่มยังช่วยให้คุณคัดลอกข้อจำกัดที่เลือกไปยังบทบาทอื่นๆ ได้

บนบุ๊กมาร์ก เทมเพลตข้อจำกัดคุณสามารถดูเทมเพลตการจำกัดการเข้าถึงทั้งหมดที่มีอยู่ในโซลูชันแอปพลิเคชัน ในขณะที่จากข้อความเทมเพลตนั้น จะแสดงเพียง 10 บรรทัดแรกในตาราง ซึ่งลงท้ายด้วยสัญลักษณ์ “…” หากข้อความเทมเพลตมีมากกว่า 10 บรรทัด หน้าต่างแก้ไขเทมเพลตจะแสดงข้อความแบบเต็มของเทมเพลต


รูปที่ 8 เทมเพลตการจำกัดการเข้าถึงทั้งหมด

คุณสามารถเพิ่มเทมเพลตการจำกัดการเข้าถึงสำหรับหลายบทบาทพร้อมกันได้