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

ต้นทุนงานและตัวเลือกสำหรับการแปลจากรุ่นต่างๆ

การแปล 8.1 → 8.2.13 การแปล 8.2.13 → 8.2.16 การแปล 8.2.16 → 8.3.10
ราคาถู - 54,000 ₽ 12,000 ₽ 76,800 รูเบิล

รายการการเปลี่ยนแปลงทั้งหมดในแพลตฟอร์มเวอร์ชันต่างๆ มีอยู่ที่ลิงก์ต่อไปนี้:
สำหรับแพลตฟอร์ม 8.2:
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

ก่อนที่จะเริ่มทำงานในการโอนย้ายไปยัง 8.3 คุณต้องมี:

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

การแปลการกำหนดค่า 8.1 → 8.2.13

ต้นทุนการทำงาน: 54,000 ถู

การแปลการกำหนดค่า 8.2.13 → 8.2.16 (รวมถึงการปรับโครงสร้างใหม่)

การเปลี่ยนแปลงที่สำคัญ:
โหมดการจัดเก็บค่าคงที่และการตั้งค่าการลงทะเบียนการสะสมมีการเปลี่ยนแปลง แต่ละวัตถุมีตารางฐานข้อมูลของตัวเอง
การใช้งานกลไกการล็อคแบบมีการจัดการได้รับการแก้ไขแล้ว
สำหรับเหตุการณ์บันทึกทางเทคโนโลยี "TLOCK" คุณสมบัติ "Txt" จะถูกเขียนในโหมดความเข้ากันได้กับเวอร์ชัน 8.2.13 เท่านั้น
อิทธิพลของโหมดดีบักต่อความเร็วของการทำงานในโหมด 1C:Enterprise สำหรับไคลเอ็นต์แบบบาง ไคลเอนต์แบบหนา เซิร์ฟเวอร์ และการเชื่อมต่อภายนอกลดลง
การดำเนินการค้นหาในรูปแบบ “ValueType(Field1) = ValueType(Field2)” ได้รับการปรับให้เหมาะสมหาก “Field1” และ “Field2” มีค่าของประเภทการอ้างอิง
สำหรับฟิลด์ฟอร์มที่ได้รับการจัดการซึ่งแสดงคุณลักษณะของประเภทที่ซับซ้อน การเปิดรายการการเลือกอย่างรวดเร็วจะได้รับการเร่งในกรณีที่ประเภทที่ซับซ้อนรวมประเภทการอ้างอิงที่มีการตั้งค่าการเลือกด่วนที่แตกต่างกัน
สำหรับการลงทะเบียนข้อมูลอิสระและแบบไม่เป็นระยะใหม่ ดัชนีมิติจะถูกจัดกลุ่ม

การเปลี่ยนแปลงที่ต้องเปลี่ยนแปลงการกำหนดค่า:

เมื่อปิดใช้งานโหมดความเข้ากันได้ จำเป็นต้องใช้พารามิเตอร์ "ระยะเวลา" ของวิธีการจัดการการลงทะเบียนข้อมูลเป็นระยะ "รับ ()" ในโหมดความเข้ากันได้กับเวอร์ชัน 8.2.13 และเวอร์ชัน 8.1 ลักษณะการทำงานจะไม่เปลี่ยนแปลง (สามารถใช้วิธีนี้ได้โดยไม่ต้องระบุพารามิเตอร์ แต่ผลลัพธ์ไม่ได้กำหนดไว้)
เมื่อใช้วิธีการ "SetValue()" และ "UseFromDataSource()" ของวัตถุ "DataLockElement" ในเวลาเดียวกัน ข้อยกเว้นจะเกิดขึ้น ในโหมดความเข้ากันได้กับเวอร์ชัน 8.2.13 ลักษณะการทำงานจะไม่เปลี่ยนแปลง (ค่าที่กำหนดโดยวิธี "UseFromDataSource()" จะมีความสำคัญกว่า)
ไม่รองรับการจัดเก็บค่าข้อมูลที่ไม่รองรับการทำให้เป็นอนุกรม ในโหมดความเข้ากันได้ ลักษณะการทำงานไม่มีการเปลี่ยนแปลง
หากฐานข้อมูลเป็นแบบไฟล์ ฐานข้อมูลนั้นจะต้องถูกแปลง หลังจากการแปลงเริ่มต้นขึ้น การทำงานกับฐานข้อมูลนี้กับแพลตฟอร์ม 1C:Enterprise 8 เวอร์ชันก่อนหน้าจะไม่สามารถทำได้ หากการพัฒนาดำเนินการโดยใช้ที่เก็บการกำหนดค่า คุณต้องทำสำเนาของที่เก็บก่อนที่จะแปลงฐานข้อมูล

