1c วิธีเปิดแบบฟอร์มพร้อมตัวเลือก จะเปิดแบบฟอร์มรายการโดยมีตัวเลือกได้อย่างไร? คุณสามารถเปิดแบบฟอร์มรายการโดยไม่มีพารามิเตอร์ได้

จะเปิดแบบฟอร์มรายการโดยมีตัวเลือกได้อย่างไร?

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

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

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

ค่าการเลือก = โครงสร้างใหม่ ("หมายเลข", "333");

SelectionParameters = โครงสร้างใหม่ ("การเลือก", SelectionValue);

OpenForm("เอกสาร. ใบกำกับสินค้า. แบบฟอร์มรายการ", ตัวเลือกการเลือก);

2. คุณสามารถเปิดแบบฟอร์มรายการโดยไม่มีพารามิเตอร์:

OpenForm("Document.Invoice.ListForm");

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

&บนเซิร์ฟเวอร์

ขั้นตอนเมื่อ CreateOnServer (ล้มเหลว, การประมวลผลมาตรฐาน)

องค์ประกอบการเลือก = List.Selection.Elements.Add(Type("องค์ประกอบการเลือก DataComposition"));

SelectionElement.LeftValue = NewDataCompositionField("หมายเลข");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = จริง;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.ไม่สามารถเข้าถึงได้;

SelectionElement.RightValue = "000000001";

สิ้นสุดขั้นตอน

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

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

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

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

มากรอกตัวจัดการการดำเนินการสำหรับคำสั่งนี้ดังนี้:

&บนไคลเอนต์

ขั้นตอนการรับใบแจ้งหนี้ (คำสั่ง)

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

รายการแบบฟอร์ม.เปิด();

สิ้นสุดขั้นตอน

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

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

ในฟิลด์คำขอ ให้ป้อนข้อความคำขอต่อไปนี้:

เลือก

เอกสารใบเสร็จรับเงินเลขที่

เอกสารใบเสร็จรับเงินวันที่

จาก

Document.ReceiptInvoice AS เอกสารใบเสร็จรับเงิน

ที่ไหน

เอกสารใบรับสินค้า Invoice.Products.Product = &Product

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

&บนไคลเอนต์

ขั้นตอนการเปิด (ล้มเหลว)

List.Parameters.SetParameterValue("ผลิตภัณฑ์", FilterByProduct);

สิ้นสุดขั้นตอน

ที่นี่ รายการตัวเลือกคือรายการพารามิเตอร์คำขอรายการแบบไดนามิกสำหรับแอตทริบิวต์รายการ ค่าของพารามิเตอร์ผลิตภัณฑ์ถูกตั้งค่าให้เท่ากับค่าของพารามิเตอร์ฟอร์ม FilterByProduct

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

ตัวอย่างการสาธิตสำหรับตัวเลือกที่ 3 อยู่ในไดเร็กทอรี 1CITS/EXE/FAQ/OpenFormWithSelection.dt ตัวอย่างนี้ดำเนินการบนแพลตฟอร์มเวอร์ชัน 8.2.9.356

รหัส 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value = "ยอมรับแล้ว";
DirectoryList.Selection.Status.Set();

สำหรับ 1C 8.2:
มีหลายวิธีในการเปิดแบบฟอร์มรายการโดยมีตัวเลือกที่กำหนดไว้ล่วงหน้า ลองดูตามลำดับ:

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

เมื่อเปิดแบบฟอร์ม จะทำการเลือกตามฟิลด์ที่ระบุ
รหัส 1C v 8.2 UP // ตัวอย่างเช่นในตัวอย่างต่อไปนี้ รายการใบแจ้งหนี้จะถูกเปิดโดยเลือกตามฟิลด์ตัวเลขเท่ากับ 333
ค่าการเลือก = โครงสร้างใหม่ ("หมายเลข", "333");
SelectionParameters = โครงสร้างใหม่ ("การเลือก", SelectionValue);

OpenForm("เอกสาร. ใบกำกับสินค้า. แบบฟอร์มรายการ", ตัวเลือกการเลือก);

