1c ตั้งค่าการตั้งค่าแบบฟอร์มมาตรฐาน การเลือกในรายงาน ความแตกต่างของตัวสร้างการตั้งค่า การตั้งค่าแบบฟอร์มและการทำงานกับรายการ

ระบบย่อยใน 1C 8.3— ออบเจ็กต์แผนผังข้อมูลเมตาที่รับผิดชอบในการสร้างอินเทอร์เฟซคำสั่งการกำหนดค่า

ด้านล่างในบทความเราจะพูดถึงระบบย่อยที่เริ่มตั้งแต่เวอร์ชัน 8.2

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

ระบบย่อย 1C และอินเทอร์เฟซโปรแกรมเมอร์

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

คุณสมบัติและการตั้งค่า

มาดูการตั้งค่าและคุณสมบัติของระบบย่อยในตัวปรับแต่ง:

รับบทเรียนวิดีโอ 267 บทเรียนบน 1C ฟรี:

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

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

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

บนแท็บ ตัวเลือกการทำงานระบุรายการตัวเลือกการทำงานที่ใช้ระบบย่อยนี้

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

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

หากคุณไม่เห็นรายงานหรือการประมวลผลในอินเทอร์เฟซที่ได้รับการจัดการ

ปัญหานี้มักเกิดขึ้นบ่อยมากในหมู่นักพัฒนามือใหม่ - ดูเหมือนว่ามีการเพิ่มรายงานหรือการประมวลผลลงในระบบย่อย แต่ไม่สามารถมองเห็นได้

เหตุผลแรกอาจเป็นเพราะว่าวัตถุไม่มีรูปแบบการควบคุมที่กำหนดไว้

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

บทความนี้ยังคงดำเนินต่อไปในซีรีส์ "ขั้นตอนแรกในการพัฒนา 1C"

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

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

การบังคับใช้

บทความนี้กล่าวถึงอินเทอร์เฟซที่ได้รับการจัดการในการกำหนดค่าเวอร์ชัน "เวอร์ชัน 8.2" ที่พัฒนาบนแพลตฟอร์ม 1C 8.3.4.482

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

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

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

การตั้งค่าแบบฟอร์มและการทำงานกับรายการ

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

หลังจากคลิกคำสั่งนี้ หน้าต่าง "การตั้งค่าแบบฟอร์ม" จะปรากฏขึ้น

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

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

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

คุณสามารถกำหนดแอตทริบิวต์ที่จะเปิดใช้งานเมื่อเปิดแบบฟอร์มได้

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

ตัวอย่างเช่น มีแอตทริบิวต์ประเภทการอ้างอิงในแบบฟอร์ม คู่สัญญาสามารถเพิ่มได้ ผู้ติดต่อ, ถ้า เสานี้มีอยู่ในไดเรกทอรี "คู่สัญญา"

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

หากต้องการกลับสู่การตั้งค่ามาตรฐานในหน้าต่างการตั้งค่าแบบฟอร์มในเมนู การกระทำทั้งหมดคุณควรเลือกรายการ ติดตั้ง การตั้งค่ามาตรฐาน .

นอกเหนือจากการปรับแต่งแบบฟอร์มในอินเทอร์เฟซที่ได้รับการจัดการแล้ว ยังสามารถปรับแต่งรายการได้ (องค์ประกอบไดเร็กทอรี เอกสาร)

ในรูปแบบของรายการในเมนู การกระทำทั้งหมดมีคำสั่งพิเศษ ปรับแต่งรายการ.

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

รูปภาพแสดงแบบฟอร์มสำหรับแก้ไขส่วนที่เลือก

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

หากต้องการใช้เงื่อนไข OR (NOT) คุณต้องเพิ่มกลุ่มที่เหมาะสม (OR Group, NOT Group) โดยใช้คำสั่ง Group Conditions

รูปภาพแสดงแบบฟอร์มสำหรับกำหนดฟิลด์การเรียงลำดับ

