รายละเอียดแบบฟอร์ม 1c รายละเอียดพื้นฐานของแบบฟอร์ม ชนิดข้อมูลที่มีอยู่ในแบบฟอร์มที่ได้รับการจัดการ

วิธีเพิ่มรายละเอียดเพิ่มเติมให้กับองค์ประกอบไดเรกทอรีใน 1C Accounting 8.3 (การแก้ไข 3.0)

2016-12-07T18:20:33+00:00

มันเกิดขึ้นที่เราขาดความสามารถที่มีอยู่ใน 1C และคุณไม่จำเป็นต้องติดต่อโปรแกรมเมอร์เสมอไป ฉันจะบอกคุณเกี่ยวกับหนึ่งในกรณีเหล่านี้ที่เกี่ยวข้องกับ 1C ใหม่: การบัญชี 8.3 (รุ่น 3.0)

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

1. ไปที่ส่วน "การดูแลระบบ" และเลือก " การตั้งค่าทั่วไป" ():

2. ค้นหาและทำเครื่องหมายในช่อง "รายละเอียดและข้อมูลเพิ่มเติม" หากยังไม่ได้เลือก คลิกลิงก์ "รายละเอียดเพิ่มเติม":

3. ในส่วนด้านซ้ายของหน้าต่างการตั้งค่าที่เปิดขึ้น ให้เลือก "บัญชี" คลิกปุ่มใหม่บนแถบเครื่องมือ

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

5. หากต้องการสร้างแต่ละตัวเลือก ให้ไปที่แท็บ "ค่า" คลิกปุ่ม "สร้าง" ที่นั่น ป้อนชื่อของค่า (เช่น "สูง") แล้วคลิกปุ่ม "บันทึกและปิด"

6. และต่อไปเรื่อยๆ จนทั้งสามค่าถูกสร้างด้วยชื่อ “สูง”, “ปานกลาง” และ “ต่ำ” ดังแสดงในรูปด้านล่าง คลิกปุ่ม "บันทึกและปิด"

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

8. ตอนนี้ถ้าเราไปที่องค์ประกอบใด ๆ ของไดเร็กทอรีคู่สัญญาเราจะเห็นที่ด้านล่างสุดของแบบฟอร์มฟิลด์สถานะใหม่ ( หากไม่เห็น ให้ขยายกลุ่ม "รายละเอียดเพิ่มเติม" ที่ยุบอยู่ในแบบฟอร์ม):

9. ในฟิลด์นี้เราสามารถทดแทนหนึ่งในสามค่าที่เราสร้างขึ้นได้ คุณสามารถเลือกโดยใช้ฟิลด์นี้ในรูปแบบของรายการ ซึ่งสามารถแสดงในรายงาน ฯลฯ

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

แบบฟอร์มนี้

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CurrentTable=FormAttributesValue("SelectedConstructionObjects");

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

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

วัตถุ

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

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

วัตถุนี้

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

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

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

งานของผู้ใช้กับหนังสืออ้างอิงและเอกสารใน 1C ประกอบด้วยการกรอกข้อมูลในแบบฟอร์ม

รายละเอียด 1C คือฟิลด์ไดเร็กทอรีและเอกสารที่แสดงในแบบฟอร์มเพื่อให้ผู้ใช้กรอก

มาดูหัวข้อรายละเอียดใน 1C กันดีกว่า

รายละเอียด 1C คืออะไร

แต่ละไดเร็กทอรีและเอกสาร 1C ประกอบด้วยชุดฟิลด์ ฟิลด์ดังกล่าวเรียกว่ารายละเอียด 1C (สำหรับโปรแกรมเมอร์ 1C)

ในตัวกำหนดค่า ในแผนผังการกำหนดค่า 1C ให้เปิดไดเร็กทอรีหรือเอกสารใด ๆ แล้วคุณจะเห็นสาขารายละเอียด นี่คือรายการรายละเอียดไดเร็กทอรี (ฟิลด์)

ดูว่ารายละเอียด 1C ที่เหมือนกันมีลักษณะอย่างไรในแบบฟอร์มไดเรกทอรี 1C