สำคัญ. เพื่อให้ได้รับผลกระทบจากการเปลี่ยนโหมดความเข้ากันได้ คุณต้องทำการปรับโครงสร้างใหม่ผ่านตัวกำหนดค่า: “การดูแลระบบ → การทดสอบและการแก้ไข → การปรับโครงสร้างตารางฐานข้อมูลใหม่”

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

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

ค่าใช้จ่ายในการถ่ายโอนการกำหนดค่าจากโหมดความเข้ากันได้ 8.2.13 ไปเป็นโหมด 8.2.16 (โหมดที่ไม่เข้ากันเมื่อใช้แพลตฟอร์ม 8.2.16, 8.2.19 และโหมดความเข้ากันได้ 8.2.16 เมื่อใช้แพลตฟอร์ม 8.3) คือ 12,000 ถู

สามารถดาวน์โหลดเทมเพลตสัญญาจ้างงานได้

การแปลการกำหนดค่า 8.2.16 → 8.3.10

งานแปลการกำหนดค่าประกอบด้วยการแก้ไขการกำหนดค่าต่อไปนี้:

1. ขจัดความขัดแย้งของชื่อทรัพย์สิน การเปลี่ยนชื่อตัวแปรเพื่อให้ตรงกับคุณสมบัติใหม่ที่ปรากฏใน 1C:Enterprise 8.3
2. กำจัดชื่อรูปภาพที่ขัดแย้งกัน การเปลี่ยนชื่อรูปภาพด้วยชื่อที่ตรงกับชื่อจากไลบรารีรูปภาพ
3. การปรับแต่งโค้ดเมื่อเปลี่ยนคุณสมบัติของโครงสร้างคงที่ แทนที่ข้อบ่งชี้คุณสมบัติของโครงสร้างคงที่ด้วยการสร้างโครงสร้างคงที่ขึ้นใหม่หรือแทนที่การใช้งานด้วยประเภท "โครงสร้าง" ที่คล้ายกัน
4. แทนที่ตำแหน่งของค่าที่ไม่ต่อเนื่องในที่เก็บข้อมูลชั่วคราวด้วยโค้ดที่รองรับใน 1C:Enterprise 8.3
5. แทนที่การใช้การเรียกเมธอด "แสดง" สำหรับรายละเอียดแบบฟอร์มที่ได้รับการจัดการด้วยการใช้คุณสมบัติ "CurrentElement", "CurrentPage" และเมธอด "เปิดใช้งาน"
6. การแทนที่ชื่อวัตถุข้อมูลเมตาที่ยาวเกิน 80 อักขระด้วยชื่อ 80 อักขระหรือน้อยกว่าสำหรับวัตถุข้อมูลเมตา
7. การเปลี่ยนชื่อวิธีการและคุณสมบัติตามวิธีการโยกย้ายเป็นเวอร์ชัน 8.3
8. การปรับปรุงกลไกในการทำงานกับการเลือก การจัดรูปแบบตามเงื่อนไข การจัดกลุ่ม และการเรียงลำดับในรายการแบบไดนามิก
9. การปรับแต่งโค้ดสำหรับการสืบค้นด้วยคำสำคัญ “ผลลัพธ์ทั่วไป” ยกเลิกการโหลดใน
“การข้ามผลลัพธ์การสืบค้นโดยการจัดกลุ่ม” เพื่อรักษาตรรกะของการทำงานก่อนหน้านี้
10. การเปลี่ยนแปลงชื่อคลาสออบเจ็กต์ COM การแทนที่ชื่อ "V82.COMConnector" ด้วย "V83.COMConnector" และ "V82.Application" ด้วย "V83.Application"
11. การปฏิเสธในรหัสโปรแกรมของเหตุการณ์ "เริ่มต้นการเลือกจากรายการ" สำหรับฟิลด์อินพุตในโหมดการเลือกจากรายการ
12. การปฏิเสธในรหัสโปรแกรมจากคุณสมบัติ "ปุ่มรายการตัวเลือก" สำหรับช่องป้อนข้อมูลโดยการตั้งค่าคุณสมบัติ "ปุ่มรายการแบบเลื่อนลง"
13. การเปลี่ยนรหัสเพื่อคำนึงถึงการเปลี่ยนแปลงประเภทของค่าที่ส่งคืนโดยวิธีบริบทสากล “SafeMode()”
14. การเปลี่ยนรหัสเพื่อคำนึงถึงการเปลี่ยนแปลงในผลลัพธ์ของการสืบค้นค่าคงที่ (เมื่อเข้าถึงฟิลด์ "ค่า" ของตารางค่าคงที่หากค่าคงที่เก็บค่าประเภท "Value Storage", "UniqueIdentifier" หรือ “การอ้างอิงแหล่งข้อมูลตารางภายนอก”
15. การแทนที่คุณสมบัติการกำหนดค่า “MainRole” ด้วย “MainRoles”
16. การปฏิเสธคุณสมบัติ “ผู้ใช้” และ “รหัสผ่าน” สำหรับวัตถุ “InternetProxy” และแทนที่ด้วยวิธีการ “Set()”, “User()”, “Password()”
17. การปรับแต่งโค้ดเพื่อรองรับคำสั่ง “Show in list” ตามวิธีการเปลี่ยนเป็นเวอร์ชัน 8.3
18. การปรับปรุงโค้ดเพื่อรักษาตรรกะก่อนหน้าของการทำงานของระบบเมื่อค่าที่ส่งคืนของคุณสมบัติ SystemInformation.OSVersion มีการเปลี่ยนแปลง
19. การปรับปรุงโค้ดเพื่อรักษาตรรกะก่อนหน้าของระบบเมื่อปฏิเสธที่จะใช้การแจงนับระบบ OptionOpenWindow ซึ่งไม่มีในเวอร์ชัน 8.3 อีกต่อไป
20. การปรับแต่งโค้ดโดยคำนึงถึงการปฏิเสธที่จะใช้หน้าต่างโมดอล
21. การปรับปรุงโค้ดเพื่อรองรับเว็บไคลเอ็นต์ กล่าวคือ การปฏิเสธการเรียกเซิร์ฟเวอร์และการเปิดหน้าต่างใน "ก่อนปิด" การปฏิเสธการเรียกของเซิร์ฟเวอร์ใน "เมื่อปิด"
22. การปรับปรุงโค้ดเพื่อให้สามารถใช้ฟังก์ชัน RoleAvailable() ได้อย่างถูกต้อง เมื่อส่งฟังก์ชันเป็นพารามิเตอร์ไปยังบทบาทที่ขาดหายไป
23. สำหรับแอปพลิเคชันที่ได้รับการจัดการ: เริ่มต้นจากเวอร์ชัน 8.3.8 ในตัวจัดการเหตุการณ์ของแอปพลิเคชันที่ได้รับการจัดการ BeforeSystemShutdown, WhenSystemShutdown รวมถึงในตัวจัดการเหตุการณ์ของแบบฟอร์มที่ได้รับการจัดการซึ่งอยู่ในโหมดปิด, BeforeClosing, WhenClosing, ห้ามมิให้เปิดหน้าต่างและทำการเรียกเซิร์ฟเวอร์- จำเป็นต้องปรับปรุงการกำหนดค่าเพื่อให้สามารถปิดแบบฟอร์มได้อย่างถูกต้อง - โดยไม่ต้องเรียกเซิร์ฟเวอร์
24. ข้อขัดแย้งของชื่อตัวแปร: คุณไม่สามารถใช้ชื่อตัวแปร FormParameters ในโมดูลฟอร์มได้ ดังนั้นจึงจำเป็นต้องปรับเปลี่ยนโมดูลฟอร์มที่ได้รับการจัดการทั้งหมดที่ใช้ตัวแปรชื่อ FormParameters โดยการเปลี่ยนชื่อตัวแปรเหล่านี้

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

ต้นทุนการทำงาน: 76,800 ถู

สามารถดาวน์โหลดเทมเพลตสัญญาจ้างงานได้

ค่าใช้จ่ายในการถ่ายโอนการกำหนดค่าไปยังโหมดความเข้ากันได้กับ 8.3.10 อาจเป็นได้ เพิ่มขึ้น, ถ้า:
การกำหนดค่าใช้แบบฟอร์มที่ได้รับการจัดการ
จำเป็นต้องละทิ้งการใช้กิริยาท่าทาง
จำเป็นต้องรักษาฟังก์ชันการทำงานของการกำหนดค่าใน Linux OS

เราได้เปิดตัวแผงโทรศัพท์รุ่นใหม่สำหรับ 1C

  • รุ่น 1.2.24.10 สำหรับ สามัญการใช้งาน
  • รุ่น 1.4.26.17 สำหรับ จัดการการใช้งาน

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

ประโยชน์ของการใช้ส่วนขยาย

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

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

คุณสมบัติของการฝังแผงโทรศัพท์สำหรับ 1C

คุณลักษณะดังกล่าวพร้อมใช้งานสำหรับส่วนขยายสำหรับแพลตฟอร์มโดยเริ่มจากเวอร์ชัน 8.3.9.1818 - ดังนั้นเพื่อใช้ประโยชน์จากสิ่งนี้ เราได้ปิดการใช้งานโหมดความเข้ากันได้สำหรับส่วนขยายตั้งแต่เวอร์ชัน 8.3.9 ยังไม่รองรับ ดังนั้นจึงจำเป็นต้องปิดการใช้งานโหมดความเข้ากันได้สำหรับการกำหนดค่าหลัก มิฉะนั้นข้อผิดพลาดจะปรากฏขึ้น: " โหมดความเข้ากันได้ของส่วนขยายการกำหนดค่ามีค่ามากกว่าโหมดความเข้ากันได้ของการกำหนดค่าหลัก".

2) เราเพิ่มบทบาทให้กับการกำหนดค่าหลัก MIKO_ซอฟท์โฟนซึ่งเราเพิกถอนสิทธิ์ทั้งหมด

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

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

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

