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

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

คำถาม 10.05 ของการสอบ 1C: ผู้เชี่ยวชาญด้านแพลตฟอร์ม แอตทริบิวต์แบบฟอร์มหลักใช้ทำอะไร?

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

คำตอบที่ถูกต้องคือข้อ 6 ดูด้านบน


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

คำตอบที่ถูกต้องคือข้อที่สาม - ทั้งสองอย่าง

คำถาม 10.07 ของการสอบ 1C: ผู้เชี่ยวชาญด้านแพลตฟอร์ม ในการกำหนดคุณลักษณะหลักให้กับแบบฟอร์มควบคุมโดยพลการ...

  1. คุณต้องกาเครื่องหมายที่ช่อง "รายละเอียดพื้นฐาน" ในคุณสมบัติของแอตทริบิวต์แบบฟอร์ม
  2. คุณต้องกรอกคุณสมบัติ "ข้อมูล" ของแบบฟอร์มโดยเลือกแอตทริบิวต์ของแบบฟอร์มที่ต้องการ

คำตอบที่ถูกต้องคือข้อสอง:

คำถาม 10.08 ของการสอบ 1C: ผู้เชี่ยวชาญด้านแพลตฟอร์ม หากต้องการกำหนดรายละเอียดหลักให้กับแบบฟอร์มปกติโดยพลการ...
  1. แบบฟอร์มจะต้องเป็นแบบฟอร์มหลัก รายละเอียดหลักจะถูกกำหนดโดยอัตโนมัติ
  2. คุณต้องกาเครื่องหมายที่ช่อง "รายละเอียดพื้นฐาน" ในคุณสมบัติของแอตทริบิวต์แบบฟอร์ม
  3. คุณต้องไปที่เมนู "แก้ไข" เลือก "รายละเอียดพื้นฐาน" และเลือกค่าที่ต้องการ
  4. คุณต้องกรอกคุณสมบัติ "ข้อมูล" ของแบบฟอร์มโดยเลือกแอตทริบิวต์ของแบบฟอร์มที่ต้องการ

คำตอบที่ถูกต้องคือข้อที่สี่:

รายละเอียดหลักจะเน้นด้วยตัวหนา:

คำถาม 10.09 ของการสอบ 1C: ผู้เชี่ยวชาญด้านแพลตฟอร์ม หากมีแอตทริบิวต์แบบฟอร์มหลักหนึ่งรายการ เป็นไปได้ไหมที่จะเพิ่มแอตทริบิวต์หลักอื่น
  1. นี่เป็นไปไม่ได้
  2. เป็นไปได้โดยการนัดหมาย ค่าที่สอดคล้องกันคุณสมบัติแอตทริบิวต์ของฟอร์ม
  3. เป็นไปได้เฉพาะทางโปรแกรมเท่านั้นเมื่อเข้าถึงวัตถุ "แบบฟอร์ม"
  4. สิ่งนี้เป็นไปได้โดยการเพิ่มค่าอื่นให้กับคุณสมบัติของฟอร์มที่เกี่ยวข้อง

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

คำถาม 10.113 ของการสอบ 1C: ผู้เชี่ยวชาญด้านแพลตฟอร์ม รายละเอียดแบบฟอร์มที่แสดงในภาพข้อใดคือรายละเอียดหลัก

  1. รายการอัตราแลกเปลี่ยน
  2. ไดเรกทอรีวัตถุ
  3. แบบฟอร์มไดเรกทอรีไม่มีรายละเอียดพื้นฐาน
  4. แบบฟอร์มไดเรกทอรีมีรายละเอียดพื้นฐานทั้งหมด
คำตอบที่ถูกต้องที่สองคือคำตอบที่เป็นตัวหนา

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

รูปแบบใดๆ แสดงถึงการรวมกันขององค์ประกอบหลายอย่าง:

  • องค์ประกอบ - วัตถุที่กำหนดการแสดงภาพของแบบฟอร์มและโต้ตอบกับผู้ใช้
  • อินเทอร์เฟซคำสั่ง - ชุดคำสั่งที่แสดงในแบบฟอร์ม
  • รายละเอียด - วัตถุที่แบบฟอร์มใช้ข้อมูลในการทำงาน
  • คำสั่ง - การกระทำที่กำหนดไว้ในรูปแบบเฉพาะนี้
  • พารามิเตอร์ - วัตถุที่มีค่าเป็นลักษณะของแบบฟอร์มนั้นถูกใช้ในระหว่างการสร้างและคงที่ในช่วง "ชีวิต" ของแบบฟอร์ม
  • โมดูล - โปรแกรมในภาษาในตัวที่รับผิดชอบในการทำงานกับองค์ประกอบและประมวลผลเหตุการณ์

ตัวแก้ไขแบบฟอร์มประกอบด้วยหลายแท็บที่อนุญาตให้แก้ไขส่วนประกอบของแบบฟอร์มทั้งหมด

ในหน้าต่างแยกต่างหาก ที่ด้านล่างของตัวแก้ไข ลักษณะที่ปรากฏของแบบฟอร์มในโหมด 1C:Enterprise จะปรากฏขึ้น

การแก้ไของค์ประกอบ

เครื่องมือแก้ไขแบบฟอร์มช่วยให้นักพัฒนาสามารถใช้ตัวเลือกที่หลากหลายในการเปลี่ยนแปลงได้ รูปร่างแบบฟอร์ม - ประเภทที่แบบฟอร์มจะมีในโหมด 1C: Enterprise เรามาแสดงรายการหลักๆ:

หน้า บุ๊กมาร์ก

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

ตัวแก้ไขช่วยให้คุณสามารถเพิ่มองค์ประกอบหลายรายการลงในแบบฟอร์มได้ กลุ่ม - หน้าซึ่งแต่ละองค์ประกอบสามารถมีได้หลายองค์ประกอบ กลุ่ม - หน้า.

ตัวอย่างเช่น แบบฟอร์มเอกสารอาจมีองค์ประกอบเดียว กลุ่ม - หน้าซึ่งมีองค์ประกอบหลายอย่างรองลงมา กลุ่ม - หน้ามีส่วนหัว ภาพ, ลักษณะเฉพาะและ คำอธิบาย:

จากนั้นในโหมด 1C:Enterprise จะมีลักษณะดังนี้:

ชื่อของแต่ละกลุ่ม - หน้าจะแสดงบนแท็บแยกกัน นักพัฒนามีโอกาสที่จะตั้งค่าโหมดการแสดงบุ๊กมาร์ก: ด้านล่างหรือด้านบน:

ตัวอย่างเช่น สามารถวางบุ๊กมาร์กไว้ที่ด้านล่าง:

องค์ประกอบ

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

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

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

ตัวคั่น

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

เมื่อคุณย้ายตัวคั่น องค์ประกอบทั้งหมดที่เกี่ยวข้องกับตัวคั่นจะปรับขนาดหรือย้าย:

โมดูลแบบฟอร์ม

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

รายละเอียดแบบฟอร์ม

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

หากแบบฟอร์มมีคุณลักษณะหลักที่กำหนดลักษณะการทำงานของแบบฟอร์มที่แตกต่างจากแบบฟอร์มมาตรฐาน จะมีการเน้นด้วยตัวหนา

อินเทอร์เฟซคำสั่งแบบฟอร์ม

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

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

คำสั่งแบบฟอร์ม

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

บุ๊กมาร์กไว้ คำสั่งมาตรฐานและ ทีมระดับโลกนักพัฒนาจะได้รับรายการคำสั่งที่สร้างโดยแพลตฟอร์มและพร้อมใช้งานในแบบฟอร์มนี้ คุณสมบัติไม่สามารถเปลี่ยนแปลงได้ คุณสามารถเพิ่มลงในแบบฟอร์มเท่านั้น

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

ตัวเลือกแบบฟอร์ม

พารามิเตอร์แบบฟอร์มได้รับการแก้ไขในรายการ นักพัฒนาสามารถเพิ่ม ลบพารามิเตอร์แบบฟอร์ม และตั้งค่าคุณสมบัติโดยใช้แผงคุณสมบัติ

รายละเอียดแบบฟอร์ม

ชุดรายละเอียดแบบฟอร์มจะอธิบายองค์ประกอบของข้อมูลที่แสดง แก้ไข หรือจัดเก็บไว้ในแบบฟอร์ม ในขณะเดียวกันรายละเอียดแบบฟอร์มเองก็ไม่สามารถแสดงและแก้ไขข้อมูลได้ องค์ประกอบของแบบฟอร์ม (ดูส่วน "องค์ประกอบของแบบฟอร์ม" ของบทนี้) ที่เกี่ยวข้องกับรายละเอียดแบบฟอร์มจะใช้สำหรับการแสดงและการแก้ไข ชุดรายละเอียดแบบฟอร์มทั้งหมดจะเรียกว่าข้อมูลแบบฟอร์ม

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

ก็มอบหมายได้ รายละเอียดแบบฟอร์มเบื้องต้นนั่นคือแอตทริบิวต์ที่จะกำหนดการทำงานมาตรฐานของแบบฟอร์ม (ส่วนขยายของแบบฟอร์ม) ควรจำไว้ว่าแบบฟอร์มสามารถมีแอตทริบิวต์หลักได้เพียงรายการเดียวเท่านั้น

นามสกุลแบบฟอร์ม– สิ่งเหล่านี้เป็นคุณสมบัติเพิ่มเติม วิธีการ และพารามิเตอร์แบบฟอร์มของออบเจ็กต์ ManagedForm ซึ่งเป็นลักษณะของออบเจ็กต์ที่เป็นองค์ประกอบหลักของแบบฟอร์ม

ในระหว่างกระบวนการพัฒนาแบบฟอร์ม คุณสามารถตั้งค่าความสามารถในการดูและแก้ไขรายละเอียดแบบฟอร์มเฉพาะในแง่ของบทบาทได้อย่างชัดเจน โดยใช้คุณสมบัติดูและแก้ไข (สำหรับรายละเอียดเพิ่มเติม โปรดดูส่วน "การตั้งค่าแบบฟอร์มตามบทบาท" ของ "ผู้แก้ไข" ” บท) นอกจากนี้ ความพร้อมใช้งานของคุณลักษณะเฉพาะในแบบฟอร์มสามารถกำหนดค่าได้โดยใช้ตัวเลือกการทำงาน (รายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือกการทำงานสามารถดูได้ในบท “การจัดการอินเทอร์เฟซการกำหนดค่า”)

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

ชนิดข้อมูลที่มีอยู่ในแบบฟอร์มที่ได้รับการจัดการ

แบบฟอร์มที่ได้รับการจัดการยังแตกต่างจากแบบฟอร์มทั่วไปในเรื่องประเภทของข้อมูลที่ใช้งานได้ หากรูปแบบปกติใช้ได้กับประเภทส่วนใหญ่ที่ 1C:Enterprise จัดเตรียมไว้ให้ (รวมถึงประเภท DirectoryObject, DocumentObject ฯลฯ) ดังนั้นในรูปแบบที่ได้รับการจัดการ จะสามารถแยกแยะประเภทประเภทต่อไปนี้ได้:

  • ประเภทที่ใช้โดยตรงในแบบฟอร์มคือประเภทที่มีอยู่ที่ด้านข้างของไคลเอ็นต์แบบบางและเว็บ (เช่น Number, DirectoryLink.Products, GraphicScheme, TabularDocument)
  • ประเภทที่จะถูกแปลงเป็นประเภทข้อมูลพิเศษ—ประเภทข้อมูลแบบฟอร์มที่ได้รับการจัดการ ประเภทดังกล่าวจะแสดงอยู่ในรายการรายละเอียดแบบฟอร์มในวงเล็บ เช่น (DirectoryObject.Products)
  • รายการไดนามิก (สำหรับรายละเอียดเพิ่มเติม โปรดดูส่วน "รายการไดนามิก" ของบทนี้)

การแปลงออบเจ็กต์แอปพลิเคชันเป็นข้อมูลฟอร์ม

