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

ข้อมูลรายการแบบไดนามิก 1 วินาที

ในที่สุดความฝันของ "ผู้เล่นเจ็ดคน" ก็เป็นจริง ความถี่ที่ผู้ใช้โปรแกรม 7.7 ขอให้เลือกรายการตามปกติ เพื่อให้คุณสามารถดูยอดคงเหลือ ราคา และตั้งค่าตัวกรอง ฉันต้องคิดกลอุบายต่าง ๆ จนถึงการเขียนส่วนประกอบภายนอก ใน 1C 8.2 รายการไดนามิกปรากฏขึ้น ฉันเสนอให้พิจารณาว่ามันคืออะไรและพวกเขาสามารถให้อะไรเราได้บ้างใน 1C 8.3

มาเป็นพื้นฐานสำหรับการกำหนดค่าการทดสอบ 1C: "Enterprise Accounting 3.0" เราจะไม่ทำการเลือกในตอนนี้ เพียงแค่เพิ่มแบบฟอร์มการเลือกอื่นในหนังสืออ้างอิง "ระบบการตั้งชื่อ" และทำให้เป็นแบบหลักชั่วคราว:

เมื่อสร้างแล้ว ระบบจะเพิ่มฟิลด์ตารางที่มีประเภท "รายการไดนามิก" ลงในแบบฟอร์มโดยค่าเริ่มต้น

ไปที่คุณสมบัติของมันและดูว่ามีอะไรบ้าง

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

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

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

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

แบบสอบถามที่กำหนดเองในรายการไดนามิก

อันดับแรก มาสร้างแบบสอบถามที่เราต้องการด้วยยอดคงเหลือและราคา เช่นนั้น:

แท็บการตั้งค่า

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

การตั้งค่าพารามิเตอร์เคียวรีโดยทางโปรแกรมในรายการไดนามิก 1C 8.3

อย่าลืมว่าเรามีสองพารามิเตอร์ในคำขอ: "ระยะเวลา" และ "ประเภทราคา" เราต้องส่งต่อไปยังคำขอ มิฉะนั้น จะเกิดข้อผิดพลาด

ลองเขียนพารามิเตอร์เหล่านี้ในพารามิเตอร์ฟอร์ม และเพิ่มบรรทัดต่อไปนี้ในโมดูลฟอร์ม:

รายการ &OnServerProcedure OnCreateOnServer (ความล้มเหลว การประมวลผลมาตรฐาน) ตัวเลือก. SetParameterValue("ระยะเวลา", Parameters.Date) ; รายการ. ตัวเลือก. SetParameterValue("PriceType" , Parameters.PriceType) ; จบขั้นตอน

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

คุณสมบัติของรายการไดนามิกใน 1C

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

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

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

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

  • การเลือกรายการแบบไดนามิก
  • การจัดกลุ่ม;
  • การเรียงลำดับ;
  • การตกแต่ง

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

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

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



เลือก NomenclatureList.Description AS Name, GoodsInWarehouse Remains.Warehouse AS Warehouse, GoodsInWarehouses Remains.QuantityRemaining AS QuantityRemainder FROM Directory Nomenclature AS NomenclatureList LEFT JOIN Accumulation Register.GoodsInWarehouses.Remains(&CurrentDate,) AS GoodsInWarehousesRemainder ki software NomenclatureList.Re ference = GoodsInWarehousesRemains.Nomenclature WHERE

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

&ที่ขั้นตอนของเซิร์ฟเวอร์ บน CreationAt Server(Failure, StandardProcessing) Nomenclature Remains.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) EndProcedure


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

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



&OnServerProcedureOnCreateOnServer(ความล้มเหลว การประมวลผลมาตรฐาน)RemainsDate = CurrentSessionDate(); รายการ Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); จุดสิ้นสุดของขั้นตอน & ที่ขั้นตอนของลูกค้า RemainsDateOnChange(Element) Item Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); จบขั้นตอน

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

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

  1. การเลือก;
  2. รายการ

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

พิมพ์ (Ctrl+P)

รายการแบบไดนามิก

1. ข้อมูลทั่วไป

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

ข้าว. 1. ตัวเลือกสำหรับการสร้างรายการไดนามิก

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

เลือก
ทางเลือก
เมื่อส่งมอบปัจจัย = 1 แล้วส่ง
อื่น ๆ จัดส่ง ค่าสัมประสิทธิ์
สิ้นสุดเป็นค่าสัมประสิทธิ์
จาก

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

เลือก
ทางเลือก
เมื่อ Delivery.Factor = 1 จากนั้น EXPRESS(&Representation AS String(100)) ELSE Delivery ค่าสัมประสิทธิ์
สิ้นสุดเป็นค่าสัมประสิทธิ์
จาก
เอกสาร DeliveryProducts AS Delivery

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

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

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

2. ข้อ จำกัด และคุณสมบัติ

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

