คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

การจำกัดการเข้าถึงข้อมูล การแจ้งเตือน “ข้อจำกัดการเข้าถึงมีการเปลี่ยนแปลง”: จะจัดการกับปัญหาอย่างไร? ข้อจำกัดในการเข้าถึงมีการเปลี่ยนแปลง จะต้องทำอย่างไร?

"ข้อจำกัดในการเข้าถึงมีการเปลี่ยนแปลง" ข้อความนี้มักจะเห็นบนหน้าจอสมาร์ทโฟนโดยเจ้าของอุปกรณ์จากตระกูลรุ่น Moto X, Moto G และ Nexus การแจ้งเตือนนี้จะปรากฏขึ้นเป็นระยะๆ ในแถบเลื่อนการแจ้งเตือนแล้วหายไป ยิ่งไปกว่านั้น ปัญหาไม่ได้เกิดจากข้อผิดพลาดในซอฟต์แวร์หรือฮาร์ดแวร์ของอุปกรณ์ Android แต่เป็นเพียงข้อความธรรมดาจากฟังก์ชันการโทรฉุกเฉินบนโทรศัพท์ แม้ว่าการแจ้งเตือนนี้จะไม่เป็นอันตรายอย่างยิ่ง แต่ก็ทำให้ผู้ใช้เกิดความรำคาญและยังทำให้พวกเขาหวาดกลัวอีกด้วย แท้จริงแล้ว สำหรับผู้ที่ไม่มีความรู้ วลี “การจำกัดการเข้าถึงมีการเปลี่ยนแปลง” อาจหมายถึงอะไรก็ได้ รวมถึงการบล็อกการส่งข้อมูลหรือบริการเสียง

มีวิธีใดที่จะกำจัด " ข้อจำกัดการเข้าถึงมีการเปลี่ยนแปลง"? เลขที่ คุณควรตอบสนองต่อมันในลักษณะใดลักษณะหนึ่งหรือไม่? บางครั้งก็คุ้มค่า หากคุณสูญเสียความสามารถในการส่ง SMS หรือรับสาย การรีบูตง่ายๆ อาจช่วยแก้ไขสถานการณ์ได้ ข้อความแสดงข้อผิดพลาดอาจปรากฏขึ้นหากคุณใช้ซิมการ์ดที่ชำรุดหรือเปลี่ยนการ์ดในช่องบ่อยเกินไปตลอดทั้งวัน การแจ้งเตือนยังปรากฏขึ้นเมื่อมีการเปลี่ยนแปลงเครือข่าย เช่น จาก 2G ถึง 3G หรือ 3G ถึง 4G และในทางกลับกัน และทั้งหมดนี้ส่วนใหญ่จะปรากฏขึ้นเมื่อใช้ข้อมูลมือถือและหายไปเมื่อเชื่อมต่อกับเครือข่าย Wi-Fi โดยทั่วไปปัญหาหลักคือการสูญเสียเครือข่ายหรือการเปลี่ยนจาก 3G เป็น 2G - สำหรับผู้ใช้ที่ต้องการเครือข่ายมือถือที่มีความสามารถในการถ่ายโอนข้อมูลความเร็วสูง

จะกำจัดการแจ้งเตือน “ข้อ จำกัด การเข้าถึงมีการเปลี่ยนแปลง” บนสมาร์ทโฟน Android ได้อย่างไร

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


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


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

ออบเจ็กต์การกำหนดค่า "บทบาท" ให้ชุดของสิทธิ์ในการดำเนินการ (การดำเนินการ) เหนือออบเจ็กต์การกำหนดค่า

บทบาท "สิทธิเต็ม"

นี่เป็นเพียงบทบาท (ไม่ได้กำหนดไว้ล่วงหน้า) ซึ่งมีการตรวจสอบสิทธิ์ทุกประเภทในออบเจ็กต์การกำหนดค่าทั้งหมด

สิ่งที่แตกต่างจากบทบาทอื่นๆ คือการมีสิทธิ์ของ "ฝ่ายบริหาร"

หากมีการสร้างผู้ใช้อย่างน้อยหนึ่งราย ระบบจะเริ่มตรวจสอบการมีสิทธิ์ "การดูแลระบบ" - ต้องมีผู้ใช้อย่างน้อยหนึ่งราย

ข้อจำกัดการเข้าถึงระดับเรกคอร์ด