แอปพลิเคชันบางประเภท (เช่น DirectoryObject ฯลฯ) ไม่มีอยู่ในฝั่งไคลเอ็นต์แบบบางและแบบเว็บ (ดูบทแนวคิดแอปพลิเคชันที่ได้รับการจัดการสำหรับรายละเอียดเพิ่มเติม) ดังนั้น เพื่อนำเสนอประเภทแอปพลิเคชันดังกล่าวในแบบฟอร์ม แพลตฟอร์มจึงได้แนะนำประเภทข้อมูลพิเศษที่ออกแบบมาเพื่อทำงานในรูปแบบที่มีการจัดการ คุณลักษณะของแอปพลิเคชันที่ได้รับการจัดการนี้ทำให้จำเป็นต้องแปลงออบเจ็กต์แอปพลิเคชันให้เป็นข้อมูลในรูปแบบ (และในทางกลับกัน)

มีการใช้ประเภทข้อมูลต่อไปนี้:

  • Form DataStructure – มีชุดคุณสมบัติประเภทใดก็ได้ คุณสมบัติอาจเป็นโครงสร้าง คอลเลกชัน หรือโครงสร้างอื่นที่มีคอลเลกชัน ประเภทนี้จะแสดงอยู่ในรูปแบบ DirectoryObject
  • FormDataCollection คือรายการของค่าที่พิมพ์ คล้ายกับอาร์เรย์ องค์ประกอบคอลเลกชันเข้าถึงได้โดยดัชนีหรือตัวระบุ การเข้าถึงด้วย ID อาจไม่สามารถใช้ได้ในบางกรณี นี่เป็นเพราะประเภทของออบเจ็กต์แอปพลิเคชันที่แสดงโดยคอลเลกชันนี้ ตัวระบุสามารถเป็นจำนวนเต็มใดก็ได้ ประเภทนี้จะแสดงในรูปแบบของส่วนที่เป็นตาราง
  • Form DataStructureWithCollection เป็นออบเจ็กต์ที่แสดงเป็นโครงสร้างและคอลเลกชันในเวลาเดียวกัน สามารถปฏิบัติได้เหมือนกับเอนทิตีเหล่านี้ ประเภทนี้แสดงถึงชุดของเรกคอร์ดในแบบฟอร์ม เป็นต้น
  • Form DataTree – วัตถุที่ออกแบบมาเพื่อจัดเก็บข้อมูลแบบลำดับชั้น

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

ตัวอย่างเช่น เอกสารที่มีส่วนที่เป็นตารางจะถูกแสดงโดยอ็อบเจ็กต์ประเภท FormDataStructure (ตัวเอกสารเอง) ซึ่งอ็อบเจ็กต์ประเภท FormDataCollection (ส่วนตารางของเอกสาร) อยู่ในลำดับรอง

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

การส่งผ่านข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์ส่วนของแบบฟอร์มที่ได้รับการจัดการ

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

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

  • สำหรับแอตทริบิวต์รองในรายการไดนามิก (คอลัมน์ รายการแบบไดนามิก):
    • เปิดใช้งานคุณสมบัติ - คุณลักษณะจะถูกอ่านจากฐานข้อมูลเสมอและรวมอยู่ในข้อมูลแบบฟอร์ม
    • คุณสมบัติถูกปิดใช้งาน - คุณลักษณะถูกอ่านจากฐานข้อมูลและรวมอยู่ในข้อมูลแบบฟอร์มเฉพาะเมื่อมองเห็นได้เท่านั้น ในขณะนี้องค์ประกอบแบบฟอร์มที่เกี่ยวข้องกับแอตทริบิวต์หรือแอตทริบิวต์รอง
  • สำหรับอุปกรณ์ประกอบฉากรองจากคอลเลกชันการเคลื่อนไหว:
    • เปิดใช้งานคุณสมบัติ - การเคลื่อนไหวของเอกสารถูกอ่านจากฐานข้อมูลและจะปรากฏในข้อมูลแบบฟอร์ม
    • คุณสมบัติถูกปิดใช้งาน - การเคลื่อนไหวของเอกสารจะไม่ถูกอ่านจากฐานข้อมูล และจะไม่รวมอยู่ในข้อมูลแบบฟอร์ม (หากไม่มีองค์ประกอบแบบฟอร์มที่อ้างอิงถึงการเคลื่อนไหวของเอกสาร)
  • รายละเอียดแบบฟอร์มอื่นๆ:
    • คุณสมบัติถูกเปิดใช้งาน - คุณลักษณะจะปรากฏในข้อมูลแบบฟอร์ม โดยไม่คำนึงว่าจะมีองค์ประกอบแบบฟอร์มอย่างน้อยหนึ่งองค์ประกอบที่เกี่ยวข้องกับแอตทริบิวต์หรือคุณลักษณะรองหรือไม่
    • คุณสมบัติถูกปิดใช้งาน - คุณลักษณะจะปรากฏในข้อมูลแบบฟอร์มเฉพาะเมื่อมีองค์ประกอบแบบฟอร์มที่เกี่ยวข้องกับแอตทริบิวต์หรือแอตทริบิวต์รอง ไม่เหมือนกับแอตทริบิวต์รายการไดนามิก การเปิดเผยองค์ประกอบที่เกี่ยวข้องกับแอตทริบิวต์ไม่สำคัญที่นี่

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

วิธีการแปลงข้อมูลออบเจ็กต์ของแอปพลิเคชันเป็นข้อมูลในแบบฟอร์ม

หากต้องการแปลงออบเจ็กต์ของแอปพลิเคชันให้เป็นข้อมูลในฟอร์มและย้อนกลับ มีชุดของวิธีการแบบโกลบอล:

  • ค่าInFormData()
  • FormDataInValue(),
  • CopyFormData()

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

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

  • ValueInFormData() – แปลงวัตถุประเภทแอปพลิเคชันเป็นข้อมูลแบบฟอร์ม
  • FormDataInValue() – แปลงข้อมูลแบบฟอร์มเป็นวัตถุประเภทแอปพลิเคชัน
  • CopyFormData() – คัดลอกข้อมูลแบบฟอร์มที่มีโครงสร้างที่เข้ากันได้ คืนค่า True หากการคัดลอกสำเร็จ หรือคืนค่า False หากโครงสร้างอ็อบเจ็กต์เข้ากันไม่ได้