เมื่อพัฒนารายการไดนามิก คุณควรทดสอบรายการไดนามิกทั้งหมดด้วยคิวรีแบบกำหนดเอง ในระหว่างกระบวนการตรวจสอบ คุณควรตรวจสอบให้แน่ใจว่าหากการสืบค้นข้อมูลแบบรายการประกอบด้วยการสืบค้นที่ซ้อนกันหรือตารางเสมือน และฟิลด์ที่มีนามแฝงที่ตรงกับนามแฝงของแอตทริบิวต์มาตรฐาน Owner, Parent, Date, Period, ThisGroup หรือฟิลด์คีย์มีให้เลือก ฟิลด์เหล่านี้สอดคล้องกับแอตทริบิวต์มาตรฐานที่มีนามแฝงเดียวกันจริงๆ หากไม่เป็นเช่นนั้น คุณควรเปลี่ยนคำขอเพื่อให้ตรงกับหรือ
นามแฝงแตกต่างกัน
หากเลือกการสร้างแบบสอบถามด้วยตนเอง จะมีการบังคับใช้ข้อจำกัดบางประการกับแบบสอบถาม:
● ไม่สนับสนุนการใช้ FIRST clause ในการสืบค้นรายการไดนามิก หากจำเป็นต้องใช้การเลือกในรายการไดนามิกที่ถูกจำกัดด้วยจำนวนเรคคอร์ด เคียวรีสำหรับสร้างไดนามิกลิสต์ควรทำใหม่ในลักษณะที่เนื้อหาจริงของเคียวรีอยู่ในเคียวรีย่อย และจำกัดจำนวนเร็กคอร์ดที่ได้รับในเคียวรีย่อยนี้ คุณยังสามารถใช้ตารางชั่วคราวแทนคิวรีย่อยได้อีกด้วย
● ไม่รองรับการกรอง การเรียงลำดับ และการจัดกลุ่ม:

  • ตามรายละเอียดของส่วนตาราง
  • ดูฟิลด์
  • ช่อง DataVersion
  • ฟิลด์ PredefinedDataName
  • Field Chart ประเภทตารางบัญชี
  • ฟิลด์ MovementType ของตารางการลงทะเบียนการสะสม
  • ประเภทฟิลด์ค่าของตารางประเภทลักษณะแผน
  • ฟิลด์ประเภท Type;
  • ฟิลด์ประเภทสตริง (ไม่จำกัดความยาว)
  • ฟิลด์ประเภท BinaryData

● ไม่รองรับการเรียงลำดับและจัดกลุ่มตามฟิลด์ Subconto<НомерСубконто>และพิมพ์ Subconto<НомерСубконто>ตารางการเคลื่อนไหว Subconto ทะเบียนบัญชี
● ไม่สนับสนุนการจัดกลุ่มตามฟิลด์ที่เป็นนิพจน์ภาษาของแบบสอบถามที่มีฟังก์ชันรวม
● เมื่อเลือกตารางหลักแล้ว การสืบค้นรายการไดนามิกจะมีข้อจำกัดดังต่อไปนี้:

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

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

ไม่สนับสนุนการใช้ตารางต่อไปนี้เป็นตารางหลักของรายการไดนามิก:

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

● ตารางย่อยของทะเบียนบัญชี
● ตารางเสมือนทั้งหมดของทะเบียนบัญชี ยกเว้นตาราง MovementsSubconto
● ตารางค่าคงที่ (รวมถึงตารางค่าคงที่);
● ตารางแหล่งข้อมูลภายนอกที่ไม่มีฟิลด์คีย์
● ตารางลูกบาศก์ของแหล่งข้อมูลภายนอก
● ตารางการลงทะเบียนสะสม:

  • ตารางหมุนเวียน;
  • ตารางสมดุล;
  • ตารางการหมุนเวียนและยอดคงเหลือ

● ตารางการลงทะเบียนการคำนวณ:

  • ตารางระยะเวลาที่ใช้ได้จริง
  • ข้อมูลกราฟ
  • ข้อมูลพื้นฐาน.

● ตารางของชิ้นส่วนที่เป็นตารางของวัตถุ
● เปลี่ยนตารางการลงทะเบียน (ใช้ในกลไกการแลกเปลี่ยนข้อมูล)
● ตารางลำดับ;
● ตารางการแปลง (ใช้ในกลไกการชำระเงินที่เกิดซ้ำ)
● ตารางที่ใช้ในการรวมภายนอกในแบบสอบถามเท่านั้น

