ตั้งค่าการเลือกในรูปแบบเปิด 1c จะเปิดแบบฟอร์มรายการโดยมีตัวเลือกได้อย่างไร? การเลือกการตั้งค่าในตัวกำหนดค่า

การเลือกแบบฟอร์มที่ได้รับการจัดการใน 1C 8.3

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

  • การเลือกการตั้งค่าในตัวกำหนดค่า

การตั้งค่าการเลือกในโหมดผู้ใช้

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

หากต้องการตั้งค่าการเลือกในโหมดองค์กร คุณต้องเรียกคำสั่ง "ปรับแต่งรายการ"

หน้าต่างจะเปิดขึ้น


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


เราตั้งค่าประเภทการเปรียบเทียบและค่าคลิก "แก้ไขเสร็จสิ้น" การเลือกจะถูกตั้งค่า


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


เพื่อให้แพลตฟอร์ม 1C สร้างฟิลด์การเลือกอย่างรวดเร็วโดยอัตโนมัติ เมื่อพัฒนาแบบฟอร์มในตัวกำหนดค่า คุณต้องระบุกลุ่มการตั้งค่าผู้ใช้


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

การเลือกการตั้งค่าในตัวกำหนดค่า

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

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


หน้าต่างจะเปิดขึ้น


การเลือกจะถูกตั้งค่าในลักษณะเดียวกับในโหมดผู้ใช้

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


การเลือกไดนามิก (ซอฟต์แวร์)

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

วิธีการ

หากการกำหนดค่าที่กำลังพัฒนามีระบบย่อย "ฟังก์ชันพื้นฐาน" BSP การเลือกซอฟต์แวร์ในรายการไดนามิกสามารถติดตั้งได้โดยใช้วิธีการมาตรฐาน:

GeneralPurposeClientServer.SetDynamicListSelectionElement()

ลายเซ็น วิธีนี้:

รายการไดนามิก ประเภท: DynamicList – รายการที่คุณต้องการตั้งค่าการเลือก

ชื่อฟิลด์ ประเภท: สตริง – ฟิลด์ที่คุณต้องการตั้งค่าการเลือก

ค่าขวา ประเภท: โดยพลการ – ค่าการเลือก (ไม่บังคับ ค่าเริ่มต้น: ไม่ได้กำหนด หมายเหตุ: หากคุณผ่าน Unknown ค่าจะไม่เปลี่ยนแปลง)

ดูการเปรียบเทียบ ประเภท: ประเภทการเปรียบเทียบ DataComposition – เงื่อนไขการเลือก

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

การใช้งาน ประเภท: บูลีน – ตั้งค่าสถานะเพื่อใช้การเลือกนี้ (ไม่บังคับ ค่าเริ่มต้น: ไม่ได้กำหนด)

โหมดการแสดงผล ประเภท: ItemDisplayModeDataCompositionSettings – วิธีแสดงการเลือกนี้ให้ผู้ใช้เห็น ค่าที่เป็นไปได้:

  • โหมดการแสดงผลองค์ประกอบ การตั้งค่าเค้าโครงข้อมูล การเข้าถึงด่วน - ในกลุ่ม การตั้งค่าด่วนเหนือรายการ
  • การตั้งค่าเค้าโครงข้อมูลโหมดการแสดงผลองค์ประกอบ ปกติ – ในรายการ (ในเมนูย่อยเพิ่มเติม)
  • ItemDisplayModeDataCompositionSettings.Inaccessible – ป้องกันไม่ให้ผู้ใช้เปลี่ยนการเลือกนี้

การตั้งค่าตัวระบุผู้ใช้ ประเภท: สตริง – ตัวระบุที่ไม่ซ้ำสำหรับการเลือกนี้ (ใช้เพื่อสื่อสารกับการตั้งค่าผู้ใช้)

หากต้องการลบค่าที่เลือก คุณต้องใช้วิธีการมาตรฐาน:

วัตถุประสงค์ทั่วไปไคลเอนต์เซิร์ฟเวอร์ RemoveGroupElementsSelectionDynamicList()

ลายเซ็นของวิธีการนี้:

รายการไดนามิก ประเภท: DynamicList – แอตทริบิวต์แบบฟอร์มที่คุณต้องการตั้งค่าการเลือก

ชื่อฟิลด์ ประเภท: สตริง – ชื่อของฟิลด์โครงร่าง (ไม่ใช้สำหรับกลุ่ม)

ผลงาน ประเภท: สตริง – การแสดงฟิลด์โครงร่าง

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

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

Selection Element.LeftValue = NewDataCompositionField("ชื่อ");

Selection Element.Comparison Type = DataComposition Comparition Type.Equal;

Selection Element.DisplayMode = ElementDisplayModeDataCompositionSettings.QuickAccess; // องค์ประกอบการเลือกเพิ่มเติม RightValue = "Ivanov";

การเลือกนี้จะเลือกแถวที่มีค่า "ชื่อเต็ม" = "Ivanov"

หากต้องการใช้ตรรกะ "AND", "OR", "NOT" ประเภทข้อมูล DataCompositionSelectionElementGroup ตั้งใจไว้


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


SelectionGroup.GroupType = DataCompositionSelectionElementGroupType.GroupOR;

องค์ประกอบการเลือก = กลุ่มการเลือก เพิ่ม (ประเภท ("องค์ประกอบการเลือกองค์ประกอบข้อมูล"));

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

โดยที่ (ไม่ใช่ &SelectionInstalled หรือ DirectoryUsers.Name IN (&PermissionName))

List.Parameters.SetParameterValue("SelectionSet", Full Name.Quantity() > 0);

List.Parameters.SetParameterValue("ชื่อเต็มที่อนุญาต", ชื่อเต็ม);

ชื่อเต็มในที่นี้คืออาร์เรย์

อย่างที่คุณเห็น โค้ด 2 บรรทัดเทียบกับ 10 วิธีการเลือกขึ้นอยู่กับงานแอปพลิเคชันเฉพาะ

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

- ลองดูตามลำดับ: 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;

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

SelectionElement.RightValue = "000000001";

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

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

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

เลือก

หมายเลขใบเสร็จรับเงินเอกสาร

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

จาก

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

ที่ไหน

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

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

&บนไคลเอนต์

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

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

SelectionElement.RightValue = "000000001";

ที่นี่ รายการตัวเลือกคือรายการพารามิเตอร์คำขอรายการแบบไดนามิกสำหรับแอตทริบิวต์รายการ ค่าของพารามิเตอร์ผลิตภัณฑ์ถูกตั้งค่าให้เท่ากับค่าของพารามิเตอร์ฟอร์ม 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("เอกสาร. ใบกำกับสินค้า. แบบฟอร์มรายการ", ตัวเลือกการเลือก);

OpenForm("เอกสาร. ใบกำกับสินค้า. แบบฟอร์มรายการ", ตัวเลือกการเลือก);
รหัส 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.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;
รายการแบบฟอร์ม.เปิด();

SelectionElement.RightValue = "000000001";

ในตัวจัดการนี้ เราได้รับแบบฟอร์มสำหรับรายการใบแจ้งหนี้และส่งลิงก์ไปยังรายการปัจจุบันในรายการรายการไปยังพารามิเตอร์แบบฟอร์ม 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

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



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