บันทึก. เมื่อดำเนินการมาตรฐาน (การเปิดแบบฟอร์ม การดำเนินการคำสั่งเขียนมาตรฐาน ฯลฯ) ของแบบฟอร์มที่มีรายละเอียดหลัก การแปลงจะดำเนินการโดยอัตโนมัติ

มาดูตัวอย่างวิธีใช้การแปลงข้อมูลในอัลกอริทึมของคุณเอง

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

ObjectProduct = Directories.Products.FindByName("Coffeepot").GetObject();

ValueInFormData(ObjectItem, วัตถุ);

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

&ขั้นตอน OnClient เขียน()

ValueInFormData(ObjectItem, วัตถุ);

WriteOnServer();

&ขั้นตอนบนเซิร์ฟเวอร์ WriteOnServer()

ObjectProduct = FormDataValue (วัตถุ ประเภท ("DirectoryObject.Products"));

ObjectItem.เขียน();

  • สิ้นสุดขั้นตอน
  • วัตถุ ManagedForm ยังมีวิธีการที่ใช้ได้บนเซิร์ฟเวอร์:

ValueВFormAttribute() – แปลงวัตถุประเภทแอปพลิเคชันเป็นแอตทริบิวต์ของแบบฟอร์มที่ระบุ

FormAttributeVValue() – แปลงแอตทริบิวต์ข้อมูลแบบฟอร์มให้เป็นวัตถุประเภทแอปพลิเคชัน

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

เรามายกตัวอย่างการใช้วิธีการเหล่านี้กัน

ObjectProduct = FormDataValue (วัตถุ ประเภท ("DirectoryObject.Products"));

&ขั้นตอนบนเซิร์ฟเวอร์ คำนวณใหม่บนเซิร์ฟเวอร์()

// แปลงแอตทริบิวต์ Object ให้เป็นวัตถุของแอปพลิเคชัน

  • เอกสาร = แบบฟอร์ม AttributesValue ("วัตถุ");
  • // ทำการคำนวณใหม่โดยใช้วิธีที่กำหนดไว้ในโมดูลเอกสาร

เอกสารคำนวณใหม่();

// แปลงวัตถุแอปพลิเคชันกลับเป็นเสา

ValueFormAttributes(เอกสาร “วัตถุ”);

อินเตอร์เฟซซอฟต์แวร์

FormDataTree

ค้นหา ById

รับรายการ

คำอธิบาย:

เอกสารคำนวณใหม่();

ออกแบบมาเพื่อสร้างแบบจำลองต้นไม้ในข้อมูลแบบฟอร์มที่ได้รับการจัดการ

อ็อบเจ็กต์นี้สามารถซีเรียลไลซ์ถึง/จาก XDTO ประเภท XDTO ที่สอดคล้องกับวัตถุที่กำหนดถูกกำหนดไว้ในเนมสเปซ ชื่อประเภท XDTO:

รับรายการ

FormDataTree

ไวยากรณ์:<Идентификатор>)

รับรายการ()

<Идентификатор>ค่าส่งคืน:

ประเภท: แบบฟอร์ม DataCollection ขององค์ประกอบต้นไม้

รับรายการ

รับชุดองค์ประกอบต้นไม้ระดับบนสุด

เอกสารคำนวณใหม่();

ความพร้อมใช้งาน: ไคลเอนต์, เซิร์ฟเวอร์, ไคลเอนต์แบบบาง, เว็บไคลเอนต์

อ็อบเจ็กต์นี้สามารถซีเรียลไลซ์ถึง/จาก XDTO ประเภท XDTO ที่สอดคล้องกับวัตถุที่กำหนดถูกกำหนดไว้ในเนมสเปซ ชื่อประเภท XDTO:

ค้นหา ById