สามารถกำหนดค่าการจัดกลุ่มได้ ในรูป ฟิลด์สำหรับการจัดกลุ่มถูกเลือกไว้ คู่สัญญา.

รูปถัดไปจะแสดงวิธีการจัดกลุ่ม

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

รูปนี้แสดงผลการออกแบบพื้นหลังฟิลด์แบบมีเงื่อนไข ผลรวม.
เมื่อยอดเป็น > 100,000.

ควรสังเกตว่าสามารถดูไดเร็กทอรีในโหมดลำดับชั้นได้

การดูไดเร็กทอรีแบบลำดับชั้นสามารถกำหนดค่าได้ผ่านรายการ โหมดดูบนเมนู การกระทำทั้งหมด. คุณสามารถเลือกหนึ่งในตัวเลือก: รายการแบบลำดับชั้น, รายการ, ต้นไม้.

นอกจากนี้ยังสามารถกำหนดค่าการจัดกลุ่มองค์ประกอบไดเรกทอรีของคุณเองตามรายละเอียดบางอย่างได้

ตัวอย่างเช่น คุณสามารถจัดกลุ่มสินค้าตามซัพพลายเออร์ได้ ตัวอย่างนี้คล้ายกับที่เราดูการจัดกลุ่มเอกสาร "การขายสินค้าและบริการ" ตามคู่สัญญา

คุณสมบัติที่สะดวกคือการเลือกหลายรายการในรายการและการดำเนินการของกลุ่มในภายหลัง (การโพสต์ การยกเลิก การยกเลิกการเลือกการลบ)

วัตถุในรายการจะถูกเลือกโดยกดปุ่มค้างไว้ กะหรือ Ctrl.

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

หากต้องการค้นหาตามค่าในคอลัมน์ปัจจุบัน เพียงวางเคอร์เซอร์บนคอลัมน์ที่ต้องการแล้วคลิกที่ปุ่ม หาในแผงคำสั่ง หน้าต่างจะปรากฏขึ้นซึ่งคุณควรคลิกที่ปุ่มด้วย หา.

เพื่อให้การค้นหาของคุณเจาะจงมากขึ้น คุณสามารถใช้ช่องทำเครื่องหมายได้ ค้นหาในพบว่า.

เมื่อค้นหาแถวข้อมูลประเภทอ้างอิง (เช่น หน่วยวัด) คุณควรเลือกตัวเลือกการค้นหาที่เหมาะสม ...(ตามบรรทัด).

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

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

ผู้ที่สนใจสามารถข้ามส่วนที่ 1-4 และไปดูตัวอย่างได้เลย

ฉันจะพยายามดูรายละเอียดเพิ่มเติมอีกเล็กน้อยเกี่ยวกับการดำเนินการของการเลือก ACS สำหรับกรณีการใช้งานในรายงาน ฉันคิดว่าพฤติกรรมใน รายการแบบไดนามิกพร้อมยอดจองจำนวนมากจะปิดแล้ว ดังนั้น การเลือกในรายงาน ทฤษฎีเล็กๆ น้อยๆ และตัวอย่างเฉพาะเจาะจง

SP 8.3.6 และสูงกว่าใช้ส่วนของ ITS (ข้อ 10.3.7.5 ฯลฯ ) หนังสือ "การพัฒนาอย่างมืออาชีพในระบบ 1C-Enterprise 8" (Kazan, 2012, เล่มที่สอง) ในหนังสือของ E. Khrustaleva ไม่มีอะไรที่เข้าใจได้ในหัวข้อนี้เลย

ส่วนที่ 1

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

* การตั้งค่า – การตั้งค่าที่สร้างในโหมด Configurator และเปลี่ยนแปลงในโหมดแก้ไขเวอร์ชันรายงาน

* UserSettings – การตั้งค่าที่ผู้ใช้เปลี่ยนในโหมด “1C:Enterprise” ผ่านอินเทอร์เฟซเพียงอย่างเดียว