Row Level Security (RLS) – ข้อจำกัดระดับบันทึก

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

  • บทบาท
  • พารามิเตอร์เซสชัน
  • ตัวเลือกการทำงาน
  • โมดูลที่ใช้ร่วมกันที่มีสิทธิพิเศษ
  • คำหลักอนุญาตในภาษาแบบสอบถาม

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

การใช้งานทางเทคนิคของข้อ จำกัด การเข้าถึงใน 1C

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


กลไกนี้จะใช้ได้กับคำขอใด ๆ จากไคลเอนต์:

  • ในรายงาน
  • ในรายการแบบไดนามิกและในรูปแบบรายการปกติ
  • ในแบบสอบถามที่กำหนดเอง

การใช้กลไกดังกล่าวส่งผลอย่างมากต่อประสิทธิภาพการทำงาน

วิธีหลีกเลี่ยงข้อจำกัดในการเข้าถึง

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

ก) โมดูลสิทธิพิเศษ เป็นโมดูลทั่วไปที่มีแฟล็ก "สิทธิพิเศษ" ในคุณสมบัติ

ลักษณะเฉพาะของมันคือโค้ดในนั้นถูกดำเนินการโดยไม่มีการควบคุมสิทธิ์การเข้าถึงใด ๆ รวมถึง RLS


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

  • สิทธิพิเศษในการรักษาเมื่อดำเนินการ
  • โหมดสิทธิพิเศษเมื่อยกเลิกธุรกรรม


ข) วิธีการ ตั้งค่าโหมดสิทธิพิเศษ()

คำสั่งระบบอนุญาตให้คุณสร้างส่วนหนึ่งของโค้ดของโมดูลใด ๆ ที่มีสิทธิ์ใช้งาน

จากบรรทัดถัดไปของโค้ด โหมดการดำเนินการที่ได้รับสิทธิพิเศษจะทำงาน

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

(จริง);

// รหัสใดๆ ที่นี่จะถูกดำเนินการโดยไม่มีการควบคุมสิทธิ์และ RLS

ตั้งค่าโหมดสิทธิพิเศษ(โกหก ); // หรือจุดสิ้นสุดของโพรซีเดอร์ / ฟังก์ชัน

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

หากในขั้นตอนหรือฟังก์ชันเรียกใช้เมธอด ตั้งค่าโหมดสิทธิพิเศษ(เท็จ) ทำมากกว่าการเรียกเมธอด ตั้งค่าโหมดสิทธิพิเศษ(True ) จากนั้นจะมีข้อยกเว้นเกิดขึ้น

การทำงาน PrivilegedMode() คืนค่า True หากยังคงเปิดใช้งานโหมดสิทธิพิเศษ และคืนค่าเป็น False หากปิดใช้งานโดยสมบูรณ์ การดำเนินการนี้ไม่ได้วิเคราะห์จำนวนการตั้งค่าโหมดสิทธิพิเศษในฟังก์ชันเฉพาะ

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


นอกจากนี้ยังสามารถเริ่มเซสชันที่ได้รับสิทธิพิเศษได้อีกด้วย นี่คือเซสชันที่มีการสร้างโหมดสิทธิพิเศษตั้งแต่เริ่มต้นระบบ นอกจากนี้ในระหว่างดำเนินการวิธีการ PrivilegedMode() จะส่งกลับค่า True เสมอ และไม่รองรับความสามารถในการปิดใช้งานโหมดสิทธิพิเศษ เฉพาะผู้ใช้ที่มีสิทธิ์ของผู้ดูแลระบบ (สิทธิ์ของผู้ดูแลระบบ) เท่านั้นที่สามารถเริ่มเซสชันที่มีสิทธิพิเศษได้ เซสชันสามารถเริ่มต้นได้โดยใช้สวิตช์บรรทัดคำสั่งเรียกใช้แอปพลิเคชันไคลเอ็นต์ UsePrivilegedMode หรือพารามิเตอร์สตริงการเชื่อมต่อฐานข้อมูล prmod


คำถามเกิดขึ้นตามธรรมชาติ: เหตุใดจึงตั้งค่าการจำกัดการเข้าถึงเลยหากสามารถข้ามได้อย่างง่ายดาย

โหมดปลอดภัย.

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

ตั้งค่า SafeMode().

เหนือสิ่งอื่นใดเซฟโหมดจะละเว้นโหมดพิเศษ

จะต้องติดตั้งก่อนที่จะเรียกตัวประมวลผลภายนอกโดยทางโปรแกรมหรือส่งออกขั้นตอนและฟังก์ชันจากโมดูลของตน

