การขยายโมดูล วิธีการขยายเซิร์ฟเวอร์โมดูลไม่ได้ขยายเสมอไป

มันกลับกลายเป็นว่ามีความเกี่ยวข้องมาก :)

โอเค มาทำให้สุดสัปดาห์นี้มีประโยชน์กันเถอะ

วันนี้เป็นอีกหัวข้อหนึ่งของ "การดำเนินการประยุกต์ของ 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 ซึ่งมีข้อมูลเมตาเพิ่มเติมที่จำเป็นสำหรับผู้จัดการบริการในการเผยแพร่รายงานเพิ่มเติมหรือประมวลผลในบริการ
การเตรียมการจะดำเนินการในฐานข้อมูลการกำหนดค่าที่ใช้งานภายในเครื่องซึ่งมีจุดประสงค์เพื่อรายงานหรือการประมวลผลเพิ่มเติม เราใช้ผู้ช่วยพิเศษในการสร้างชุดการจัดส่ง การประมวลผลภายนอก การเตรียมรายงานเพิ่มเติม และการประมวลผลสิ่งพิมพ์ใน Service Model.epf คุณสามารถอ่านเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับเทคโนโลยีสำหรับการเผยแพร่โซลูชัน 1C Fresh

การติดตั้งรายงานเพิ่มเติมและการประมวลผลในรูปแบบการบริการ

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