* FixedSettings – การตั้งค่าที่ตั้งค่าจากภาษาในตัว ได้แก่ ถูกกำหนดโดยระบบโดยปริยาย คุณสมบัตินี้มีค่าการเลือกที่โอนไปยังแบบฟอร์มโดยใช้พารามิเตอร์ (โครงสร้าง "การเลือก")

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

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

การคลิกที่ “เลือกตัวเลือก...” และยืนยันการเปลี่ยนแปลงในแบบฟอร์มที่เปิดขึ้นจะทำให้เกิดเหตุการณ์ตามลำดับต่อไปนี้:

เมื่ออัพโหลด OptionOn Server

เมื่ออัปเดตองค์ประกอบของการตั้งค่าผู้ใช้บนเซิร์ฟเวอร์

ในกรณีนี้ ตัวเลือกหรือ PN จะไม่เปลี่ยนแปลงแต่อย่างใด จากจุดนี้เป็นที่ชัดเจนว่าตัวเลือกและการตั้งค่า (หากเชื่อมต่ออยู่) ไม่ได้เชื่อมต่อโดยตรงแต่อย่างใด

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

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

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

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

การเพิ่มสิ่งที่ปรากฏในการตั้งค่าให้กับ PN จำเป็นต้องมีการดำเนินการในโค้ดหรืออินเทอร์เฟซ แต่การลบและล้างการตั้งค่าจะส่งผลต่อ PN ทันทีและไม่มีการอัพเดตใด ๆ เช่น:

Report.SettingsLitter.Settings.Selection.Items.Clear();

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

หมายเหตุ:

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

เมื่อเพิ่มการเลือกในแบบฟอร์ม "เปลี่ยนตัวเลือก" จะดำเนินการทันทีด้วยชุดธง "รวมใน PN" แต่ฉันขอย้ำอีกครั้งจากมุมมองของภาษาในตัว PN ยังคงไม่เปลี่ยนแปลง

การตั้งค่ารูปแบบของตัวแปรและการตั้งค่ารูปแบบของ PN นั้นไม่เกี่ยวข้องกันโดยตรง สิ่งเหล่านี้เป็น 2 ทิศทางของการเปลี่ยนแปลงที่แตกต่างกัน

PN มี "การตั้งค่าเพิ่มเติม" เหนือสิ่งอื่นใด ฉันไม่เคยเข้าใจเลยว่าพวกเขาเติมเต็มอะไรและในเวลาใด แม้ว่ารายงานจะมีการตั้งค่า "ทำเครื่องหมายในการเลือกและการออกแบบตามเงื่อนไข" เป็นแบบกำหนดเอง (ตามกิจการร่วมค้า) แต่ การตั้งค่าเพิ่มเติมมันว่างเปล่าในทุกกรณี ไม่มีอะไรเกี่ยวกับเรื่องนี้ใน ITS

แม้จะมีคำแถลงในกิจการร่วมค้า แต่ PN ก็ยังได้รับการจัดอันดับเป็น xml อย่างสมบูรณ์แบบ

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

แบบฟอร์มเริ่มต้นสำหรับการแก้ไขเวอร์ชันรายงานมีสิ่งที่น่าสนใจมากมาย แต่ไม่มีที่ไหนเลยที่จะใช้ได้กับ FN และ PN และแม้แต่กับการตั้งค่าพื้นฐานก็ยังใช้งานได้กับการอ่านมากกว่า (ยกเว้นว่าจะล้างการเลือก ลำดับ และแบบแผน)

ส่วนที่ 2

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

คอมพ์ = NewDataCompositionSettingsComposer; // คุณยังสามารถเริ่ม // comp.Initialize(SomeSettingsComposer.GetSourceofAvailableSettings()); คอมพ์.LoadSettings(SomeSettingsComposer.Settings); SomeSettingsComposer.LoadCustomSettings (comp.CustomSettings);

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

