ความแตกต่างระหว่างฟังก์ชันสร้างแอตทริบิวต์ต่อค่าและจัดรูปแบบข้อมูลเป็นค่า การแปลงข้อมูลออบเจ็กต์แอปพลิเคชันเป็นข้อมูลฟอร์มและสำรองประเภทข้อมูลใหม่

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

เวอร์ชันปัจจุบัน: สำหรับแบบฟอร์มปกติ 1.09 สำหรับแบบฟอร์มที่ได้รับการจัดการ 1.12

การประมวลผลการดาวน์โหลด (สำหรับ 1C 8.2, 1C 8.3 (แบบฟอร์มปกติ), ไฟล์ epf, 47 KB)

ดาวน์โหลดการประมวลผล (สำหรับ 1C 8.2, 1C 8.3 (แบบฟอร์มที่ได้รับการจัดการ), ไฟล์ epf, 22 KB)

เวอร์ชันล่าสุดสำหรับ 1C 8.1: 1.05

ดาวน์โหลดการประมวลผล (สำหรับ 1C 8.1, ไฟล์ epf, 48 KB)

จะทำอย่างไรถ้าการประมวลผลไม่เปิดขึ้น

การประมวลผลมีประโยชน์มาก ตัวอย่างเช่น ในกรณีเช่นนี้:

    จำเป็นต้องเข้าใจฐานข้อมูลที่ไม่คุ้นเคย

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

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

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

    คุณต้องเปรียบเทียบวัตถุสองชิ้นที่เป็นประเภทเดียวกัน

คุณสมบัติที่โดดเด่นคือ

    ความสามารถในการเชื่อมต่อกับการกำหนดค่ามาตรฐานในรูปแบบที่พิมพ์ออกมา (เช่น ในโหมดผู้ใช้ล้วนๆ ไม่จำเป็นต้องใช้ตัวกำหนดค่า)

    ความสามารถในการบันทึกวัตถุในโหมด "การแลกเปลี่ยนข้อมูล - ดาวน์โหลด" - เช่น "อย่างที่มันเป็น"

การติดตั้ง (อินเทอร์เฟซปกติ)