กล่าวอีกนัยหนึ่ง รายการไดนามิกที่มีตารางหลักที่ระบุจะทำงานได้อย่างถูกต้อง หากเป็นผลจากการดำเนินการค้นหา
ระบุเป็นแหล่งข้อมูล จำนวนแถวที่ได้รับจากตารางหลักจะไม่เพิ่มขึ้น (คำนึงถึงการเลือกที่กำหนด) หากจำนวนแถวที่ได้รับจากการสืบค้นจากตารางหลักเป็นผลจากการดำเนินการค้นหา การดำเนินการนี้จะนำไปสู่การละเมิดคีย์บันทึกที่ไม่ซ้ำกันของตารางที่แสดงโดยรายการ ในกรณีนี้ คุณต้องปิดการใช้งานตารางรายการไดนามิกหลัก
เมื่อทำงานกับรายการไดนามิก จำเป็นต้องคำนึงถึงสิทธิ์การเข้าถึงรายละเอียดที่แสดงโดยรายการ:
● ข้อมูลของคอลัมน์รายการไดนามิกที่ทำเครื่องหมายด้วยคุณสมบัติ ใช้เสมอ แต่ผู้ใช้ปัจจุบันไม่มีสิทธิ์ดู จะไม่ถูกโอนไปยังฝั่งไคลเอ็นต์ การเข้าถึงข้อมูลของคอลัมน์ดังกล่าว (โดยใช้คุณสมบัติ CurrentData และเมธอด RowData())
ในฝั่งไคลเอนต์ไม่ได้
● หากผู้ใช้ปัจจุบันไม่มีสิทธิ์ดูในช่องคีย์ของรายการไดนามิก การรับข้อมูลจากรายการไดนามิกนี้จะส่งผลให้เกิดข้อผิดพลาดในการละเมิดการเข้าถึง
สำหรับรายการไดนามิกที่แสดงรายการการแจงนับ ไม่มีวิธีปรับแต่งรายการแบบโต้ตอบ
องค์ประกอบของคอลัมน์และการตั้งค่าของรายการไดนามิกจะเชื่อมโยงกับฟิลด์ของคิวรีตามนามแฝงของฟิลด์ที่เลือก หากไม่ได้ระบุนามแฝงสำหรับฟิลด์การเลือกอย่างชัดเจนในแบบสอบถาม และฟิลด์นั้นเป็นฟิลด์ระบบ ดังนั้นชื่อฟิลด์สำหรับเวอร์ชันภาษาอังกฤษของภาษาในตัวจะถูกใช้เป็นนามแฝง
ความสัมพันธ์ที่ระบุหมายความว่าเมื่อคุณเปลี่ยน (หรือระบุนามแฝงอย่างชัดเจนสำหรับฟิลด์ที่ใช้นามแฝงอัตโนมัติ)
นามแฝงของฟิลด์คิวรีที่สร้างข้อมูลรายการไดนามิก การตั้งค่าของแอตทริบิวต์รายการไดนามิกจะหายไป องค์ประกอบของฟอร์มจะ "สูญเสีย" แอตทริบิวต์ที่แสดง การตั้งค่ารายการไดนามิกจะไม่ถูกต้อง เป็นต้น
ในกรณีที่แหล่งข้อมูลของรายการไดนามิกเป็นตาราง (ปกติหรือเสมือน) ซึ่งอนุญาตให้คุณตั้งค่าการเลือกตามระยะเวลา ถ้าผู้ใช้ตั้งค่าระยะเวลาการแสดงผลในรายการไดนามิกดังกล่าว (คำสั่ง Set date interval ...)
ขอบเขตระยะเวลาที่ระบุจะถูกตั้งค่าเป็นค่าการเลือกหรือพารามิเตอร์ตารางเสมือน หากหมายถึงการขยายภาษา
แบบสอบถามสำหรับระบบองค์ประกอบข้อมูลระบุชื่อของพารามิเตอร์ของตารางเสมือนอย่างชัดเจน - พารามิเตอร์จะถูกตั้งค่าตามที่ระบุ
ชื่อ ตารางที่สามารถควบคุมช่วงเวลาสำหรับการแสดงหรือประมวลผลข้อมูล:
● ตารางการลงทะเบียน (หลักหรือเสมือน) ซึ่งมีความเป็นไปได้ในการเลือกตามระยะเวลา (สำหรับการลงทะเบียนการคำนวณ - ตามระยะเวลาการลงทะเบียน)
● ตารางเอกสารหลัก กระบวนการทางธุรกิจและงานต่างๆ
● ตารางหลักของวารสารเอกสาร;
● ตารางลำดับหลัก ตารางลำดับขอบเขต
พารามิเตอร์เคียวรีของรายการไดนามิกอาจเป็นอาร์เรย์หรือรายการค่าก็ได้ อย่างไรก็ตาม หากพารามิเตอร์เป็นรายการของค่า เฉพาะค่าแรกของรายการเท่านั้นที่จะใช้เป็นค่าตัวกรอง หากรายการไดนามิกใช้การสืบค้นด้วยพารามิเตอร์ การตั้งค่าเริ่มต้นของค่าพารามิเตอร์จะต้องดำเนินการในตัวจัดการ OnCreateAtServer
เมื่อแสดงข้อมูลรายการแบบไดนามิก โปรดคำนึงถึงประเด็นต่อไปนี้:
● การเปลี่ยนคุณสมบัติของรายการไดนามิกโดยทางโปรแกรมจะไม่สร้างแถบคำสั่งที่เกี่ยวข้องใหม่โดยอัตโนมัติ
ด้วยรายการไดนามิกนี้
● ถ้าหลายฟิลด์ถูกจัดกลุ่มเป็นกลุ่มด้วยโหมดการจัดกลุ่ม ในเซลล์และในฟิลด์ที่จัดกลุ่ม มีฟิลด์ที่แสดงพร้อมกล่องกาเครื่องหมาย กล่องกาเครื่องหมายนี้จะแสดงก่อนเสมอในเซลล์ผลลัพธ์ (ทางด้านซ้ายของข้อความ)
ในรายการไดนามิก เมื่อกำหนดชนิดข้อมูลสำหรับฟิลด์ที่มีนิพจน์รวมถึงพารามิเตอร์ ฟิลด์ หรือตัวอักษร ชนิดผลลัพธ์จะถูกกำหนดโดยชนิดของฟิลด์และตัวอักษร หากประเภทค่าพารามิเตอร์ไม่รวมอยู่ในประเภทข้อมูลผลลัพธ์ ค่าจะถูกตัดทอน
ตัวอย่างเช่น ในตัวอย่างต่อไปนี้ ฟิลด์จะเป็นประเภท Number