การใช้การตั้งค่าแบบกำหนดเองกับการตั้งค่าหลักทำได้ในวิธีการนี้ รับการตั้งค่า() ตัวสร้างการตั้งค่า มีการดำเนินการต่อไปนี้:

* สำหรับประเภท DataCompositionSelectionElement เนื้อหาขององค์ประกอบจะถูกคัดลอกไปยังองค์ประกอบการตั้งค่าแบบกำหนดเองที่เกี่ยวข้อง

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

* สำหรับประเภท DataCompositionSelectionElementGroup คุณสมบัติการใช้งานจะถูกตั้งค่าในองค์ประกอบที่เกี่ยวข้องของการตั้งค่าหลัก (ขึ้นอยู่กับสัญลักษณ์ของการใช้องค์ประกอบ PN)

ส่วนที่ 3

เมื่อสร้างการตั้งค่าขั้นสุดท้าย เพื่อเสนอราคา ITS การตั้งค่าต่างๆ จะถูกรวมเข้าด้วยกันดังนี้:

* หากการตั้งค่าประเภทใดๆ ถูกทำเครื่องหมายว่าเป็นแบบกำหนดเองทั้งหมด การตั้งค่าที่ได้จะรวม PN ไว้ด้วย ในกรณีนี้ หากองค์ประกอบการตั้งค่าใดๆ ถูกทำเครื่องหมายว่าไม่พร้อมใช้งาน การตั้งค่าเหล่านี้จะถูกวางไว้ในการตั้งค่าผลลัพธ์จากคุณสมบัติ Settings Composer.Settings

* หากการตั้งค่าประเภทใดๆ ถูกทำเครื่องหมายว่ากำหนดเอง ไม่ใช่ทั้งหมด แต่องค์ประกอบตามองค์ประกอบ องค์ประกอบที่ทำเครื่องหมายว่ากำหนดเองจะถูกรวมไว้ในการตั้งค่าผลลัพธ์จากคุณสมบัติ Settings Composer.CustomSettings และองค์ประกอบที่ทำเครื่องหมายว่าไม่พร้อมใช้งานจะถูกนำเข้าสู่ การตั้งค่าผลลัพธ์จากคุณสมบัติ Settings Composer.Settings

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

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

ตอนที่ 4

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

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

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

ลำดับทั่วไปของการดำเนินการเหตุการณ์เมื่อเปิดแบบฟอร์มพร้อมแฟล็กเพื่อสร้างรายงานเมื่อเปิด (มากกว่าที่อธิบายไว้ใน "การพัฒนาทางวิชาชีพ" เล็กน้อย):

เมื่อ CreateOnServer

ก่อนที่จะอัปโหลดตัวเลือกบนเซิร์ฟเวอร์

เมื่ออัพโหลด OptionOn Server

ก่อนอัปโหลดการตั้งค่าผู้ใช้ไปยังเซิร์ฟเวอร์

เมื่อโหลดการตั้งค่าผู้ใช้บนเซิร์ฟเวอร์

เมื่ออัปเดตองค์ประกอบของการตั้งค่าผู้ใช้บนเซิร์ฟเวอร์

กำลังประมวลผล CheckFillOnServer

เมื่อเปิด

ในกรณีนี้ ตัวเลือกหรือ PN จะไม่มีการเปลี่ยนแปลง เว้นแต่จะมีการพยายามเป็นพิเศษ

ตอนที่ 5

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

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

มาดูกันว่าเรามีอะไรบ้างก่อนโหลด PN บนเซิร์ฟเวอร์