คุณลักษณะ 1C แต่ละรายการมีคุณสมบัติที่ระบุประเภทของค่าที่ถูกจัดเก็บไว้ในแอตทริบิวต์ (สตริง หมายเลข ฯลฯ) และวิธีที่ผู้ใช้จะใช้งาน

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

คุณสมบัติหลักของรายละเอียด 1C:

รายละเอียดมาตรฐาน 1C

ดังที่คุณสังเกตเห็นในแบบฟอร์มไดเร็กทอรีมีรายละเอียด 1C ที่ไม่อยู่ในตัวกำหนดค่า: กลุ่ม, ชื่อ, BIC

แบบฟอร์มรายการไดเร็กทอรียังมีรายละเอียด 1C ที่ไม่อยู่ในรายการ: เครื่องหมายการลบ

นี่คือรายละเอียด 1C มาตรฐาน มันคืออะไร? ทุกคนมีชุดรายละเอียด 1C เริ่มต้น สำหรับไดเร็กทอรี นี่คือรหัสและชื่อ ตัวอย่างเช่น สำหรับเอกสารนี่คือวันที่และหมายเลข

รายละเอียดมาตรฐาน 1C สามารถดูรายละเอียดได้ดังนี้:

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

รายละเอียดทั่วไป 1C

ตั้งแต่เวอร์ชัน 1C 8.2.14 เป็นต้นไป 1C Object ใหม่ได้ปรากฏใน 1C - รายละเอียด 1C ทั่วไป คุณสามารถเพิ่มคุณสมบัติ (ฟิลด์) ที่จะปรากฏในไดเร็กทอรีและเอกสารหลายรายการพร้อมกันได้

คุณสมบัติของคุณลักษณะ 1C ทั่วไป:

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

วิธีเพิ่มรายละเอียด 1C

คลิกขวาที่สาขารายละเอียด 1C ของไดเร็กทอรีที่ต้องการแล้วเลือกเพิ่ม

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

มาเพิ่มแอตทริบิวต์ 1C อีกอันในลักษณะเดียวกัน เพียงแต่เราจะเลือกประเภทบูลีนและเรียกมันว่า "ทำงานในวันหยุดสุดสัปดาห์"

วิธีแสดงรายละเอียดในแบบฟอร์ม 1C (ไคลเอ็นต์แบบหนา 1C)

มาขยายสาขา Forms ของไดเร็กทอรีเดียวกันกัน หากต้องการเปิดแบบฟอร์ม ให้เลือกแบบฟอร์มองค์ประกอบแล้วดับเบิลคลิกด้วยเมาส์

ลากขอบของรูปร่างด้วยเมาส์แล้วยืดออก (ไม่จำเป็น)

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

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

วิธีแสดงรายละเอียดในแบบฟอร์ม 1C ( ไคลเอนต์แบบบาง 1ค)

มาขยายสาขา Forms ของไดเร็กทอรีเดียวกันกัน เลือกรูปร่างขององค์ประกอบแล้วดับเบิลคลิกด้วยเมาส์

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

ตอนนี้เพียงลากแอตทริบิวต์ที่ต้องการจากหน้าต่างด้านขวาไปทางซ้ายและจะปรากฏบนแบบฟอร์ม

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

ในไคลเอ็นต์แบบหนา แบบฟอร์มจะมีรายละเอียดของตัวเอง จะอยู่ที่แท็บรายละเอียด

รายละเอียดเหล่านี้จะไม่ถูกบันทึกในฐานข้อมูล แต่สามารถใช้บนแบบฟอร์มสำหรับเขตข้อมูลที่จำเป็นในการทำงานกับแบบฟอร์มได้

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

รายละเอียดเป็นระยะ 1C

ใน 1C เวอร์ชัน 7.7 มีรายละเอียดเป็นระยะ ความหมายคือ: ความหมายของอุปกรณ์ประกอบฉากจะแตกต่างกันในวันที่ต่างกัน ตัวอย่างเช่น ค่าของวันที่ 1 กันยายนเป็นหนึ่ง และในวันที่ 1 ตุลาคมเป็นอีกค่าหนึ่ง อุปกรณ์ประกอบฉากเดียวกัน