เมื่อดำเนินการที่ต้องห้าม จะมีข้อยกเว้นเกิดขึ้นที่รันไทม์

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

การตั้งค่าการจำกัดการเข้าถึง

RLS สามารถกำหนดค่าได้สำหรับสิทธิ์เท่านั้น:

  • อ่าน (เลือก)
  • เพิ่ม (แทรก)
  • เปลี่ยนแปลง (อัพเดต)
  • ลบ

สำหรับการดำเนินการอ่านและการลบออก วัตถุที่อยู่ในฐานข้อมูลจะต้องปฏิบัติตามข้อจำกัดในการเข้าถึงข้อมูล

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

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

สำหรับสิทธิ์อื่นๆ ทั้งหมดไม่มีตัวเลือกดังกล่าว

มาเพิ่มข้อจำกัดใหม่สำหรับสิทธิ์ "อ่าน" ของไดเร็กทอรี "Nomenclature" รายการฟิลด์ที่คุณสามารถกำหนดค่าข้อจำกัดที่เพิ่มได้จะเปิดขึ้น

ซึ่งหมายความว่าหากคุณพยายามเข้าถึงฟิลด์ที่เลือก ข้อจำกัดดังกล่าวจะถูกทริกเกอร์ แต่หากคุณพยายามเข้าถึงฟิลด์ที่ไม่ได้ทำเครื่องหมายไว้ ข้อจำกัดดังกล่าวจะไม่ทำงาน

หากคุณเลือกธง " สาขาอื่นๆ" ข้อจำกัดจะได้รับการกำหนดค่าสำหรับฟิลด์ตารางทั้งหมด ยกเว้นฟิลด์ที่มีการตั้งค่าข้อจำกัดไว้อย่างชัดเจน


*คุณสมบัติ: สำหรับสิทธิ์ในการเพิ่ม เปลี่ยนแปลง ลบ:

  • ข้อจำกัดสามารถกำหนดค่าได้สำหรับทุกฟิลด์เท่านั้น
  • มีข้อจำกัดได้เพียงข้อเดียวเท่านั้น

สำหรับสิทธิ์ "อ่าน" คุณสามารถกำหนดค่าเงื่อนไขต่างๆ ได้ โดยจะรวมกับตัวดำเนินการเชิงตรรกะ "AND"

บางฟิลด์ของออบเจ็กต์ข้อมูลข้อจำกัดหลักอาจถูกนำมาใช้ในข้อจำกัดของออบเจ็กต์ฐานข้อมูลประเภทต่อไปนี้:

  • ในทะเบียนสะสม ข้อจำกัดในการเข้าถึงสามารถมีได้เฉพาะการวัดวัตถุหลักของข้อจำกัดเท่านั้น
  • ในการลงทะเบียนทางบัญชี ข้อจำกัดสามารถใช้ได้เฉพาะการวัดงบดุลของวัตถุหลักของข้อจำกัดเท่านั้น

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

กลไกในการกำหนดข้อจำกัดการเข้าถึง

การดำเนินการใดๆ กับข้อมูลที่จัดเก็บไว้ในฐานข้อมูลใน 1C:Enterprise จะนำไปสู่การเรียกไปยังฐานข้อมูลในที่สุดพร้อมกับคำขอบางอย่างให้อ่านหรือเปลี่ยนแปลงข้อมูล ในกระบวนการดำเนินการสืบค้นไปยังฐานข้อมูล กลไกภายในของ 1C:Enterprise จะกำหนดข้อจำกัดการเข้าถึง โดยที่:

  • รายการสิทธิ์ถูกสร้างขึ้น(อ่าน เพิ่ม แก้ไข ลบ) รายการตารางฐานข้อมูล และรายการเขตข้อมูลที่ใช้โดยแบบสอบถามนี้
  • จากทุกบทบาทของผู้ใช้ปัจจุบัน เลือกข้อจำกัดการเข้าถึงแล้วไปยังข้อมูลสำหรับสิทธิ์ทั้งหมด ตาราง และฟิลด์ที่เกี่ยวข้องกับคำขอ ยิ่งไปกว่านั้น หากบทบาทไม่มีข้อจำกัดในการเข้าถึงข้อมูลของตารางหรือเขตข้อมูล นั่นหมายความว่าค่าของเขตข้อมูลที่ต้องการจากบันทึกใดๆ จะมีอยู่ในตารางนี้ กล่าวอีกนัยหนึ่ง การไม่มีข้อจำกัดในการเข้าถึงข้อมูลหมายถึงการมีอยู่ของข้อจำกัด WHERE IS THE TRUE
  • ดึงค่าปัจจุบันของพารามิเตอร์เซสชันและตัวเลือกการทำงานทั้งหมดเข้าร่วมในข้อจำกัดที่เลือก

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

