มันกลับกลายเป็นว่ามีความเกี่ยวข้องมาก :)
โอเค มาทำให้สุดสัปดาห์นี้มีประโยชน์กันเถอะ
วันนี้เป็นอีกหัวข้อหนึ่งของ "การดำเนินการประยุกต์ของ 1C":
กลไกการขยายในแพลตฟอร์ม 8.3.6
เรากำลังพูดถึงเรื่องอะไร?
ในแพลตฟอร์ม 8.3.6 มีการนำกลไกใหม่มาใช้ - กลไกการขยายที่อำนวยความสะดวกในการปรับโซลูชันแอปพลิเคชันให้เหมาะกับลูกค้าเฉพาะราย.
เมื่อใช้ส่วนขยาย การปรับเปลี่ยนการกำหนดค่าจะดำเนินการในเอนทิตีใหม่– การขยายการกำหนดค่า:
- ส่วนขยายก็ถือเป็นการกำหนดค่าเช่นกัน แต่มีข้อจำกัดบางประการ
- ส่วนขยายที่เตรียมไว้สามารถเชื่อมต่อกับฐานข้อมูลการทำงานของลูกค้าในโหมดผู้ใช้
- ที่สำคัญที่สุด - ไม่จำเป็นต้องลบการกำหนดค่าที่กำลังแก้ไขออกจากการสนับสนุน, เช่น. มันยังคงเป็นเรื่องปกติโดยไม่มีการเปลี่ยนแปลง
- กำลังอัปเดตการกำหนดค่าที่แก้ไข ผู้ใช้สามารถดำเนินการได้โดยอัตโนมัติ
ดังนั้นลูกค้าจึงได้รับผล ความเป็นไปได้ของการปรับปรุงการกำหนดค่าและในเวลาเดียวกัน - อัพเดตอัตโนมัติอย่างง่าย.
เพื่อให้คุณสามารถเข้าใจรายละเอียดได้มากขึ้น เรากำลังเผยแพร่วิดีโอและ PDF เพิ่มเติมหลายรายการเกี่ยวกับส่วนขยาย
เอาล่ะ:
วัตถุประสงค์ของส่วนขยายการกำหนดค่า
วิดีโอกล่าวถึงกลไกส่วนขยายการกำหนดค่าใหม่ที่ปรากฏในแพลตฟอร์ม 8.3.6 มีจุดประสงค์เพื่อการปรับแต่งและปรับใช้โซลูชันระหว่างการใช้งาน ในกรณีนี้ ลูกค้าจะได้รับการอัปเดตการกำหนดค่าอัตโนมัติแบบง่ายๆ และความสามารถในการแก้ไข
วัตถุที่สามารถแก้ไขได้ในส่วนขยาย
วิดีโอนี้กล่าวถึงข้อจำกัดในปัจจุบันของกลไกส่วนขยาย ในปัจจุบัน สามารถใช้ออบเจ็กต์ในส่วนขยายได้จำนวนจำกัดเท่านั้น
การทำงานกับส่วนขยายในตัวกำหนดค่า
วิดีโอนี้กล่าวถึงการพัฒนาส่วนขยายในตัวกำหนดค่า ส่วนขยายคือการกำหนดค่า แม้ว่าจะค่อนข้างจำกัดก็ตาม การทำงานกับส่วนขยายจะดำเนินการในแผนผังออบเจ็กต์ข้อมูลเมตาด้วย นามสกุลผลลัพธ์สามารถบันทึกลงในไฟล์บนดิสก์ได้
ยืมวัตถุ
วิดีโอนี้กล่าวถึงการยืมออบเจ็กต์การกำหนดค่าพื้นฐานไปเป็นส่วนขยาย นี่คือกลไกหลักที่จำเป็นในการพัฒนาส่วนขยายนั่นเอง นอกจากนี้ยังพูดถึงคุณสมบัติควบคุมซึ่งค่าจะถูกตรวจสอบเมื่อเชื่อมต่อส่วนขยาย
การสร้างวัตถุของคุณเองในส่วนขยายการกำหนดค่า
วิดีโอนี้จะอธิบายวิธีที่คุณสามารถสร้างออบเจ็กต์ของคุณเองในส่วนขยาย รายการออบเจ็กต์ดังกล่าวยังมีจำกัด ได้แก่ รายงาน การประมวลผล และระบบย่อย การพัฒนาวัตถุดังกล่าวในส่วนขยายนั้นดำเนินการโดยการเปรียบเทียบกับการกำหนดค่าหลัก
การทำงานกับส่วนขยายในโหมดผู้ใช้
วิดีโอนี้อธิบายวิธีเชื่อมต่อส่วนขยายที่เตรียมไว้กับฐานข้อมูลการทำงานของลูกค้า ในกรณีนี้ สามารถทำการเชื่อมต่อได้จากโหมดผู้ใช้โดยไม่ต้องเข้าถึงตัวกำหนดค่า
การทำงานกับแบบฟอร์มที่ได้รับการจัดการในส่วนขยายการกำหนดค่า
วิดีโอนี้จะกล่าวถึงวิธีการทำงานกับแบบฟอร์มที่ได้รับการจัดการในส่วนขยาย โปรดทราบว่าแบบฟอร์มต้นฉบับไม่ซิงค์กับส่วนขยายโดยอัตโนมัติ อธิบายว่าระบบสร้างลักษณะที่ปรากฏของฟอร์มที่เป็นผลลัพธ์เมื่อมีส่วนขยายได้อย่างไร
โมดูลฟอร์มที่ได้รับการจัดการและตัวจัดการเหตุการณ์ในส่วนขยายการกำหนดค่า
วิดีโอนี้ครอบคลุมวิธีการทำงานกับตัวจัดการเหตุการณ์ในแบบฟอร์มส่วนขยายการกำหนดค่าที่ได้รับการจัดการ
ลำดับการดำเนินการของตัวจัดการเหตุการณ์ในการกำหนดค่าหลักและในส่วนขยายจะแสดงขึ้น
ใช้งานในเวอร์ชัน 8.3.9.1818
กล่าวโดยสรุป ขณะนี้ด้วยความช่วยเหลือของส่วนขยาย คุณสามารถเปลี่ยนโมดูลการกำหนดค่ามาตรฐานและเพิ่มโมดูลของคุณเองได้
และในรายละเอียดเพิ่มเติม คุณสามารถเปลี่ยนโมดูลใดก็ได้ ยกเว้นโมดูลที่มีรูปแบบธรรมดา:
- โมดูลทั่วไป
- โมดูลอ็อบเจ็กต์ (โมดูลอ็อบเจ็กต์ โมดูลตัวจัดการ ฯลฯ) สำหรับอ็อบเจ็กต์ทุกประเภท
- โมดูลเซสชั่น;
- โมดูลแอปพลิเคชันที่ได้รับการจัดการ
- โมดูลการเชื่อมต่อภายนอก
- โมดูลคำสั่ง
- โมดูลแบบฟอร์ม
- ฯลฯ
ควรสังเกตว่าคุณสามารถเปลี่ยนโมดูลฟอร์มที่ได้รับการจัดการมาก่อนได้ แต่ตอนนี้เราได้ทำการเปลี่ยนแปลงบางอย่างกับกระบวนการนี้แล้ว
การสกัดกั้น
คุณสามารถสกัดกั้นวิธีการกำหนดค่ามาตรฐานใดๆ กำหนดเฟรมด้วยวิธีของคุณเอง หรือแม้แต่แทนที่ทั้งหมดก็ได้ผู้ดำเนินการเอง
คุณสามารถเพิ่มตัวจัดการเหตุการณ์การกำหนดค่าที่คุณกำหนดเองได้ ตัวอย่างเช่น หากไม่ได้กำหนดไว้ในการกำหนดค่าทั่วไปโมดูลของตัวเอง
คุณสามารถสร้างโมดูลทั่วไปของคุณเองได้ในส่วนขยายเรียก
และสุดท้าย คุณสามารถเรียกวิธีการกำหนดค่ามาตรฐานใดๆ ในส่วนขยายของคุณได้
เมื่อคุณยืมและขยายโมดูลการกำหนดค่ามาตรฐาน โมดูลส่วนขยายของคุณจะอยู่ในเนมสเปซเดียวกันกับโมดูลมาตรฐาน ดังนั้น ขณะอยู่ในโมดูลส่วนขยาย คุณสามารถเข้าถึงตัวแปรและวิธีการของโมดูลทั่วไปได้โดยตรง
หากคุณอยู่ในโมดูลอื่นที่มีอยู่ในส่วนขยาย ตัวแปรที่ส่งออกและวิธีการของโมดูลส่วนขยายจะพร้อมใช้งานสำหรับคุณ เนื่องจากมีการเพิ่มลงในบริบทสาธารณะที่เป็นผลลัพธ์ของโมดูลประเภท
วิธีการสกัดกั้นการโทร
เป้าหมายของการสกัดกั้นการโทร ในกรณีส่วนใหญ่ คือการล้อมรอบการเรียกเมธอดทั่วไปด้วยการดำเนินการก่อนและ/หรือหลังการดำเนินการบางอย่าง ในเวลาเดียวกัน เราไม่ได้ยกเว้นตัวเลือกในการแทนที่การเรียกใช้วิธีมาตรฐานโดยสิ้นเชิง และนำความเป็นไปได้นี้ไปใช้
คุณอธิบายความจำเป็นในการสกัดกั้นวิธีมาตรฐานอย่างครบถ้วนในโมดูลส่วนขยาย ในการทำเช่นนี้ เราได้แนะนำองค์ประกอบโครงสร้างใหม่ในภาษาในตัว - คำอธิบายประกอบ ด้วยความช่วยเหลือของคำอธิบายประกอบที่อยู่ก่อนคำจำกัดความของวิธีการ คุณสามารถระบุวิธีการทั่วไปที่ขั้นตอน/ฟังก์ชันสกัดกั้น และวิธีที่แน่นอน ตัวอย่างเช่น:
คำอธิบายประกอบ &Before("Procedure1") หมายความว่ากระบวนการทั่วไปที่ชื่อ Procedure1 ถูกดักจับ ชื่อคำอธิบายประกอบ Before หมายความว่าขั้นตอน interceptor ของคุณ Ext_Proc1() จะถูกดำเนินการก่อน จากนั้นจึงดำเนินการ Procedure1() ทั่วไป
บทคัดย่อ&ก่อน
คำอธิบายประกอบที่มีชื่อนี้หมายความว่า interceptor ของคุณจะถูกดำเนินการก่อนที่วิธีการทั่วไปจะเริ่มดำเนินการ
ในแผนภาพ โมดูลมาตรฐานและโมดูลส่วนขยายจะแสดงเป็นรูปสี่เหลี่ยมผืนผ้า และลูกศรแสดงลำดับการดำเนินการของภาษาที่มีอยู่แล้วภายใน
นามธรรมและหลัง
คำอธิบายประกอบนี้หมายความว่า interceptor ของคุณจะถูกดำเนินการหลังจากดำเนินการวิธีการทั่วไปแล้ว
บทคัดย่อ&แทน
คำอธิบายประกอบนี้ใช้ความเป็นไปได้ของการทับซ้อนกับวิธีการมาตรฐานอย่างสมบูรณ์ นั่นคือวิธีการมาตรฐานจะไม่ถูกดำเนินการเลย มีเพียงผู้สกัดกั้นของคุณเท่านั้นที่จะถูกประหารชีวิต
สำหรับขั้นตอนมาตรฐานเดียวกัน คุณสามารถติดตั้งชุดดักรับแบบใดแบบหนึ่งต่อไปนี้ในส่วนขยายของคุณ:
- &ก่อน;
- &หลังจาก;
- &แทน;
- &ก่อนและ&หลัง
การรวมกันครั้งสุดท้ายของตัวสกัดกั้น (&ก่อนและหลัง) จะถูกดำเนินการดังนี้:
หากคุณกำลังดักจับฟังก์ชันทั่วไปแทนที่จะเป็นโพรซีเดอร์ คุณสามารถใช้ได้เพียง & แทนดักจับเท่านั้น
การเรียกเมธอดที่ถูกแทนที่โดย &Instead of
มันกลับกลายเป็นความไม่ยุติธรรมบางอย่าง คุณสามารถปิดบังหรือใส่กรอบขั้นตอนได้ และฟังก์ชันนี้จะต้องถูกบล็อกโดยสมบูรณ์เท่านั้น
เพื่อกำจัดความอยุติธรรมนี้ เราได้นำวิธีการใหม่มาใช้ในภาษาในตัว - ContinueCall() หากคุณเรียกใช้เมธอดนี้ภายในฟังก์ชัน interceptor ฟังก์ชันที่คุณแทนที่จะถูกดำเนินการ หลังจากนั้นการเรียกใช้โค้ดจะกลับไปที่ interceptor ของคุณ:
ในภาษาฝังตัว ฟังก์ชัน interceptor อาจมีลักษณะดังนี้:
ดังนั้นฟังก์ชันดักจับของคุณจึงแบ่งออกเป็นสองส่วน ส่วนที่ดำเนินการก่อนการดำเนินการของฟังก์ชันมาตรฐาน และส่วนที่ดำเนินการหลังฟังก์ชันมาตรฐาน
คุณสามารถใช้เมธอด ContinueCall() ได้ ไม่เพียงแต่เมื่อฟังก์ชันทับซ้อนกันเท่านั้น แต่ยังรวมถึงขั้นตอนที่ทับซ้อนกันด้วย ในกรณีนี้ผลลัพธ์ของการใช้จะมีความหมายเหมือนกับเมื่อใช้ตัวดักคู่ &Before และ &After ข้อแตกต่างเพียงอย่างเดียวคือในกรณีนี้ส่วน "ก่อน" และส่วน "หลัง" ของคุณจะอยู่ในบริบทเดียวกัน นี่อาจสะดวกในบางสถานการณ์ ในภาษาฝังตัว ขั้นตอนดักดังกล่าวอาจมีลักษณะเช่นนี้:
อันไหนดีกว่า &ก่อน &หลัง หรือ &แทน
เมื่อคุณสกัดกั้นวิธีการกำหนดค่าทั่วไป คุณควรคำนึงถึงสองสิ่งเสมอ:
- หลังจากที่คุณเขียนส่วนขยายแล้ว การกำหนดค่าทั่วไปจะเปลี่ยนไป
- เป้าหมายของคุณคือการเพิ่มฟังก์ชันการทำงานของคุณเอง และไม่ละทิ้งสิ่งที่เป็นและสิ่งที่จะเป็นในการกำหนดค่ามาตรฐานตลอดไป
จากมุมมองนี้ สิ่งที่ดีกว่ามากที่สุดคือการใช้ตัวดัก &Before และ &After เนื่องจากวิธีการมาตรฐานที่ถูกสกัดกั้นจะถูกดำเนินการเสมอโดยไม่มีเงื่อนไขใดๆ และหากนักพัฒนาการกำหนดค่ามาตรฐานทำการเปลี่ยนแปลงวิธีการนี้ในภายหลัง การเปลี่ยนแปลงเหล่านี้จะได้ผลอย่างแน่นอนเมื่อใช้ส่วนขยายของคุณ
นอกจากนี้ยังเป็นที่ยอมรับอย่างสมบูรณ์ในการใช้เมธอด &Instead of interceptor และ ContinueCall() อย่างไรก็ตาม ที่นี่คุณมีโอกาสและอยากเรียกใช้วิธีมาตรฐานซึ่งไม่เสมอไป แต่ขึ้นอยู่กับเงื่อนไขบางประการของคุณเอง คุณต้องดำเนินการนี้อย่างระมัดระวัง และจำไว้ว่าทันทีที่คุณปฏิเสธที่จะเรียกใช้เมธอดทั่วไป คุณปฏิเสธที่จะเรียกไม่เพียงแต่เมธอดที่อยู่ในการกำหนดค่าในขณะนี้เท่านั้น แต่ยังรวมไปถึงตัวแปรทั้งหมดที่จะปรากฏในอนาคตด้วย และในอนาคตอาจมีการเปลี่ยนแปลงที่สำคัญและมีประโยชน์ปรากฏขึ้น
และสุดท้าย ตัวเลือกที่ "แย่" ที่สุดคือการแทนที่วิธีมาตรฐานโดยสมบูรณ์ด้วย &Instead ของ Interceptor ในกรณีนี้ ตัวจัดการทั่วไปจะไม่ถูกดำเนินการอย่างแน่นอนทั้งในปัจจุบันหรือในอนาคต นั่นคือคุณรับผิดชอบอย่างเต็มที่ต่อการดำเนินการของการกำหนดค่าเวอร์ชันในอนาคตกับตัวคุณเองในส่วนขยายของคุณ มีสถานการณ์ที่จำเป็นต้องมีความคุ้มครองที่สมบูรณ์ แต่เราขอแนะนำให้คุณใช้อย่างระมัดระวังและรอบคอบ
ลำดับการโทรเมื่อดักฟังวิธีการ
ในที่นี้ก่อนจะเล่าก็ต้องชี้แจงสักหน่อย สิ่งสำคัญที่อาจกล่าวได้ว่าลักษณะ "เชิงอุดมคติ" ของส่วนขยายคือความเป็นอิสระ นั่นคือส่วนขยายควรได้รับการออกแบบเพื่อไม่ให้พึ่งพาซึ่งกันและกัน
แต่เมื่อแอปพลิเคชันทำงานตามธรรมชาติและชัดเจน มีการเรียกส่วนขยายที่เชื่อมต่ออยู่เป็นลำดับ ลำดับนี้เป็นที่รู้จักแล้วและตอนนี้เราจะบอกคุณเกี่ยวกับเรื่องนี้ แต่เราจะไม่บอกคุณเพื่อให้คุณสามารถสร้างส่วนขยายที่พึ่งพาซึ่งกันและกันหรือส่วนขยายที่แสดงถึงลำดับการเชื่อมต่อที่กำหนดไว้อย่างเคร่งครัดเพียงลำดับเดียว และเพื่อให้คุณสามารถวิเคราะห์ปัญหาที่เกิดขึ้นและแก้ไขโค้ดโปรแกรมได้
เมื่อคุณเชื่อมต่อส่วนขยายกับการกำหนดค่าทั่วไป จะเกิด "เค้กหลายชั้น" ที่ฐานของวงกลมนี้คือการกำหนดค่าทั่วไป และที่ด้านบนคือส่วนขยายที่เชื่อมต่อล่าสุด
ทั้งในตัวกำหนดค่าและในโหมด 1C: Enterprise ส่วนขยายที่เชื่อมต่อล่าสุดจะอยู่ในรายการสุดท้าย
ดังนั้นในตัวอย่างนี้ รายการทั่วไปอยู่ที่ด้านล่าง Extension2 อยู่ที่ด้านบน และ Extension1 อยู่ระหว่างนั้น ส่วนขยายที่ตามมาแต่ละรายการจะดักจับ (ขยาย) สิ่งที่อยู่ข้างใต้
เมื่อเฟรมเวิร์กพบกับตัวดักที่กำหนดไว้ในส่วนขยาย กระบวนการดำเนินการภาษาในตัวจะดำเนินการจากบนลงล่างของวงกลมนั้น ตามคำอธิบายประกอบที่ตัวสกัดกั้นมี ถึงระดับที่เขาสามารถเข้าถึงได้ หลังจากนั้นจะกลับสู่ด้านบน หากมีตัวดัก และกลับสู่การกำหนดค่ามาตรฐาน
ตัวอย่างที่ 1
ตัวอย่างเช่น ถ้าวิธีการทั่วไปเดียวกันถูกดักจับ (เฟรม) ในสองส่วนขยาย ดังนั้นลำดับของการเรียกตัวจัดการจะเป็นดังนี้:
- Interceptor จาก Extension2 จะถูกเรียกก่อนเพราะอยู่ด้านบน นี่จะเป็น &Before interceptor เนื่องจากมีคำอธิบายประกอบนี้
- interceptor จาก Extension1 จะถูกเรียกเพราะมันอยู่ถัดไปในวงกลม มันจะเป็น &Before อีกครั้งเพราะมีคำอธิบายประกอบนี้
- วิธีการทั่วไปจะถูกเรียกเนื่องจากไม่มีตัวดักอีกต่อไปเพื่อป้องกันไม่ให้ดำเนินการ
- จากนั้น ในลำดับย้อนกลับของพาย ระบบจะเรียก &After interceptor จาก Extension1 และ &After interceptor จาก Extension2
จากตัวอย่างนี้ คุณสามารถเข้าใจคุณลักษณะต่อไปนี้ได้อย่างชัดเจน: หากมีข้อยกเว้นที่ไม่สามารถจัดการได้เกิดขึ้นในหนึ่งใน interceptor ห่วงโซ่ทั้งหมดจะถูกขัดจังหวะ และข้อยกเว้นยังคงแพร่กระจายต่อไป
ตัวอย่างที่ 2
หากตัวดักฟังใช้เมธอด ContinueCall() ก็จะใช้หลักการวงกลมเดียวกัน
- Interceptor จาก Extension3 จะถูกเรียกก่อนเพราะอยู่ด้านบน มันจะเป็นตัวสกัดกั้น &แทน เนื่องจากมีคำอธิบายประกอบนี้
- เมื่อคุณพยายามเรียกใช้วิธีมาตรฐาน “พาย” ที่เหลือจะถูกวิเคราะห์ จะมีการวิเคราะห์ในลักษณะเดียวกับที่อธิบายไว้ในตัวอย่างก่อนหน้านี้ทุกประการ
- ผลที่ได้คือ การเรียกใช้โค้ดจะกลับไปที่ &แทนที่จะเป็น interceptor และเมื่อเสร็จสิ้น จะเป็นการกำหนดค่ามาตรฐาน
ตัวอย่างที่ 3
จุดสำคัญที่ต้องทำความเข้าใจคือข้อเท็จจริงที่ว่าเมื่อแทนที่การใช้คำอธิบายประกอบ &Instead ที่จริงแล้วไม่เพียงแต่การเรียกไปยังเมธอดหลักเท่านั้นที่ถูกแทนที่ แต่ยังรวมถึงตัวดักดักที่อยู่ด้านล่างใน "พาย" ด้วย
ตัวอย่างนี้จะเรียกใช้งานตัวสกัดกั้น &แทนที่ Extension2 เท่านั้น เพราะมันครอบคลุมวิธีการมาตรฐาน นั่นคือ “พาย” ทั้งหมดที่อยู่ข้างใต้
ตัวอย่างที่ 4
อันที่จริงนี่คือการเปลี่ยนแปลงในธีมของตัวอย่างที่สอง แต่เมื่ออยู่ภายใต้ส่วนขยายด้านบน จะมีส่วนขยายที่ "ผลักดัน" ลงการเรียกไปยังขั้นตอนมาตรฐานด้วย
โดยพื้นฐานแล้วมันแสดงให้เห็นอีกครั้งถึงความจริงที่ว่าการเรียกใช้วิธีการทั่วไปนั้นใช้กับ "พาย" ทั้งหมดภายใต้ส่วนขยาย นั่นคือเหตุผลว่าทำไมหลังจากเรียก interceptor จาก Extension2 แล้ว interceptor จาก Extension1 จะถูกเรียก เพราะใน "พาย" ที่เหลือ สิ่งนี้จะแทนที่การเรียกไปยังวิธีมาตรฐานที่คุณต้องการ "เข้าถึง" Extension2
สกัดกั้นตัวจัดการเหตุการณ์และตัวจัดการของตัวเองในโมดูลอ็อบเจ็กต์ ผู้จัดการ ฯลฯ
การสกัดกั้นวิธีการใดๆ ในโมดูลเหล่านี้จะกระทำในลักษณะเดียวกับที่อธิบายไว้ตอนต้นทุกประการ อย่างไรก็ตาม หากขั้นตอนที่ถูกดักจับคือตัวจัดการเหตุการณ์ ก็มีข้อควรพิจารณาบางประการ คุณลักษณะเหล่านี้เกิดจากการที่ในโมดูลเหล่านี้ตัวจัดการเหตุการณ์ทั้งหมดมีชื่อคงที่
ขั้นแรก ชื่อของวิธีการสกัดกั้นคือชื่อของเหตุการณ์ ตัวอย่างเช่น BeforeRecording:
ประการที่สอง ไม่จำเป็นต้องมีผู้ดูแลมาตรฐานสำหรับกิจกรรมนี้ หากไม่มีตัวจัดการทั่วไป ระบบจะเรียกตัวสกัดกั้นของคุณ ด้วยคุณสมบัตินี้ คุณสามารถกำหนดตัวจัดการของคุณเองให้กับเหตุการณ์ที่ไม่ได้ประมวลผลในการกำหนดค่ามาตรฐานได้
เนื่องจากตัวจัดการเหตุการณ์ในโมดูลออบเจ็กต์มีชื่อคงที่และทราบรายการคำอธิบายประกอบ เราจึงได้ปรับใช้ "บริการ" เล็กๆ น้อยๆ ให้กับคุณ เมื่อคุณสร้างตัวจัดการในส่วนขยาย กล่องโต้ตอบจะเปิดขึ้นซึ่งคุณสามารถเลือกประเภทการโทรได้ หลังจากนั้นจะมีการสร้างขั้นตอนดักจับเทมเพลตในโมดูล
สกัดกั้นตัวจัดการเหตุการณ์และตัวจัดการแบบกำหนดเองในโมดูลแบบฟอร์ม
การสกัดกั้นวิธีการใดๆ ในโมดูลเหล่านี้ยังดำเนินการในลักษณะเดียวกับที่อธิบายไว้ตอนต้นทุกประการ อย่างไรก็ตาม ยังมีคุณลักษณะที่เกี่ยวข้องกับการสกัดกั้นตัวจัดการเหตุการณ์อีกด้วย คุณลักษณะเหล่านี้เกิดจากการที่ในโมดูลเหล่านี้ ตัวจัดการเหตุการณ์ทั้งหมดสามารถกำหนดได้และไม่มีชื่อคงที่ ดังที่คุณคงทราบแล้วว่า เพื่อให้แพลตฟอร์มเข้าใจวิธีการประมวลผลเหตุการณ์เฉพาะ ในตัวกำหนดค่า ในแผงคุณสมบัติ จะต้องมีการเชื่อมโยงขั้นตอนเฉพาะกับเหตุการณ์เฉพาะ
ด้วยเหตุนี้ และเฉพาะเมื่อสกัดกั้นตัวจัดการเหตุการณ์บนแบบฟอร์มเท่านั้น คุณจึงจำเป็นต้องใช้พาเล็ตคุณสมบัติแทนคำอธิบายประกอบ แม้ว่าคุณจะสามารถสกัดกั้นวิธีการโมดูลอื่นๆ ที่ไม่ใช่ตัวจัดการเหตุการณ์ได้โดยใช้คำอธิบายประกอบ
ภายนอก ตัวดักเหตุการณ์ในโมดูลฟอร์มมีลักษณะดังนี้:
นั่นคือไม่ได้ใช้คำอธิบายประกอบ และประเภทตัวสกัดกั้นจะถูกระบุในแผงคุณสมบัติ ทำได้ค่อนข้างง่าย เมื่อคุณสร้างตัวจัดการในส่วนขยาย การคลิกปุ่ม "แว่นขยาย" จะเป็นการเปิดกล่องโต้ตอบ นอกเหนือจากบริบทแล้ว ยังช่วยให้คุณระบุประเภทของตัวสกัดกั้น (ก่อน หลัง หรือแทน)
หลังจากสร้างเทมเพลตขั้นตอนแล้ว ไอคอนจะปรากฏในแผงคุณสมบัติ ถัดจากชื่อตัวสกัดกั้น ซึ่งแสดงประเภทการสกัดกั้น
หากคุณแทนที่ตัวจัดการทั่วไป (แทน) มันจะเป็นเพียงจุด
หากคุณกำลังสร้างตัวสกัดกั้นก่อนหรือหลัง มันจะเป็นจุดถัดจากแถบแนวตั้ง ตำแหน่งของจุดก่อนหรือหลังเส้น บ่งบอกถึงประเภทของตัวสกัดกั้น นอกจากนี้ ฟิลด์ที่สอง (ว่าง) จะปรากฏในแผงคุณสมบัติถัดจากเหตุการณ์นี้ ด้วยความช่วยเหลือนี้ คุณสามารถระบุตัวดักจับที่จับคู่ได้ หากจำเป็นต้องจัดเฟรมตัวจัดการทั่วไปด้วยคู่ก่อน - หลัง
ตัวดักเหตุการณ์ที่กำหนดในลักษณะนี้จะทำงานได้แม้ว่าจะไม่มีตัวจัดการมาตรฐานสำหรับเหตุการณ์นี้ก็ตาม นี่คือวิธีที่คุณสามารถกำหนดตัวจัดการของคุณเองให้กับเหตุการณ์แบบฟอร์มที่ไม่ได้ประมวลผลในการกำหนดค่ามาตรฐาน
เมื่อพูดถึงโมดูลแบบฟอร์ม เราจำเป็นต้องจดบันทึกเล็กๆ น้อยๆ อีกอันหนึ่ง เราได้เปลี่ยนแปลงพฤติกรรมของโมดูลที่ขยายโมดูลฟอร์มที่มีอยู่ก่อนหน้านี้เล็กน้อย เพื่อให้สอดคล้องกับพฤติกรรมของโมดูลอื่นและรับประกันความเสถียรของโค้ดโปรแกรม
ก่อนหน้านี้ โมดูลทั้งหมดที่ขยายโมดูลฟอร์มและโมดูลฟอร์มเอง อยู่ในเนมสเปซเดียวกัน ดังนั้นจึงเป็นไปได้ที่จะโทรจากส่วนขยายระดับบนสุดไม่เพียงแต่วิธีการของการกำหนดค่ามาตรฐาน แต่ยังรวมถึงวิธีการของส่วนขยายพื้นฐานด้วย ขณะนี้เราได้ปิดช่องโหว่นี้แล้ว และไม่มีวิธีการของส่วนขยายที่สำคัญอีกต่อไป ตอนนี้คุณสามารถเข้าถึงได้เฉพาะวิธีการที่มีอยู่ในโมดูลทั่วไปที่คุณกำลังขยายเท่านั้น
โมดูลทั่วไป
ในส่วนขยาย คุณสามารถสร้างโมดูลทั่วไปของคุณเองได้ มีเพียงสองข้อจำกัด:
- ไม่จำเป็นต้องเป็นฝั่งเซิร์ฟเวอร์ทั่วโลก
- พวกเขาไม่ควรได้รับสิทธิพิเศษ
เมื่อคุณขยายโมดูลการกำหนดค่าทั่วไปทั่วไป จะมีข้อจำกัดที่คล้ายกัน:
- คุณไม่สามารถยืมโมดูลเซิร์ฟเวอร์ทั่วโลกได้
- รหัสจากส่วนขยายของคุณจะถูกดำเนินการในโหมดที่ไม่มีสิทธิพิเศษเท่านั้น (เว้นแต่จะได้รับอนุญาตเป็นอย่างอื่นในโปรไฟล์ความปลอดภัย)
การดำเนินการยืมโมดูลเซิร์ฟเวอร์ส่วนกลางนั้นไม่ได้ถูกห้ามในแผนผังการกำหนดค่า แต่ในขั้นตอนของการอัพเดตการกำหนดค่าฐานข้อมูล คุณจะได้รับข้อผิดพลาดและการอัพเดตจะไม่ดำเนินการ
วิธีการเซิร์ฟเวอร์ไม่ได้ขยายออกไปเสมอไป
การที่ส่วนขยายของคุณเชื่อมต่อกับการกำหนดค่ามาตรฐานได้สำเร็จไม่ได้หมายความว่า Interceptors ทั้งหมดที่อยู่ในส่วนขยายของคุณจะถูกนำไปใช้และเริ่มดำเนินการ มีคุณสมบัติที่เกี่ยวข้องกับความปลอดภัยบางประการที่นี่
หากโซลูชันแอปพลิเคชันทำงานในเวอร์ชันไฟล์หรือในเวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์โดยไม่มีโปรไฟล์ความปลอดภัย ดังนั้นเมื่อเชื่อมต่อส่วนขยายของคุณ:
- ในโหมดการดำเนินการปกติของภาษาในตัว วิธีการทั้งหมดของโซลูชันมาตรฐาน ทั้งไคลเอนต์และเซิร์ฟเวอร์ จะถูกขยาย
- ในโหมดการดำเนินการที่ปลอดภัยของภาษาในตัว เฉพาะวิธีการไคลเอ็นต์และตัวประมวลผลฟอร์มเซิร์ฟเวอร์เท่านั้นที่จะขยายออกไป ส่วนขยายจะไม่ถูกนำไปใช้กับขั้นตอน/ฟังก์ชันเซิร์ฟเวอร์อื่นๆ
เมื่อโซลูชันแอปพลิเคชันทำงานในเวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์และมีการระบุโปรไฟล์ความปลอดภัยเฉพาะเมื่อเชื่อมต่อส่วนขยาย หรือมีการกำหนดโปรไฟล์ปกติและโหมดปลอดภัยให้กับฐานข้อมูล จากนั้นส่วน "เซิร์ฟเวอร์" ของส่วนขยายจะถูกนำมาใช้ตามที่ระบุไว้ ในโปรไฟล์ที่เกี่ยวข้อง
สิ่งที่ง่ายที่สุดคือช่องทำเครื่องหมายเพื่อขยายโมดูลทั้งหมดในกลุ่มที่อนุญาตการเข้าถึงแบบเต็ม “ในคราวเดียว” ช่วยให้สามารถขยายบริบทของเซิร์ฟเวอร์ได้
นอกจากนี้ยังมีการตั้งค่าที่แม่นยำยิ่งขึ้นโดยใช้โมดูลที่ใช้งานได้สำหรับส่วนขยายและโมดูลที่ไม่สามารถใช้ได้สำหรับฟิลด์ส่วนขยาย เราถือว่าคุณจะใช้สิ่งเหล่านี้ดังนี้:
- หากคุณไม่อนุญาตให้เข้าถึงส่วนขยายโดยสมบูรณ์ ดังนั้นในฟิลด์โมดูลที่พร้อมใช้งานสำหรับส่วนขยาย คุณจะแสดงรายการชื่อของโมดูลเหล่านั้นที่ส่วนขยายของบริบทเซิร์ฟเวอร์เป็นที่ยอมรับได้และไม่เป็นอันตราย
- หากคุณอนุญาตให้เข้าถึงส่วนขยายได้อย่างสมบูรณ์ ในฟิลด์โมดูลที่ไม่พร้อมใช้งานสำหรับส่วนขยาย คุณจะแสดงรายการโมดูลบางส่วนที่คุณยังไม่จำเป็นต้องอนุญาตส่วนขยายบริบทของเซิร์ฟเวอร์
วันนี้เราต้องการแจ้งให้คุณทราบเกี่ยวกับการใช้รายงานและการประมวลผลเพิ่มเติม และโดยเฉพาะส่วนขยายการกำหนดค่าในรูปแบบบริการ เทคโนโลยีไม่หยุดนิ่ง การให้บริการฐานข้อมูล 1C ในระบบคลาวด์กำลังกลายเป็นบริการที่น่าสนใจมากขึ้น สิ่งที่คุณต้องรู้เพื่อใช้งานฟังก์ชันที่จำเป็นสำหรับบริษัทของคุณในฐานข้อมูลที่เช่า และกระบวนการนี้มีลักษณะอย่างไรจากฝั่งผู้ให้บริการ คุณสามารถดูข้อมูลโดยละเอียดได้
รายงานภายนอกและการประมวลผลคืออะไร
การรักษา 1C นั้นแตกต่างกัน แต่ในกรณีใด ๆ พวกเขาจะขยายการทำงานของการกำหนดค่าและช่วยให้คุณเข้าถึงข้อมูลที่เก็บไว้ในฐานข้อมูลได้อย่างรวดเร็วโดยไม่ต้องเปลี่ยนการกำหนดค่าและโดยไม่ต้องลบการสนับสนุน สามารถสร้างได้โดยตรงในการกำหนดค่า เพิ่มเป็นส่วนขยายการกำหนดค่า หรือเป็นไฟล์ภายนอก ตามฟังก์ชันการทำงาน การประมวลผลจะแบ่งออกเป็นประเภทที่สามารถเปลี่ยนข้อมูลได้ และประเภทที่วิเคราะห์ข้อมูลและแสดงผลลัพธ์ในรูปแบบที่ใช้งานง่าย (รายงาน) เพื่อไม่ให้เปลี่ยนเค้าโครงการพิมพ์เอกสารมาตรฐาน จึงมีการพัฒนาแบบฟอร์มการพิมพ์ภายนอก นอกจากนี้ การประมวลผลภายนอกสามารถทำได้ตามกำหนดเวลาที่กำหนดบนแอปพลิเคชันเซิร์ฟเวอร์ 1C ซึ่งเป็นงานประจำ
Knopka ได้พัฒนาโซลูชันการประมวลผลหลายสิบแบบที่ช่วยให้นักบัญชีของเราสามารถใช้ "เวทมนตร์ที่ใช้งานได้จริง" ตัวอย่างเช่น เพื่อวิเคราะห์ความถูกต้องของการบัญชีในปุ่ม จะใช้รายงานภายนอก "การตรวจสอบฐานข้อมูลอัตโนมัติ" ตารางที่อ่านง่ายมีการวิเคราะห์เกณฑ์ 120 รายการสำหรับยอดคงเหลือในบัญชีและการหมุนเวียน การปฏิบัติตามข้อมูลจากการคืนภาษีและข้อมูลการบัญชี การวิเคราะห์สินทรัพย์ถาวร ฯลฯ
ตัวอย่างแบบฟอร์ม “สัญญาเงินกู้” ที่พิมพ์ภายนอกตามแบบฟอร์มที่ทนายความของเราพัฒนาขึ้น มีหลายกรณีที่ผู้ประกอบการขอสินเชื่อปลอดดอกเบี้ยจากบริษัทของเขาในฐานะบุคคลหรือในทางกลับกัน โอนเงินของตัวเองไปที่บริษัท จากนั้นคุณสามารถพิมพ์ข้อตกลงได้ทันที
แบบฟอร์มจะเปิดขึ้นเพื่อกรอกรายละเอียดที่จำเป็น:
และแสดงแบบฟอร์มสัญญาฉบับพิมพ์:
เราใช้การประมวลผลตามกำหนดเวลา (งานประจำ) เช่น เพื่อแก้ไขคำสั่ง ปุ่มได้ตั้งค่าการบูรณาการกับธนาคารรายใหญ่และโรบ็อตพิเศษโหลดใบแจ้งยอดโดยตรงใน 1C ด้วยเทคโนโลยีการเรียนรู้ของเครื่อง เปอร์เซ็นต์ของข้อผิดพลาดระหว่างการคายประจุจึงลดลงเหลือ 3% แต่เช่นเคย มีข้อยกเว้น เช่น ลูกค้าที่ใช้โครงการตัวแทนในการขายสินค้า ในกรณีนี้ กฎสำหรับการดำเนินการใบแจ้งยอดจากธนาคารถือเป็นรายบุคคล เพื่อที่จะไม่ตั้งโปรแกรมหุ่นยนต์ใหม่สำหรับกรณีเฉพาะ ก่อนที่จะมีส่วนขยายการกำหนดค่า งานประจำถูกนำมาใช้เพื่อแก้ไขคำสั่งของหุ่นยนต์ทุกๆ 10 นาที
ส่วนขยายการกำหนดค่าคืออะไร
ส่วนขยายคือการกำหนดค่าขนาดเล็กที่สืบทอดออบเจ็กต์จากการกำหนดค่าฐานข้อมูลหลัก และมีโค้ดที่มีการเพิ่มเติมหรือการแก้ไขออบเจ็กต์และโมดูล ในกรณีนี้ ยังคงรองรับการกำหนดค่าหลัก ไม่จำเป็นต้องเปิดใช้งานการแก้ไข ซึ่งจะทำให้กระบวนการอัปเดตง่ายขึ้นมาก กลไกนี้ถือว่าการใช้งานสามประเภทซึ่งอันที่จริงแล้วจะระบุไว้ในช่อง "วัตถุประสงค์" เมื่อสร้างส่วนขยาย:
องค์ประกอบหลักของเทคโนโลยีคือ ผู้จัดการฝ่ายบริการโดยจะจัดเก็บข้อมูลทั้งหมดเกี่ยวกับสมาชิก ผู้ใช้ แอปพลิเคชัน ฐานข้อมูล และการเชื่อมต่อระหว่างกัน และด้วยความช่วยเหลือในการจัดการส่วนขยายการประมวลผลและการกำหนดค่าภายนอก
ไฟล์ทั้งหมดที่มีการประมวลผลจะถูกอัปโหลดไปยังไดเร็กทอรีพิเศษของผู้จัดการฝ่ายบริการ แต่ก่อนที่คุณจะอัปโหลดไฟล์ไปยังไดเร็กทอรี กล่าวอีกนัยหนึ่งคือ "เผยแพร่ไปยังบริการ" จะต้องจัดเตรียมไฟล์ในลักษณะพิเศษ
จัดทำรายงานภายนอกและประมวลผลเพื่อเผยแพร่ในรูปแบบการบริการ
รายงานหรือการประมวลผลเพิ่มเติมถูกสร้างขึ้นในตัวกำหนดค่า 1C: Enterprise 8 เป็นรายงานภายนอกมาตรฐานและการประมวลผลและบันทึกในไฟล์ที่มีนามสกุล - .epf (สำหรับการประมวลผลเพิ่มเติม) หรือ .erf (สำหรับรายงานเพิ่มเติม) โมดูลออบเจ็กต์ต้องมีขั้นตอนและฟังก์ชันในการกำหนดพารามิเตอร์การลงทะเบียน
โปรดทราบว่าพารามิเตอร์ที่สำคัญคือ "เวอร์ชัน" หากคุณทำการเปลี่ยนแปลงการประมวลผลที่อัปโหลดไปยังไดเร็กทอรีผู้จัดการบริการก่อนหน้านี้ อย่าลืมเปลี่ยนหมายเลขเวอร์ชัน ไม่เช่นนั้นผู้จัดการบริการจะปฏิเสธที่จะโหลดไฟล์ เมื่อพัฒนารายงานหรือการประมวลผล คุณต้องคำนึงว่าผู้ใช้ทำงานในรูปแบบการบริการผ่านเว็บไคลเอ็นต์ (บทความที่ดีในบล็อก 1C) หากการประมวลผลมีแบบฟอร์ม จะต้องทำงานในเว็บไคลเอ็นต์ภายใต้เว็บเบราว์เซอร์ทั้งหมดที่รองรับโดยแพลตฟอร์มเทคโนโลยี 1C: Enterprise 8
ตามมาตรฐานของบริการ 1cfresh.com รายงานหรือการประมวลผลเพิ่มเติมจะต้องทำงานได้อย่างสมบูรณ์เมื่อดำเนินการในเซฟโหมด กล่าวคือ ทำงานโดยไม่ต้องเข้าถึงวัตถุภายนอกการกำหนดค่า
ต้องเตรียมรายงานหรือการประมวลผลเพิ่มเติมเพื่ออัปโหลดไปยังบริการเป็นชุดการจัดส่ง ชุดการนำส่งเป็นไฟล์เก็บถาวร (ไฟล์ zip) ที่ประกอบด้วย:
- รายงานเพิ่มเติมหรือไฟล์ประมวลผล
- ไฟล์รายการ xml ซึ่งมีข้อมูลเมตาเพิ่มเติมที่จำเป็นสำหรับผู้จัดการบริการในการเผยแพร่รายงานเพิ่มเติมหรือประมวลผลในบริการ
การติดตั้งรายงานเพิ่มเติมและการประมวลผลในรูปแบบการบริการ
คุณสมบัติที่โดดเด่นของเทคโนโลยี 1C Fresh คือไม่สามารถโหลดรายงานหรือการประมวลผลภายนอกลงในพื้นที่ข้อมูลได้โดยตรง การเพิ่มสามารถทำได้โดยผู้ดูแลระบบบริการผ่านทางผู้จัดการบริการเท่านั้น หลังจากเตรียมไฟล์เก็บถาวร zip พร้อมไฟล์ประมวลผลแล้ว จะต้องอัปโหลดไปยังไดเร็กทอรีตัวจัดการบริการและติดตั้งสำหรับผู้สมัครสมาชิกบริการเฉพาะ สมาชิกบริการคือกลุ่มผู้ใช้ที่รวมตัวกันตามหลักการบางประการ ดังนั้นฐานข้อมูลที่มีให้สำหรับผู้ใช้บางกลุ่มจึงเรียกว่าแอปพลิเคชันสมาชิก
แอปพลิเคชันอาจมีการกำหนดค่า 1C ที่แตกต่างกัน (การบัญชีองค์กร การจัดการเงินเดือนและบุคลากร การจัดการของบริษัทของเรา ฯลฯ) ซึ่งคุณสามารถใช้ในรูปแบบการบริการได้ การรายงานหรือการประมวลผลเพิ่มเติมสามารถติดตั้งได้ในแอปพลิเคชันของผู้สมัครสมาชิกที่ระบุไว้เมื่อดาวน์โหลดไฟล์เท่านั้น
นี่คือลักษณะของแบบฟอร์มคุณสมบัติสำหรับรายงานเพิ่มเติมที่มีเวอร์ชันต่างๆ เมื่อใช้ไฮเปอร์ลิงก์ "ติดตั้ง/ลบ" เราจะไปที่รายการแอปพลิเคชันและเลือกฐานข้อมูลที่ต้องการ
หลังจากโหลดการประมวลผลและเลือกแอปพลิเคชันแล้ว ผู้จัดการฝ่ายบริการจะติดต่อที่อยู่แอปพลิเคชันและให้คำสั่งให้ติดตั้งลงในฐานข้อมูล
เราเปิดตัวการประมวลผลตามกำหนดการ
เมื่อทำงานกับฐานข้อมูลการบัญชีจำนวนมาก การประมวลผลบางอย่างจะต้องดำเนินการเป็นระยะ ตัวอย่างเช่น เดือนละครั้งหรือทุกๆ สองสามนาที สิ่งสำคัญคือต้องทำให้การดำเนินการของผู้ใช้แบบแมนนวลและแบบปกติเป็นแบบอัตโนมัติ ในการทำเช่นนี้ เราใช้งานประจำอย่างสม่ำเสมอการประมวลผลที่จะดำเนินการตามกำหนดเวลาไม่มีแบบฟอร์ม ตรรกะทั้งหมดถูกเขียนในโมดูลอ็อบเจ็กต์และมีลักษณะเช่นนี้
ในการเตรียมชุดส่งมอบเราก็กำหนดตารางเวลาไว้ ตอนนี้การประมวลผลของเราจะดำเนินการทุกชั่วโมง
ข้อมูลเพิ่มเติมเกี่ยวกับส่วนขยายการกำหนดค่า
ควบคู่ไปกับรายงานภายนอกและการประมวลผลที่ต้องจัดเตรียมและจัดการ "วิธีเก่า" เราเริ่มใช้กลไกส่วนขยายการกำหนดค่าอย่างจริงจัง เริ่มต้นด้วยแพลตฟอร์ม 1C Enterprise 8.3.10 กลไกนี้ทำให้ชีวิตของเราค่อนข้างง่ายและทำให้สามารถปรับการกำหนดค่าให้เข้ากับคุณสมบัติของปุ่มได้ง่ายขึ้น ตัวอย่างเช่น เราได้เขียนไว้ข้างต้นเกี่ยวกับการดำเนินการตามปกติเพื่อแก้ไขเอกสารโดยหุ่นยนต์ที่ถูกเปิดใช้งานทุกๆ 10 นาที ตอนนี้คุณสามารถใช้ส่วนขยายเพื่อกำหนดการทำงานของโมดูลใหม่ได้ ดังนั้นเราจึงสามารถดำเนินการที่จำเป็นได้ทันทีเมื่อบันทึกหรือโพสต์เอกสาร สิ่งนี้เหมาะสมกว่ามาก เนื่องจากคิวงานในฐานข้อมูลไม่อุดตันด้วยการดำเนินการทุกๆ 10 นาที และมีประสิทธิภาพมากกว่า เนื่องจากมีการเปลี่ยนแปลงทันที
การเตรียมส่วนขยายใหม่ค่อนข้างง่าย มาดูกระบวนการสร้างส่วนขยายโดยใช้ตัวอย่างเฉพาะกัน
จากประสบการณ์การทำงาน ผู้นำในการขอปรับเปลี่ยนคือแบบฟอร์มที่พิมพ์ TORG-12 ตัวอย่างเช่น เราจำเป็นต้องสร้างส่วนขยายเพื่อให้สามารถพิมพ์ใบส่งมอบสินค้าเป็นสกุลเงินต่างประเทศได้ (โดยค่าเริ่มต้นสามารถสร้างได้ในรูเบิลเท่านั้น)
เปิดเมนู → การกำหนดค่า → ส่วนขยายการกำหนดค่า
เราสร้างส่วนขยายใหม่โดยมีวัตถุประสงค์ "การปรับตัว"
ส่วนขยายดูเหมือนโครงสร้างการกำหนดค่าที่คุ้นเคย แต่ยังไม่มีวัตถุ ก่อนอื่น มาเพิ่มเลย์เอาต์ใหม่ TORG-12 ซึ่งเราได้แทรกคอลัมน์ที่มีจำนวนเงินเป็นสกุลเงินเข้าไป
เนื่องจากใบแจ้งหนี้ถูกพิมพ์จากเอกสาร "การขายสินค้าและบริการ" เราจะเพิ่มเอกสารนี้ไปยังส่วนขยายของเราจากการกำหนดค่าหลัก และทำการเปลี่ยนแปลงที่เราต้องการในโมดูลผู้จัดการ หากต้องการทำสิ่งนี้ ให้เลือก "เพิ่มลงในส่วนขยาย" ในเมนูบริบทของการใช้งาน
ตอนนี้คุณสามารถแก้ไขโมดูลตัวจัดการการดำเนินงานได้ เราจำเป็นต้องเพิ่มแบบฟอร์มใหม่ในรายการแบบฟอร์มที่สามารถพิมพ์ได้ และกรอกจำนวนสกุลเงิน
ในการเปลี่ยนขั้นตอนมาตรฐาน เราใช้คำอธิบายประกอบ &After เรายังจำเป็นต้องมีฟังก์ชันและขั้นตอนของเราเองด้วย
มาดูคำอธิบายประกอบให้ละเอียดยิ่งขึ้น ในส่วนขยายคุณสามารถใช้: &Before, &After, &Instead (อย่างระมัดระวัง) หลักการทำงานนั้นเรียบง่าย: เราต้องการให้อัลกอริทึมของเราจากส่วนขยายถูกดำเนินการก่อน ใส่ &Before คำอธิบายประกอบ และในวงเล็บระบุชื่อของขั้นตอนจากการกำหนดค่ามาตรฐาน หากโมดูลมาตรฐานได้รับการประมวลผลก่อน จากนั้นจึงประมวลผลของเรา เราจะใช้ &After
คำอธิบายประกอบ &Before และ &After ไม่สามารถใช้กับฟังก์ชันได้ ดังนั้นหากเราจำเป็นต้องเปลี่ยนอัลกอริธึมของฟังก์ชันจากการกำหนดค่าหลัก เราจะใช้คำอธิบายประกอบ &Instead
คำอธิบายประกอบ &Instead ควรถูกใช้ให้น้อยที่สุดเท่าที่จะเป็นไปได้ เนื่องจากจะแทนที่การดำเนินการของขั้นตอนและฟังก์ชันจากการกำหนดค่าหลักด้วยขั้นตอน/ฟังก์ชันส่วนขยายโดยสิ้นเชิง ด้วยวิธีสกัดกั้นนี้ ขั้นตอน/ฟังก์ชันจากการกำหนดค่าหลักจะหยุดดำเนินการเลยในขณะที่ติดตั้งส่วนขยาย แม้แต่การอัปเดตเวอร์ชันก็ไม่ช่วยอะไร
บทสรุป
มีความคิดเห็นที่แตกต่างกันมากมายเกี่ยวกับการใช้ส่วนขยายและรายงาน/การประมวลผลภายนอก จากประสบการณ์ของเรา เราทั้งคู่เห็นด้วยกับการขยายธุรกิจ นี่เป็นเทคโนโลยีที่ทันสมัยและปรับเปลี่ยนได้มากขึ้น แต่ก็มีความสามารถอีกมากมาย และการเผยแพร่ก็ง่ายกว่ามาก เฉพาะส่วนที่จำเป็นของโค้ดเท่านั้นที่จะถูกวางไว้ในส่วนขยาย นอกจากนี้ยังไม่จำเป็นต้องเขียนขั้นตอนและฟังก์ชันเพิ่มเติมเพื่อกำหนดพารามิเตอร์การลงทะเบียน ติดตามเวอร์ชัน และสร้างชุดการส่งมอบคุณสามารถใช้ส่วนขยายหลายรายการสำหรับพื้นที่ข้อมูลเดียวได้
สำหรับลักษณะเฉพาะของ 1C Fresh ที่ทำงานในโหมดการแยกข้อมูล (การกำหนดค่าเดียว พื้นที่อิสระจำนวนมาก) วิธีการขยายเป็นโซลูชันที่ยอดเยี่ยม
ปัญหาหลักในการทำงานกับส่วนขยายคือการประเมินจำนวนการปรับปรุงที่กำลังจะเกิดขึ้นโดยนักพัฒนา/ผู้ดำเนินการอย่างเอนเอียง ตามสมมติฐานที่ว่า “เราจำเป็นต้องเปลี่ยนปุ่มเพียงไม่กี่ปุ่มบนแบบฟอร์ม” การทำงานกับส่วนขยายเริ่มต้นขึ้น จำนวนการปรับปรุงกำลังเพิ่มมากขึ้น ส่วนขยายยังคงถูกใช้ต่อไปตามข้อความ “เราใช้ส่วนขยายอยู่แล้ว มาใช้ส่วนขยายต่อไปกันเถอะ”
จากนั้นมีความจำเป็นต้องเพิ่มเอนทิตีใหม่ลงในฐานข้อมูลและขยายโครงสร้างของเอนทิตีที่มีอยู่ หรือเปลี่ยนหลักการทำงานของระบบย่อยทั่วไปใดๆ การทำงานกับส่วนขยายกลายเป็นเรื่องยากมากขึ้นหรือเป็นไปไม่ได้เลยด้วยซ้ำ การกำหนดค่าช่วยให้สามารถเปลี่ยนแปลงได้และเริ่มการปรับเปลี่ยนการกำหนดค่ามาตรฐานแบบ "อ่อน" หรือ "ยาก" ขึ้นอยู่กับคุณสมบัติของนักพัฒนา
นี่คือช่วงเวลาที่เทคโนโลยีมาถึงสวนสัตว์ ความแตกต่างซึ่งอาศัยอยู่ในระบบองค์กรอยู่แล้ว ถูมืออย่างมีความสุข โดยตระหนักว่าได้ก้าวกระโดดที่ดีจากความชัดเจนและความเรียบง่าย
แน่นอนว่าในขณะนี้คุณสามารถกำจัดสัตว์ตัวใดตัวหนึ่งในสวนสัตว์เทคโนโลยีและถ่ายโอนการเปลี่ยนแปลงทั้งหมดไปยังการกำหนดค่าได้อย่างถูกต้อง ท้ายที่สุด คุณจะต้อง "ดูแล" สัตว์ร้ายสองตัว - ทั้งการขยายและการดัดแปลงในรูปแบบมาตรฐานที่สุด ทำความสะอาดตามพวกเขา ให้อาหารพวกเขา สร้างสันติภาพซึ่งกันและกัน เพื่อที่พวกเขาจะได้ไม่ทำลายอะไรในกระบวนการทำงานร่วมกัน เพิ่มอีกหนึ่งบรรทัดในรายการข้อกำหนดสำหรับนักพัฒนาในตำแหน่งที่ว่างของ Headhunter
ด้วยเหตุผลที่ดี นี่คือสิ่งที่ต้องทำ แต่ความหลากหลายรู้ดีว่าผู้คนเกียจคร้าน กลัวที่จะสัมผัสบางสิ่งที่ได้ผล พวกเขามักจะ "ไม่มีเวลา" และฝ่ายบริหารไม่สามารถประเมินความจำเป็นในการปรับโครงสร้างใหม่ในช่วงเวลาที่สำคัญนี้ทันเวลาสำหรับการละทิ้งเทคโนโลยีที่ไม่จำเป็น การปรับปรุงการเปลี่ยนแปลงที่ทำผ่านส่วนขยายยังคงดำเนินการผ่านส่วนขยายต่อไป การปรับปรุงที่ทำในการกำหนดค่าจะยังคงทำในการกำหนดค่าต่อไป ศัตรูหลักของสถาปัตยกรรมซอฟต์แวร์ระดับองค์กรนั้นฝังแน่นอยู่ในหัวหาดที่ถูกยึด
โดยทั่วไป ควรคิดให้รอบคอบก่อนที่จะเริ่มใช้เทคโนโลยีเฉพาะทางสูง หากมีความเสี่ยงที่จะต้องเปลี่ยนโครงสร้างของออบเจ็กต์หรือเพิ่มออบเจ็กต์ฐานข้อมูลใหม่ จำเป็นต้องเรียกใช้การดีบักบ่อยครั้งและไม่มีปัญหา มีคนที่เข้าใจวิธีเปลี่ยนการกำหนดค่าในขั้นต้นโดยไม่มีปัญหาสำหรับการอัพเดตครั้งต่อไป ถ้าอย่างนั้นก็ควรตัดสินใจไม่สร้างสวนสัตว์ทันที ไม่มีใครเอาโมดูลที่นิยามใหม่ การแก้ไขแบบฟอร์มโดยทางโปรแกรม และการสมัครสมาชิกกิจกรรมออกไป หากบริษัทมีขนาดเล็กและเป็นสิ่งสำคัญสำหรับพนักงานที่ต้องอัปเดตการกำหนดค่าด้วยปุ่มเดียวทั้งในปัจจุบันและในอนาคต จะไม่มีการเปลี่ยนแปลงร้ายแรงใดๆ อย่างแน่นอน (แน่ใจจริงๆ เหรอ) จะไม่มีสวนสัตว์แม้จะมีส่วนขยายก็ตาม
และแน่นอนว่าส่วนขยายนั้นดีสำหรับปลั๊กอินขนาดเล็ก มีตัวอย่างการใช้งานที่ดีบน IP เมื่อมีการเผยแพร่ส่วนขยายแทนไฟล์ cf พร้อมคำแนะนำในการเปรียบเทียบและรวม แต่นี่เป็นพื้นที่เฉพาะอีกครั้งและเพื่อความสะดวกในการใช้งานอย่างต่อเนื่องจะเป็นการดีกว่าถ้าถ่ายโอนฟังก์ชันการทำงานไปยังการกำหนดค่าเพื่อให้การเปิดตัวในโหมดองค์กรไม่ช้าลง