ผู้ใช้ปัจจุบัน 1s 8.3 บนไคลเอนต์ วิธีรับข้อมูลเกี่ยวกับบทบาทการกำหนดค่า

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

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

เพราะว่า พารามิเตอร์เซสชันเป็นวัตถุข้อมูลเมตา แต่ก็มีคุณลักษณะบางอย่าง:

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

หากประเภทพารามิเตอร์เซสชันเป็น:

  • คงอาร์เรย์
  • คงที่คอลเลกชัน
  • โครงสร้างคงที่

จากนั้นค่าขององค์ประกอบคอลเลกชันอาจเป็นได้ ไม่ได้กำหนด.

พื้นที่หลักของพารามิเตอร์คือการใช้ค่าในแบบสอบถาม RLS (Record Level Access Restriction)

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

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

Table.User = &ผู้ใช้ปัจจุบัน

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

CurrentUser = SessionParameters.CurrentUser;


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

ขอแนะนำให้ใช้การเริ่มต้นแบบหน่วงเวลา (แบบขี้เกียจ) กล่าวคือ เริ่มต้นพารามิเตอร์เซสชันตามความต้องการ ไม่ใช่เมื่อเริ่มต้นระบบ เนื่องจากไม่จำเป็นต้องใช้พารามิเตอร์เซสชันทั้งหมดโดยตรงเมื่อเริ่มต้นระบบ การเริ่มต้น Lazy ทำได้ดังนี้:

การตั้งค่าขั้นตอนSessionParameters(SessionParametersNames) ถ้า SessionParametersNames ไม่ได้กำหนดไว้ ดังนั้น ถ้า ParameterName = "CurrentUser" ดังนั้น SessionParameters.CurrentUser = ; ElseIf ParameterName = "CurrentOrganization" จากนั้นSessionParameters.CurrentOrganization = ; // ฯลฯ สิ้นสุดถ้า; สิ้นสุดถ้า; EndProcedurevalue>ค่า>>

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

  • รุ่นปัจจุบัน 1C
  • ตัวอย่างของรหัสบนแพลตฟอร์ม 1C
บทบาทสิทธิ์การเข้าถึงใน 1C 8.x
ฉันจะทราบได้อย่างไรว่าผู้ใช้ปัจจุบันมีบทบาทบางอย่างหรือไม่
หากไม่มี RoleAvailable("ผู้จัดการ") ให้รายงาน ("ไม่อนุญาตให้ดูคำขอจากลูกค้า!"); สิ้นสุดถ้า;
ฉันจะรับข้อมูลเกี่ยวกับบทบาทการกำหนดค่าได้อย่างไร
รายการฟังก์ชันของบทบาทที่เป็นไปได้ Configuration() รายการบทบาท = รายการค่าใหม่; RolesConfiguration = Metadata.Roles; สำหรับแต่ละบทบาทจาก RoleConfiguration Loop RoleList.Add(Role.Name); สิ้นสุดรอบ; returnListRole; EndFunction
จะรันโค้ดโดยไม่ตรวจสอบสิทธิ์ได้อย่างไร?
1. ใช้โมดูลสิทธิพิเศษ 2. การจัดวาง รหัสโปรแกรมซึ่งจะต้องดำเนินการโดยไม่มีการควบคุมข้อจำกัด ในโมดูลทั่วไปที่มีการตั้งค่าสถานะ PRIVILEGE สำหรับโมดูล ใช้โหมดสิทธิพิเศษในการดำเนินการโค้ดโปรแกรม คล้ายกับโหมดการทำงานของโค้ดของโมดูลที่มีสิทธิพิเศษ สามารถเปิด/ปิดโหมดได้โดยใช้ภาษาในตัว: SetPrivilegedMode(<Включить>) พารามิเตอร์<Включить>(จำเป็น) ประเภท: บูลีน กำหนดว่าจะเปิดใช้งานโหมดสิทธิพิเศษหรือไม่: True - เปิดใช้งานโหมด; เท็จ - ปิดโหมด ฟังก์ชัน PrivilegedMode() ช่วยให้คุณสามารถกำหนดได้ว่าโหมดสิทธิพิเศษเปิดใช้งานอยู่หรือไม่ การใช้โหมดสิทธิพิเศษช่วยให้ทำงานได้เร็วขึ้น เนื่องจากไม่มีการกำหนดข้อจำกัดในการเข้าถึงข้อมูล และประการที่สอง ช่วยให้คุณสามารถดำเนินการกับข้อมูลในนามของผู้ใช้ที่ไม่มีข้อมูลนี้ แนะนำให้ใช้โหมดสิทธิพิเศษเมื่อคุณต้องการปิดใช้งานการตรวจสอบสิทธิ์ตามตรรกะ หรือเมื่อคุณสามารถปิดใช้งานการตรวจสอบสิทธิ์เพื่อเพิ่มความเร็วได้ อนุญาตให้ใช้โหมดสิทธิพิเศษเมื่อทำงานกับข้อมูลในนามของผู้ใช้บางรายซึ่งไม่ละเมิดสิทธิ์การเข้าถึงที่กำหนดสำหรับผู้ใช้รายนี้

5
เมื่อจำเป็นมากขึ้น การปรับแต่งอย่างละเอียดการเข้าถึงกลไก RLS - Record Level Security เข้ามาช่วยเหลือ การกำหนดค่าระบบ "1C:Enterprise" 8 เริ่มแรกถูกวางตำแหน่งเป็นโปรแกรมสำหรับการบัญชีหลายบริษัท และหนึ่งใน... 3
เริ่มต้นด้วยแพลตฟอร์ม 8.0 ของระบบ 1C Enterprise คุณสามารถจำกัดสิทธิ์การเข้าถึงของผู้ใช้ในระดับบันทึกได้ เพื่อจุดประสงค์นี้ จะใช้กลไก RLS (Record Level Security) การปรับจูนแบบ "ละเอียด" เช่นนี้สามารถทำได้... 3
ฉันมักจะเจอคำถามเกี่ยวกับ การสร้างซอฟต์แวร์และการตั้งค่าสิทธิ์ของผู้ใช้ ในบทความนี้ ผมจะยกตัวอย่างแอปพลิเคชัน Normal และ Managed ที่สร้างผู้ใช้ใน... 2
คำถาม: ฉันได้เพิ่มผู้ใช้ใหม่แล้ว ฉันสร้าง อินเทอร์เฟซใหม่(โดยการคัดลอกอันที่มีอยู่) และระบุอินเทอร์เฟซนี้เป็นอินเทอร์เฟซหลักสำหรับผู้ใช้รายนี้ ปัญหาคืออินเทอร์เฟซใหม่ที่สร้างขึ้น...