ข้อจำกัดที่ได้รับจากบทบาทเดียวจะรวมกันโดยใช้การดำเนินการ AND

ข้อจำกัดที่ได้รับจากบทบาทที่แตกต่างกันจะรวมกันโดยใช้การดำเนินการ OR

เงื่อนไขที่สร้างขึ้นจะถูกเพิ่มลงในแบบสอบถาม SQL ซึ่ง 1C: Enterprise เข้าถึง DBMS เมื่อเข้าถึงข้อมูลจากเงื่อนไขการจำกัดการเข้าถึง จะไม่ดำเนินการตรวจสอบสิทธิ์ (ทั้งสำหรับออบเจ็กต์เมตาดาต้าหรือออบเจ็กต์ฐานข้อมูล) นอกจากนี้ กลไกในการเพิ่มเงื่อนไขขึ้นอยู่กับวิธีดำเนินการที่เลือกของข้อจำกัด "ทั้งหมด" หรือ "อนุญาต"


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

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

วิธี "ทุกอย่าง"

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

การกำหนดข้อ จำกัด การเข้าถึงโดยใช้วิธี "ทั้งหมด" จะแสดงตามแผนผังในรูป:


วิธีการ "อนุญาต"

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


ข้อจำกัดในการเข้าถึงข้อมูลถูกกำหนดให้กับออบเจ็กต์ฐานข้อมูล ณ เวลาที่ 1C:Enterprise เข้าถึงฐานข้อมูล

ใน 1C:Enterprise เวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์ จะมีการใช้ข้อจำกัดบนเซิร์ฟเวอร์ 1C:Enterprise

อย่างไรก็ตาม ตัวเลือกนี้ (อนุญาต) จะไม่ทำงานหากในแบบสอบถามเราอ้างถึงตารางที่ไม่ได้กำหนดค่าข้อจำกัดการเข้าถึง แต่มีการอ้างอิงถึงแถวของตารางที่มีข้อจำกัดที่กำหนดค่าไว้ ในกรณีนี้ ผลการสืบค้นจะแสดง “<Объект не найден>...... แทนค่าของช่องอ้างอิง


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

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

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

แนวทางปฏิบัติ 1. ตัวสร้างแบบสอบถามในการตั้งค่า RLS

มาเขียนข้อความของส่วน “WHERE” ในแบบสอบถามไปยังไดเร็กทอรีกัน คุณสามารถใช้ตัวสร้างแบบสอบถามได้
นักออกแบบมีรูปลักษณ์ที่เปลือยเปล่า


แท็บ "ตาราง"

ตารางหลักจะเป็นตารางของออบเจ็กต์ที่มีการกำหนดค่าข้อจำกัด

คุณยังสามารถเลือกตารางอื่นๆ และตั้งค่าการเชื่อมต่อต่างๆ ระหว่างตารางเหล่านั้นได้ในแท็บ "ความสัมพันธ์"

แท็บ "เงื่อนไข"

ที่นี่คุณสามารถกำหนดค่าเงื่อนไขการจำกัดการเข้าถึงจริงได้

มาเพิ่มเงื่อนไขให้กับแอตทริบิวต์ "ราคา" ของไดเร็กทอรีระบบการตั้งชื่อเพื่อสิทธิ์ในการ "อ่าน" ในทุกฟิลด์ของตาราง

“ระบบการตั้งชื่อ WHERE ระบบการตั้งชื่อ ราคา > 500”

มาดูกันว่ากฎง่ายๆ นี้ทำงานอย่างไร ตารางไดเร็กทอรีประกอบด้วยองค์ประกอบต่อไปนี้:


หลังจากตั้งค่าการจำกัดการเข้าถึงแล้ว ตารางจะแสดงเฉพาะองค์ประกอบที่ตรงตามเงื่อนไข:


กลุ่มก็หายไปเช่นกัน มาเปลี่ยนข้อความของข้อจำกัดกัน

“ระบบการตั้งชื่อ WHERE ระบบการตั้งชื่อ ราคา > 500

หรือระบบการตั้งชื่อ นี่คือกลุ่ม"

ตอนนี้นั่นคือสิ่งที่คุณต้องการ


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


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