ทางเลือก
เมื่อเป็นเท็จ
จากนั้น 5
มิฉะนั้น
&พารามิเตอร์
จบ

หากคุณกำหนดค่าประเภทอื่นให้กับพารามิเตอร์ Parameter รายการไดนามิกสำหรับฟิลด์นี้จะได้รับค่า 0 (ค่าเริ่มต้นสำหรับประเภท Number)
หากในสถานการณ์ดังกล่าวจำเป็นต้องเลือกพารามิเตอร์ประเภทอื่น ขอแนะนำให้ใช้โครงสร้างภาษาคิวรี ด่วน. ตัวอย่างเช่น,
หากในตัวอย่างข้างต้นคุณต้องการส่งสตริงที่มีความยาวไม่เกิน 100 อักขระไปยังพารามิเตอร์ คุณควรแทนที่การบ่งชี้อย่างง่ายของพารามิเตอร์ด้วยนิพจน์ที่มีการแปลงประเภทที่ชัดเจน:

ทางเลือก
เมื่อเป็นเท็จ
จากนั้น 5
มิฉะนั้น
EXPRESS(&พารามิเตอร์ AS สตริง(100))
จบ

หากใช้พารามิเตอร์ในนิพจน์ของฟิลด์การเลือกในข้อความอิสระของคิวรีรายการไดนามิก คุณต้องระบุประเภทของพารามิเตอร์อย่างชัดเจนโดยใช้โครงสร้าง ด่วน. ตัวอย่างเช่น แทนที่จะเป็น &ระบบการตั้งชื่อ AS การตั้งชื่อใช้
EXPRESS(&ระบบการตั้งชื่อ AS Directory การตั้งชื่อ) AS การตั้งชื่อ. มิฉะนั้น การค้นหาผ่านแถบค้นหาอาจใช้การได้
ไม่ถูกต้องหรือส่งข้อผิดพลาด

3. วิธีการรับและแคชข้อมูลด้วยรายการไดนามิก

เมื่อได้รับข้อมูลที่จะแสดง รายการไดนามิกจะใช้หนึ่งในสามวิธี:
1. การอ่านจากฐานข้อมูลจะดำเนินการเป็นชุดโดยมีจำนวนองค์ประกอบข้อมูลมากกว่าจำนวนแถวที่แสดงพร้อมกันโดยรายการเล็กน้อย (แต่ไม่น้อยกว่า 20) ข้อมูลไม่ถูกแคชไว้บนเซิร์ฟเวอร์
2. อ่านข้อมูลจากฐานข้อมูลเป็นหน้าข้อมูล 1,000 รายการ กำลังแคชข้อมูลบนเซิร์ฟเวอร์ ข้อมูลลำดับชั้นถูกแคช: ไม่เกิน 2 หน้าองค์ประกอบจะถูกแคชสำหรับแต่ละพาเรนต์ แคชหน้ารายการไม่เกิน 20 รายการต่อรายการไดนามิก การแคชจะเปิดใช้งานโดยรายการไดนามิกสำหรับตารางต่อไปนี้:
● เกณฑ์การคัดเลือก;
● ตารางบัญชีแยกประเภททั้งหมด ยกเว้นตารางหลักและตาราง MovementsSubconto
● ตารางทั้งหมดของทะเบียนสะสม ยกเว้นตารางหลัก
● ตารางทั้งหมดของทะเบียนข้อมูล ยกเว้นตารางหลัก
● ตารางทั้งหมดของการลงทะเบียนการคำนวณ ยกเว้นตารางหลัก
● งานตารางเสมือนโดยนักแสดง;
● ตารางแหล่งข้อมูลภายนอกที่ไม่มีคีย์
● ลูกบาศก์แหล่งภายนอก

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

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



● ตารางใดตารางหนึ่งต่อไปนี้ระบุเป็นค่าของคุณสมบัติตารางหลัก: ตารางหลักของการลงทะเบียนข้อมูล, การลงทะเบียนการสะสม, การลงทะเบียนบัญชี, การลงทะเบียนการชำระบัญชี, ตารางเสมือนของการลงทะเบียนบัญชี MovementsSubconto:

● คุณสมบัติการอ่านแบบไดนามิก:
● ติดตั้งแล้ว: ใช้วิธีที่ 1 (วิธีการอธิบายไว้ข้างต้น)
● รีเซ็ต: ใช้วิธีที่ 2 (วิธีการต่างๆ อธิบายไว้ข้างต้น)

● ในฐานะคุณสมบัติ Main table ตารางเกณฑ์การเลือกหรือตารางงานตามผู้ดำเนินการ (TasksBy Executor) จะถูกระบุ:
● รหัสที่ระบุแถวของตาราง: ลิงก์

● คุณสมบัติตารางหลักถูกตั้งค่าเป็นข้อมูลลงทะเบียนตารางเสมือน SliceFirst หรือ SliceLast:
● คีย์ที่ระบุแถวของตาราง: RecordKey
● คุณสมบัติการอ่านแบบไดนามิกใช้ไม่ได้
● ใช้วิธีที่ 2 (วิธีการอธิบายไว้ข้างต้น)

