อาจไม่ใช่การกำหนดค่าที่ร้ายแรงเพียงครั้งเดียวใน 1C 8.3 หรือ 8.2 ที่สามารถทำได้โดยไม่ต้องใช้งานตามกำหนดเวลาและงานเบื้องหลัง สะดวกมากเนื่องจากจะดำเนินการตามกำหนดเวลาที่ชัดเจนโดยที่ผู้ใช้และโปรแกรมเมอร์ไม่ต้องแทรกแซง
ตัวอย่างเช่น คุณต้องแลกเปลี่ยนข้อมูลกับโปรแกรมอื่นวันละครั้ง เมื่อใช้งานรูทีนและงานพื้นหลัง 1C จะสามารถดำเนินการเหล่านี้ได้ด้วยตัวเอง เช่น ในช่วงเวลานอกเวลาทำงาน วิธีนี้จะไม่ส่งผลกระทบต่อการทำงานของผู้ใช้ แต่อย่างใด และจะช่วยประหยัดเวลา
ขั้นแรก มาดูกันว่ามีความหมายอย่างไรและแตกต่างกันอย่างไร:
- งานที่กำหนดเวลาไว้ช่วยให้คุณสามารถดำเนินการใด ๆ เฉพาะตามกำหนดเวลาที่กำหนดไว้ล่วงหน้า
- งานเบื้องหลังเป็นวัตถุที่มีการกระทำที่จะดำเนินการ
สมมติว่าบริษัทของเราขายสินค้าบางอย่างและมีเว็บไซต์พร้อมราคาเป็นของตัวเอง วันละครั้งเราต้องการยกเลิกการโหลดเพื่อรักษาความเกี่ยวข้อง
เปิดการกำหนดค่าและเพิ่มงานที่กำหนดเวลาไว้
การตั้งค่าคุณสมบัติ
คำนึงถึงมากที่สุด พารามิเตอร์ที่สำคัญซึ่งจะต้องกรอกคุณสมบัติของมัน
- ในสนาม " ชื่อเมธอด» มีการเลือกขั้นตอนของโมดูลทั่วไปบางโมดูล ซึ่งจะถูกดำเนินการโดยตรง มันจะระบุการดำเนินการทั้งหมดสำหรับการอัปโหลดราคาไปยังเว็บไซต์ของเรา โปรดทราบว่าการดำเนินการจะเกิดขึ้นบนเซิร์ฟเวอร์ นี่เป็นเหตุผล เนื่องจากการดำเนินการตามปกติจะดำเนินการโดยผู้ใช้ไม่ต้องดำเนินการใดๆ
- งานที่กำหนดเวลาไว้สามารถปิดหรือเปิดใช้งานได้ตามต้องการ ไม่จำเป็นต้องเปลี่ยนตารางเวลาของเขาทุกครั้ง ในการทำเช่นนี้ ในช่องคุณสมบัติ ให้เลือกหรือยกเลิกการเลือก " การใช้งาน».
- การตั้งค่าที่สำคัญอีกประการหนึ่งคือกำหนดตารางเวลานี้ไว้หรือไม่ กำหนดไว้, หรือไม่. งานที่กำหนดไว้ล่วงหน้าจะทำงานโดยอัตโนมัติ หากไม่ได้ตั้งค่าสถานะนี้ คุณจะต้องเรียกใช้โดยทางโปรแกรม หรือใช้การประมวลผล "Job Console" กับ ITS
- คุณยังสามารถระบุ จำนวนการทำซ้ำและช่วงเวลาระหว่างพวกเขาเมื่อเกิดความผิดพลาด การเสร็จสิ้นที่ผิดปกติหมายถึงสถานการณ์เหล่านั้นเมื่องานไม่เสร็จสมบูรณ์เนื่องจากข้อผิดพลาด
การตั้งค่ากำหนดการ
ขั้นตอนสุดท้ายคือกำหนดตารางเวลาสำหรับการอัปโหลดของเราไปยังไซต์โดยใช้ไฮเปอร์ลิงก์ที่เหมาะสมในแผงคุณสมบัติ
จะเปิดก่อนคุณ การตั้งค่าทั่วไปกำหนดการใน 1C 8.3 ไม่มีอะไรซับซ้อนที่นี่ ในตัวอย่างนี้ เราตั้งค่าการเปิดตัวการอัปโหลดราคาของเราไปยังไซต์ทุกวันตั้งแต่ตีห้าถึงเจ็ดโมงเช้า ในกรณีที่งานที่กำหนดไว้ไม่มีเวลาทำงานก่อน 7:00 น. งานจะเสร็จในวันถัดไป
การบล็อกงานที่กำหนดเวลาไว้
เรียกใช้ยูทิลิตี้ 1C Enterprise Server Administration มาตรฐานและเปิดคุณสมบัติของฐานข้อมูลที่คุณสร้างงานตามกำหนดเวลา (สำหรับเวอร์ชันไคลเอนต์เซิร์ฟเวอร์ 1C)
ในหน้าต่างที่เปิดขึ้น (หลังจากป้อนชื่อผู้ใช้และรหัสผ่านสำหรับการเข้าถึง IB) ให้ตรวจสอบว่าไม่ได้ตั้งค่าสถานะในรายการ "เปิดใช้งานการบล็อกตามกำหนดเวลา" หากคุณพบสถานการณ์ที่งานไม่ทำงาน ให้ตรวจสอบการตั้งค่านี้ก่อน
ในทำนองเดียวกัน คุณสามารถปิดการใช้งานตามกำหนดเวลาใน 1C 8.3 ได้อย่างสมบูรณ์ หากต้องการปิดใช้งานพื้นหลังเฉพาะ คุณสามารถใช้การประมวลผล "คอนโซลงานพื้นหลัง" ที่มีอยู่ในรีลีสล่าสุด
พื้นหลังและงานตามกำหนดเวลาในโหมดไฟล์
ในโหมดนี้ การตั้งค่าและเรียกใช้งานเหล่านี้จัดระเบียบได้ยากกว่ามาก บ่อยที่สุดเพิ่มเติม บัญชีซึ่งเซสชันจะเปิดอยู่เสมอ
การเปิดใช้งานงานตามกำหนดเวลาในกรณีนี้จะดำเนินการโดยใช้วิธีการ "PerformProcessingTasks()"
คุณยังสามารถใช้โครงสร้างต่อไปนี้:
ชื่อโพรซีเดอร์ต้องเป็นชื่อของโพรซีเดอร์ไคลเอ็นต์ที่จะดำเนินการ ช่วงเวลาแสดงจำนวนวินาทีที่จะดำเนินการ พารามิเตอร์ "Once" เป็นทางเลือก มันสะท้อนว่าขั้นตอนที่กำหนดจะดำเนินการครั้งเดียวหรือหลายครั้ง
ติดตามข้อผิดพลาดในงานพื้นหลัง
ดูความคืบหน้าของงานเบื้องหลังตลอดจนความพร้อมใช้งาน ข้อผิดพลาดที่เป็นไปได้สามารถอยู่ในทะเบียน. ในตัวกรอง ให้ตั้งค่าการเลือกเป็นแอปพลิเคชัน "งานพื้นหลัง" และถ้าจำเป็น ให้เลือกความสำคัญที่สนใจ เช่น เฉพาะ "ข้อผิดพลาด"
บันทึกจะแสดงรายการทั้งหมดที่ตรงกับการเลือกของคุณพร้อมความคิดเห็นที่คุณสามารถใช้เพื่อทำความเข้าใจสาเหตุของข้อผิดพลาด
งานตามกำหนดเวลา 1C เป็นกลไกพิเศษของระบบที่ออกแบบมาเพื่อดำเนินการบางอย่างโดยอัตโนมัติใน พื้นหลังและตามกำหนดการเฉพาะ (เช่น การส่งรายงาน การเลื่อน ดาวน์โหลดอัตราแลกเปลี่ยน เป็นต้น)
งานเบื้องหลัง - วัตถุ สร้างโดยงานที่กำหนดเวลาไว้ซึ่งดำเนินการตามที่ตั้งใจไว้โดยตรงโดยไม่ต้องมีส่วนร่วมของผู้ใช้หรือโปรแกรมเมอร์
งานเบื้องหลัง 1C:
- ดำเนินการภายใต้ ผู้ใช้วินโดวส์ซึ่งกระบวนการของโปรแกรมเซิร์ฟเวอร์ 1C กำลังทำงานอยู่
- สามารถสร้างได้ในภาษา 1C โดยพลการโดยไม่มีงานตามกำหนดเวลา (สำหรับ การคำนวณแบบขนานบนเซิร์ฟเวอร์)
สำคัญ!งานพื้นหลังทำงานบนเซิร์ฟเวอร์
ความแตกต่างระหว่างงานตามกำหนดการและการสมัครกิจกรรม:
- อนุญาตให้คุณเรียกใช้ตัวจัดการไม่ได้เมื่อเกิดเหตุการณ์ (อย่างที่มันทำ) แต่ตามกำหนดเวลา
กลไกของงานตามกำหนดการและงานพื้นหลัง:
- โดยอัตโนมัติ - ในโหมดการทำงานของไคลเอนต์เซิร์ฟเวอร์ (เนื่องจากการทำงานของ DBMS)
- โต้ตอบ - เมื่อใช้ฐานข้อมูลไฟล์โดยดำเนินการคำสั่ง ExecuteProcessingJobs()จากเซสชันในโหมด 1C:Enterprise
คุณสมบัติของงานประจำและพื้นหลัง 1C:
- ตัวอย่างงานที่กำหนดเวลาไว้สามารถสร้างได้ด้วยโปรแกรมหากงานที่จัดกำหนดการไว้ล่วงหน้า (แฟล็ก "กำหนดไว้ล่วงหน้า" ถูกตั้งค่าในคุณสมบัติ) จากนั้นงานจะถูกสร้างขึ้นในอินสแตนซ์เดียวกับกำหนดการที่ระบุในตัวกำหนดค่า อินสแตนซ์ของงานที่ไม่ได้กำหนดไว้ล่วงหน้าปรากฏขึ้นตามกำหนดการที่ตั้งโปรแกรมในโหมดองค์กร
- สามารถดำเนินการตามกำหนดเวลาจำนวนเท่าใดก็ได้ในเวลาเดียวกัน,
แต่สองงานจะไม่ทำงาน ( เพื่อหลีกเลี่ยงการชนกัน):
- ด้วยคีย์เดียวกัน (ถึง คีย์ - คุณสมบัติของงานตามกำหนดเวลาที่อนุญาตให้คุณจัดกลุ่มงานประเภทเดียวกันหลายงาน);
- เชื่อมโยงกับวัตถุข้อมูลเมตาเดียวกัน
- โพรซีเดอร์สามารถใช้เป็นวิธีงานตามกำหนดเวลาซึ่งสามารถมีพารามิเตอร์กี่ตัวก็ได้ จำนวนพารามิเตอร์ของวิธีการจัดกำหนดการงานสอดคล้องกับจำนวนของพารามิเตอร์ของงานจัดกำหนดการเอง
- ในการสร้างงานที่กำหนดเวลาไว้ ผู้ใช้ต้องมีสิทธิ์ของผู้ดูแลระบบ
- หากมีการกำหนดงานที่จัดกำหนดการไว้ในตัวกำหนดค่า (ในวัตถุที่สอดคล้องกัน) ตามที่กำหนดไว้ล่วงหน้าดังนั้นอินสแตนซ์ที่กำหนดไว้ล่วงหน้าของงานที่กำหนดเวลาไว้จะไม่สามารถทำเครื่องหมายเพื่อลบหรือลบได้ (แต่สามารถเปลี่ยนแปลงได้ และจะพร้อมใช้งานในรายการเทมเพลตงานที่กำหนดเวลาไว้เสมอ)
- หากใช้ฟังก์ชันเป็นวิธีงานตามกำหนดเวลาค่าที่ส่งคืนของฟังก์ชันจะถูกละเว้น
- เพื่อให้แน่ใจว่าการดำเนินงานตามกำหนดการและงานเบื้องหลังทั้งในไฟล์และเวอร์ชันไคลเอ็นต์เซิร์ฟเวอร์ไม่จำเป็นต้องเปิดใช้อินสแตนซ์ 1C:Enterprise
ความคิดเห็น
... ในโหมดการทำงานของไคลเอนต์เซิร์ฟเวอร์ งานที่จัดกำหนดการไว้จะถูกเรียกใช้โดยตัวจัดการคลัสเตอร์ ดังนั้น แม้ว่าจะไม่มีการสร้างการเชื่อมต่อไคลเอนต์กับฐานข้อมูล งานตามกำหนดเวลาจะถูกดำเนินการ (โดยมีเงื่อนไขว่าไม่ได้ถูกห้ามสำหรับฐานข้อมูลเฉพาะ) ใน รุ่นของไฟล์ทำงานให้กับ เริ่มต้นอัตโนมัติงานที่กำหนดเวลาไว้ต้องการการเชื่อมต่อไคลเอ็นต์เฉพาะเพื่อใช้เป็นตัวจัดกำหนดการงาน ต้องเริ่มการรอในการเชื่อมต่อนี้ โดยมีบางช่วงดำเนินการเรียกไปยังเมธอดภาษาที่ 1 ดำเนินการประมวลผลงาน().
[ซ่อน]
- งานพื้นหลังอนุญาต ทำตามขั้นตอน อะซิงโครนัส
- งานเบื้องหลังสามารถรันพร้อมกันกี่งานก็ได้แต่คุณไม่สามารถรันสองงานด้วยชื่อคีย์และเมธอดเดียวกันได้
- เสร็จสิ้นงานพื้นหลังเป็นวัตถุเซสชันซึ่งถูกเก็บไว้เป็นระยะเวลาหนึ่ง (ใน ฐานข้อมูลไม่รอด) งานพื้นหลังคือวัตถุภาษา 1C: Enterprise ที่มีอยู่เฉพาะในระหว่างเซสชัน
การตั้งค่างานที่กำหนดเวลาไว้ในโหมดไคลเอ็นต์เซิร์ฟเวอร์ของการดำเนินการ 1C
งานที่กำหนดเวลาได้รับการกำหนดค่าในแผงคุณสมบัติ วัตถุนี้การกำหนดค่า
การวาดจานคุณสมบัติของวัตถุ 1C "งานปกติ"
[ซ่อน]
แผงคุณสมบัติของวัตถุ "งานประจำ":
- ชื่อของเมธอดคือพาธไปยังโพรซีเดอร์ ซึ่งเป็นสาธารณสมบัติและจะถูกดำเนินการในงานเบื้องหลังตามกำหนดการที่ระบุ ไม่แนะนำให้ใช้มาตรฐาน แต่ให้สร้างของคุณเอง
- ชื่อ - กำหนดชื่อที่แสดงในการควบคุมงาน
- คีย์ - ช่วยให้คุณสามารถจัดกลุ่มงานตามกำหนดเวลาต่างๆ 1C ได้ในขณะเดียวกันก็สามารถเปิดใช้งานได้ งานเดียวเท่านั้นที่มีค่าคีย์เดียวกันค่านั้นสามารถกำหนดได้ตามอำเภอใจ ค่าว่างจะไม่นำมาพิจารณาระหว่างการควบคุม (นั่นคือถือว่าว่างเปล่า)
- การใช้งาน - แฟล็กสำหรับการใช้งานที่กำหนดเวลาไว้
- กำหนดไว้- แฟล็กระบุว่างานตามกำหนดการกำหนดไว้ล่วงหน้าหรือไม่ เช่น ทำงานทันทีหลังจากวางลงในฐานข้อมูล (งานจะถูกสร้างขึ้นในอินสแตนซ์เดียวพร้อมกำหนดการที่ระบุในตัวกำหนดค่า) งานที่ไม่ได้กำหนดไว้ล่วงหน้าจะปรากฏโดยทางโปรแกรมในเวลาของกำหนดการ (คุณต้องใช้การประมวลผล "Job Console" หรือเรียกใช้การเปิดใช้งานโดยทางโปรแกรม)
- จำนวนครั้งในการลองใหม่เมื่องานขัดข้อง- รีสตาร์ทกี่ครั้ง งานพื้นหลังหากดำเนินการโดยมีข้อผิดพลาด
- งานยกเลิกช่วงเวลาลองใหม่- ความถี่ในการเริ่มงานพื้นหลังใหม่หากมีการดำเนินการโดยมีข้อผิดพลาด
- กำหนดการ - การตั้งค่าช่วงเวลาสำหรับการเรียกใช้ขั้นตอนที่ระบุในฟิลด์ "ชื่อวิธีการ"
ในการจัดการงานพื้นหลัง คุณสามารถใช้การประมวลผลจากดิสก์ ITS "" ซึ่งช่วยให้คุณ:
- ตรวจสอบการดำเนินงานของงานตามกำหนดเวลาและพื้นหลัง
- ลบและสร้างงานพื้นหลังใหม่โดยใช้ภาษาในตัว
- ปิดใช้งานกำหนดการชั่วคราว (?)
คุณสมบัติของการตั้งค่างานตามกำหนดเวลา 1C:
งานจะดำเนินการโดยอัตโนมัติ - ต้องตรวจสอบ (ตรวจสอบ)
[ซ่อน]
การตั้งค่างานที่กำหนดเวลาไว้ในโหมดไฟล์ของการดำเนินการ 1C
ใน โหมดไฟล์สำหรับงานตามกำหนดการ จะต้องเปิดใช้เซสชันแยกต่างหากของโปรแกรม 1C ปัญหานี้มักจะแก้ไขได้โดยการกำหนดผู้ใช้ "ทางเทคนิค" ซึ่งมีเซสชันทำงานอยู่เสมอ
การเริ่มต้นของงานที่กำหนดเวลาไว้เกิดขึ้น:
- โดยทั่วไป - เมื่อเริ่มเมธอด ExecuteProcessingJobs();
- สำหรับผู้ใช้เฉพาะ - เมื่อเรียกใช้เมธอด ConnectWaitingHandler(<ИмяПроцедуры>, <Интервал>, <Однократно>) (ทำงานกับลูกค้า).
- ชื่อโพรซีเดอร์คือชื่อของโพรซีเดอร์ที่เอ็กซ์พอร์ตของโมดูล (โมดูลแอ็พพลิเคชันปกติ) หรือโมดูลที่ใช้ร่วมกันส่วนกลางที่รวมอยู่ในตัวจัดการการรอ ขั้นตอนจะต้องอยู่ในไคลเอนต์
- ช่วงเวลา - ช่วงเวลาระหว่างการดำเนินการของการดำเนินการเป็นวินาที
- ครั้งเดียว - จำนวนการดำเนินการของงาน (ครั้งเดียวหรือไม่)
สร้างงานที่กำหนดเวลาไว้
มาสร้างงานตามกำหนดเวลา "ดำเนินการประมวลผล"
ปิดการใช้งานตามกำหนดการเพื่อไม่ให้เริ่มทำงานโดยอัตโนมัติเมื่อมีการอัพเดตการกำหนดค่า
กำหนดขั้นตอนที่จะทริกเกอร์เมื่อมีการเรียกใช้งานตามกำหนดเวลา:โมดูลงานตามกำหนดเวลา การประมวลผล TaskPerforming ตามกำหนดเวลา.
ขั้นตอนนั้นดูเหมือนว่า:
ขั้นตอนการส่งออกกำหนดการกำหนดเวลางานการประมวลผล (คีย์)
พารามิเตอร์ของงานที่กำหนดเวลาดำเนินการประมวลผลด้วยพารามิเตอร์ (คีย์);
จบขั้นตอน
เราสร้างไดเร็กทอรีสำหรับงานประจำ
งานที่กำหนดเวลาไว้ของเราสามารถสร้างกระบวนการเบื้องหลังได้หลายกระบวนการ - หนึ่งกระบวนการสำหรับแต่ละการประมวลผล แต่ละงานในแพลตฟอร์ม 1C8 มีรหัส แต่เมธอดงานตามกำหนดเวลาไม่ทราบคีย์งานเบื้องหลัง ดังนั้นคุณจำเป็นต้องใช้พารามิเตอร์งานเบื้องหลัง ด้วยเหตุนี้ เราจึงเห็นงานเบื้องหลังในคอนโซลงาน แต่เราไม่สามารถสร้างงานเบื้องหลังจากคอนโซลนี้ได้ด้วยตนเอง เนื่องจาก งานที่มีพารามิเตอร์แบบแมนนวลจะไม่ถูกสร้าง
ไดเร็กทอรี "พารามิเตอร์ของงานที่กำหนดเวลาไว้" :
ข้อกำหนด :
· รหัสก่อนเปิดตัว- สตริงไม่ จำกัด - รหัสในภาษา 1C ซึ่งจะต้องดำเนินการก่อนที่จะเริ่มต้น
· การประมวลผลจากการกำหนดค่า - สตริง (100) - ID ของการประมวลผลจากการกำหนดค่า
· การประมวลผลจากไดเร็กทอรี - บรรทัด (100) - ลิงก์ไปยังองค์ประกอบไดเร็กทอรี "การประมวลผลภายนอก" หากมีอยู่ในการกำหนดค่า
· เรียกใช้ผ่านแอปพลิเคชัน 1C - บูลีน - แอปพลิเคชัน 1C แยกต่างหากจะถูกสร้างขึ้นและงานตามกำหนดเวลาจะเปิดตัวในนั้น สร้างขึ้นสำหรับ 8.1 ซึ่งวิธีการสมัครบางวิธีไม่พร้อมใช้งานบนเซิร์ฟเวอร์ที่รันงานตามกำหนดเวลา
· เปิดตัวรหัส- - สตริงไม่ จำกัด - รหัสในภาษา 1C ซึ่งจะถูกดำเนินการเมื่อเริ่มงานตามกำหนดเวลา
สร้างรูปร่างองค์ประกอบ :
โดยคลิกที่ "สร้าง Reg. งาน" โดยทางโปรแกรมสร้างงานที่กำหนดเวลาด้วยรหัสคีย์:
ขั้นตอน MainActionsFormsCreateReglTask (ปุ่ม)
การอ้างอิงตัวแปร
คีย์ = ShortLP(รหัส);
งาน = ScheduledTasks.Create ScheduledTask("การดำเนินการประมวลผล");
Task.Name = คีย์;
Job.Key = กุญแจ;
พารามิเตอร์ = อาร์เรย์ใหม่ ();
ตัวเลือกเพิ่ม (คีย์);
Task.Parameters = พารามิเตอร์;
งานเขียน ();
จบขั้นตอน
การเริ่มต้นงานที่กำหนดเวลาไว้
งานตามกำหนดเวลาแต่ละงานที่เราสร้างขึ้นมีรหัส:
คีย์นี้สอดคล้องกับรหัสของไดเร็กทอรี "พารามิเตอร์ของงานที่กำหนดเวลาไว้" ซึ่งจะถูกค้นหาเมื่อเริ่มงาน หากไม่พบอิลิเมนต์พจนานุกรม งานจะไม่ถูกเรียกใช้งาน
นอกจากนี้หากได้รับรหัสรหัสก่อนเปิดตัวจากนั้นรหัสนี้จะถูกดำเนินการ นอกจากนี้หากตัวแปร เติมเต็มประเมินเป็นเท็จ งานจะไม่ถูกดำเนินการ ตัวแปรที่มีอยู่ในการวิเคราะห์ ตัวเลือกซึ่งลิงก์ไปยังองค์ประกอบที่พบของไดเร็กทอรี "พารามิเตอร์ของงานที่กำหนดเวลาไว้" จะถูกเก็บไว้
ขึ้นอยู่กับค่าที่เลือกของรายละเอียด โค้ดในภาษา 1C จะเริ่มต้นหรือการประมวลผลจะเริ่มจากการกำหนดค่า หรือการประมวลผลจะเริ่มจากหนังสืออ้างอิงมาตรฐาน "การประมวลผลภายนอก"
สำหรับ 1C81 การดำเนินการมีให้ในแอปพลิเคชันใหม่ - เพื่อให้คุณสามารถใช้รหัสที่มีเฉพาะในไคลเอนต์ รวมถึงการใช้ การประมวลผลภายนอก. ในการทำเช่นนี้ให้ทำเครื่องหมายที่ช่อง "เรียกใช้ผ่านแอปพลิเคชัน 1C" มิฉะนั้น งานที่กำหนดเวลาไว้จะถูกดำเนินการบนเซิร์ฟเวอร์
ฉันแนะนำให้ตั้งค่าผู้ใช้ในช่อง "ผู้ใช้" ของงานตามกำหนดเวลาที่สร้างขึ้นใหม่ เพื่อให้งานดำเนินการภายใต้สิทธิ์บางอย่าง ฉันขอแนะนำให้ให้สิทธิ์แก่ผู้ใช้รายนี้อย่างเต็มที่ ฉันมีผู้ใช้ "หุ่นยนต์».
กำหนดการของงานที่จัดกำหนดการจะถูกสร้างขึ้นโดยไฮเปอร์ลิงก์ "กำหนดการ" จากรูปแบบของงานที่จัดกำหนดการ คุณสามารถใช้การประมวลผล "คอนโซลของงานที่กำหนดเวลาไว้"
กลไกงานเป็นหนึ่งในเครื่องมือการดูแลระบบ 1C ประกอบด้วย:
- งานที่กำหนดเวลาไว้ เป็นออบเจกต์การกำหนดค่าทั่วไป จำเป็นต้องระบุสิ่งที่ต้องทำและความถี่เท่าใด
- และงานพื้นหลัง เป็นออบเจกต์ของภาษาในตัวที่สร้างโดยงานตามกำหนดเวลา
คำถาม 09.59 ของการสอบ 1C: Platform professional ตัวอย่างงานตามกำหนดการ:
- สามารถสร้างได้ด้วยโปรแกรม
- สามารถสร้างได้ในรูปแบบของรายการ เข้าถึงได้ผ่านคำสั่งเมนูหลักของโปรแกรม ("การทำงาน / งานที่กำหนดเวลาไว้")
- จะมีการสร้างอินสแตนซ์เดียวเท่านั้น (เมื่อมีการสร้างออบเจกต์การกำหนดค่าที่สอดคล้องกัน)
- ถูกกำหนดเฉพาะในโหมดการกำหนดค่าบนแท็บอื่นๆ โดยใช้ปุ่ม "องค์ประกอบ"
- คำตอบที่ถูกต้อง 1 และ 2
คำถาม 09.60 ของการสอบ 1C: Platform professional จำนวนของการดำเนินงานตามกำหนดเวลาพร้อมกันสามารถเป็น:
- ใด ๆ โดยไม่จำกัด
- จำนวนเท่าใดก็ได้ แต่จะไม่รัน 2 งานด้วยชื่อคีย์และเมธอดเดียวกัน
- จำนวนใดๆ แต่สองงานที่มีคีย์และชื่อเดียวกันจะไม่ถูกดำเนินการ
- จำนวนใดก็ได้ แต่จะไม่รันงานสองงานด้วยคีย์เดียวกันและเชื่อมโยงกับออบเจกต์ข้อมูลเมตาเดียวกัน
คำถาม 09.62 ของการสอบ 1C: Platform professional ในฐานะที่เป็นวิธีการของงานตามกำหนดการ สามารถใช้ขั้นตอนซึ่ง:
- ไม่ควรมีพารามิเตอร์
- สามารถมีได้เพียงหนึ่งพารามิเตอร์เท่านั้น (รายการค่า)
- สามารถมีได้เพียงพารามิเตอร์เดียวเท่านั้น (struct)
- สามารถมีได้เพียงหนึ่งพารามิเตอร์ (อาร์เรย์)
- สามารถเป็นพารามิเตอร์จำนวนเท่าใดก็ได้
คำถาม 09.63 ของการสอบ 1C: Platform professional ในการสร้างงานที่กำหนดเวลาไว้ ผู้ใช้ต้องมี:
- สิทธิ์ของผู้ดูแลระบบ
- สิทธิ์ในการใช้ออบเจกต์การกำหนดค่านี้ (กำหนดค่าได้ในบทบาท)
- สิทธิ์ในการสร้างอินสแตนซ์ใหม่ของวัตถุการกำหนดค่านี้ (กำหนดค่าได้ในบทบาท)
- สิทธิ์ใด ๆ วิธีงานตามกำหนดเวลาจะดำเนินการในโหมดสิทธิพิเศษ
คำถาม 09.64 ของการสอบ 1C: Platform professional หากมีการกำหนดงานที่กำหนดเวลาไว้ในตัวกำหนดค่า (ในวัตถุการกำหนดค่าที่สอดคล้องกัน) ตามที่กำหนดไว้ล่วงหน้า ก็จะมีลักษณะดังนี้ (เลือกคำตอบที่สมบูรณ์ที่สุด):
- ไม่สามารถสร้างอินสแตนซ์ที่ไม่ได้กำหนดไว้ล่วงหน้าของงานตามกำหนดการที่มีการเชื่อมโยงกับวัตถุข้อมูลเมตาของงานตามกำหนดเวลาที่กำหนดไว้ล่วงหน้า
- ไม่สามารถทำเครื่องหมายอินสแตนซ์งานที่กำหนดเวลาไว้ล่วงหน้าเพื่อลบและไม่สามารถลบได้
- เฉพาะอินสแตนซ์ที่กำหนดไว้ล่วงหน้าของงานที่กำหนดเวลาไว้เท่านั้นที่จัดเก็บไว้ในฐานข้อมูล อินสแตนซ์ที่ไม่ได้กำหนดไว้ล่วงหน้าคือวัตถุเซสชันและไม่ได้จัดเก็บไว้ในฐานข้อมูล
- คำตอบที่ถูกต้อง 1 และ 2
- คำตอบที่ถูกต้อง 2 และ 3
- คำตอบที่ถูกต้อง 1, 2, 3
คำถาม 09.67 ของการสอบ 1C: Platform professional หากใช้ฟังก์ชันเป็นเมธอดงานตามกำหนดการ ดังนั้น:
- ค่าที่ส่งคืนของฟังก์ชันจะถูกละเว้น
- ข้อผิดพลาดเกิดขึ้นเมื่อพยายามดำเนินงาน
- ระบบจะรอการดำเนินการของงานนี้ (การดำเนินการจะไม่เกิดขึ้นแบบอะซิงโครนัส)
- ค่าจะถูกส่งกลับไปยังพารามิเตอร์ที่สอดคล้องกันของงานที่กำหนดเวลาไว้
คำถาม 09.61 ของการสอบ 1C: Platform professional งานตามกำหนดเวลาและงานเบื้องหลังเกี่ยวข้องกันได้อย่างไร?
- งานที่กำหนดเวลาไว้สามารถวางไข่งานเบื้องหลังได้
- งานที่กำหนดเวลาไว้จำเป็นต้องวางไข่งานเบื้องหลัง
- งานเบื้องหลังจำเป็นต้องสร้างงานตามกำหนดเวลา
- ไม่มีความสัมพันธ์
คำถาม 09.65 ของการสอบ 1C: Platform professional เพื่อให้แน่ใจว่าการดำเนินงานตามกำหนดการและงานพื้นหลัง คุณต้อง:
- 1C: การเริ่มต้นองค์กรด้วยการตั้งค่าสถานะ "Scheduler" เมื่อเริ่มต้น
- ความพร้อมใช้งานของการเปิดตัว 1C:Enterprise พร้อมดำเนินการตามวิธีการที่สอดคล้องกันของระบบเป็นระยะ
- ความพร้อมใช้งานของการเปิดตัว 1C: Enterprise ด้วยวิธีการที่สอดคล้องกันของระบบ (แต่เฉพาะในเวอร์ชันไฟล์ของระบบเท่านั้น)
- ทั้งในเวอร์ชันไฟล์และไคลเอ็นต์เซิร์ฟเวอร์ ไม่จำเป็นต้องเปิดใช้อินสแตนซ์ 1C:Enterprise
จากคำตอบ คำตอบที่ถูกต้องคือข้อที่สี่
คำถาม 09.57 ของการสอบ 1C: Platform professional งานพื้นหลังช่วยให้คุณ:
- ทำตามขั้นตอนตามกำหนดเวลา
- ดำเนินการตามขั้นตอนแบบอะซิงโครนัส
- รีสตาร์ทในกรณีที่เกิดข้อผิดพลาด
- คำตอบที่ถูกต้อง 1 และ 2
- คำตอบที่ถูกต้อง 2 และ 3
- คำตอบที่ถูกต้อง 1, 2, 3
คำถาม 09.58 ของการสอบ 1C: Platform professional จำนวนของงานพื้นหลังที่ทำงานพร้อมกันสามารถเป็น:
- ใด ๆ โดยไม่จำกัด
- เพียงหนึ่งงานต่อหนึ่งฐานข้อมูล
- หนึ่งงานต่อเซสชันผู้ใช้เท่านั้น
- จำนวนเท่าใดก็ได้ แต่คุณไม่สามารถรันสองงานด้วยชื่อคีย์และเมธอดเดียวกันได้
- หมายเลขใดก็ได้ แต่คุณไม่สามารถรันสองงานด้วยคีย์และชื่อเดียวกันได้
- จำนวนเท่าใดก็ได้ แต่คุณไม่สามารถเรียกใช้งานสองงานด้วยคีย์เดียวกันและเชื่อมโยงกับออบเจกต์ข้อมูลเมตาเดียวกันได้
คำถาม 09.66 ของการสอบ 1C: Platform professional งานพื้นหลังที่เสร็จสมบูรณ์:
- เก็บไว้ในฐานข้อมูล
- เป็นอ็อบเจกต์เซสชัน ซึ่งถูกเก็บไว้เป็นระยะเวลาหนึ่ง (ไม่ได้จัดเก็บไว้ในฐานข้อมูล)
- ไม่ได้เก็บไว้แต่อย่างใด
บทความนี้แสดงตัวอย่างการทำงานกับงานเบื้องหลัง เช่น งานพื้นหลัง 1C เปิดตัวแล้ววิธีรับรายการงานโดยใช้วิธีการ "GetBackgroundJobs()". ดังนั้นเมธอดนี้จึงคืนอาร์เรย์มาให้เรา มาดูกันว่าประกอบด้วยอะไรบ้าง
ฉันจะทำการจองทันทีว่าตัวอย่างข้างต้นได้รับการพัฒนาในฐานข้อมูลเวอร์ชันไคลเอ็นต์เซิร์ฟเวอร์
รูปด้านบนแสดงเนื้อหาของอาร์เรย์นี้
ให้ความสนใจกับสนาม "สถานะ". ประกอบด้วยข้อมูลเกี่ยวกับว่างานพื้นหลังที่รันอยู่เสร็จสมบูรณ์แล้วหรือยังคงทำงานอยู่หรือไม่
นอกจากนี้ยังมีข้อมูลเกี่ยวกับการดำเนินงานที่ไม่สำเร็จ อาร์เรย์นี้ยังมีข้อมูลเกี่ยวกับคีย์ ตัวระบุเฉพาะ ชื่อของงานเบื้องหลัง ข้อมูลเกี่ยวกับการรันและงานที่เสร็จสมบูรณ์จะถูกจัดเก็บไว้ในฐานข้อมูล แต่มีการจำกัดจำนวนของเรกคอร์ดที่จัดเก็บไว้ในตาราง จำนวนนี้มีประมาณ 1,000 รายการ นั่นคือเมื่อมีการเพิ่มองค์ประกอบใหม่ องค์ประกอบเก่าจะถูกลบออก นอกจากนี้ งานจะถูกลบออกจากตารางหากงานนั้นเสร็จสิ้นไปแล้วมากกว่าหนึ่งวัน
ตัวอย่างการทำงานกับงานพื้นหลัง 1C - วิธี "GetBackgroundTasks"
ลองดูการทำงานกับงานพื้นหลังโดยใช้วิธีการตัวอย่าง "GetBackgroundJobs()". ใน วิธีนี้เป็นไปได้ที่จะตั้งค่าตัวกรองในบันทึกที่ได้รับ นั่นคือในฐานะพารามิเตอร์เมธอด เราต้องผ่านโครงสร้าง
โครงสร้างอาจมีฟิลด์: ตัวระบุเฉพาะ, คีย์, สถานะ, เริ่ม, สิ้นสุด, ชื่อ, MethodName, ScheduledTask.
ตัวอย่างเช่น หากเราต้องการเฉพาะงานที่รันอยู่ เราจะกำหนดการเลือกด้วยชื่อของอิลิเมนต์ของโครงสร้าง "สถานะ" และค่าที่เราจะตั้งค่าการแจงนับระบบ "สถานะของงานพื้นหลัง" เป็นสถานะใช้งาน ดังนั้น ก่อนอื่นคุณต้องแน่ใจว่าบันทึกเกี่ยวกับการดำเนินการงานเบื้องหลัง 1C ปรากฏในฐานข้อมูลสาธิต
ลองทำสิ่งต่อไปนี้เพื่อใช้ตัวอย่าง:
1. มาสร้างโมดูลร่วมกัน "ตัวจัดการพื้นหลัง"ที่ทำงานบนเซิร์ฟเวอร์
![](https://i1.wp.com/1c-programist.ru/images/obschiy_modul_fon2.jpg)
และเพิ่มรหัสต่อไปนี้เข้าไป:
ขั้นตอนดำเนินการส่งออกการคำนวณพื้นหลัง (พารามิเตอร์)เวลาเริ่มต้น = วันที่ปัจจุบัน () ;
ByeCurrentDate() - เวลาเริ่มต้น วัฏจักร
EndCycle ;
จบขั้นตอน2. สร้างการประมวลผล วางปุ่มบนแบบฟอร์ม "ปฏิบัติงานอยู่เบื้องหลัง"และในขั้นตอนการจัดการเหตุการณ์การคลิกปุ่ม ให้เพิ่มรหัสต่อไปนี้:
ขั้นตอน &OnClient ExecuteJob(คำสั่ง) ExecuteBackgroundJobOnServer() ; จบขั้นตอน
คำอธิบายขั้นตอนที่เรียก:
ขั้นตอน &AtServer ExecuteBackgroundJobAtServer() พารามิเตอร์ BackgroundJob = อาร์เรย์ใหม่ พารามิเตอร์ของ BackgroundJob เพิ่ม( "พารามิเตอร์บางอย่าง" "ทดสอบ" ) ; BackgroundJobParameters = อาร์เรย์ใหม่; พารามิเตอร์ของ BackgroundJob เพิ่ม( "พารามิเตอร์บางอย่าง") ; งานพื้นหลัง ดำเนินการ ( "BackgroundJobHandlers.PerformBackgroundComputation", BackgroundJobParameters, UniqueIdentifier ใหม่, "ทดสอบ 2") ; จบขั้นตอน // ExecuteBackgroundJobOnServer()
ตอนนี้มาเรียกใช้ 1C ในโหมดองค์กรและเริ่มงานเบื้องหลัง
![](https://i1.wp.com/1c-programist.ru/images/knopka-vypolnit-zadanie.jpg)
พร้อม. จากการดำเนินการเหล่านี้ เราได้รับรองว่าบันทึกเกี่ยวกับการดำเนินการของงานเบื้องหลัง 1C ได้ปรากฏในฐานข้อมูลสาธิตของเรา และตอนนี้เราสามารถแสดงตัวอย่างของการได้รับอาร์เรย์ที่มีอยู่ในฐานข้อมูลของเรา
การเพิ่มปุ่มอื่นลงในแบบฟอร์ม "รับงานเบื้องหลัง". ลองเขียนโค้ดต่อไปนี้ในขั้นตอนการจัดการคลิก:
ขั้นตอน &OnClient GetBackgroundJobs(คำสั่ง) GetBackgroundJobsOnServer() ; จบขั้นตอน
ข้อความของขั้นตอนบนเซิร์ฟเวอร์:
ขั้นตอน&AtServer GetBackgroundJobsAtServer() พารามิเตอร์การเลือก = โครงสร้างใหม่("ชื่อ" , "ทดสอบ 2") ; BackgroundJobsList = งานเบื้องหลัง GetBackgroundTasks(ตัวเลือกการเลือก); สำหรับแต่ละงานจากรายการของรายงานลูปงานเบื้องหลัง (ชื่องาน) ; EndCycle ; จบขั้นตอน // GetBackgroundJobsOnServer()
เรียกใช้ 1C เพื่อดำเนินการและกดปุ่ม "รับงานเบื้องหลัง".