มาสรุปกัน

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

คำแนะนำในการฝังแผงโทรศัพท์สำหรับ 1C โดยใช้กลไกส่วนขยาย

ถามคำถามของคุณผ่านแบบฟอร์มข้อเสนอแนะ

© 2019 MIKO LLC สงวนลิขสิทธิ์

สวัสดีทุกคน!

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

ฉันนำเสนอสองตัวเลือกที่นี่สำหรับการแก้ไขปัญหาเหล่านี้โดยมีข้อแม้โดยส่วนตัวแล้วฉันชอบตัวเลือกที่เกี่ยวข้องกับการเปลี่ยนการกำหนดค่า - วิธีการโบราณแบบเก่ายังคงทำงานได้ตามปกติ และใช่ - นี่คือ IMHO ของฉันและใช้งานได้

ปัญหา #1. ราคางานไม่ได้ระบุไว้ในเอกสาร "การให้บริการ"

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

ถ้า ValueFilled(หน่วยการวัด) จากนั้นเลือกโครงสร้างการเลือกแทรก("หน่วยการวัด", หน่วยการวัด); มิฉะนั้น โครงสร้างการเลือก.Insert("Unit of Measuring", Directories.Units of Measuring.Empty Link()); สิ้นสุดถ้า;

ในความคิดของฉัน มีการใช้วิธีแก้ปัญหาที่ไม่ถูกต้องอย่างยิ่ง: ภายใต้สภาวะปกติ จะต้องไม่มีลิงก์ว่างในมิติ "หน่วยการวัด" ของการลงทะเบียน "ราคาสินค้า" แต่จะมีลิงก์ไปยังองค์ประกอบของไดเรกทอรี "หน่วยการวัด" จากรายละเอียด "หน่วยผลิตภัณฑ์" ของรายการที่เกี่ยวข้อง ลองใช้มันแทน:

ถ้า ValueFilled(หน่วยการวัด) จากนั้นเลือกโครงสร้างการเลือกแทรก("หน่วยการวัด", หน่วยการวัด); มิฉะนั้น ถ้า TypeValue(Nomenclature) = Type("DirectoryLink.Nomenclature") จากนั้น Selection Structure.Insert("Unit of Measuring", Nomenclature.Unit of Goods);

สิ้นสุดถ้า; สิ้นสุดถ้า;
โซลูชั่น:
b) การสร้างส่วนขยาย: เราวางฟังก์ชันที่มีปัญหา "แทน" ของฟังก์ชันดั้งเดิมและเปลี่ยนโค้ด

ปัญหา #2. แบบฟอร์มที่พิมพ์ภายนอกที่มีประเภทการใช้งาน “CallClientMethod” ไม่ทำงานเลย

ขั้นแรก แบบฟอร์มการประมวลผลภายนอกต้องมีชื่อว่า "Form1" ใช่. ถูกต้องแล้ว

ประการที่สอง โมดูลอ็อบเจ็กต์การประมวลผลต้องมีฟังก์ชัน:

FunctionLaunchModeClient() ส่งออกส่งคืนจริง; EndFunction

นี่เป็นสิ่งจำเป็นเช่นกัน

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