● ตารางทะเบียนเสมือนตารางหนึ่งถูกระบุเป็นคุณสมบัติตารางหลัก ยกเว้นรายการด้านบน:

● คุณสมบัติการอ่านแบบไดนามิกใช้ไม่ได้

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

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

4. การตั้งค่ารายการแบบไดนามิก

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


ข้าว. 2. การจัดรูปแบบตามเงื่อนไขของรายการไดนามิก

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

คำแนะนำ.ควรจำไว้ว่าการเลือกฟิลด์การเรียงลำดับที่ไม่ดี (เช่นเดียวกับการเลือกและการจัดกลุ่มข้อมูล) ส่งผลเสียต่อประสิทธิภาพของการสุ่มตัวอย่างแบบไดนามิก
จากมุมมองของนักพัฒนาแอปพลิเคชัน การตั้งค่ารายการไดนามิกประกอบด้วยหลายส่วนที่เชื่อมต่อกัน คุณสมบัติหลักที่คุณสามารถควบคุมการตั้งค่าของรายการไดนามิกคือ การตั้งค่าตัวเชื่อมโยง. อ็อบเจกต์นี้ประกอบด้วยชุดการตั้งค่าสามชุด ซึ่งเมื่อระบบกำลังทำงาน จะกำหนดการตั้งค่าสุดท้ายที่ใช้กับรายการไดนามิก:
● การตั้งค่า - การตั้งค่าที่สร้างขึ้นในโหมด Configurator คุณสมบัติลำดับรายการไดนามิกช่วยให้เข้าถึงคุณสมบัติ Settings.Order ของตัวสร้างการตั้งค่ารายการไดนามิกได้อย่างรวดเร็ว ดังนั้นโครงสร้างต่อไปนี้จึงเทียบเท่ากัน:
List.Order และ List.SettingsComposer.Settings.Order;
● UserSettings คือการตั้งค่าที่ผู้ใช้สามารถเปลี่ยนได้ใน 1C:Enterprise mode;
● การตั้งค่าคงที่ - การตั้งค่าเหล่านี้กำหนดจากภาษาในตัว คุณสมบัตินี้ยังมีค่าการเลือกที่ส่งผ่านไปยังแบบฟอร์มโดยใช้พารามิเตอร์ คุณสมบัติของตัวกรองรายการไดนามิก พารามิเตอร์ ลักษณะที่ปรากฏตามเงื่อนไขช่วยให้เข้าถึงการตั้งค่าคงที่ของตัวสร้างการตั้งค่ารายการไดนามิกได้อย่างรวดเร็ว กล่าวอีกนัยหนึ่ง การโทรเหล่านี้เทียบเท่า:
List.SettingsComposer.FixedSettings.Filter และ List.Filter
เมื่อสร้างการตั้งค่าสุดท้ายของรายการไดนามิก การตั้งค่าต่างๆ จะรวมกันดังนี้:
● หากการตั้งค่าประเภทใดก็ตามถูกทำเครื่องหมายว่าผู้ใช้กำหนดเองทั้งหมด การตั้งค่าของผู้ใช้จะรวมอยู่ในการตั้งค่าผลลัพธ์
(List.SettingsComposer.UserSettings). ในกรณีนี้ หากองค์ประกอบการตั้งค่าใดๆ ถูกทำเครื่องหมายว่าไม่พร้อมใช้งาน การตั้งค่าเหล่านี้จะถูกวางไว้ในการตั้งค่าที่เป็นผลลัพธ์จากคุณสมบัติ List.Settings Composer การตั้งค่า.
● หากการตั้งค่าประเภทใดถูกทำเครื่องหมายเป็นเฉพาะผู้ใช้ ไม่ใช่ทั้งหมด แต่แยกตามองค์ประกอบ ดังนั้น:
● องค์ประกอบที่ทำเครื่องหมายว่ากำหนดเองจะรวมอยู่ในการตั้งค่าที่เป็นผลลัพธ์จากคุณสมบัติ List.SettingsComposer.CustomSettings
● รายการที่ทำเครื่องหมายว่าไม่พร้อมใช้งานจะรวมอยู่ในการตั้งค่าที่เป็นผลลัพธ์จากคุณสมบัติ List.SettingsComposer.Settings
● การตั้งค่าคงที่ (List.SettingsComposer.FixedSettings) จะถูกเพิ่มไปยังการตั้งค่าที่เป็นผลลัพธ์ "ตามสภาพ" ในเวลาเดียวกัน สถานการณ์นี้ไม่สามารถยอมรับได้เมื่อการตั้งค่าคงที่และผู้ใช้มีการตั้งค่าชื่อเดียวกัน ตัวอย่างเช่น การเลือกโดยมีค่าด้านซ้ายเหมือนกันในเงื่อนไข

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


ข้าว. 3. จัดการการรวมไว้ในการตั้งค่าผู้ใช้

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

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

5. ค้นหาในรายการแบบไดนามิก

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


ข้าว. 4. แถบค้นหาในรายการไดนามิก

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