หากคุณพยายามรับข้อมูลรับรอง "แบบจำกัด" โดยทางโปรแกรม ข้อผิดพลาดในการเข้าถึงก็จะเกิดขึ้นเช่นกัน


นอกจากนี้ จะไม่สามารถเข้าถึงช่องใดๆ ของออบเจ็กต์ผ่านลิงก์ได้ เนื่องจากเมื่อได้รับลิงก์ ระบบจะอ่านออบเจ็กต์ทั้งหมด และหากมีรายละเอียด "จำกัด" ออบเจ็กต์จะไม่ถูกอ่าน

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

หลังจากตั้งค่าการจำกัดการเข้าถึง การแสดงบรรทัดในรายการสิทธิ์เปลี่ยนไป - กลายเป็นสีเทาและมีไอคอนปรากฏขึ้น

ข้อจำกัดในการตั้งค่าการเข้าถึง (RLS)

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

แบบฝึกหัดที่ 2. ระบบการตั้งชื่อด้วยราคาปัจจุบัน

กำหนดข้อจำกัดการเข้าถึงหากคุณต้องการแสดงรายการที่มีราคาปัจจุบันมากกว่าค่าที่กำหนด เช่น 100

สารละลาย:

เรากำลังเพิ่มกฎการจำกัดการเข้าถึงใหม่สำหรับไดเรกทอรี "ระบบการตั้งชื่อ" ที่มีสิทธิ์ "อ่าน"
เลือก “ช่องอื่นๆ”
ใน Constructor เราเพิ่มแบบสอบถามแบบซ้อน ในนั้น ให้เลือกตารางลงทะเบียนข้อมูล "ราคาสินค้า"
ไม่มีแท็บ "คำสั่งซื้อ" - นี่คือคุณลักษณะของตัวออกแบบคิวรีสำหรับสร้างคำขอจำกัดการเข้าถึง
บนแท็บ "ขั้นสูง" ให้ตั้งค่า "999999999 แรก" แท็บ "คำสั่งซื้อ" จะปรากฏขึ้น
เราตั้งค่าการเรียงลำดับตามช่อง "ระยะเวลา" จากมากไปน้อย
จากนั้นเราตั้งค่าการเชื่อมต่อระหว่างตารางหลักและแบบสอบถามย่อยโดยการอ้างอิง


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

แนวทางปฏิบัติ 3. ข้อ จำกัด ของ "คู่สัญญา" ด้วยค่าคงที่

มาตั้งค่าการจำกัดการเข้าถึงสำหรับไดเร็กทอรีคู่สัญญาตามค่าที่เก็บไว้ในค่าคงที่

นอกจากนี้ คุณต้องตั้งค่าข้อจำกัดสำหรับออบเจ็กต์ทั้งหมดที่ใช้ไดเร็กทอรี "คู่สัญญา" ในรายละเอียด

สารละลาย

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

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

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

มาคัดลอกและแก้ไขข้อความของเงื่อนไข RLS จากไดเร็กทอรี "คู่สัญญา" เล็กน้อย ต้องทำหลายครั้งตามที่มีวัตถุพบ

หรือใช้รูปแบบการจำกัดการเข้าถึงเพื่อหลีกเลี่ยงปัญหาการทำโค้ดซ้ำ

เทมเพลตการจำกัดการเข้าถึงได้รับการกำหนดค่าในระดับบทบาทและสามารถใช้กับออบเจ็กต์ใดก็ได้ภายในบทบาทที่แก้ไข

คุณสามารถเพิ่มข้อความจำกัดการเข้าถึงส่วนใดก็ได้ลงในเทมเพลต เทมเพลตนี้ถูกเรียกโดยใช้สัญลักษณ์ “#” ตัวอย่างเช่น #TemplateCounterparty

คำสั่ง # ใน 1C ถูกเขียนไปยังพรีโปรเซสเซอร์ ในบริบทของการดำเนินการตั้งค่าการจำกัดการเข้าถึง แพลตฟอร์มจะแทนที่ข้อความการโทรเทมเพลตด้วยข้อความเทมเพลต

มาเพิ่มข้อความหลังคำว่า WHERE ลงในเทมเพลต "เทมเพลตผู้รับเหมา" ยกเว้นข้อความเกี่ยวกับ EtoGroup

พารามิเตอร์ในเทมเพลตการจำกัดการเข้าถึง

มาแก้ไขปัญหาที่ 2 ต่อไป