โซลูชั่น:
ก) เพิ่มบรรทัด:

หลังบรรทัด

แบบฟอร์ม = GetForm("การประมวลผลภายนอก"+Res+".Form.Form1");

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

b) ขยายสิ่งทั้งหมดนี้

ปัญหาในการใช้ส่วนขยาย

ขณะนี้เรากำลังใช้แพลตฟอร์ม 8.3.10.2505

การกำหนดค่าที่เป็นปัญหามีโหมดความเข้ากันได้ "เวอร์ชัน 8.3.6" ไม่ไร้ประโยชน์แน่นอน

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

นี่คือจุดเริ่มต้นของข้อผิดพลาด:

  • คำสั่ง &Instead of("GetPrice") ซึ่งรองรับโดยแพลตฟอร์ม 8.3.10 ไม่อนุญาตให้ใช้โหมดความเข้ากันได้
  • เมธอด "SetExecuteEventHandlers" จากแพลตฟอร์ม 8.3.6 ทำให้เกิดปฏิกิริยารุนแรงจากแพลตฟอร์ม 8.3.10 เช่น: "ไม่อนุญาตให้แทนที่คุณสมบัติของอ็อบเจ็กต์ที่ยืมมาในส่วนขยายในโหมดความเข้ากันได้ 8.3.8 และต่ำกว่า"

เห็นได้ชัดว่าในการใช้ส่วนขยาย คุณต้องตั้งค่าโหมดความเข้ากันได้ของการกำหนดค่าเป็น "ห้ามใช้" อย่างไรก็ตาม โซลูชันนี้ทำให้เกิดปัญหาเพิ่มเติมจำนวนหนึ่งและสถานการณ์ที่ "แก้ไขไม่ได้" ในการกำหนดค่าของเรา โดยพื้นฐานแล้ว วิธีการจะเริ่มล้มเหลวเมื่อและก่อนที่จะปิดแบบฟอร์มและระบบเอง ได้รับการแก้ไขบางส่วนโดยใช้เทคนิคจากเอกสาร การถ่ายโอนการกำหนดค่าไปยังแพลตฟอร์ม 1C:Enterprise 8.3 โดยไม่มีโหมดความเข้ากันได้กับเวอร์ชัน 8.2 ซึ่งอยู่บนเว็บไซต์ 1C ITS สาเหตุส่วนหนึ่ง - เนื่องจากการเรียกเซิร์ฟเวอร์บางรายการไม่สามารถแปลงเป็นการเรียกของลูกค้าได้ และไม่ใช่ทั้งหมดที่สามารถละทิ้งได้ รายละเอียดอยู่ในส่วนขยาย "Complete the Work" ที่แนบมาด้วย