เปิดการประมวลผลแล้ว ให้ทำตามคำแนะนำบนหน้าจอ (นั่นคือคลิกปุ่ม "ติดตั้ง" ที่มุมขวาบนและยืนยันการติดตั้งในหน้าต่างถัดไป

การติดตั้งอินเทอร์เฟซ (“ที่ได้รับการจัดการ”)

ข้อควรสนใจ: ตัวเลือกการติดตั้งนี้ใช้งานได้กับการกำหนดค่า 1C มาตรฐานเท่านั้น

1. ไปที่ส่วน "การบริหาร" และที่นั่น - "รายงานและการประมวลผลเพิ่มเติม"

2. คลิกปุ่ม “เพิ่ม” และเลือกไฟล์ dannye-objecta-upr.epf

3. ในหน้าต่างการตั้งค่าการประมวลผล ให้ตรวจสอบว่า:

    สิ่งพิมพ์: ใช้แล้ว

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

4. ยืนยันการติดตั้งโดยคลิกตกลง

การใช้การประมวลผล

จากแบบฟอร์มเอกสารซึ่งเป็นองค์ประกอบไดเร็กทอรี หรือแบบรายการ

    อินเทอร์เฟซปกติ - คลิกปุ่ม "พิมพ์..."

    อินเทอร์เฟซ "จัดการ" - คลิกปุ่มเติม

เลือก "ข้อมูลวัตถุ" ในเมนู - แบบฟอร์มการประมวลผลจะเปิดขึ้น

หากต้องการดูรายละเอียด (เช่น เอกสารประกอบด้วยแอตทริบิวต์ "ข้อตกลง" ซึ่งไม่สามารถเปลี่ยนแปลงได้ แต่คุณต้องเปิดการ์ดของข้อตกลงนี้)

วิธีรับอุปกรณ์ประกอบฉากจากค่าอ้างอิงบนไคลเอนต์

ในแบบฟอร์มการประมวลผล ให้คลิกที่ค่าแอตทริบิวต์

หากต้องการเปลี่ยนรายละเอียด ให้เลือกช่องข้างค่า หลังจากนี้ค่าสามารถเปลี่ยนแปลงได้

หากต้องการบันทึกการเปลี่ยนแปลง ให้คลิกปุ่มสำหรับตัวเลือกที่ต้องการเพื่อบันทึกบันทึกในโหมด "การแลกเปลี่ยนข้อมูล - ดาวน์โหลด" ซึ่งเป็นบันทึกปกติ การดำเนินการ (สำหรับเอกสารเท่านั้น)

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

ในการประมวลผลจะมี "ข้อมูลทรัพย์สิน" ซึ่งเหมือนกับว่าคุณเปิดค่าผ่านลิงก์ (เช่น การ์ดของคู่สัญญา) และเรียกการประมวลผลอีกครั้ง

การเปรียบเทียบวัตถุสามารถทำได้:

การเลือก 2 วัตถุสำหรับการประมวลผล

2. โดยการเรียกการประมวลผลจากวัตถุหนึ่ง จากนั้น (โดยไม่ต้องปิดหน้าต่าง) จากอีกวัตถุหนึ่ง จะมีข้อเสนอให้ทำการเปรียบเทียบ

3. (อินเทอร์เฟซที่ได้รับการจัดการเท่านั้น) เลือก 2 วัตถุในรายการพร้อมกัน (โดยกดปุ่ม Ctrl ค้างไว้) และประมวลผลการโทร - วัตถุจะถูกเปรียบเทียบ

ภาพหน้าจอ (อินเทอร์เฟซปกติ)

ภาพหน้าจอ (อินเทอร์เฟซ "ที่ได้รับการจัดการ")

ตัวอย่างการใช้การประมวลผลเพื่อวิเคราะห์สถานการณ์ปัญหา

การเปลี่ยนแปลงในเวอร์ชัน 1.12 (10/10/2017)

  • สำหรับเวอร์ชันที่มีแบบฟอร์มที่ได้รับการจัดการ มีการแก้ไขจุดบกพร่อง (แอตทริบิวต์ในส่วนของตารางไม่ได้รับการอัปเดตหากออบเจ็กต์นั้นมีแอตทริบิวต์ส่วนหัวที่มีชื่อเดียวกัน)

การเปลี่ยนแปลงในเวอร์ชัน 1.10 (01/06/2017)

  • สำหรับตัวเลือกที่มีแบบฟอร์มที่ได้รับการจัดการ การทำงานในการกำหนดค่ามาตรฐานบางอย่าง (การบัญชี, UNF) ได้รับการแก้ไขแล้ว

การเปลี่ยนแปลงในเวอร์ชัน 1.09 (07/07/2558)

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

การเปลี่ยนแปลงในเวอร์ชัน 1.08 (04/03/2014)

    สำหรับเวอร์ชันสำหรับอินเทอร์เฟซปกติ ความเข้ากันได้ได้รับการปรับปรุงเมื่อทำงานในการกำหนดค่า "Manufacturing Enterprise Management" (PEM) 1.3

การเปลี่ยนแปลงในเวอร์ชัน 1.07 (04/03/2013)

    มีเวอร์ชันการประมวลผลสำหรับแบบฟอร์ม "ที่ได้รับการจัดการ" (ฟังก์ชันการติดตั้งและอัปเดตอัตโนมัติมีเฉพาะในเวอร์ชันสำหรับแบบฟอร์มปกติเท่านั้น)

    แก้ไขข้อบกพร่อง (สิทธิ์ถูกตั้งค่าในการแจกจ่ายการประมวลผล)

การเปลี่ยนแปลงในเวอร์ชัน 1.06 (05/13/2012)

    กำลังแสดงฟิลด์เวอร์ชันออบเจ็กต์

    แก้ไขข้อบกพร่อง (ไม่สามารถตั้งค่าสิทธิ์แบบอ่านอย่างเดียวในการประมวลผลได้)

การเปลี่ยนแปลงในเวอร์ชัน 1.05 (05/04/2011)

    แก้ไขข้อบกพร่อง (เมื่อทำงานภายใต้เวอร์ชัน 8.2 การบันทึกเอกสารในโหมดการโพสต์ไม่พร้อมใช้งาน)

การเปลี่ยนแปลงในเวอร์ชัน 1.04 (04/13/2011)

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

    ขณะนี้การประมวลผลสามารถดำเนินการแสดงรายละเอียดของประเภทการอ้างอิงต่อไปได้

    นั่นคือ: สมมติว่าคุณเปิดมุมมองของรายละเอียดของเอกสาร "การขายสินค้าและบริการ" เอกสารนี้มีแอตทริบิวต์ "Counterparty" ของประเภท "DirectoryLink.Counterparties" เมื่อคลิกขวาที่แอตทริบิวต์นี้ คุณจะได้รับเมนูบริบทซึ่งมีรายการ "ข้อมูลคุณลักษณะ" และ "ข้อมูลคุณลักษณะในหน้าต่างใหม่" โดยการเลือกหนึ่งในนั้น คุณจะสามารถดูรายละเอียดของคู่สัญญาที่เกี่ยวข้องได้

การเปลี่ยนแปลงในเวอร์ชัน 1.03 (10/15/2010)

    เพิ่มความสามารถในการระบุผู้ใช้และสิทธิ์ในการประมวลผล

การเปลี่ยนแปลงในเวอร์ชัน 1.02 (08/21/2010)

    รองรับการกำหนดค่าซึ่งไดเร็กทอรีของการประมวลผลภายนอกเรียกว่า "แบบฟอร์มที่พิมพ์เพิ่มเติม"

การเปลี่ยนแปลงในเวอร์ชัน 1.01 (01/28/2010)

    แก้ไขข้อผิดพลาดที่เกิดขึ้นเมื่อ Object1 ว่างเปล่าและเลือก Object2 (ขอบคุณ rasswet ผู้แสดงให้เห็น)

    ช่องทำเครื่องหมาย "รายละเอียด" ใช้งานได้ทันที ไม่จำเป็นต้องคลิก "แสดง"

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

หากคุณเชื่อมต่อการประมวลผลกับการกำหนดค่าของคุณ ให้อัปเดต:

ดาวน์โหลดการประมวลผลเปิดเป็นภายนอกมันจะบอกคุณว่าจะคลิกอะไรและอย่างไร (ปุ่ม "ติดตั้ง" เลือก "อัปเดตการประมวลผลในฐานข้อมูล" คลิกปุ่ม "เรียกใช้")

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

แบบฟอร์มนี้

ใช้ในโมดูลแบบฟอร์ม ในขั้นตอน&บนไคลเอนต์และ&บนเซิร์ฟเวอร์

ช่วยให้คุณเข้าถึงทั้งองค์ประกอบของแบบฟอร์มและรายละเอียด

องค์ประกอบแบบฟอร์มเข้าถึงได้ผ่านวัตถุองค์ประกอบและมีลักษณะดังนี้:

ThisForm.Elements.VersionNumber.Header = "v."+ProgramVersion;

การเข้าถึงคุณลักษณะที่มีอยู่ในแบบฟอร์มเกิดขึ้นดังนี้:

ThisForm.AdText="สวัสดีสหาย!";

เข้าถึงองค์ประกอบและรายละเอียดแบบฟอร์มได้ง่ายขึ้น

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

// องค์ประกอบแบบฟอร์ม

Elements.VersionNumber.Title = "v."+ProgramVersion;

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

ข้อความโฆษณา="สวัสดีสหาย!";

คุณสมบัติในการรับรายละเอียดแบบฟอร์ม (สำคัญ!)

หากแอตทริบิวต์ form มีประเภทธรรมดา -สตริง ตัวเลข วันที่ ... จากนั้นคุณจะได้รับ (ตั้งค่า) ค่าของแอตทริบิวต์เพียงแค่ชื่อ:

ข้อความ=ชื่อผลิตภัณฑ์; // ชื่อผลิตภัณฑ์เป็นแอตทริบิวต์ของแบบฟอร์ม

อย่างไรก็ตาม ด้วยวิธีนี้ จึงเป็นไปไม่ได้ที่จะได้รับรายละเอียดของประเภท "ซับซ้อน" -ตารางค่า, ต้นไม้แห่งคุณค่า . เมื่อคุณพยายามรับแอตทริบิวต์ประเภทนี้ตามชื่อ ออบเจ็กต์ประเภทนี้จะถูกส่งกลับDataFormsCollection.

หากต้องการรับค่าของแอตทริบิวต์ประเภท "ซับซ้อน" คุณต้องใช้ฟังก์ชันFormAttributesValue ():

CurrentTable=FormAttributesValue("SelectedConstructionObjects");

หากต้องการตั้งค่าของแอตทริบิวต์ "ซับซ้อน" คุณสามารถใช้ฟังก์ชันได้ค่าในแบบฟอร์มแอตทริบิวต์(<Значение>, <ИмяРеквизита>) จำเป็นต้องมีทั้งสองพารามิเตอร์

ฟังก์ชั่น FormAttributesValue ()และ ค่าInFormAttributes()มีเฉพาะบนเซิร์ฟเวอร์เท่านั้น

วัตถุ

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

หรือสัญกรณ์ที่สมบูรณ์กว่านี้:

วัตถุนี้

ประกอบด้วยออบเจ็กต์นั้นเอง มีไว้สำหรับการรับวัตถุในโมดูลวัตถุหรือโมดูลแบบฟอร์ม

การใช้งาน: อ่านอย่างเดียว

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

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

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

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

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

นามสกุลแบบฟอร์ม– สิ่งเหล่านี้เป็นคุณสมบัติเพิ่มเติม วิธีการ และพารามิเตอร์แบบฟอร์มของออบเจ็กต์ 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 เขียน()

WriteOnServer();

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

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

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

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

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

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

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

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

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

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

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

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

FormDataTree

  • ค้นหา ById
  • รับรายการ

คำอธิบาย:

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

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

รับรายการ

ไวยากรณ์:

รับรายการ()

ค่าส่งคืน:

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

คำอธิบาย:

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

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

ค้นหา ById

ไวยากรณ์:

FindById(<Идентификатор>)

ตัวเลือก:

<Идентификатор>(ที่จำเป็น)

ประเภท: หมายเลข. ตัวระบุองค์ประกอบต้นไม้

ค่าส่งคืน:

ชนิด:FormDataTreeElement.

คำอธิบาย:

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

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

FormDataTreeItem

คุณสมบัติ:

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

  • GetId (เก็ตไอดี)
  • รับผู้ปกครอง
  • รับรายการ
  • คุณสมบัติ

คำอธิบาย:

องค์ประกอบโครงสร้างข้อมูลแบบฟอร์ม

FormDataTreeItemCollection

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

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

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

คำอธิบาย:

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

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

ดูสิ่งนี้ด้วย:

  • 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 (); สิ้นสุดขั้นตอน

พิมพ์ (Ctrl+P)

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

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

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

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

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

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

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

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

&บนเซิร์ฟเวอร์
ขั้นตอนเมื่อ CreateOnServer (ล้มเหลว, การประมวลผลมาตรฐาน)
ObjectProduct = Products.FindByName("หม้อกาแฟ").GetObject(); ValueInFormData(ObjectItem, วัตถุ);
สิ้นสุดขั้นตอน
&บนไคลเอนต์
ขั้นตอนการเขียน()
WriteOnServer();
สิ้นสุดขั้นตอน
&บนเซิร์ฟเวอร์
ขั้นตอน WriteOnServer()
ObjectProduct = FormDataValue (วัตถุ ประเภท ("DirectoryObject.Products"));
ObjectItem.เขียน();
สิ้นสุดขั้นตอน

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

  • ค่าในแบบฟอร์มแอตทริบิวต์() - แปลงวัตถุประเภทแอปพลิเคชันเป็นแอตทริบิวต์แบบฟอร์มที่กำหนด
  • ค่าอุปกรณ์ประกอบฉากFormValue() - แปลงแอตทริบิวต์ข้อมูลแบบฟอร์มเป็นวัตถุประเภทแอปพลิเคชัน

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

คุณควรจำไว้ว่าเมื่อแปลงวัตถุประเภท ValueTable หรือ ValueTree เป็นข้อมูลแบบฟอร์ม (ทั้งโดยใช้วิธี ValueInFormData() และวิธี ValueInFormAttributes()) จะต้องคำนึงถึงคุณลักษณะต่อไปนี้: คอลัมน์ทั้งหมดที่มีอยู่ในข้อมูล ต้องมีอยู่ในวัตถุที่กำลังแปลงแบบฟอร์ม

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

เมื่อวัตถุถูกถ่ายโอนไปยังข้อมูลแบบฟอร์มโดยแพลตฟอร์ม หรือเมื่อมีการเรียกใช้เมธอด ค่าInFormData(), ค่าInFormProps() เฉพาะข้อมูลอ็อบเจ็กต์เท่านั้นที่ถูกถ่ายโอน สถานะภายในของวัตถุจะไม่ถูกถ่ายโอนไปยังข้อมูลในแบบฟอร์ม ตัวอย่างเช่น ค่าของการอ้างอิงใหม่ที่ถูกตั้งค่าเป็นออบเจ็กต์โดยใช้เมธอด SetLinkNew()จะหายไปในกระบวนการแปลงวัตถุเป็นรูปแบบข้อมูลและย้อนกลับ

เป็นพารามิเตอร์แรกของวิธีการ ค่าอุปกรณ์ประกอบฉากFormValue() และ ค่าแบบฟอร์มข้อมูล() เฉพาะรายละเอียดแบบฟอร์มประเภทต่อไปนี้เท่านั้นที่สามารถปรากฏได้:

  • โครงสร้างข้อมูลแบบฟอร์ม,
  • DataFormsCollection,
  • DataFormStructureWithCollection,
  • DataFormTree.

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

&บนเซิร์ฟเวอร์
ขั้นตอนการคำนวณใหม่ OnServer()
// แปลงแอตทริบิวต์ Object ให้เป็นวัตถุของแอปพลิเคชัน เอกสาร = แบบฟอร์ม AttributesValue ("วัตถุ");
// ทำการคำนวณใหม่โดยใช้วิธีที่กำหนดไว้ในโมดูลเอกสาร เอกสารคำนวณใหม่();
// แปลงวัตถุแอปพลิเคชันกลับเป็นเสา ValueFormAttributes(เอกสาร "วัตถุ");
สิ้นสุดขั้นตอน

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


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

ชนิดข้อมูลใหม่

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

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

การต่อสู้รูปแบบใหม่

ผู้พัฒนาแพลตฟอร์ม 1C มีสองฟังก์ชัน:
  1. ค่าอุปกรณ์ประกอบฉากFormValue- แปลงแอตทริบิวต์แบบฟอร์มที่ระบุให้เป็นวัตถุประเภทแอปพลิเคชัน
  2. DataFormValue- แปลงข้อมูลแบบฟอร์มให้เป็นวัตถุประเภทแอปพลิเคชัน
การเรียกใช้ฟังก์ชันเหล่านี้มีเฉพาะบนเซิร์ฟเวอร์เท่านั้น กลับไปที่งานของเราและเขียนโค้ดสำหรับไคลเอ็นต์แบบบางในโมดูลฟอร์มในเหตุการณ์ เมื่อ CreateOnServerซึ่งจะเรียกใช้ฟังก์ชันจากโมดูลวัตถุ:
&บนเซิร์ฟเวอร์


SprObject1 = แบบฟอร์ม AttributesValue ("วัตถุ");
SprObject1.OutputMessage (Object.Attributes1);




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

มันทำงานได้ทั้งด้วยความช่วยเหลือของฟังก์ชันหนึ่งและด้วยความช่วยเหลือของ O_o อีกฟังก์ชันหนึ่ง มาเขียนโค้ด Conversion กัน DataShapesTreeลงในวัตถุประเภทแอปพลิเคชัน:
&บนเซิร์ฟเวอร์
ขั้นตอนเมื่อ CreateOnServer (ล้มเหลว, การประมวลผลมาตรฐาน)

ค่า Tree1 = แบบฟอร์ม AttributesValue ("Attribute1");
ValueTree2 = FormDataInValue(ThisForm.Attribute1, Type("ValueTree"));

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

ValueTree1 และ ValueTree2 มีประเภทเดียวกัน - ValueTree แล้วฟังก์ชั่นเหล่านี้ต่างกันอย่างไร???

DataFormValue - การทำงาน ทั่วโลกบริบท. แปลงประเภทของวัตถุที่สนับสนุนโดยแบบฟอร์มให้เป็นประเภทของวัตถุฐานข้อมูล: DataFormsStructure -> DirectoryObject.Directory1.

ค่าอุปกรณ์ประกอบฉากFormValue - ฟังก์ชันโมดูลแบบฟอร์ม ซึ่งถูกเรียกบนเซิร์ฟเวอร์ในบริบทของแบบฟอร์ม (&OnServer) หากคุณพยายามเรียกใช้ฟังก์ชันนี้นอกบริบทของแบบฟอร์ม แพลตฟอร์มจะสร้างข้อผิดพลาดข้อยกเว้น:
&บนเซิร์ฟเวอร์โดยไม่มีบริบท
ประเภทขั้นตอนการแปลง()

// รหัสนี้ไม่ถูกต้อง บริบทของแบบฟอร์มไม่พร้อมใช้งาน จะมีข้อผิดพลาด!
SprObject2 = FormDataValue(วัตถุ ชนิด("DirectoryObject.Directory1"));
SprObject2.OutputMessage (Object.Attributes1);

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

นั่นคือความแตกต่างทั้งหมด