ใน 1C 8 ไม่มีรายละเอียดเป็นระยะ สิ่งนี้มีการดำเนินการดังต่อไปนี้:

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

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

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

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

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

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

รายละเอียดทั่วไปถูกนำมาใช้ครั้งแรกในเวอร์ชัน 1C 7.7 แต่นักพัฒนาไม่ได้รวมไว้ในแพลตฟอร์มเวอร์ชัน 8 ทันที กลไกของรายละเอียดทั่วไปได้รับการแนะนำโดยนักพัฒนา 1C ในรุ่น 8.2.14 เท่านั้น

สะดวกมากในการเพิ่มรายละเอียดทั่วไปเพื่อไม่ให้เปลี่ยนวัตถุมาตรฐานในการกำหนดค่า ฉันมักจะใช้มันร่วมกับ .

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

ข้อจำกัดเพียงอย่างเดียวของรายละเอียดทั่วไปคือการไม่สามารถใช้รายละเอียดเหล่านั้นใน .

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

สารประกอบ— รายการวัตถุที่จะใช้รายละเอียดทั่วไป การตั้งค่านั้นชวนให้นึกถึงการจัดทำแผนการแลกเปลี่ยน

รับบทเรียนวิดีโอ 267 บทเรียนบน 1C ฟรี:

ใช้งานอัตโนมัติ— การตั้งค่าจะกำหนดว่าอุปกรณ์ประกอบฉากทั่วไปจะถูกใช้กับออบเจ็กต์ที่มีการระบุโหมดการใช้งาน "อัตโนมัติ" หรือไม่

การแยกข้อมูล— เราจะพิจารณาการตั้งค่านี้แยกกัน

การแยกข้อมูลใน 1C โดยใช้รายละเอียดทั่วไป

การแยกข้อมูล- กลไกที่คล้ายกับกลไก อย่างไรก็ตาม ประสิทธิภาพของกลไกนี้จะมีประสิทธิภาพมากกว่าและกำหนดค่าได้ง่ายกว่า

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

การตั้งค่าการแยกข้อมูลโดยใช้รายละเอียด 1C ทั่วไป

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

ในกรณีนี้จำเป็นต้องระบุพารามิเตอร์เซสชันเมื่อเริ่มต้นระบบโดยอธิบายวิธีการทำเช่นนี้พร้อมตัวอย่างในบทความ

เสร็จสิ้นการตั้งค่า - ผู้ใช้จะสามารถเข้าถึงข้อมูลที่ระบุไว้ในพารามิเตอร์เซสชันที่เลือกเท่านั้น

ตัวอย่างการใช้อุปกรณ์ประกอบฉากทั่วไป

มาดูการตั้งค่าอุปกรณ์ประกอบฉากทั่วไปใน 1C 8.3 โดยใช้ตัวอย่างการกำหนดค่าเฟรมและอุปกรณ์ประกอบฉาก องค์กร:

มีเอกสารในระบบ 3 ฉบับที่ต้องระบุรายละเอียดขององค์กร ได้แก่ ใบรับสินค้า ใบกำกับค่าใช้จ่าย และบัญชีเงินเดือน

การตั้งค่านั้นง่าย:

  1. เราสร้างแอตทริบิวต์ทั่วไปใหม่ระบุประเภท - DirectoryLink.Organization
  2. ในการจัดองค์ประกอบเราจัดเตรียมเอกสารของเรา - ใช้.

เพียงเท่านี้ การตั้งค่าก็เสร็จสมบูรณ์!

มาดูผลลัพธ์กัน:

ระบบจะแสดงรายละเอียดทั่วไป “เสมือนเป็นของคุณเอง” ทั้งในการร้องขอ ในรายละเอียดแบบฟอร์ม และที่อื่นๆ นี่เป็นเวทย์มนตร์! 🙂

ข้อกำหนดทั่วไป 1C 8.3 จะไม่ถูกเพิ่ม