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