รายการไฟล์ประกอบด้วยส่วนขยายสามรายการที่แก้ปัญหาเกี่ยวกับแบบฟอร์มที่พิมพ์ภายนอก ราคาและข้อผิดพลาดเมื่อปิดแบบฟอร์มและแอปพลิเคชันในการกำหนดค่า 1C: “BIT: Medical Center Management” รีลีส 2.0.28.3

เพื่อนร่วมงานสวัสดีทุกคน

วันก่อนมีการเปิดตัวการทดสอบ Enterprise Accounting โดยปิดใช้งานโหมดความเข้ากันได้สำหรับแพลตฟอร์ม 8.3.6
ซึ่งหมายความว่าเวอร์ชันนี้ใช้เครื่องมือใหม่ที่เรนเดอร์แบบฟอร์มในรูปแบบใหม่
คุณสามารถอ่านเกี่ยวกับเรื่องนี้ได้ใน Through the Looking Glass

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

บันทึก:


1. โอนส่วนขยายไปยังแพลตฟอร์มใหม่

เมื่อต้องการทำเช่นนี้ เปลี่ยนโหมดความเข้ากันได้ของส่วนขยายเป็นโหมดความเข้ากันได้ของการกำหนดค่า
เวอร์ชันการบัญชีองค์กรมีคุณสมบัติดังต่อไปนี้:

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


2. แก้ไขปัญหาการเชื่อมต่อ

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

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

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



3. อัพเดตแบบฟอร์มในส่วนขยาย

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

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


4. เราปรับรูปแบบตามกฎของเครื่องยนต์ใหม่

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

ฉันคิดขั้นตอนต่อไปนี้:

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

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

ก่อนอื่น คุณต้องทราบถึงข้อจำกัดของส่วนขยายด้วย

ข้อจำกัดเกี่ยวกับวัตถุที่สร้างขึ้น

ในขณะนี้คุณสามารถสร้าง:

  • ไดเรกทอรี
  • เอกสาร
  • การลงทะเบียนข้อมูล
  • แผนการแลกเปลี่ยน

คุณสามารถเพิ่มรายละเอียดไปที่:

  • ไดเรกทอรี
  • เอกสาร

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

ฟังก์ชันการทำงานของส่วนขยายขึ้นอยู่กับโหมดความเข้ากันได้ของการกำหนดค่าที่ใช้ส่วนขยาย

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

โหมดความเข้ากันได้ 8.3.10- คุณสามารถเปลี่ยนโมดูลทั่วไป วัตถุและโมดูลผู้จัดการ บทบาท ใช้คำสั่ง "Before", "After", "Instead" สำหรับโมดูลใดก็ได้

โหมดความเข้ากันได้ "อย่าใช้"- คุณสามารถใช้ฟังก์ชันทั้งหมดของส่วนขยายได้ รวมถึงการเพิ่มออบเจ็กต์ใหม่

ในขณะนี้ UT 11.3 มาตรฐานมีโหมดความเข้ากันได้ 8.3.8 ใน UT 11.4 โหมดความเข้ากันได้คือ 8.3.10 ตัวอย่างเช่น สำหรับ UT ฟังก์ชันส่วนขยายส่วนใหญ่จะไม่พร้อมใช้งาน รวมถึงการสร้างออบเจ็กต์ข้อมูลเมตาด้วย

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

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


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


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

ข้อสรุป

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