1c ข้ามตารางรายการไดนามิก การดึงข้อมูลรายการแบบไดนามิก

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

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

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


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

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


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

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


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


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


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




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


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


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



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

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

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

การนำไปปฏิบัติ

มาดูการแก้ปัญหากันดีกว่า เริ่มต้นด้วยการเปลี่ยนแบบฟอร์ม จากนั้นเราจะอธิบายอัลกอริทึมในการรับค่าสุดท้าย

แบบฟอร์มและอินเทอร์เฟซ

ขั้นแรก ให้เตรียมแบบฟอร์มเอกสารเพื่อแสดงฟิลด์ผลลัพธ์ ในการดำเนินการนี้ เราจะเพิ่มรายละเอียดสตริงสองรายการในรูปแบบ "Rating" และ "Amount"

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

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

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

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

อัลกอริทึม

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

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

ขั้นตอนของการยื่นคำขอเพื่อให้ได้ผลลัพธ์มีดังนี้:

1. เราได้รับคำขอเริ่มต้นสำหรับรายการไดนามิก

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

2. เราสร้างข้อความของเงื่อนไขคำขอ (ส่วน “WHERE”) และแทนที่ลงในคำขอดั้งเดิม

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

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

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

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

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

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

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

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

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

การเพิ่มประสิทธิภาพของโซลูชัน

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

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

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

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

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

บทสรุป

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

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

อย่างไรก็ตามวิธีการที่อธิบายไว้ในบทความเกิดขึ้นเมื่อแก้ไขปัญหา

ไฟล์สำหรับดาวน์โหลด:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&OnServerProcedureWhenCreatingOnServer รายการ (ความล้มเหลว, การประมวลผลมาตรฐาน) ตัวเลือก. SetParameterValue("Period" , พารามิเตอร์. วันที่); รายการ. ตัวเลือก. SetParameterValue("PriceType", พารามิเตอร์ PriceType); สิ้นสุดขั้นตอน

พิมพ์ (Ctrl+P)

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

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

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

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

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

เลือก
ทางเลือก
เมื่อ Delivery.Coefficient = 1 แล้ว &การนำเสนอ
จัดส่งอย่างอื่น. ค่าสัมประสิทธิ์
สิ้นสุดอัตราส่วน AS
จาก

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

เลือก
ทางเลือก
เมื่อ Delivery.Coefficient = 1 แล้ว EXPRESS(&Representation AS String(100)) ELSE Delivery ค่าสัมประสิทธิ์
สิ้นสุดอัตราส่วน AS
จาก
เอกสารการส่งมอบผลิตภัณฑ์ วิธีการจัดส่ง

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

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

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

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

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

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

  • โดยรายละเอียด ส่วนที่เป็นตาราง.
  • ดูฟิลด์
  • เขตข้อมูล DataVersion
  • ฟิลด์ PredefedDataName
  • ฟิลด์ประเภทตารางผังบัญชี
  • ประเภทการเคลื่อนไหวของตารางทะเบียนการสะสม
  • ประเภทฟิลด์ค่าของตารางแผนประเภทลักษณะเฉพาะ
  • ประเภทฟิลด์ ประเภท;
  • ฟิลด์ประเภทสตริง (ความยาวไม่จำกัด)
  • ฟิลด์ประเภท BinaryData

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

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

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

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

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

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

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

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

  • ตารางระยะเวลาที่มีผลบังคับใช้จริง
  • ข้อมูลกำหนดการ
  • ข้อมูลพื้นฐาน.

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

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

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

หากคุณตั้งค่าพารามิเตอร์พารามิเตอร์เป็นค่าประเภทอื่น รายการไดนามิกสำหรับฟิลด์นั้นจะได้รับค่า 0 (ค่าเริ่มต้นสำหรับประเภทตัวเลข)
หากในสถานการณ์เช่นนี้ คุณต้องเลือกพารามิเตอร์ประเภทอื่น ขอแนะนำให้ใช้โครงสร้างภาษาของแบบสอบถาม ด่วน. ตัวอย่างเช่น,
หากในตัวอย่างข้างต้น คุณต้องส่งสตริงที่ยาวไม่เกิน 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
ขึ้นอยู่กับสิ่งที่ถูกเลือกโดยตารางหลักของรายการไดนามิกและค่าใดที่คุณสมบัติการอ่านไดนามิกใช้ จะใช้วิธีการอ่านข้อมูลอย่างใดอย่างหนึ่ง:

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



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

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

● คุณสมบัติตารางหลักประกอบด้วยตารางเกณฑ์การเลือกหรือตารางงานตามผู้ดำเนินการ (งานตามนักแสดง):
● คีย์ระบุแถวของตาราง: ลิงก์

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

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

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

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

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

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

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


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

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

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

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


ข้าว. 3. ควบคุมการรวมในการตั้งค่าผู้ใช้

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

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

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

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


ข้าว. 4. ค้นหาสตริงในรายการไดนามิก

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


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


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

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


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

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

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

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

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


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

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

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

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

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

สคีมา = Elements.List.GetExecutableDataCompositionSchema();
การตั้งค่า = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute (แบบแผน, การตั้งค่า);
CompositionProcessor = ใหม่ DataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = OutputProcessorDataCompositionResultInTabularDocument ใหม่;
ReturnOutputProcessor.Output (ตัวประมวลผลองค์ประกอบ);

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

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

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

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

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

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

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

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

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

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

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



SELECT NomenclatureList.Name AS Name, GoodsInWarehousesRemainings.Warehouse AS Warehouse, GoodsInWarehousesRemainings.QuantityRemaining AS quantityRemaining FROM Directory.Nomenclature AS NomenclatureList LEFT CONNECTION RegisterAccumulations.GoodsInWarehouses.Remainings(&CurrentDate,) AS GoodsOnUS สมบัติ Remaining ซอฟต์แวร์ NomenclatureList.Link = ProductsInWarehousesRe mainings.ระบบการตั้งชื่อ WHERE

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

&ในขั้นตอนเซิร์ฟเวอร์เมื่อสร้างบนเซิร์ฟเวอร์ (ความล้มเหลว การประมวลผลมาตรฐาน) ระบบการตั้งชื่อยังคงอยู่ พารามิเตอร์ ตั้งค่า parameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


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

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



&OnServerProcedureWhenCreatingOnServer (ล้มเหลว, การประมวลผลมาตรฐาน) RemainingDate = CurrentSessionDate(); รายการ Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); สิ้นสุดขั้นตอน &ในขั้นตอนไคลเอนต์ วันที่คงเหลือเมื่อเปลี่ยน (องค์ประกอบ) ระบบการตั้งชื่อ Remaining.Parameters.SetParameterValue ("CurrentDate", RemainingDate); สิ้นสุดขั้นตอน

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

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

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

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