// ตัวอย่างเช่น ตัวอย่างต่อไปนี้จะเปิดรายการใบแจ้งหนี้
// โดยเลือกโดยฟิลด์ผู้รับเหมาเท่ากับ "OJSC Horns and Hooves"
ค่าการเลือก = โครงสร้างใหม่ ("คู่สัญญา", "เขาและกีบ OJSC");
SelectionParameters = โครงสร้างใหม่ ("การเลือก", SelectionValue);
OpenForm("เอกสาร. ใบกำกับสินค้า. แบบฟอร์มรายการ", ตัวเลือกการเลือก);

2. คุณสามารถเปิดแบบฟอร์มรายการโดยไม่มีพารามิเตอร์:
รหัส 1C v 8.2 UE OpenForm ("เอกสาร แบบฟอร์มใบกำกับสินค้าใบเสร็จรับเงิน");

จากนั้นในตัวจัดการเหตุการณ์ของแบบฟอร์มสำหรับรายการใบแจ้งหนี้เมื่อ CreateOnServer ให้เขียนโค้ดที่สร้างการเลือกในรายการไดนามิกซึ่งเป็นแอตทริบิวต์หลักของแบบฟอร์ม:
รหัส 1C v 8.2 ขึ้น &OnServer

องค์ประกอบการเลือก = List.Selection.Elements.Add(Type("องค์ประกอบการเลือก DataComposition"));
SelectionElement.LeftValue = NewDataCompositionField("หมายเลข");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.ไม่สามารถเข้าถึงได้;
SelectionElement.RightValue = "000000001";
สิ้นสุดขั้นตอน

&บนเซิร์ฟเวอร์
ขั้นตอนเมื่อ CreateOnServer (ล้มเหลว, การประมวลผลมาตรฐาน)
องค์ประกอบการเลือก = List.Selection.Elements.Add(Type
(“องค์ประกอบการเลือกองค์ประกอบข้อมูล”));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = จริง;
SelectionElement.RightValue = 150000;
สิ้นสุดขั้นตอน

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

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

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

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

มากรอกตัวจัดการการดำเนินการสำหรับคำสั่งนี้ดังนี้:
รหัส 1C v 8.2 ขึ้น &OnClient
ขั้นตอนการรับใบแจ้งหนี้ (คำสั่ง)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
รายการแบบฟอร์ม.เปิด();

สิ้นสุดขั้นตอน

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

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

ในฟิลด์คำขอ ให้ป้อนข้อความคำขอต่อไปนี้:
รหัส 1C v 8.2 UP เลือก
เอกสารใบเสร็จรับเงินเลขที่
เอกสารใบเสร็จรับเงินวันที่
จาก
Document.ReceiptInvoice AS เอกสารใบเสร็จรับเงิน
ที่ไหน
เอกสารใบรับสินค้า Invoice.Products.Product = &Product

ในคำขอ เราใช้พารามิเตอร์ Item ซึ่งจะได้รับลิงก์ไปยังบรรทัดปัจจุบันในรายการสินค้า ซึ่งมีอยู่ในพารามิเตอร์แบบฟอร์มรายการใบแจ้งหนี้ FilterBy Item เมื่อต้องการทำเช่นนี้ ในตัวจัดการเหตุการณ์ฟอร์มรายการ OnOpen เราจะเขียนโค้ดเพื่อตั้งค่าของพารามิเตอร์คำขอผลิตภัณฑ์:
รหัส 1C v 8.2 ขึ้นไป
&บนไคลเอนต์
ขั้นตอนการเปิด (ล้มเหลว)

List.Parameters.SetParameterValue("ผลิตภัณฑ์", FilterByProduct);

สิ้นสุดขั้นตอน

ที่นี่ รายการตัวเลือกคือรายการพารามิเตอร์คำขอรายการแบบไดนามิกสำหรับแอตทริบิวต์รายการ ค่าของพารามิเตอร์ผลิตภัณฑ์ถูกตั้งค่าให้เท่ากับค่าของพารามิเตอร์ฟอร์ม FilterByProduct

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

ข้อมูลที่นำมาจากเว็บไซต์

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

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

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