● หากตั้งค่าคุณสมบัติ Compatibility Mode เป็น Do not use หรือเก่ากว่าเวอร์ชัน 8.3.4 ค่าจะเป็น Command Panel
การเปลี่ยนไปยังแถบค้นหาดำเนินการดังนี้:
● โดยการกดคีย์ผสม Ctrl+F;
● เมาส์;
● เมื่อคุณเริ่มพิมพ์ในรายการไดนามิก (ตามค่าของคุณสมบัติ SearchOnType ของรายการไดนามิก)
● ตำแหน่งสถานะการดู - อธิบายตำแหน่งสถานะการดูที่จะแสดง: ช่องใดที่ถูกค้นหาและค่าใด
ค้นหาในทุกฟิลด์ สามารถรับค่าต่อไปนี้: อัตโนมัติ, ไม่มี, บน, ล่าง


ข้าว. 5. ค้นหาสถานะในรายการไดนามิก

หากคุณสมบัติถูกตั้งค่าเป็น ไม่ สถานะมุมมองจะไม่ปรากฏบนฟอร์ม ด้วยเหตุนี้ จึงเป็นไปได้ที่จะระบุได้ว่าการค้นหานั้นดำเนินการหรือไม่ โดยการมีปุ่มยกเลิกการค้นหาเท่านั้น
หากคุณสมบัติถูกตั้งค่าเป็น Top สถานะมุมมองจะอยู่ระหว่างแถบคำสั่งรายการและตารางที่แสดงรายการไดนามิก หากคุณสมบัติถูกตั้งค่าเป็นด้านล่าง สถานะมุมมองจะถูกวางไว้ต่อจากตารางที่แสดงรายการไดนามิกทันที
ถ้าฟอร์มถูกสร้างขึ้นใน 1C:Enterprise เวอร์ชัน 8.3.4 และก่อนหน้า คุณสมบัติจะถูกตั้งค่าเป็น No ถ้าฟอร์มถูกสร้างขึ้นใน 1C:Enterprise เวอร์ชัน 8.3.5 และใหม่กว่า คุณสมบัติจะถูกตั้งค่าเป็นอัตโนมัติ มูลค่าที่แท้จริงของทรัพย์สินในกรณีนี้จะถูกกำหนดดังนี้:
● หากตั้งค่าคุณสมบัติ Compatibility Mode เป็นเวอร์ชัน 8.3.4 (และต่ำกว่า) – ไม่
● หากตั้งค่าคุณสมบัติ Compatibility Mode เป็น Do not use หรือเก่ากว่าเวอร์ชัน 8.3.4 ค่าจะเป็น Top;
● ตำแหน่งควบคุมการค้นหา - กำหนดตำแหน่งที่จะแสดงปุ่มควบคุมการค้นหา ปุ่มนี้จะเปิดเมนูที่มีข้อมูลต่อไปนี้: คำสั่ง ค้นหาตามค่าปัจจุบัน การค้นหาขั้นสูง ยกเลิกการค้นหา กำหนดระยะเวลา (สำหรับรายการเอกสารและวารสาร) และประวัติการค้นหา (5 ข้อความล่าสุด) คุณสมบัติสามารถรับค่า: อัตโนมัติ, ไม่, แผงคำสั่ง


ข้าว. 6. การจัดการการค้นหาในรายการแบบไดนามิก

หากคุณสมบัติถูกตั้งค่าเป็น ไม่ใช่ ปุ่มควบคุมการค้นหาจะไม่อยู่บนฟอร์ม (แต่คำสั่งจะพร้อมใช้งานโดยใช้เมนูเพิ่มเติม) ค่าคุณสมบัติแถบคำสั่งวางปุ่มบนแถบคำสั่งที่เกี่ยวข้องกับตารางที่แสดงรายการไดนามิก
ถ้าฟอร์มถูกสร้างขึ้นใน 1C:Enterprise เวอร์ชัน 8.3.4 และก่อนหน้า คุณสมบัติจะถูกตั้งค่าเป็น No ถ้าฟอร์มถูกสร้างขึ้นใน 1C:Enterprise เวอร์ชัน 8.3.5 และใหม่กว่า คุณสมบัติจะถูกตั้งค่าเป็นอัตโนมัติ มูลค่าที่แท้จริงของทรัพย์สินในกรณีนี้จะถูกกำหนดดังนี้:
● หากตั้งค่าคุณสมบัติ Compatibility Mode เป็นเวอร์ชัน 8.3.4 (และต่ำกว่า) – ไม่
● หากตั้งค่าคุณสมบัติ Compatibility Mode เป็น Do not use หรือเก่ากว่าเวอร์ชัน 8.3.4 ค่าจะเป็น Command Panel;
หากมีแผงคำสั่งหลายแผงในฟอร์ม แหล่งคำสั่งซึ่งเป็นตารางหนึ่งของฟอร์มที่ได้รับการจัดการ (แสดงข้อมูลรายการแบบไดนามิก) สตริงการค้นหาและปุ่มควบคุมการค้นหาจะอยู่ในแผงคำสั่งเดียวเท่านั้น:
● หรือในแถบคำสั่งของรายการไดนามิก (หากเปิดใช้งานการเติมข้อความอัตโนมัติ)
● หรือในแผงคำสั่งที่เหลือ

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

