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



2024 wisemotors.ru. วิธีนี้ทำงานอย่างไร. เหล็ก. การทำเหมืองแร่ สกุลเงินดิจิทัล