ค่าคัดเลือก = โครงสร้างใหม่ (“คู่สัญญา” , "เขาและกีบ JSC");
ตัวเลือกการเลือก= โครงสร้างใหม่("การเลือก", SelectionValue);
OpenForm (“เอกสาร ใบกำกับสินค้า แบบฟอร์มรายการ”, ตัวเลือกการเลือก);

2. คุณสามารถเปิดแบบฟอร์มรายการโดยไม่มีพารามิเตอร์:

OpenForm (“เอกสาร ใบกำกับสินค้า แบบฟอร์มรายการ”);

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

&บนเซิร์ฟเวอร์
ขั้นตอน เมื่อ CreateOnServer(การปฏิเสธ การประมวลผลมาตรฐาน)
องค์ประกอบการเลือก = รายการ การคัดเลือก องค์ประกอบ เพิ่ม (ชนิด
(“องค์ประกอบการเลือกองค์ประกอบข้อมูล”));
องค์ประกอบการเลือก .LeftValue = ใหม่ ฟิลด์เค้าโครงข้อมูล("จำนวนเอกสาร");
องค์ประกอบการเลือก มุมมองเปรียบเทียบ = เค้าโครง ViewData เปรียบเทียบ. มากกว่า ;
องค์ประกอบการเลือก การใช้งาน = จริง;
องค์ประกอบการเลือก ค่าขวา = 150000;
สิ้นสุดขั้นตอน

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

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

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

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

มากรอกตัวจัดการการดำเนินการสำหรับคำสั่งนี้ดังนี้:

&บนไคลเอนต์
ขั้นตอน วัสดุสิ้นเปลืองใบแจ้งหนี้(ทีม )
ListForm = GetForm("Document.Invoice.ListForm");
รายการแบบฟอร์ม FilterByProduct = รายการ รายการ . แถวปัจจุบัน ;
รายการแบบฟอร์ม เปิด();
สิ้นสุดขั้นตอน

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

ในสนาม ขอมาป้อนข้อความคำขอต่อไปนี้:

เลือก

เอกสารใบเสร็จรับเงินเลขที่
เอกสารใบเสร็จรับเงินวันที่
จาก
Document.ReceiptInvoice AS เอกสารใบเสร็จรับเงิน
ที่ไหน
เอกสารใบรับสินค้า Invoice.Products.Product = &Product

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

&บนไคลเอนต์
ขั้นตอนการเปิด (ล้มเหลว)
รายการ . ตัวเลือก . ตั้งค่าพารามิเตอร์("ผลิตภัณฑ์", FilterByProduct);
สิ้นสุดขั้นตอน

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

— นี่คือรายการพารามิเตอร์คำขอรายการแบบไดนามิกสำหรับแอตทริบิวต์รายการ

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

รหัส 1C v 8.2 แบบฟอร์ม UP = OpenForm ("Document. Invoice.Form.ListForm"); //เปิดแบบฟอร์ม
SelectionOwner =Form.List.Selection.Elements.Add(Type("DataCompositionSelectionElement")); //เพิ่มการเลือก
SelectionOwner.ComparisonView = DataCompositionComparisonView.Equals; //จะเปรียบเทียบยังไงดี.
SelectOwner.Use = จริง; // ตั้งค่าช่องทำเครื่องหมายสำหรับการใช้ NewDataCompositionField("Nomenclature")
SelectionOwner.LeftValue = NewDataCompositionField("บัญชี"); //เราจะใช้รายละเอียดอะไรบ้างในการเลือก?
SelectionOwner.RightValue = Object.Account; // และความหมายของการเลือก

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

วิธีแรกคือเมื่อคุณเปิดแบบฟอร์ม คุณสามารถตั้งค่าพารามิเตอร์แบบฟอร์มการเลือก และเปิดแบบฟอร์มรายการด้วยพารามิเตอร์นี้ได้

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

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

รหัส 1C v 8.2 ค่าการเลือก UE = โครงสร้างใหม่ ("หมายเลข", "333");
SelectionParameters = โครงสร้างใหม่ ("การเลือก", SelectionValue);
OpenForm("เอกสาร. ใบกำกับสินค้า. แบบฟอร์มรายการ", ตัวเลือกการเลือก);

วิธีที่สอง

คุณสามารถเปิดแบบฟอร์มรายการโดยไม่มีพารามิเตอร์:

รหัส 1C v 8.2 UE OpenForm ("เอกสาร แบบฟอร์มใบกำกับสินค้าใบเสร็จรับเงิน");

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

รหัส 1C v 8.2 ขึ้น &OnServer
ขั้นตอนเมื่อ CreateOnServer (ล้มเหลว, การประมวลผลมาตรฐาน)
องค์ประกอบการเลือก = List.Selection.Elements.Add(Type("องค์ประกอบการเลือก DataComposition"));
SelectionElement.LeftValue = NewDataCompositionField("หมายเลข");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = จริง;
SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.ไม่สามารถเข้าถึงได้;
SelectionElement.RightValue = "000000001";
สิ้นสุดขั้นตอน

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

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

วิธีที่สาม

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

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

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

มากรอกตัวจัดการการดำเนินการสำหรับคำสั่งนี้ดังนี้:

รหัส 1C v 8.2 ขึ้น &OnClient
ขั้นตอนการรับใบแจ้งหนี้ (คำสั่ง)
SelectionParameters = โครงสร้างใหม่ ("FilterByProduct", Elements.List.CurrentRow);
OpenForm("เอกสาร. ใบกำกับสินค้า. แบบฟอร์มรายการ", ตัวเลือกการเลือก);
สิ้นสุดขั้นตอน

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

จากนั้นเราจะสร้างแบบฟอร์มสำหรับรายการเอกสาร: Receipt Invoice และสร้างพารามิเตอร์แบบฟอร์ม FilterBy Product ซึ่งเราจะใช้เพื่อเปิดแบบฟอร์มที่มีตัวเลือกที่ต้องการ

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

ในฟิลด์คำขอ ให้ป้อนข้อความคำขอต่อไปนี้:

รหัส 1C v 8.2 UP เลือก
เอกสารใบเสร็จรับเงินเลขที่
เอกสารใบเสร็จรับเงินวันที่
จาก
Document.ReceiptInvoice AS เอกสารใบเสร็จรับเงิน
ที่ไหน
เอกสารใบรับสินค้า Invoice.Products.Product = &Product

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

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

รหัส 1C v 8.2 ขึ้น &OnClient
ขั้นตอนการเปิด (ล้มเหลว)
List.Parameters.SetParameterValue("ผลิตภัณฑ์", พารามิเตอร์.FilterByProduct);
สิ้นสุดขั้นตอน

ที่นี่ List.Parameters คือรายการพารามิเตอร์คำขอรายการแบบไดนามิกสำหรับแอตทริบิวต์รายการ ค่าของพารามิเตอร์ผลิตภัณฑ์ถูกตั้งค่าให้เท่ากับค่าของพารามิเตอร์ฟอร์ม FilterByProduct

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

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

การเลือกแบบฟอร์มในฟิลด์อินพุต 1C 8.2 ที่มีค่าหลายค่า

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

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

การตั้งค่าการเลือกในช่องป้อนข้อมูลบนแบบฟอร์มใน 1C 8.3 เหตุการณ์เริ่มต้นของการเลือก

ทีนี้ลองมาพิจารณากัน การเลือกในช่องป้อนข้อมูลบน ในรูปแบบที่สามารถจัดการได้ใน 1C 8.3. มาดูองค์ประกอบที่เราสนใจในรูปแบบซึ่งเราจะตั้งค่าการเลือกในกรณีของเรานี่คือฟิลด์ "องค์กร" เราพบเหตุการณ์ "เริ่มต้นการคัดเลือก" คลิกที่แว่นขยายและพบว่าตัวเองอยู่ในขั้นตอนนั้น เราเห็นพารามิเตอร์ Selection Data พารามิเตอร์นี้เป็นประเภท ValueList เพื่อจำกัดการเลือกองค์ประกอบที่จำเป็น เราจำเป็นต้องกรอกรายการค่า เราสามารถเลือกองค์ประกอบได้เฉพาะบนเซิร์ฟเวอร์เท่านั้น ดังนั้นเราจึงสร้างขั้นตอนด้วยคำสั่งการคอมไพล์ &OnServer ในขั้นตอนนี้ ให้กรอกข้อมูลการเลือก