ในกรณีธรรมดา เมื่อไม่มีการตั้งค่าล่วงหน้าใน ACS และไม่มีองค์ประกอบใดรวมอยู่ใน PN สถานการณ์จะเป็นดังนี้: การตั้งค่า – ว่างเปล่า; FN – มีตัวเลือกที่ถูกต้อง จันทร์มีตัวเลือกว่าง การสร้างรูปร่างทำงานได้อย่างถูกต้อง แต่จากมุมมองของผู้ใช้ อินเทอร์เฟซขัดแย้งกับระบบภายใน และทำให้ท้อใจ - การเลือกใช้งานได้ แต่ไม่สามารถมองเห็นได้ ในทำนองเดียวกัน หากคุณเปิดใช้งานการเลือกใน PN ในการตั้งค่าโครงสร้างตัวเลือก รายงานจะถูกสร้างขึ้นโดยคำนึงถึงการเลือกด้วย แต่ผู้ใช้จะไม่เห็นการเลือกใดๆ เช่นกัน

มาตั้งค่าการเลือกล่วงหน้า (เท่ากับค่าว่าง) ในการตั้งค่า ACS ใน Configurator และรวมไว้ใน PN ตามทฤษฎีแล้ว FN ควรกรอกการตั้งค่าและควรกรอก PN แต่ในความเป็นจริงเรามี: ในการตั้งค่า - การเลือกที่มีองค์ประกอบที่ต้องการ แต่เป็นค่าขวาที่ว่างเปล่า FN จะมีการเลือกที่ถูกต้องและ PN ยังไม่มีสิ่งใดเลย นอกจากนี้ในกรณีนี้จะไม่มีการสร้างรายงานเพราะว่า ค่าการเลือกที่ถูกต้องว่างเปล่า แม้ว่าค่าจะถูกส่งผ่านในพารามิเตอร์ Select ก็ตาม

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

