จะเปิดรูปแบบของวัตถุที่มีอยู่ได้อย่างไร? 1c เปิดแบบฟอร์มในโหมดการเลือก
เพื่อ เปิดแบบฟอร์มการเลือกพร้อมตัวเลือกใน 1 วินาที 8.2(แบบฟอร์มปกติ) เราต้องดำเนินการบางอย่าง เราจะได้รับมันก่อน หลังจากนั้น เราจะตั้งค่าการเลือกและเปิดโดยทางโปรแกรม นี่คือตัวอย่างโค้ด:
การเลือกแบบฟอร์มในฟิลด์อินพุต 1C 8.2 ที่มีค่าหลายค่า
ในตัวอย่างข้างต้นเราดูที่ วิธีการตั้งค่าการเลือกในแบบฟอร์มการเลือกตามค่าเฉพาะ ตอนนี้เรามาดูสถานการณ์ที่คุณต้องแทนที่ค่าหลายค่า ซึ่งอาจเป็นได้ เช่น อาร์เรย์หรือยกเลิกการโหลดจากผลลัพธ์ของคิวรี นี่คือการเลือกในช่องป้อนข้อมูล 1cที่มีหลายความหมาย
ขั้นแรกเราได้รับแบบฟอร์มการเลือกส่ง "องค์ประกอบ" (เจ้าของ) ในพารามิเตอร์ตั้งค่าสถานะโหมดการเลือก จากนั้นเราสร้างรายการค่าและอาร์เรย์เราสังเกตว่าเมื่อเลือกประเภทการเปรียบเทียบในรายการวัตถุสามารถแสดงได้เฉพาะกับประเภทเท่านั้น รายการค่า- เราเพิ่มองค์ประกอบให้กับอาร์เรย์ จากนั้นโหลดอาร์เรย์นี้ลงในรายการค่า ซึ่งเราจะตั้งค่าในส่วนที่เลือกในภายหลัง นอกจากนี้ อย่าลืมเปิดใช้งานแฟล็กเพื่อใช้การเลือกนี้ และตั้งค่าประเภทการเปรียบเทียบ
การตั้งค่าการเลือกในช่องป้อนข้อมูลบนแบบฟอร์มใน 1C 8.3 เหตุการณ์เริ่มต้นของการเลือก
ทีนี้ลองมาพิจารณากัน การเลือกในช่องป้อนข้อมูลบนแบบฟอร์มที่ได้รับการจัดการใน 1C 8.3- มาดูองค์ประกอบที่เราสนใจในรูปแบบซึ่งเราจะตั้งค่าการเลือกในกรณีของเรานี่คือฟิลด์ "องค์กร" เราพบเหตุการณ์ "เริ่มต้นการคัดเลือก" คลิกที่แว่นขยายและพบว่าตัวเองอยู่ในขั้นตอนนั้น เราเห็นพารามิเตอร์ Selection Data พารามิเตอร์นี้เป็นประเภท ValueList เพื่อจำกัดการเลือกองค์ประกอบที่จำเป็น เราจำเป็นต้องกรอกรายการค่า เราสามารถเลือกองค์ประกอบได้เฉพาะบนเซิร์ฟเวอร์เท่านั้น ดังนั้นเราจึงสร้างขั้นตอนด้วยคำสั่งการคอมไพล์ &OnServer ในขั้นตอนนี้ ให้กรอกข้อมูลการเลือก
การเปิดแบบฟอร์มโดยทางโปรแกรมในแอปพลิเคชัน 1C ที่ได้รับการจัดการนั้นแตกต่างอย่างมากจากการเปิดในแอปพลิเคชันทั่วไป เรามาดูวิธีการแบบเก่ากันก่อน ประกอบด้วยการรับแบบฟอร์มแล้วเปิดในโหมดปกติหรือโหมดโมดอล (เมื่อเปิดในโหมดโมดอล แบบฟอร์มจะบล็อกโปรแกรม)
GetForm() . เปิด()
นี่เป็นวิธีการเปิดแบบฟอร์มที่ช้าที่สุด อย่างไรก็ตาม ช่วยให้คุณสามารถประมวลผลแบบฟอร์มโดยทางโปรแกรมก่อนเปิดได้ ในการประมวลผลโค้ดคุณต้องเปลี่ยนแปลงเล็กน้อย:
แบบฟอร์ม = GetForm( “เอกสาร ใบรับสินค้าและบริการ แบบฟอร์มเอกสาร”)
;
//ที่นี่เราดำเนินการกับแบบฟอร์ม
รูปร่าง. เปิด();
ควรคำนึงว่าเมื่อได้รับแบบฟอร์มแล้ว จะมีการดำเนินการตามขั้นตอนเหตุการณ์อื่น เมื่อสร้างบนเซิร์ฟเวอร์
มาดูวิธีการอื่นที่ช่วยให้คุณเปิดแบบฟอร์มในแอปพลิเคชัน 1C ที่ได้รับการจัดการได้เร็วและสะดวกยิ่งขึ้น อาจใช้วิธีการที่แตกต่างกันขึ้นอยู่กับสถานการณ์เฉพาะ
1. วิธีเปิดแบบฟอร์มออบเจ็กต์ในแอปพลิเคชันที่ได้รับการจัดการ หากมีลิงก์ไปยังแบบฟอร์มนั้น
ในกรณีนี้ทุกอย่างง่ายมาก
RefLink = ไดเรกทอรี ศัพท์. FindByCode("000000001" ) ;
OpenValue(อ้างอิงลิงค์);
2. วิธีการเปิดแบบฟอร์มการเลือกแล้วรับค่าที่เลือก
มีฟังก์ชั่นสำหรับสิ่งนี้ ป้อนค่า()ฟังก์ชั่นมี 3 พารามิเตอร์:
- ตัวแปรที่จะเขียนค่าที่เลือกไว้
- คำใบ้ที่จะแสดงในหน้าต่างการเลือก
- คำอธิบายประเภทของค่าที่เลือก อาจมีหลายประเภท ในกรณีนี้คุณจะได้รับแจ้งให้เลือกประเภทก่อนที่จะเลือกค่าเฉพาะ
จากผลของการดำเนินการฟังก์ชัน แบบฟอร์มการเลือกเริ่มต้นสำหรับออบเจ็กต์ประเภทที่ระบุจะเปิดขึ้น
ค่าตัวแปร
อาร์เรย์= อาร์เรย์ใหม่;
อาร์เรย์ เพิ่ม(ประเภท( "DirectoryLink ระบบการตั้งชื่อ")
)
;
อาร์เรย์ เพิ่ม(ประเภท( “DirectoryLink. คู่สัญญา”)
)
;
TypeDescription= TypeDescription ใหม่ (อาร์เรย์) ;
Res = EnterValue(ค่า, "คำแนะนำ", TypeDescription);
วิธีการก่อนหน้านี้อนุญาตให้คุณเปิดแบบฟอร์มเริ่มต้นสำหรับวัตถุเท่านั้น (แบบฟอร์มวัตถุหรือแบบฟอร์มการเลือก) หากคุณต้องการเปิดแบบฟอร์มที่กำหนดเอง คุณสามารถใช้ฟังก์ชันนี้ได้ โอเพ่นฟอร์ม()
ฟังก์ชั่นนี้มีพารามิเตอร์ค่อนข้างน้อย ลองดูบางส่วนของพวกเขา:
- ชื่อแบบฟอร์ม— ที่นี่คุณสามารถเลือกหนึ่งในรูปร่างวัตถุมาตรฐานได้ เช่น แบบฟอร์มการคัดเลือกหรือ แบบฟอร์มรายการ- หรือรูปแบบเฉพาะที่สร้างโดยนักพัฒนา
- ตัวเลือก— ให้คุณโอนเข้าแบบฟอร์มในแบบฟอร์มได้ โครงสร้างพารามิเตอร์บางตัวก่อนเปิดจึงกำหนดข้อมูลเอาต์พุต พารามิเตอร์อาจเป็นข้อมูลใดๆ ที่สามารถส่งผ่านจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์ได้ พารามิเตอร์ที่ส่งผ่านเมื่อเปิดแบบฟอร์มสามารถประมวลผลได้ในขั้นตอน เมื่อสร้างOnServer()ที่แบบฟอร์มที่กำลังเปิดอยู่
- โหมดการเปิดแบบฟอร์ม— มี 3 ตัวเลือก: อิสระ, บล็อกอินเทอร์เฟซทั้งหมด, บล็อกแบบฟอร์มเจ้าของ
มาดูกันว่ามีการใช้งานฟังก์ชั่นอย่างไร โอเพ่นฟอร์ม()ในสถานการณ์ต่างๆ
3. วิธีการเปิดแบบฟอร์มของวัตถุที่มีอยู่
แต่ละแบบฟอร์มมีคุณลักษณะหลักหนึ่งรายการ ในรายการรายละเอียดแบบฟอร์มจะเน้นด้วยตัวหนา และมักเรียกว่า วัตถุในรูปแบบองค์ประกอบของหนังสืออ้างอิงและเอกสาร วัตถุอื่นๆ อาจมีชื่อที่แตกต่างกัน หากต้องการเปิดฟอร์มของออบเจ็กต์ที่มีอยู่ คุณต้องส่งพารามิเตอร์ไปยังฟอร์มที่กำลังเปิด สำคัญโดยมีค่าเป็นการอ้างอิงถึงวัตถุ
&บนไคลเอนต์
ขั้นตอน Command1 (คำสั่ง)
พารามิเตอร์ = โครงสร้างใหม่;
พารามิเตอร์. แทรก("คีย์" , FindC() ) ;
OpenForm(, พารามิเตอร์);
สิ้นสุดขั้นตอน
&บนเซิร์ฟเวอร์
ฟังก์ชั่น FindC();
ส่งคืนไดเร็กทอรี คู่สัญญา FindByRequisites ("TIN", "745107734623")
EndFunction
4. วิธีการเปิดแบบฟอร์มออบเจ็กต์ใหม่
ฟังก์ชันง่ายๆ จะทำตรงนี้ โอเพ่นฟอร์ม()โดยไม่มีพารามิเตอร์ใดๆ
&บนไคลเอนต์
ขั้นตอน Command1 (คำสั่ง)
โอเพ่นฟอร์ม( “สารบบ คู่สัญญา แบบฟอร์มวัตถุ”)
;
สิ้นสุดขั้นตอน
5. วิธีเปิดแบบฟอร์มออบเจ็กต์ใหม่และกรอกตามบางสิ่ง
คุณต้องผ่านพารามิเตอร์ ฐานค่าซึ่งจะเป็นการอ้างอิงไปยังวัตถุฐานการเติม นี่จะเป็นการเริ่มขั้นตอน กระบวนการกรอก()
&บนไคลเอนต์
ขั้นตอน Command1 (คำสั่ง)
พารามิเตอร์ = โครงสร้างใหม่;
พารามิเตอร์. ส่วนแทรก ("ฐาน", LinkToBuyerAccount);
โอเพ่นฟอร์ม( “เอกสารการขายสินค้าและบริการ แบบคำขอ”, พารามิเตอร์) ;
สิ้นสุดขั้นตอน
ตัวอย่างนี้จะสร้างเอกสาร การขายสินค้าและบริการและกรอกตามใบแจ้งหนี้เพื่อชำระเงินให้กับผู้ซื้อตามลิงก์ที่ถูกส่งไป
6. วิธีเปิดแบบฟอร์มและตั้งค่าการเลือก
การเลือกแบบฟอร์ม 1C สามารถทำได้ง่ายหรือซับซ้อน การเลือกอย่างง่ายเกี่ยวข้องกับสำนวนเช่น องค์กร = Horns and Hooves LLCการเลือกที่ซับซ้อนเกี่ยวข้องกับการเปรียบเทียบประเภทอื่น เช่น ในรายการ- ในบทความนี้เราจะพิจารณาการจัดองค์กรของการเลือกแบบง่ายและบทความแยกต่างหากจะเน้นไปที่การเลือกที่ซับซ้อน
ในการจัดระเบียบการเลือกแบบง่าย คุณต้องส่งพารามิเตอร์พร้อมคีย์ไปยังแบบฟอร์มที่กำลังเปิด การคัดเลือกค่าจะเป็นโครงสร้างที่คีย์คือชื่อของฟิลด์รายการไดนามิก และค่าคือข้อมูลที่กำลังค้นหา
ตัวอย่างเช่น เรามาเปิดแบบฟอร์มรายการไดเร็กทอรี ตัวเลข GTDและทำการเลือกโดยเจ้าของ - องค์ประกอบไดเร็กทอรี ศัพท์.
&บนไคลเอนต์
ขั้นตอน Command1 (คำสั่ง)
พารามิเตอร์ = โครงสร้างใหม่;
การเลือก = โครงสร้างใหม่;
การคัดเลือก Insert("เจ้าของ", LinkToNomenclature);
พารามิเตอร์. แทรก("การเลือก", การเลือก);
โอเพ่นฟอร์ม( "Directory.GTD ตัวเลข แบบฟอร์มรายการ", พารามิเตอร์) ;
สิ้นสุดขั้นตอน
7. วิธีการเปิดแบบฟอร์มลงทะเบียนข้อมูล
ในการดำเนินการนี้ คุณจะต้องมีรหัสรายการลงทะเบียนข้อมูล
บันทึกคีย์— นี่คือค่าของการวัดทั้งหมดและระยะเวลา (หากการลงทะเบียนเป็นระยะ) นั่นคือคีย์บันทึกคือพารามิเตอร์ที่สามารถระบุบันทึกได้โดยไม่ซ้ำกัน
อัลกอริธึมการเปิดมีดังนี้:
- เราป้อนข้อมูลคีย์บันทึกด้วยค่าที่จำเป็นลงในโครงสร้าง
- เราวางโครงสร้างผลลัพธ์ไว้ในอาร์เรย์
- เราสร้างคีย์บันทึกจากอาร์เรย์
- เราส่งพารามิเตอร์ไปยังแบบฟอร์มที่เปิดขึ้น สำคัญโดยมีคีย์บันทึกจากขั้นตอนที่ 3 เป็นค่า
&บนไคลเอนต์
ขั้นตอน Command1 (คำสั่ง)
พารามิเตอร์ = โครงสร้างใหม่;
KeyParameters= โครงสร้างใหม่;
พารามิเตอร์ที่สำคัญ Insert("ระบบการตั้งชื่อ", LinkToระบบการตั้งชื่อ);
พารามิเตอร์ที่สำคัญ ใส่("ประเภทราคา", LinkToPriceType);
พารามิเตอร์ที่สำคัญ Insert("ระยะเวลา", วันที่);
KeyArray = อาร์เรย์ใหม่;
คีย์อาร์เรย์ เพิ่ม(พารามิเตอร์คีย์);
EntryKey = ใหม่ ( "ข้อมูลการลงทะเบียนบันทึกคีย์ราคาระบบการตั้งชื่อ", คีย์อาร์เรย์) ;
พารามิเตอร์. Insert("คีย์", คีย์บันทึก);
โอเพ่นฟอร์ม( “ทะเบียนข้อมูล ราคาระบบการตั้งชื่อ แบบบันทึก”, พารามิเตอร์) ;
สิ้นสุดขั้นตอน
จะเปิดรูปแบบของวัตถุที่มีอยู่ได้อย่างไร?
เมื่อเปิดฟอร์มของออบเจ็กต์ที่มีอยู่ นอกเหนือจากชื่อของฟอร์มแล้ว คุณต้องระบุออบเจ็กต์ที่ควรเปิดฟอร์มด้วย ในการดำเนินการนี้ ให้ใช้พารามิเตอร์แบบฟอร์มคีย์และลิงก์ไปยังวัตถุที่เราสนใจ
ตัวอย่างเช่น หากคุณจำเป็นต้องเปิดแบบฟอร์มขององค์กรที่มีเคอร์เซอร์อยู่จากรายการแบบฟอร์มองค์กร คุณสามารถทำได้ด้วยวิธีต่อไปนี้:
เราส่งพารามิเตอร์แบบฟอร์มในรูปแบบของโครงสร้าง โดยที่ชื่อขององค์ประกอบโครงสร้างสอดคล้องกับชื่อของพารามิเตอร์แบบฟอร์ม และค่าคือค่าที่เราต้องการตั้งค่าพารามิเตอร์แบบฟอร์ม
หากคุณต้องการเปิดไม่ใช่รูปแบบหลัก แต่เป็นรูปแบบที่กำหนดเองของวัตถุที่สร้างขึ้นในตัวกำหนดค่าแทนที่จะเป็นชื่อมาตรฐานของรูปแบบหลัก (ObjectForm) ให้ระบุคำว่า รูปแบบ ตามด้วยจุด - ชื่อของแบบฟอร์มที่สร้างขึ้นใน ตัวกำหนดค่า
ตัวอย่างเช่น:
ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = โครงสร้างใหม่ ("คีย์", ReferenceToDirectoryElement); OpenForm("Directory.Organizations.Form.UniversalObjectForm",พารามิเตอร์ฟอร์ม);
ควรสังเกตว่าในกรณีที่นอกเหนือจากลิงก์ไปยังออบเจ็กต์แล้ว ไม่จำเป็นต้องส่งพารามิเตอร์ไปยังแบบฟอร์มที่กำลังเปิดอยู่ และเป็นรูปแบบหลักของออบเจ็กต์ที่มีอยู่ซึ่งจำเป็น คุณสามารถใช้วิธีที่ง่ายกว่าได้ - เปิดแบบฟอร์มตามขั้นตอน ค่าเปิด():
OpenValue(Items.List.CurrentRow);
วิธีนี้มีความหลากหลายน้อยกว่า แต่ในบางกรณีก็ช่วยประหยัดเวลาและความพยายาม ตัวอย่างเช่น ในกรณีที่พิจารณา บรรทัดดังกล่าวหนึ่งบรรทัดสามารถแทนที่ขั้นตอนสามบรรทัดทั้งหมดที่เราเขียนไว้ก่อนหน้านี้
อย่างไรก็ตาม ต้องใช้ความระมัดระวังเมื่อใช้ขั้นตอนนี้ ในบางกรณี อาจทำให้เกิดการเรียกเพิ่มเติมไปยังเซิร์ฟเวอร์ ตัวอย่างเช่น เมื่อคุณต้องการเปิดแบบฟอร์มรายการไดเรกทอรีแบบลำดับชั้น เมื่อใช้ขั้นตอนนี้ แพลตฟอร์มจะทำการเรียกเพิ่มเติมไปยังเซิร์ฟเวอร์เพื่อตรวจสอบว่าองค์ประกอบเป็นกลุ่มหรือไม่ เนื่องจากจะต้องเปิดแบบฟอร์มที่แตกต่างกันสำหรับองค์ประกอบและสำหรับกลุ่ม
ในเวลาเดียวกัน นักพัฒนาสามารถทราบข้อมูลนี้ล่วงหน้าภายในอัลกอริธึมของเขา และด้วยการใช้ฟังก์ชัน OpenForm() นักพัฒนาสามารถเปิดแบบฟอร์มที่ต้องการโดยไม่ต้องเรียกเซิร์ฟเวอร์เพิ่มเติม โดยระบุชื่อมาตรฐานของฟอร์มหลักทันที รูปร่าง.