FindById(

<Имя свойства> (<Имя свойства>)

  • พารามิเตอร์:
  • (ที่จำเป็น)
  • // ทำการคำนวณใหม่โดยใช้วิธีที่กำหนดไว้ในโมดูลเอกสาร
  • ประเภท: หมายเลข. ตัวระบุองค์ประกอบต้นไม้

เอกสารคำนวณใหม่();

ชนิด:FormDataTreeElement.

รับองค์ประกอบคอลเลกชันตาม ID

องค์ประกอบคอลเลกชัน: DataFormTreeElement

สำหรับออบเจ็กต์ คุณสามารถสำรวจคอลเลกชันโดยใช้ตัวดำเนินการ For Each... From... Loop การข้ามผ่านจะเลือกองค์ประกอบของคอลเลกชัน คุณสามารถเข้าถึงองค์ประกอบการรวบรวมโดยใช้ตัวดำเนินการ [...] ดัชนีขององค์ประกอบถูกส่งผ่านเป็นอาร์กิวเมนต์

  • แทรก
  • เพิ่ม
  • ดัชนี (IndexOf)
  • นับ
  • ชัดเจน
  • รับ
  • เคลื่อนไหว
  • ลบ

เอกสารคำนวณใหม่();

การรวมตัวกันของธาตุไม้

อ็อบเจ็กต์นี้สามารถซีเรียลไลซ์ถึง/จาก XDTO ประเภท XDTO ที่สอดคล้องกับวัตถุที่กำหนดถูกกำหนดไว้ในเนมสเปซ ชื่อประเภท XDTO:

ดูเพิ่มเติมที่:

  • FormDataTreeElement วิธีการ GetElements
  • DataFormTree วิธีการ GetItems

คุณสมบัติของการทำงานกับแผนผังคุณค่า

อัพเดทต้นไม้

มีปัญหาเกิดขึ้น น้ำตกแพลตฟอร์มเมื่อทำการอัพเดตทรี

หากมีการขยายโหนดใด ๆ ในแผนผังและเลือกโหนดรองแล้วเมื่อทำการอัพเดตแผนผังด้วยฟังก์ชัน ค่าInFormDataแพลตฟอร์มตก

วิธีแก้ไข: คุณต้องเคลียร์ทรีก่อนทำการอัพเดต

ตัวอย่างเช่น:

&บนเซิร์ฟเวอร์ขั้นตอน ClearTree(องค์ประกอบ) สำหรับแต่ละองค์ประกอบจากองค์ประกอบ Loop ClearTree(element.GetElements());

สิ้นสุดรอบ;

องค์ประกอบ.ชัดเจน(); สิ้นสุดขั้นตอน

&ในขั้นตอนเซิร์ฟเวอร์ กรอกแผนผังแนวคิด() dConcepts = srProperties.Build แผนผังแนวคิด(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems()); ValueInFormData(dConcepts, ConceptTree); สิ้นสุดขั้นตอน

&ขั้นตอน OnClient OnDateOnChange (องค์ประกอบ) กรอก ConceptTree (); สิ้นสุดขั้นตอน แบบฟอร์มถูกควบคุมผ่านองค์ประกอบของแบบฟอร์มต่างๆ ซึ่งจัดเรียงตามลำดับชั้นบนแท็บองค์ประกอบ

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

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

การเพิ่มองค์ประกอบให้กับแบบฟอร์ม ClearTree(ConceptTree.GetItems());.

ทำได้ค่อนข้างง่าย: คุณต้องเลือกองค์ประกอบ รูปร่าง

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

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

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

หลังจากนี้ คุณสมบัติ DataPath และ View จะถูกกรอก และองค์ประกอบนั้นจะถูกแสดงในมุมมองแบบฟอร์ม

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

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

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

ตอนนี้เรามาเพิ่มองค์ประกอบแบบฟอร์มใหม่ด้วยประเภท ช่องป้อนข้อมูลและเชื่อมต่อกับอุปกรณ์ประกอบฉาก รายละเอียด วันที่ผ่านคุณสมบัติ DataPath ที่เราคุ้นเคยอยู่แล้ว

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

ดังนั้นเราจึงสรุปได้ว่าการทำงานของช่องป้อนข้อมูลขึ้นอยู่กับประเภทของคุณลักษณะ

สำหรับอุปกรณ์ประกอบฉากประเภท บูลีนค่าคุณสมบัติ View ต่อไปนี้จะพร้อมใช้งาน

และสำหรับแอตทริบิวต์ที่มีประเภทการอ้างอิง ค่าอื่นๆ ของคุณสมบัติ View จะพร้อมใช้งาน

งานที่มีรายละเอียดเพิ่มเติมเกี่ยวกับองค์ประกอบของแบบฟอร์มโดยใช้ตัวอย่างเชิงปฏิบัติมีอยู่ในหนังสือ "พื้นฐานของการพัฒนาใน 1C: Taxi จัดการการพัฒนาแอปพลิเคชันใน 12 ขั้นตอน"

บางครั้งดูเหมือนว่าการเรียนรู้ภาษาการเขียนโปรแกรมใน 1C นั้นซับซ้อนและยากลำบาก ที่จริงแล้วการเขียนโปรแกรมใน 1C นั้นง่ายมาก หนังสือของฉันจะช่วยให้คุณเชี่ยวชาญการเขียนโปรแกรมใน 1C ได้อย่างรวดเร็วและง่ายดาย: และ "พื้นฐานของการพัฒนาใน 1C: Taxi"

เรียนรู้การเขียนโปรแกรมใน 1C ด้วยความช่วยเหลือของหนังสือของฉัน “การเขียนโปรแกรมใน 1C ใน 11 ขั้นตอน”

  1. ไม่มีเงื่อนไขทางเทคนิคที่ซับซ้อน
  2. เนื้อหาที่เป็นประโยชน์มากกว่า 700 หน้า
  3. แต่ละงานจะมาพร้อมกับภาพวาด (ภาพหน้าจอ)
  4. รวมปัญหาการบ้าน
  5. หนังสือเล่มนี้เขียนด้วยความชัดเจนและ ในภาษาง่ายๆ- สำหรับผู้เริ่มต้น

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

  1. ไม่มีเงื่อนไขทางเทคนิคที่ซับซ้อน
  2. เนื้อหาเชิงปฏิบัติมากกว่า 600 หน้า
  3. แต่ละตัวอย่างจะมาพร้อมกับภาพวาด (ภาพหน้าจอ)
  4. หนังสือถูกส่งไปที่ อีเมลวี รูปแบบ PDF- สามารถเปิดบนอุปกรณ์ใดก็ได้!

รหัสโปรโมชั่นเพื่อรับส่วนลด 15% - 48PVXHeYu


หากบทเรียนนี้ช่วยคุณแก้ปัญหาใดๆ คุณชอบหรือพบว่ามีประโยชน์ คุณสามารถสนับสนุนโครงการของฉันได้โดยการบริจาคจำนวนเท่าใดก็ได้:

คุณสามารถชำระเงินด้วยตนเอง:

Yandex.Money - 410012882996301
เว็บเงิน - R955262494655

เข้าร่วมกลุ่มของฉัน

และ Data Transfer Object ไปยังโครงสร้างโค้ดรูปแบบควบคุมในสภาพแวดล้อม 1C 8.2

การแนะนำ

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

ในปีพ.ศ. 2551 ก็มีวางจำหน่ายแล้ว เวอร์ชันใหม่แพลตฟอร์ม 1C: Enterprise 8.2 (ต่อไปนี้จะเรียกว่าแอปพลิเคชันที่ได้รับการจัดการ) ซึ่งเปลี่ยนเลเยอร์การทำงานทั้งหมดด้วยอินเทอร์เฟซโดยสิ้นเชิง ซึ่งรวมถึงอินเทอร์เฟซคำสั่ง แบบฟอร์ม และระบบหน้าต่าง ในขณะเดียวกัน ไม่เพียงแต่รูปแบบการพัฒนาเท่านั้นที่เปลี่ยนแปลงไป ส่วนต่อประสานกับผู้ใช้ในการกำหนดค่า แต่ยังเสนอสถาปัตยกรรมใหม่สำหรับการแยกการทำงานระหว่างแอปพลิเคชันไคลเอนต์และเซิร์ฟเวอร์
แอปพลิเคชันที่ได้รับการจัดการรองรับไคลเอนต์ประเภทต่อไปนี้:

  • ไคลเอนต์หนา (โหมดการเปิดตัวปกติและที่ได้รับการจัดการ)
  • ไคลเอ็นต์แบบบาง
  • เว็บไคลเอ็นต์
แอปพลิเคชันที่ได้รับการจัดการจะใช้แบบฟอร์มที่สร้างขึ้น เทคโนโลยีใหม่- พวกเขาถูกเรียกว่า แบบฟอร์มที่ได้รับการจัดการ- เพื่ออำนวยความสะดวกในการเปลี่ยนแปลงรูปแบบก่อนหน้า (ที่เรียกว่า แบบฟอร์มปกติ) ยังได้รับการสนับสนุน แต่ฟังก์ชันการทำงานยังไม่ได้รับการพัฒนา และใช้ได้เฉพาะในโหมดเปิดใช้ไคลเอนต์แบบหนาเท่านั้น
ความแตกต่างหลักของฟอร์มที่ได้รับการจัดการสำหรับนักพัฒนา:
  • คำอธิบายโครงสร้างที่ประกาศ ไม่ใช่ "พิกเซลต่อพิกเซล" การจัดวางองค์ประกอบเฉพาะจะดำเนินการโดยอัตโนมัติโดยระบบเมื่อมีการแสดงแบบฟอร์ม
  • ฟังก์ชั่นทั้งหมดของแบบฟอร์มอธิบายไว้ว่า รายละเอียดและ ทีม- รายละเอียดคือข้อมูลที่ฟอร์มใช้งานได้ และคำสั่งคือการดำเนินการที่จะดำเนินการ
  • แบบฟอร์มทำงานบนทั้งเซิร์ฟเวอร์และไคลเอนต์
  • ในบริบทของไคลเอนต์ แอปพลิเคชันเกือบทุกประเภทไม่พร้อมใช้งาน ดังนั้นจึงเป็นไปไม่ได้ที่จะเปลี่ยนแปลงข้อมูลในฐานข้อมูล
  • สำหรับแต่ละเมธอดหรือตัวแปรฟอร์ม จะต้องระบุ คำสั่งการรวบรวมการกำหนดตำแหน่งการดำเนินการ (ไคลเอนต์หรือเซิร์ฟเวอร์) และการเข้าถึงบริบทของแบบฟอร์ม
เรามาแสดงรายการคำสั่งสำหรับวิธีการรวบรวมแบบฟอร์ม:
  • &บนไคลเอนต์
  • &บนเซิร์ฟเวอร์
  • &บนเซิร์ฟเวอร์โดยไม่มีบริบท
  • &OnClientOnServer โดยไม่มีบริบท
ให้เราอธิบายข้างต้น ภาพหน้าจอแสดงตัวอย่างของแบบฟอร์มที่ได้รับการจัดการและโมดูลในโหมดการพัฒนา ค้นหาคำอธิบาย อุปกรณ์ประกอบฉาก คำสั่งในการคอมไพล์ ฯลฯ

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

มากำหนดปัญหากันเถอะ

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

ลองพิจารณาโครงสร้างโค้ด (โมดูลฟอร์ม) ในรูปแบบต่างๆ กัน การกำหนดค่าทั่วไปและพยายามหารูปแบบ
ตามโครงสร้าง เราหมายถึงส่วนของโค้ด (ส่วนใหญ่มักเป็นบล็อกความคิดเห็น) ที่นักพัฒนาจัดสรรให้จัดกลุ่มวิธีการและคำสั่งการคอมไพล์สำหรับวิธีการเหล่านี้
ตัวอย่างที่ 1:
ส่วนของตัวจัดการเหตุการณ์ วิธีการ - บนไคลเอนต์ วิธีการ - บนเซิร์ฟเวอร์ วิธีการ - บนไคลเอนต์ ส่วนของขั้นตอนการบริการและฟังก์ชั่น ฟังก์ชั่นควบคุมอินพุตเสริม
ตัวอย่างที่ 2:
ขั้นตอนการบริการและฟังก์ชั่นเอกสารการชำระเงินค่าตัวจัดการเหตุการณ์
ตัวอย่างที่ 3:
ขั้นตอนการบริการบนเซิร์ฟเวอร์ ขั้นตอนการบริการบนไคลเอนต์ ขั้นตอนการบริการบนเซิร์ฟเวอร์โดยไม่มีบริบท ตัวจัดการเหตุการณ์ส่วนหัว ตัวจัดการเหตุการณ์คำสั่ง
ตัวอย่างที่ 4:
ขั้นตอนวัตถุประสงค์ทั่วไป ตัวจัดการเหตุการณ์แบบฟอร์ม ขั้นตอนของระบบย่อย "ข้อมูลการติดต่อ"
โดยพื้นฐานแล้ว โครงสร้างโค้ดหายไป หรือพูดง่ายๆ ก็คือ โครงสร้างคล้ายกับที่อยู่ใน Form 8.1:

  • คำที่ไม่ให้ข้อมูล "ทั่วไป บริการ เสริม"
  • พยายามอย่างขี้อายที่จะแยกวิธีไคลเอ็นต์และเซิร์ฟเวอร์ออกจากกัน
  • วิธีการมักจะถูกจัดกลุ่มตามองค์ประกอบอินเทอร์เฟซ “การทำงานด้วย ส่วนที่เป็นตารางสินค้า, ข้อมูลการติดต่อ".
  • การจัดเรียงวิธีการและกลุ่มรหัสตามอำเภอใจ ตัวอย่างเช่น ตัวจัดการเหตุการณ์อาจอยู่ที่ด้านบนในรูปแบบหนึ่ง ที่ด้านล่างในอีกรูปแบบหนึ่ง โดยไม่ได้เน้นเลยในรูปแบบที่สาม เป็นต้น
  • และอย่าลืมว่าทั้งหมดนี้รวมอยู่ในการกำหนดค่าเดียว
  • ใช่ มีการกำหนดค่าที่คำว่า "ทั่วไป บริการ เสริม" อยู่ในที่เดียวกันเสมอ แต่...
ทำไมคุณถึงต้องการโครงสร้างรหัส?
  • ลดความซับซ้อนของการบำรุงรักษา
  • ลดความซับซ้อนในการเรียนรู้
  • บันทึกหลักการทั่วไป/สำคัญ/ความสำเร็จ
  • ...ทางเลือกของคุณ
เหตุใดมาตรฐานการพัฒนาที่มีอยู่จาก 1C จึงไม่ช่วย
มาดูหลักการที่เผยแพร่บนดิสก์ ITS และใน “คำแนะนำสำหรับนักพัฒนา...” ต่างๆ ที่แนะนำเมื่อเขียนฟอร์มที่ได้รับการจัดการ
  • ลดจำนวนการเรียกเซิร์ฟเวอร์ให้เหลือน้อยที่สุด
  • การประมวลผลสูงสุดบนเซิร์ฟเวอร์
  • การเรียกเซิร์ฟเวอร์ที่ไม่ใช่บริบทจะเร็วกว่าการเรียกตามบริบท
  • โปรแกรมที่คำนึงถึงการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์
  • ฯลฯ
สโลแกนเหล่านี้เป็นเรื่องจริง แต่จะนำไปปฏิบัติได้อย่างไร? วิธีลดจำนวนการโทรให้เหลือน้อยที่สุดการเขียนโปรแกรมในโหมดไคลเอนต์ - เซิร์ฟเวอร์หมายความว่าอย่างไร?

รูปแบบการออกแบบหรือภูมิปัญญารุ่นต่อรุ่น

การโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์ถูกนำมาใช้ในเทคโนโลยีซอฟต์แวร์ต่างๆ มานานหลายทศวรรษ คำตอบสำหรับคำถามที่สรุปไว้ในหัวข้อก่อนหน้านี้เป็นที่ทราบกันมานานแล้วและสรุปไว้ในหลักการพื้นฐานสองประการ
  • ซุ้มระยะไกล(ต่อไปนี้จะเรียกว่าอินเทอร์เฟซ การเข้าถึงระยะไกล)
  • ออบเจ็กต์การถ่ายโอนข้อมูล(ต่อไปนี้จะเรียกว่า Data Transfer Object)
ถ้อยคำจากมาร์ติน ฟาวเลอร์ คำบรรยายของเขาเกี่ยวกับหลักธรรมเหล่านี้:
  • แต่ละวัตถุที่อาจมีไว้สำหรับการเข้าถึงระยะไกลจะต้องมี อินเทอร์เฟซที่มีรายละเอียดต่ำซึ่งจะช่วยลดจำนวนการโทรที่จำเป็นในการดำเนินการตามขั้นตอนเฉพาะ ... แทนที่จะขอใบแจ้งหนี้และรายการทั้งหมดแยกกัน คุณต้องอ่านและอัปเดตรายการใบแจ้งหนี้ทั้งหมดในคำขอเดียว สิ่งนี้ส่งผลต่อโครงสร้างทั้งหมดของออบเจ็กต์...ข้อควรจำ: อินเทอร์เฟซการเข้าถึงระยะไกล ไม่มีตรรกะของโดเมน.
  • ...หากฉันเป็นแม่ที่เอาใจใส่ ฉันจะบอกลูกอย่างแน่นอนว่า “อย่าเขียนวัตถุการถ่ายโอนข้อมูล!” ในกรณีส่วนใหญ่ ออบเจ็กต์การถ่ายโอนข้อมูลจะไม่มีอะไรมากไปกว่า ชุดสนามป่อง... คุณค่าของสัตว์ประหลาดที่น่าขยะแขยงนี้อยู่ที่ความเป็นไปได้เท่านั้น ส่งข้อมูลหลายชิ้นผ่านเครือข่ายในการโทรครั้งเดียว-เป็นเทคนิคที่มี คุ้มค่ามากสำหรับระบบแบบกระจาย
ตัวอย่างเทมเพลตในแพลตฟอร์ม 1C
อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันพร้อมใช้งานสำหรับนักพัฒนาเมื่อพัฒนาแบบฟอร์มที่ได้รับการจัดการประกอบด้วยตัวอย่างมากมายของหลักการเหล่านี้
ตัวอย่างเช่น วิธีการ OpenForm() ซึ่งเป็นอินเทอร์เฟซ "หยาบ" ทั่วไป
OpeningParameters = โครงสร้างใหม่ ("พารามิเตอร์1, พารามิเตอร์2, พารามิเตอร์3", ค่า1, ค่า2, ค่า3); แบบฟอร์ม = OpenForm (ชื่อแบบฟอร์ม, พารามิเตอร์การเปิด);
เปรียบเทียบกับสไตล์ที่ใช้ในเวอร์ชัน 8.1
แบบฟอร์ม = GetForm(ชื่อแบบฟอร์ม); Form.Parameter1 = ค่า1; Form.Parameter2 = ค่า2; แบบฟอร์มเปิด();

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

  • โครงสร้างรูปแบบข้อมูล
  • DataFormsCollection
  • DataFormStructureWithCollection
  • DataShapesTree
การแปลงออบเจ็กต์การถ่ายโอนข้อมูลระบบเป็นประเภทแอปพลิเคชันและด้านหลังทำได้โดยใช้วิธีการต่อไปนี้:
  • ค่าInFormData()
  • FormDataValue()
  • คัดลอกแบบฟอร์มข้อมูล()
  • ค่าInFormAttributes()
  • FormAttributesValue ()
บ่อยครั้งมีการใช้การแปลงที่ชัดเจนเมื่อปรับเปลี่ยนโซลูชันที่มีอยู่ วิธีการอาจคาดหวัง (ใช้คุณสมบัติ) พารามิเตอร์อินพุต เช่น ValueTable แทนที่จะเป็น FormDataCollection หรือวิธีการที่กำหนดไว้ในบริบทของวัตถุแอปพลิเคชัน และไม่พร้อมใช้งานสำหรับการโทรโดยตรงจากแบบฟอร์ม
ตัวอย่าง 1C v8.1:
// บนไคลเอนต์ในบริบทของแบบฟอร์ม FillUserCache(DepartmentLink)
ตัวอย่าง 1C v8.2:
// บนเซิร์ฟเวอร์ในบริบทของรูปแบบ ProcessingObject = Form AttributesValue("Object"); ProcessingObject.FillUserCache (DepartmentRef); ValueFormAttributes(ProcessingObject, "Object");

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

  • ประเภทดั้งเดิม (สตริง, ตัวเลข, บูลีน)
  • โครงสร้าง
  • การโต้ตอบ
  • อาร์เรย์
  • ลิงก์ไปยังออบเจ็กต์แอปพลิเคชัน (ตัวระบุที่ไม่ซ้ำและการแสดงข้อความ)
ตัวอย่าง: วิธีการยอมรับรายการคำสั่งซื้อเพื่อเปลี่ยนสถานะและส่งคำอธิบายข้อผิดพลาดไปยังไคลเอนต์
&OnServerWithoutContext ฟังก์ชัน ServerChangeOrderStatus (คำสั่งซื้อ, สถานะใหม่) ข้อผิดพลาด = การจับคู่ใหม่ (); // [คำสั่งซื้อ] [คำอธิบายข้อผิดพลาด] สำหรับแต่ละคำสั่งซื้อจากรอบคำสั่งซื้อ StartTransaction ();

ลอง DocOb = Order.GetObject();

- การดำเนินการอื่นๆ เป็นไปได้ไม่เพียงแต่กับคำสั่ง... ข้อยกเว้น CancelTransaction();
  • Errors.Insert(คำสั่งซื้อ, ErrorDescription());สิ้นสุดความพยายาม;
  • การระบุอินเทอร์เฟซการเข้าถึงระยะไกลที่ชัดเจน วิธีเซิร์ฟเวอร์ใดที่สามารถเรียกจากไคลเอนต์ได้ และวิธีใดไม่สามารถทำได้
  • ชื่อของวิธีอินเทอร์เฟซระยะไกลจะขึ้นต้นด้วยคำนำหน้า "Server" สิ่งนี้ช่วยให้คุณเห็นการถ่ายโอนการควบคุมไปยังเซิร์ฟเวอร์ทันทีในขณะที่อ่านโค้ด และลดความซับซ้อนในการใช้ความช่วยเหลือตามบริบท โปรดทราบว่าคำแนะนำอย่างเป็นทางการ (ITS) จะแนะนำวิธีการตั้งชื่อด้วย postfix เช่น ChangeOrderStatusOnServer() อย่างไรก็ตาม เราขอย้ำอีกครั้งว่าไม่สามารถเรียกวิธีการเซิร์ฟเวอร์ทั้งหมดจากไคลเอนต์ได้ ดังนั้นการเข้าถึงแบบลอจิคัลจึงมีความสำคัญมากกว่าตำแหน่งการคอมไพล์ ดังนั้น ด้วยคำนำหน้า "Server" เราจึงทำเครื่องหมายเฉพาะวิธีการที่ลูกค้าสามารถใช้ได้เท่านั้น เรามาเรียกวิธีการตัวอย่าง ServerChangeOrderStatus() กันความสามารถในการอ่าน
  • เรื่องของรสนิยมเรายอมรับคำสั่งซื้อเมื่อโมดูลเริ่มต้นด้วยขั้นตอนการสร้างแบบฟอร์มบนเซิร์ฟเวอร์และวิธีการเข้าถึงระยะไกลการบำรุงรักษา
จะต้องมีตำแหน่งที่ชัดเจนในการเพิ่มรหัสใหม่ จุดสำคัญคือเทมเพลตวิธีการที่สร้างขึ้นโดยอัตโนมัติโดยตัวกำหนดค่าจะถูกเพิ่มที่ส่วนท้ายของโมดูล เนื่องจากตัวจัดการเหตุการณ์สำหรับองค์ประกอบของแบบฟอร์มมักถูกสร้างขึ้นโดยอัตโนมัติ บล็อกที่เกี่ยวข้องจึงอยู่ที่สุดท้าย เพื่อไม่ให้ลากตัวจัดการแต่ละตัวไปยังตำแหน่งอื่นในโมดูล

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор="แบบฟอร์ม"/> // <Описание> // // "วันที่="

//////////////////////////////////////////////// // /////////////////////////// // ตัวแปรโมดูล ///////////////// // ////////////////////////////////////////////////////////////////// ////////// // บนเซิร์ฟเวอร์ //******* เหตุการณ์บนเซิร์ฟเวอร์ ******* &ในขั้นตอนเซิร์ฟเวอร์เมื่อสร้างบนเซิร์ฟเวอร์ (ความล้มเหลว, การประมวลผลมาตรฐาน) / /แทรกเนื้อหาของตัวจัดการจุดสิ้นสุดของขั้นตอน //********* อินเทอร์เฟซการเข้าถึงระยะไกล ******* //******* ตรรกะทางธุรกิจบนเซิร์ฟเวอร์ ******* /////////////////////////////////////////////////// /////// //////////////////// // วิธีการทั่วไปของลูกค้าและเซิร์ฟเวอร์ /////////////// ////// /////////////////////////////////////////// ///// //////// // บนไคลเอนต์ //********* ตรรกะทางธุรกิจกับไคลเอนต์ ******* //******* ทีม * ****** //********* กิจกรรมของลูกค้า ******* ////////////////////////// //////////////////////////////////////////////// // / / ผู้ดำเนินการโปรแกรมหลัก
คำถามที่เกี่ยวข้อง
  • ตัวเลือกการใช้งานอินเทอร์เฟซการเข้าถึงระยะไกล- ไม่ซิงโครนัส ระดับรายละเอียด...
  • การแคช 1C ทำการตัดสินใจทางสถาปัตยกรรมที่ไม่ประสบความสำเร็จ โดยแนะนำแคชในระดับวิธีการเรียกของโมดูลทั่วไปเท่านั้น และไม่ได้ให้ความสามารถในการควบคุม (เวลาที่เกี่ยวข้อง รีเซ็ตตามความต้องการ)
  • การเรียกเซิร์ฟเวอร์โดยนัย- อย่าลืมเกี่ยวกับคุณสมบัติทางเทคโนโลยี การดำเนินการที่ "ไม่เป็นอันตราย" หลายอย่างบนไคลเอนต์กระตุ้นให้แพลตฟอร์มติดต่อกับเซิร์ฟเวอร์