&ในขั้นตอนเซิร์ฟเวอร์ SetPresetSelections(UserSettings) หากไม่ใช่ Parameters.Property("Selection") ให้ส่งคืน EndIf; ถ้าพารามิเตอร์Selection.Quantity()=0แล้วส่งกลับEndIf; rTypeEO=Type("องค์ประกอบการเลือก DataComposition"); สำหรับแต่ละคีย์ From parameters.Selection Loop pField=NewDataCompositionField(key.Key); // ถ้า (ValueType(kiz.Value)=Type("Array") orValueType(kiz.Value)=Type("ValueList")) และ kiz.Value.Quantity()>1 จากนั้น pViewComparison=DataCompositionComparisonType.InList; มิฉะนั้น pComparisonType=DataCompositionComparisonType.Equals; สิ้นสุดถ้า; // pNecessarySelection = ไม่ได้กำหนด; // ดูว่ามีตัวเลือกในการตั้งค่าผู้ใช้หรือไม่ pNecessaryEO=Unknown; // ดูว่ามีองค์ประกอบ DataComposition Selection แยกต่างหากในการตั้งค่าผู้ใช้สำหรับแต่ละ elnastr จาก UserSettings.Elements Cycle หรือไม่ ถ้า TypeValue(elnastr) = Type("DataComposition Selection") และ pNecessarySelection=Undefed จากนั้น // สามารถมีได้เพียง pNecessarySelection= เอลนาสตร์; // สิ่งนี้สามารถทำได้นอกลูป แต่จำเป็นต้องเรียงลำดับการตั้งค่าผู้ใช้เพื่อประโยชน์ขององค์ประกอบ... มิฉะนั้น ถ้า TypeZnch(elnastr) = pTypeEO จากนั้น // นี่คือองค์ประกอบการเลือก อาจมีได้หลายอย่าง ของพวกเขา แต่เราสนใจในสิ่งที่ไม่ได้เตรียมใช้งานหรือมีฟิลด์บังคับ If elstr.LeftValue=pField หรือ elstr.LeftValue=Undefinition และ rNeedEO=Undefinated แล้ว pNeedEO=elstr; สิ้นสุดถ้า; สิ้นสุดถ้า; สิ้นสุดรอบ; // ถ้า pRequiredSelection<>ไม่ได้กำหนด จากนั้น // มันจะไปเป็นลำดับความสำคัญ pNecessaryEOFromSelection = ไม่ได้กำหนด; สำหรับแต่ละ elotb จาก pNecessarySelection.Elements Cycle ถ้า elotb.LeftValue=pField จากนั้น pNecessaryEOfromSelection=eloteb; ยกเลิก EndIf; สิ้นสุดรอบ; ถ้า pNecessary EO จากการเลือก = ไม่ได้กำหนด ดังนั้น pNecessary EO จากการเลือก = pNecessary Selection.Elements.Add(pType of EO); pNeedEOFromSelection.LeftValue=pField; สิ้นสุดถ้า; pNecessaryEOfromSelection.ComparisonType=pComparisonType; pNecessaryEOFromSelection.RightValue=kiz.Value; pNecessaryEOFromSelection.Use=True; // rNeededEO.Use=False; มิฉะนั้นหาก pNecessarySelection=ไม่ได้กำหนด และ pNecessaryEO<>ไม่ได้กำหนด จากนั้น // ใส่องค์ประกอบ pNecessaryEO.LeftValue=pField; pNecessaryEO.ComparisonType=pComparisonType; pNeedEO.RightValue=kiz.Value; pNeedEO.Use=จริง; สิ้นสุดถ้า; pNeed=ไม่ได้กำหนด; สำหรับแต่ละ elotb From Report.ComposerSettings.Settings.Selection.Elements Loop // ในลักษณะที่เป็นมิตร ควรมีการค้นหาแบบเรียกซ้ำ! ถ้า TypeValue(elotb)=pTypeEO และ elotb.LeftValue=pField แล้ว pNeed=elotb; ยกเลิก EndIf; สิ้นสุดรอบ; ถ้า pNeed = ไม่ได้กำหนด ดังนั้น pNeed = Report.Settings Composer.Settings.Selection.Elements.Add(pEOType); pNeed.LeftValue=pMargin; สิ้นสุดถ้า; pNecessary.ComparisonType=pComparisonType; pNeed.RightValue=kiz.Value; pNeed.Use=จริง; //สิ้นสุดรอบ; รายงาน การตั้งค่าผู้แต่ง FixedSettingsSelection.Items.Clear(); // มิฉะนั้นจะบอกว่าองค์ประกอบตัดกัน/ขัดแย้งกับจุดสิ้นสุดของกระบวนการ

วิธีที่ถูกต้องที่สุดในการโทรนี้คือ:

&ในขั้นตอนเซิร์ฟเวอร์ การประมวลผล การตรวจสอบการกรอกบนเซิร์ฟเวอร์ (ความล้มเหลว ตรวจสอบรายละเอียด) ตั้งค่าการเลือกที่กำหนดไว้ล่วงหน้า (รายงาน การตั้งค่า ตัวเชื่อมโยง การตั้งค่าผู้ใช้); สิ้นสุดขั้นตอน

จากนั้น การเรียกบริบท เช่น จากฟอร์มไดเร็กทอรี จะมีลักษณะดังนี้:

&ขั้นตอน OnClient OpenReport(คำสั่ง) ถ้า ValueFilled(Object.Link) ดังนั้น ot=New Structure("LinkToDirectory",Object.Link); // นี่คือวิธีการตั้งชื่อฟิลด์ในรายงาน SDS พารามิเตอร์ฟอร์ม = โครงสร้างใหม่ ("การเลือก, สร้างเมื่อเปิด", เลือก, จริง); OpenForm("Report.Report1.Form.ReportForm",พารามิเตอร์ฟอร์ม,แบบฟอร์มนี้); สิ้นสุดถ้า; สิ้นสุดขั้นตอน

ตอนที่ 6