ปัญหาตอนนี้คือตารางหลักในไดเร็กทอรีเรียกว่า "คู่สัญญา" ในเอกสาร "ใบแจ้งหนี้ใบเสร็จรับเงิน" ฟิลด์ที่กำลังตรวจสอบในไดเร็กทอรีเรียกว่า "ลิงก์" ในเอกสารเรียกว่า "คู่สัญญา"

มาเปลี่ยนชื่อตารางหลักในข้อความเทมเพลตเป็น “#CurrentTable”

"#CurrentTable" เป็นพารามิเตอร์ที่กำหนดไว้ล่วงหน้า

และผ่านจุดเราระบุจำนวนของพารามิเตอร์อินพุต - “.#Parameter(1)

“#Parameter” ก็เป็นค่าที่กำหนดไว้ล่วงหน้าเช่นกัน สามารถมีพารามิเตอร์อินพุตจำนวนเท่าใดก็ได้ ได้รับการแก้ไขด้วยหมายเลขซีเรียล

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

สำหรับเอกสารดังต่อไปนี้:

“การขายสินค้าโดยที่ #TemplateCounterparty (“คู่สัญญา”)”

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

ตารางหลัก - ระบบการตั้งชื่อ

ข้อความเทมเพลตคือ:

#CurrentTable โดยที่ #CurrentTable.#Parameter(1) = #Parameter(2)

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

สัญลักษณ์ "#" อาจตามด้วย:

  • หนึ่งในคำหลัก:
    • พารามิเตอร์ตามด้วยหมายเลขของพารามิเตอร์ในเทมเพลตในวงเล็บ
    • CurrentTable – ระบุการแทรกลงในข้อความของชื่อเต็มของตารางที่กำลังสร้างข้อจำกัด
    • ชื่อตารางปัจจุบัน– หมายถึงการแทรกลงในข้อความของชื่อเต็มของตาราง (เป็นค่าสตริงในเครื่องหมายคำพูด) ที่ใช้คำสั่งในภาษาบิวท์อินเวอร์ชันปัจจุบัน
    • ชื่อ CurrentAccessRight– มีชื่อของสิทธิ์ที่ดำเนินการข้อ จำกัด ปัจจุบัน: READ, ADD, INSERT, CHANGE, UPDATE, DELETE;
  • ชื่อพารามิเตอร์เทมเพลต – หมายถึงการแทรกข้อจำกัดพารามิเตอร์เทมเพลตที่เกี่ยวข้องลงในข้อความ
  • สัญลักษณ์ “#” – ระบุการแทรกอักขระหนึ่งตัว “#” ลงในข้อความ

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

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

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

ไม่สามารถติดตั้งโดยใช้ ตั้งค่าพารามิเตอร์()หรืออะไรที่คล้ายกัน

พารามิเตอร์ในกรณีนี้คือ:

  • ตัวเลือกเซสชัน
  • ตัวเลือกการทำงาน

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

แนวทางปฏิบัติ 4. เข้าถึงคู่สัญญา “ของคุณ”

จำเป็นต้องกำหนดค่าการจำกัดการเข้าถึงของผู้ใช้ปัจจุบันกับคู่สัญญา "ของพวกเขา"

มีไดเร็กทอรี "ผู้ใช้", ไดเร็กทอรี "คู่สัญญา", เอกสารที่มีรายละเอียด "คู่สัญญา"

ผู้ใช้ปัจจุบันควรเห็นข้อมูลสำหรับคู่สัญญาที่มีการสร้างการเชื่อมต่อกับเขาเท่านั้น

ต้องมีการกำหนดค่าการสื่อสารด้วย

ตัวเลือกที่เป็นไปได้:

การสร้างการเชื่อมต่อระหว่างผู้ใช้และคู่สัญญา

  • รายละเอียดในไดเรกทอรีคู่สัญญา
  • ทะเบียนข้อมูล

วิธีแก้ไขปัญหาที่เป็นไปได้:

  • การจัดเก็บผู้ใช้ไว้ในค่าคงที่ถือเป็นตัวเลือกที่ไม่ดี ผู้ใช้ทุกคนสามารถใช้ค่าคงที่ได้
  • การจัดเก็บอาร์เรย์คงที่ของคู่สัญญาของผู้ใช้ปัจจุบันในพารามิเตอร์เซสชันไม่ใช่ตัวเลือกที่ดีนัก อาจมีคู่สัญญาได้หลายราย
  • การจัดเก็บในพารามิเตอร์เซสชันของผู้ใช้ปัจจุบัน จากนั้นการขอรายชื่อคู่สัญญา "ของเขา" ถือเป็นตัวเลือกที่ยอมรับได้
  • ตัวเลือกอื่น.