● การค้นหาไม่ได้ดำเนินการกับทุกคอลัมน์ของรายการไดนามิก (และออบเจกต์การกำหนดค่า) แต่จะค้นหาเฉพาะในคอลัมน์ที่แสดงในตารางเท่านั้น
● ค้นหาในรายการไดนามิกตามฟิลด์ของประเภทการอ้างอิงที่มีการแสดงตามอำเภอใจ โดยฟิลด์ที่ใช้สำหรับ
การสร้างตัวแทน (ดูที่นี่) ฟิลด์ที่รวมอยู่ในมุมมองจะได้รับโดยคำนึงถึงตัวจัดการ ViewFieldsGetProcess() ของวัตถุที่เกี่ยวข้อง
● สำหรับรายการไดนามิกที่มีตารางหลักที่ระบุ จะใช้การค้นหาข้อความแบบเต็มกับตารางหลัก ลิงก์ที่ไม่ได้จัดทำดัชนีทั้งหมดจากตารางหลักจะถูกเพิ่มในผลการค้นหาข้อความแบบเต็ม ผลลัพธ์ของการค้นหาข้อความแบบเต็มสำหรับตารางหลักจะใช้เป็นตัวกรองตามฟิลด์คีย์ การค้นหาข้อความแบบเต็มยังดำเนินการในฟิลด์ที่แสดงในรายการจากตารางอื่นๆ (หากใช้การค้นหาข้อความแบบเต็มสำหรับฟิลด์และวัตถุการกำหนดค่า) หากไม่มีการเปิดใช้การค้นหาข้อความแบบเต็ม ข้อมูลอาจถูก
พบ แต่การค้นหาเองจะช้ามาก
หากเกิดข้อผิดพลาดขณะพยายามค้นหาข้อความแบบเต็ม การค้นหาจะดำเนินการโดยไม่ใช้การค้นหาข้อความแบบเต็ม
ตัวอย่างเช่น สิ่งนี้สามารถเกิดขึ้นได้เมื่อค้นหาด้วยตัวอักษรหนึ่งตัวและบรรทัดจำนวนมากในฐานข้อมูลที่ขึ้นต้นด้วยตัวอักษรนี้
● หากใช้ตัวกรองที่มีประเภทการเปรียบเทียบเท่ากับสำหรับฟิลด์ของตารางหลักของรายการไดนามิก เมื่อทำการค้นหาข้อความแบบเต็ม ค่าตัวกรองจะถูกเพิ่มในคำค้นหาสำหรับตารางนี้
● สตริงการค้นหาแบ่งออกเป็นคำ การแบ่งพาร์ติชันนี้ทำตามกฎต่อไปนี้:
● เส้นแบ่งโดยใช้ช่องว่างและอักขระแท็บเป็นตัวคั่น
● จากนั้นแต่ละส่วนผลลัพธ์จะได้รับการประมวลผล:
● ถ้าส่วนย่อยเป็นตัวแทนของวันที่ (ที่มีหรือไม่มีเวลา) ตามตำแหน่งที่ตั้งปัจจุบันของเซสชัน ส่วนย่อยนั้นคือคำนั้น
● มิฉะนั้น ส่วนย่อยจะถูกแยกเพิ่มเติม โดยใช้อักขระ “,.-/\” เป็นตัวคั่น ในกรณีนี้ แต่ละส่วนที่เป็นผลลัพธ์ของสตริงจะถูกใช้เป็นคำ