หากจำเป็น ให้เปลี่ยนการตั้งค่ารายงานขณะใช้งาน รวมถึง ทั้งตอนเปิดเครื่องและหลังเปิด วิธีที่ถูกต้องที่สุดคือการเปลี่ยน “จากจุดเริ่มต้น” กล่าวคือ จากการตั้งค่า ACS การเปลี่ยนรูปแบบ ACS จะดำเนินการเฉพาะกับวัตถุรายงาน (หรือรายงานภายนอก) และไม่ใช่กับข้อมูลแบบฟอร์มและในตัวมันเองจะไม่เปลี่ยนแปลงอะไรเลย - ในการตั้งค่าและใน PN ยังคงเหมือนเดิมและ FN อาจยังคงอยู่ ว่างเปล่า. ดังนั้นขึ้นอยู่กับงานของเรา:

หลังจากการประหารชีวิต

รายงานการตั้งค่าผู้แต่งโหลดการตั้งค่า (SKD.DefaultSettings)

มีเพียงตัวเลือกเท่านั้นที่เปลี่ยนแปลง และไม่มีอะไรเพิ่มเติม

หลังจากดำเนินการตามเทคนิคที่กำหนดในวรรค 2 แล้ว (โดยใช้ “ตัวกลาง” และวิธีการ โหลดการตั้งค่าแบบกำหนดเอง()

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

หลังจากการประหารชีวิต

ThisForm.CreateFormElementsUserSettings(, DisplayModeDataCompositionSettings.All)

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

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

&บนขั้นตอนเซิร์ฟเวอร์ ChangeSKD() pObject = Form AttributesValue("Report"); Selection=pObject.DataCompositionScheme.SettingsOptions.Get(0).Settings.Selection; eo = Selection.Elements.Add(ประเภท("DataCompositionSelectionElement")); eo.LeftValue=NewDataCompositionField("LinkToDirectory.Field1"); eo.ComparisonType=DataCompositionComparisonType.Equals; eo.RightValue=จริง; eo.ใช้=จริง; ValueFormAttributes(pObject,"รายงาน"); Report.SettingsLitter.LoadSettings (pObject.DataCompositionSchema.DefaultSettings); รายงานการตั้งค่าComposer.Restore(); // เป็นที่พึงปรารถนา แม้ว่าสิ่งนี้จะยังไม่ส่งผลกระทบต่อ FN ก็ตาม // ในความเป็นจริง นี่คือสิ่งที่สามารถเรียกได้ว่าเป็นการเปลี่ยนแปลงองค์ประกอบของ PN สำหรับอีเมลแต่ละฉบับจาก Report.ComponentSettings.Settings.Selection.Elements Cycle email.DisplayMode=ElementDisplayModeDataCompositionSettings.QuickAccess; ถ้า EmptyString(el.UserSettingsIdentifier) ​​​​แล้ว // คุณสามารถใช้วิธี electronicSetIdentifier สำหรับองค์ประกอบ PN ดูความช่วยเหลือใน SP ทุกอย่างค่อนข้างชัดเจน e.UserSettingsIdentifier="ID123"; // สำคัญ - ตัวระบุสามารถเป็นอะไรก็ได้ ไม่ใช่ UUID หรือ GUID! el.ViewUserSettings = "ทดสอบ"; สิ้นสุดถ้า; สิ้นสุดรอบ; comp=NewDataCompositionSettingsComposer; comp.LoadSettings (pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.LoadCustomSettings (comp.CustomSettings); สำหรับอีเมลแต่ละฉบับจาก Report.Settings Composer.CustomSettings.Elements Cycle email.DisplayMode=ItemDisplayModeDataLayoutSettings.QuickAccess; // ดึง EndCycle มาที่แบบฟอร์มรายงาน; // และตอนนี้สิ่งนี้จะมีผลกระทบ: ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.QuickAccess); สิ้นสุดขั้นตอน

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

บางสิ่งได้รับการชี้แจงโดยการทดลองและดังนั้นจึงเป็นที่ถกเถียงกัน ผู้รู้มากกว่านี้เชิญวิจารณ์และแสดงความคิดเห็นได้