สารละลาย.

มาสร้างพารามิเตอร์เซสชันใหม่ "CurrentUser" แล้วกรอกลงในโมดูลเซสชัน

มาสร้างการลงทะเบียนข้อมูล “การปฏิบัติตามข้อกำหนดของผู้จัดการและผู้รับเหมา”

มาสร้างบทบาทใหม่และข้อ จำกัด การเข้าถึงใหม่สำหรับเอกสาร "ใบแจ้งหนี้"

ในข้อความคำขอ เราจะเชื่อมต่อตารางหลักกับข้อมูลการลงทะเบียนสำหรับบัญชี = บัญชี และผู้จัดการ = &CurrentUser ประเภทการเชื่อมต่อภายใน

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

กำลังตรวจสอบ - ข้อจำกัดใช้งานได้

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

แนวปฏิบัติ 5. วันที่ห้ามเปลี่ยนแปลง

มีความจำเป็นต้องใช้ข้อจำกัดในการแก้ไขข้อมูลก่อนวันที่กำหนดสำหรับการห้ามการเปลี่ยนแปลง
คุณต้องจำกัดไว้สำหรับผู้ใช้

มาสร้างการลงทะเบียนข้อมูล "วันที่ห้ามการเปลี่ยนแปลง" กับผู้ใช้มิติข้อมูลวันที่ห้าม

มาสร้างตรรกะของโซลูชันด้วยวิธีนี้:

  • หากไม่ได้ระบุผู้ใช้ การแบนจะมีผลกับผู้ใช้ทั้งหมด
  • หากมีข้อจำกัดสำหรับผู้ใช้ทั้งหมดและข้อจำกัดสำหรับผู้ใช้เฉพาะ ข้อจำกัดดังกล่าวจะมีผลกับผู้ใช้รายใดรายหนึ่งและสำหรับรายอื่นๆ ตามหลักการทั่วไป

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

  • เอกสารประกอบ
  • การลงทะเบียนข้อมูลเป็นระยะ

มาสร้างบทบาทใหม่ “ข้อ จำกัด ตามวันที่ห้ามการเปลี่ยนแปลง”

ในนั้นสำหรับเอกสาร "ใบแจ้งหนี้" สำหรับ "การเปลี่ยนแปลง" ที่ถูกต้องเราจะเพิ่มข้อ จำกัด การเข้าถึงใหม่

เราระบุการตั้งค่าสำหรับทุกฟิลด์

ข้อความของข้อจำกัดคือ:

ReceiptInvoice จากเอกสาร ReceiptInvoice AS ReceiptInvoice

เปลี่ยนวันที่แบน Ban Date AS Ban Date
จาก

เข้าร่วมภายใน (SELECT
MAX (เปลี่ยนวันที่ต้องห้ามผู้ใช้) ในฐานะผู้ใช้
จาก
ทะเบียนข้อมูล วันที่ห้ามเปลี่ยนแปลง AS วันที่ห้ามเปลี่ยนแปลง
ที่ไหน
(เปลี่ยนวันที่ต้องห้าม User = &CurrentUser
หรือวันที่ ProhibitedChanges.User = VALUE (Directory.users.EmptyLink))) AS VZ_User
ตามวันที่ห้ามการเปลี่ยนแปลง User = VZ_User.User) AS NestedQuery
ใบกำกับสินค้าใบเสร็จรับเงินของซอฟต์แวร์ > วันที่ซ้อนกันของ Query.Ban

มาตรวจสอบกัน - ข้อจำกัดใช้งานได้

การใช้คำสั่งพรีโปรเซสเซอร์

#ถ้าเงื่อนไข1 #แล้ว

ขอส่วนที่ 1

#ElseIf Condition2 #แล้ว

ขอส่วนที่ 2

#มิฉะนั้น

ขอส่วนที่ 3

#สิ้นสุดถ้า

ในเงื่อนไข คุณสามารถใช้การดำเนินการเชิงตรรกะ (และหรือไม่ใช่ ฯลฯ) และเข้าถึงพารามิเตอร์เซสชันได้

วิธีการนี้ในบริบทของการสร้างข้อจำกัดการเข้าถึงมีความสะดวก โดยข้อความคำขอที่สั้นกว่าจะถูกรวบรวม ขึ้นอยู่กับเงื่อนไข แบบสอบถามที่ง่ายกว่าจะโหลดระบบน้อยลง