● สำหรับแต่ละคำ จะมีชุดเงื่อนไขของมันเอง ซึ่งรวมกันเป็น "โดย OR" ชุดของเงื่อนไขนี้ถูกสร้างขึ้นหากการค้นหาข้อความแบบเต็มสำหรับคำที่กำหนดในตาราง ซึ่งได้รับฟิลด์นี้คืนอย่างน้อยหนึ่งวัตถุ หรือไม่ได้ใช้การค้นหาข้อความแบบเต็มสำหรับฟิลด์นี้ เงื่อนไขจะเกิดขึ้นดังนี้:
● สำหรับฟิลด์ประเภท String เงื่อนไขคือ FieldName LIKE %Word%
● สำหรับฟิลด์ประเภท Number เงื่อนไขคือ FieldName=Value โดยที่ Value คือคำที่แปลงเป็น Number หากไม่สามารถทำการส่งได้ การค้นหาฟิลด์จะไม่ถูกดำเนินการ
● คำจะถูกค้นหาเป็นสตริงย่อยในการแสดงค่าเริ่มต้นของประเภทบูลีนที่กำหนดไว้สำหรับเซสชันปัจจุบัน หากพบคำค้นหาในมุมมอง การค้นหาจะดำเนินการตามค่าที่สอดคล้องกับมุมมองที่พบคำนั้น ในเวลาเดียวกัน มุมมองที่ระบุโดยใช้คุณสมบัติ องค์ประกอบรูปแบบ รูปแบบ จะไม่ใช้สำหรับการค้นหา
● สำหรับฟิลด์ประเภทวันที่ เงื่อนไขคือ FieldName>=DayStart(Word) AND FieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
ระบุด้วยตัวเลขหนึ่งหรือสองหลัก ปีจะถูกแปลงเป็นศตวรรษปัจจุบัน และค่านี้จะถูกแทนที่ในเงื่อนไขการค้นหา
● สำหรับฟิลด์อ้างอิง การค้นหาจะดำเนินการในฟิลด์ที่ใช้แทนลิงก์ ค้นหาในแต่ละฟิลด์เหล่านี้
ดำเนินการตามกฎที่อธิบายไว้ข้างต้น การค้นหาไม่ได้ใช้ฟิลด์ที่ใช้ในการนำเสนอข้อมูลตามอำเภอใจ
ชุดเงื่อนไขสำหรับแต่ละคำรวมกันเป็น "โดย AND"
● สำหรับค่าที่มีศูนย์นำหน้า คุณสามารถค้นหาโดยใช้สตริงที่มีศูนย์นำหน้าหรือในสตริงที่ระบุโดยไม่มีศูนย์นำหน้า
● หากรายการไดนามิกแสดงรายการเอกสารหรือประวัติเอกสาร ช่วงเวลาการดูรายการที่ระบุจะแสดงในพื้นที่ฟอร์มสำหรับแสดงสถานะการดูสำหรับรายการไดนามิกที่ต้องการด้วย
● คำสั่งค้นหาตามค่าปัจจุบันไม่สามารถใช้งานได้หากตารางหลักของรายการไดนามิกเป็นเกณฑ์การเลือก
● ส่วนของเส้นที่พบจะถูกเน้นเมื่อแสดงในตาราง
● สนับสนุนเพียงหนึ่งสตริงการค้นหาต่อคอลัมน์ การเพิ่มข้อความค้นหาใหม่สำหรับคอลัมน์ที่กำลังค้นหาอยู่จะแทนที่นิพจน์การค้นหาแทนที่จะเพิ่มข้อความค้นหาสองคำ
● ถ้าแบบฟอร์มไม่มีส่วนเสริมองค์ประกอบของแบบฟอร์ม แสดงสตริงการค้นหาที่เกี่ยวข้องกับตาราง (คุณสมบัติแหล่งที่มาของส่วนเสริมขององค์ประกอบของแบบฟอร์ม) ที่แสดงรายการไดนามิก จากนั้นกดแป้น Ctrl+F พร้อมกันเพื่อเปิดกล่องโต้ตอบการค้นหา


ข้าว. 7. กล่องโต้ตอบการค้นหา

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

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

6. รับข้อมูลที่แสดงโดยรายการไดนามิก

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

Schema = Items.List.GetExecutableDataCompositionSchema();
การตั้งค่า = Items.List.GetDataCompositionSettingsExecutable();
ตัวสร้างเค้าโครงเค้าโครง = ตัวสร้างเค้าโครงเค้าโครงข้อมูลใหม่ ();
LayoutLayout = LayoutComposer.Run (แบบแผน, การตั้งค่า);
CompositionProcessor = NewDataCompositionProcessor;
LayoutProcessor.Initialize(เค้าโครงเค้าโครง);
OutputProcessor = ใหม่ OutputProcessorofDataCompositionResultIntoSpreadsheetDocument;
ส่งคืน OutputProcessor.Output (CompositionProcessor);

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

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

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

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


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

หากเราพยายามเรียกใช้การประมวลผลในแบบฟอร์มนี้ เราจะได้รับข้อผิดพลาด:


ในการกำจัดคุณต้องตั้งค่าของพารามิเตอร์ "ระยะเวลา" เมื่อต้องการทำเช่นนี้ คุณสามารถใช้เมธอด "SetParameterValue" ของคอลเลกชัน "พารามิเตอร์" ของรายการไดนามิก วิธีการใช้สองพารามิเตอร์:
. "พารามิเตอร์" - ประเภท: สตริง; DataCompositionParameter. ชื่อของพารามิเตอร์หรือพารามิเตอร์องค์ประกอบข้อมูลที่จะตั้งค่า
. "มูลค่า" - ประเภท: ตามอำเภอใจ ค่าที่จะตั้งค่า
สามารถเรียกใช้ในตัวจัดการ "OnCreateOnServer" ของแบบฟอร์ม:

คุณมีคำถาม ต้องการความช่วยเหลือจากที่ปรึกษาหรือไม่?


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


ในตัวจัดการ "OnChange" ขององค์ประกอบฟอร์ม "วันที่" เรียกเมธอด "SetParameterValue" โดยส่งค่าของแอตทริบิวต์ที่เกี่ยวข้องเป็นค่า ในทำนองเดียวกัน เราจะเปลี่ยนขั้นตอน "On CreationAtServer" ของแบบฟอร์ม เนื่องจากวิธีนี้มีอยู่ในไคลเอ็นต์ จึงไม่จำเป็นต้องเรียกเซิร์ฟเวอร์:


ตอนนี้เมื่อวันที่เปลี่ยนแปลง ยอดคงเหลือจะได้รับการอัปเดตโดยอัตโนมัติ:




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


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


ผลลัพธ์ของการเปลี่ยนแปลงที่เกิดขึ้น:



หมายเหตุหน้าแรกจากกระจกมอง

04/21/2014 รับข้อมูลรายการไดนามิก

นำมาใช้ในเวอร์ชัน 8.3.6.1977

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

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

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

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

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

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

ตอนนี้งานนี้แก้ไขได้อย่างง่ายดาย ตารางรายการไดนามิกมีสองวิธีใหม่:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

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

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

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

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