1c การเปิดแบบฟอร์มพร้อมการเลือก จะตั้งค่าการเลือกในแบบฟอร์มรายการไดเร็กทอรีได้อย่างไร? คุณสามารถเปิดแบบฟอร์มรายการโดยไม่มีพารามิเตอร์ได้
รหัส 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 (ประเภท ("องค์ประกอบการเลือก 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 วินาที 8.2 (แบบฟอร์มปกติ) เราจำเป็นต้องดำเนินการบางอย่าง เราจะได้รับมันก่อน หลังจากนั้น เราจะตั้งค่าการเลือกและเปิดโดยทางโปรแกรม นี่คือตัวอย่างโค้ด:
การเลือกแบบฟอร์มในฟิลด์อินพุต 1C 8.2 ที่มีค่าหลายค่า
ในตัวอย่างข้างต้นเราดูที่ วิธีการตั้งค่าการเลือกในแบบฟอร์มการเลือกตามค่าเฉพาะ ตอนนี้เรามาดูสถานการณ์ที่คุณต้องแทนที่ค่าหลายค่า ซึ่งอาจเป็นได้ เช่น อาร์เรย์หรือยกเลิกการโหลดจากผลลัพธ์ของคิวรี นี่คือการเลือกในช่องป้อนข้อมูล 1cที่มีหลายความหมาย
ขั้นแรกเราได้รับแบบฟอร์มการเลือกส่ง "องค์ประกอบ" (เจ้าของ) ในพารามิเตอร์ตั้งค่าสถานะโหมดการเลือก จากนั้นเราสร้างรายการค่าและอาร์เรย์เราสังเกตว่าเมื่อเลือกประเภทการเปรียบเทียบในรายการวัตถุสามารถแสดงได้เฉพาะกับประเภทเท่านั้น รายการค่า- เราเพิ่มองค์ประกอบให้กับอาร์เรย์ จากนั้นโหลดอาร์เรย์นี้ลงในรายการค่า ซึ่งเราจะตั้งค่าในส่วนที่เลือกในภายหลัง นอกจากนี้ อย่าลืมเปิดใช้งานแฟล็กเพื่อใช้การเลือกนี้และตั้งค่าประเภทการเปรียบเทียบ
การตั้งค่าการเลือกในช่องป้อนข้อมูลบนแบบฟอร์มใน 1C 8.3 เหตุการณ์เริ่มต้นของการเลือก
ทีนี้ลองมาพิจารณากัน การเลือกในช่องป้อนข้อมูลบนแบบฟอร์มที่ได้รับการจัดการใน 1C 8.3- มาดูองค์ประกอบที่เราสนใจในรูปแบบซึ่งเราจะตั้งค่าการเลือกในกรณีของเรานี่คือฟิลด์ "องค์กร" เราพบเหตุการณ์ "เริ่มต้นการคัดเลือก" คลิกที่แว่นขยายและพบว่าตัวเองอยู่ในขั้นตอนนั้น เราเห็นพารามิเตอร์ Selection Data พารามิเตอร์นี้เป็นประเภท ValueList เพื่อจำกัดการเลือกองค์ประกอบที่จำเป็น เราจำเป็นต้องกรอกรายการค่า เราสามารถเลือกองค์ประกอบได้เฉพาะบนเซิร์ฟเวอร์เท่านั้น ดังนั้นเราจึงสร้างขั้นตอนด้วยคำสั่งการคอมไพล์ &OnServer ในขั้นตอนนี้ ให้กรอกข้อมูลการเลือก
รหัส 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 UP OpenForm ("เอกสาร ใบกำกับสินค้า ใบเสร็จรับเงิน แบบฟอร์มรายการ");
จากนั้นในตัวจัดการเหตุการณ์ของแบบฟอร์มสำหรับรายการใบแจ้งหนี้เมื่อ CreateOnServer ให้เขียนโค้ดที่สร้างการเลือกในรายการไดนามิกซึ่งเป็นแอตทริบิวต์หลักของแบบฟอร์ม:
รหัส 1C v 8.2 ขึ้น &OnServer
องค์ประกอบการเลือก = List.Selection.Elements.Add (ประเภท ("องค์ประกอบการเลือก 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
ด้วยเหตุนี้ เมื่อคลิกปุ่มใบเสร็จรับเงินในแบบฟอร์มรายการสินค้า เราจะได้รับรายการเฉพาะใบแจ้งหนี้ที่มีรายการที่เลือกอยู่ในรายการรายการในปัจจุบันเท่านั้น
รหัสนี้ช่วยให้คุณสามารถเปิดรายการเอกสารโดยมีตัวเลือกที่ระบุ คุณยังสามารถเปิดรายการองค์ประกอบไดเร็กทอรีด้วยตัวเลือกที่ต้องการได้
รหัส 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 UP OpenForm ("เอกสาร ใบกำกับสินค้า ใบเสร็จรับเงิน แบบฟอร์มรายการ");
จากนั้นในตัวจัดการเหตุการณ์ของแบบฟอร์มสำหรับรายการใบแจ้งหนี้เมื่อ CreateOnServer ให้เขียนโค้ดที่สร้างการเลือกในรายการไดนามิกซึ่งเป็นแอตทริบิวต์หลักของแบบฟอร์ม:
รหัส 1C v 8.2 ขึ้น &OnServer
ขั้นตอนเมื่อ CreateOnServer (ล้มเหลว, การประมวลผลมาตรฐาน)
องค์ประกอบการเลือก = List.Selection.Elements.Add (ประเภท ("องค์ประกอบการเลือก 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. วิธีแรกคือเมื่อเปิดแบบฟอร์ม คุณสามารถตั้งค่าพารามิเตอร์แบบฟอร์มการเลือก และเปิดแบบฟอร์มรายการด้วยพารามิเตอร์นี้ได้ พารามิเตอร์ Selection แสดงถึงโครงสร้าง ชื่อขององค์ประกอบสอดคล้องกับชื่อของฟิลด์ที่ทำการเลือกและค่าประกอบด้วยค่าที่เลือก นี่คือตัวเลือกส่วนขยายแบบฟอร์มที่มีการจัดการรายการแบบไดนามิก นั่นคือ มีอยู่สำหรับแบบฟอร์มที่มีคุณลักษณะหลักเป็นแอตทริบิวต์ประเภท รายการแบบไดนามิกเช่นแบบฟอร์มรายการและแบบฟอร์มการคัดเลือก
เมื่อเปิดแบบฟอร์ม จะทำการเลือกตามฟิลด์ที่ระบุ ตัวอย่างเช่น ในตัวอย่างต่อไปนี้ รายการใบแจ้งหนี้จะถูกเปิดโดยเลือกตามฟิลด์ตัวเลข ซึ่งเท่ากับ 333
ค่าการเลือก = โครงสร้างใหม่ ("หมายเลข", "333");
SelectionParameters = โครงสร้างใหม่ ("การเลือก", SelectionValue);
OpenForm("เอกสาร. ใบกำกับสินค้า. แบบฟอร์มรายการ", ตัวเลือกการเลือก);
2. คุณสามารถเปิดแบบฟอร์มรายการโดยไม่มีพารามิเตอร์:
OpenForm("Document.Invoice.ListForm");
จากนั้นในตัวจัดการเหตุการณ์ของแบบฟอร์มรายการใบแจ้งหนี้ เมื่อ CreateOnServerเขียนโค้ดที่สร้างการเลือกในรายการไดนามิกซึ่งเป็นคุณลักษณะหลักของแบบฟอร์ม:
&บนเซิร์ฟเวอร์
ขั้นตอนเมื่อ CreateOnServer (ล้มเหลว, การประมวลผลมาตรฐาน)
องค์ประกอบการเลือก = List.Selection.Elements.Add (ประเภท ("องค์ประกอบการเลือก 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