ข้อเสียคือตัวสร้างแบบสอบถามจะไม่ทำงานกับข้อความดังกล่าว

*ลักษณะเฉพาะ :

ตรงกันข้ามกับคำแนะนำของตัวประมวลผลล่วงหน้าของภาษาในตัวในข้อความจำกัดการเข้าถึงต่อหน้าโอเปอเรเตอร์ จากนั้นคุณจะต้องใส่แฮช - #Then

แบบฝึกหัดที่ 6. สลับ “ใช้ RLS”

มาเสริมระบบข้อจำกัดของเราด้วยสวิตช์ที่เปิด/ปิดการใช้ข้อจำกัดในระดับบันทึก

ในการดำเนินการนี้ เราจะเพิ่มค่าคงที่และพารามิเตอร์เซสชันชื่อ "UseRLS"

มาเขียนใน Session Module เพื่อตั้งค่าของพารามิเตอร์เซสชันจากค่าคงที่

มาเพิ่มรหัสต่อไปนี้ในข้อความจำกัดการเข้าถึงทั้งหมด:

“#ถ้า &UseRLS #แล้ว….. #EndIf”

เราตรวจสอบ - ทุกอย่างใช้งานได้

อย่างไรก็ตาม หลังจากเปิดธง "ใช้เรดาร์" แล้ว การเปลี่ยนแปลงจะไม่มีผลทันที ทำไม

เนื่องจากมีการตั้งค่าพารามิเตอร์เซสชันเมื่อเริ่มเซสชัน

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


จบภาคแรก.

สวัสดีผู้อ่านที่รัก วันนี้เรากำลังเริ่มบทความชุดหนึ่งเกี่ยวกับการจำกัดการเข้าถึงข้อมูลบนระบบปฏิบัติการ Windows

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

การจำกัดการเข้าถึงไฟล์และโฟลเดอร์โดยใช้เครื่องมือ Windows ในตัว

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

การเปลี่ยนสิทธิ์การเข้าถึงกลุ่ม [ปฏิเสธ]:

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

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

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

การเปลี่ยนสิทธิ์การเข้าถึงกลุ่ม [สิทธิ์]:

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

มาสรุปกัน

ดังนั้นวันนี้ผู้อ่านที่รักเราได้พิจารณาความเป็นไปได้ครั้งแรกในการจำกัดการเข้าถึงโฟลเดอร์และไฟล์บางไฟล์โดยใช้เครื่องมือ Windows ในตัว วิธีนี้ไม่น่าเชื่อถือที่สุด แต่เหมาะสำหรับการปกป้อง "วัสดุลับ" จากสายตาของผู้ใช้ที่ไม่มีประสบการณ์
ในโพสต์ถัดไป เราจะดูคุณลักษณะอื่นของ Windows ที่มีอยู่ในระบบตามค่าเริ่มต้น ซึ่งช่วยให้คุณสามารถเข้ารหัสข้อมูลอันมีค่าและจำกัดการเข้าถึงข้อมูลดังกล่าวได้ นี่คือ EFS (Encrypting File System) - ระบบเข้ารหัสข้อมูลระดับไฟล์ในระบบปฏิบัติการ Windows (เริ่มจาก Windows 2000 ขึ้นไป) ยกเว้นเวอร์ชัน "โฮม"

พิมพ์ (Ctrl+P)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

คู่สัญญา
จาก
สารบบ.คู่สัญญาคู่ค้าอย่างไร
การเชื่อมต่อด้านซ้าย
(เลือก
Users.Name, Users.Individual
จาก
ไดเรกทอรีผู้ใช้ผู้ใช้อย่างไร
ที่ไหน
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
<Выражение>– การแสดงออกเชิงตรรกะตามอำเภอใจในภาษาบิวท์อิน ผลลัพธ์จะเป็นประเภทบูลีน นิพจน์อาจมี:
● การดำเนินการเปรียบเทียบ<, >, <=, >= , =, <> ;
● การดำเนินการเชิงตรรกะและ, หรือ, ไม่ใช่;
● พารามิเตอร์เซสชัน – ใช้ไวยากรณ์ &พารามิเตอร์ โดยที่ พารามิเตอร์ คือชื่อของพารามิเตอร์เซสชัน
หากผลลัพธ์ของนิพจน์ของคำสั่ง #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 เทมเพลตการจำกัดการเข้าถึงทั้งหมด

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