งานพื้นหลังบนเซิร์ฟเวอร์แยกต่างหาก งานขั้นตอนสากล

อาจไม่ใช่การกำหนดค่าที่ร้ายแรงเพียงครั้งเดียวใน 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:

  1. ดำเนินการภายใต้ ผู้ใช้วินโดวส์ซึ่งกระบวนการของโปรแกรมเซิร์ฟเวอร์ 1C กำลังทำงานอยู่
  2. สามารถสร้างได้ในภาษา 1C โดยพลการโดยไม่มีงานตามกำหนดเวลา (สำหรับ การคำนวณแบบขนานบนเซิร์ฟเวอร์)

สำคัญ!งานพื้นหลังทำงานบนเซิร์ฟเวอร์

ความแตกต่างระหว่างงานตามกำหนดการและการสมัครกิจกรรม:

  • อนุญาตให้คุณเรียกใช้ตัวจัดการไม่ได้เมื่อเกิดเหตุการณ์ (อย่างที่มันทำ) แต่ตามกำหนดเวลา

กลไกของงานตามกำหนดการและงานพื้นหลัง:

  • โดยอัตโนมัติ - ในโหมดการทำงานของไคลเอนต์เซิร์ฟเวอร์ (เนื่องจากการทำงานของ DBMS)
  • โต้ตอบ - เมื่อใช้ฐานข้อมูลไฟล์โดยดำเนินการคำสั่ง ExecuteProcessingJobs()จากเซสชันในโหมด 1C:Enterprise

คุณสมบัติของงานประจำและพื้นหลัง 1C:

  1. ตัวอย่างงานที่กำหนดเวลาไว้สามารถสร้างได้ด้วยโปรแกรมหากงานที่จัดกำหนดการไว้ล่วงหน้า (แฟล็ก "กำหนดไว้ล่วงหน้า" ถูกตั้งค่าในคุณสมบัติ) จากนั้นงานจะถูกสร้างขึ้นในอินสแตนซ์เดียวกับกำหนดการที่ระบุในตัวกำหนดค่า อินสแตนซ์ของงานที่ไม่ได้กำหนดไว้ล่วงหน้าปรากฏขึ้นตามกำหนดการที่ตั้งโปรแกรมในโหมดองค์กร
  2. สามารถดำเนินการตามกำหนดเวลาจำนวนเท่าใดก็ได้ในเวลาเดียวกัน, แต่สองงานจะไม่ทำงาน ( เพื่อหลีกเลี่ยงการชนกัน):
    • ด้วยคีย์เดียวกัน (ถึง คีย์ - คุณสมบัติของงานตามกำหนดเวลาที่อนุญาตให้คุณจัดกลุ่มงานประเภทเดียวกันหลายงาน);
    • เชื่อมโยงกับวัตถุข้อมูลเมตาเดียวกัน
  3. โพรซีเดอร์สามารถใช้เป็นวิธีงานตามกำหนดเวลาซึ่งสามารถมีพารามิเตอร์กี่ตัวก็ได้ จำนวนพารามิเตอร์ของวิธีการจัดกำหนดการงานสอดคล้องกับจำนวนของพารามิเตอร์ของงานจัดกำหนดการเอง
  4. ในการสร้างงานที่กำหนดเวลาไว้ ผู้ใช้ต้องมีสิทธิ์ของผู้ดูแลระบบ
  5. หากมีการกำหนดงานที่จัดกำหนดการไว้ในตัวกำหนดค่า (ในวัตถุที่สอดคล้องกัน) ตามที่กำหนดไว้ล่วงหน้าดังนั้นอินสแตนซ์ที่กำหนดไว้ล่วงหน้าของงานที่กำหนดเวลาไว้จะไม่สามารถทำเครื่องหมายเพื่อลบหรือลบได้ (แต่สามารถเปลี่ยนแปลงได้ และจะพร้อมใช้งานในรายการเทมเพลตงานที่กำหนดเวลาไว้เสมอ)
  6. หากใช้ฟังก์ชันเป็นวิธีงานตามกำหนดเวลาค่าที่ส่งคืนของฟังก์ชันจะถูกละเว้น
  7. เพื่อให้แน่ใจว่าการดำเนินงานตามกำหนดการและงานเบื้องหลังทั้งในไฟล์และเวอร์ชันไคลเอ็นต์เซิร์ฟเวอร์ไม่จำเป็นต้องเปิดใช้อินสแตนซ์ 1C:Enterprise

    ความคิดเห็น

    ... ในโหมดการทำงานของไคลเอนต์เซิร์ฟเวอร์ งานที่จัดกำหนดการไว้จะถูกเรียกใช้โดยตัวจัดการคลัสเตอร์ ดังนั้น แม้ว่าจะไม่มีการสร้างการเชื่อมต่อไคลเอนต์กับฐานข้อมูล งานตามกำหนดเวลาจะถูกดำเนินการ (โดยมีเงื่อนไขว่าไม่ได้ถูกห้ามสำหรับฐานข้อมูลเฉพาะ) ใน รุ่นของไฟล์ทำงานให้กับ เริ่มต้นอัตโนมัติงานที่กำหนดเวลาไว้ต้องการการเชื่อมต่อไคลเอ็นต์เฉพาะเพื่อใช้เป็นตัวจัดกำหนดการงาน ต้องเริ่มการรอในการเชื่อมต่อนี้ โดยมีบางช่วงดำเนินการเรียกไปยังเมธอดภาษาที่ 1 ดำเนินการประมวลผลงาน().

    [ซ่อน]

  8. งานพื้นหลังอนุญาต ทำตามขั้นตอน อะซิงโครนัส
  9. งานเบื้องหลังสามารถรันพร้อมกันกี่งานก็ได้แต่คุณไม่สามารถรันสองงานด้วยชื่อคีย์และเมธอดเดียวกันได้
  10. เสร็จสิ้นงานพื้นหลังเป็นวัตถุเซสชันซึ่งถูกเก็บไว้เป็นระยะเวลาหนึ่ง (ใน ฐานข้อมูลไม่รอด) งานพื้นหลังคือวัตถุภาษา 1C: Enterprise ที่มีอยู่เฉพาะในระหว่างเซสชัน
  11. การตั้งค่างานที่กำหนดเวลาไว้ในโหมดไคลเอ็นต์เซิร์ฟเวอร์ของการดำเนินการ 1C

    งานที่กำหนดเวลาได้รับการกำหนดค่าในแผงคุณสมบัติ วัตถุนี้การกำหนดค่า

    การวาดจานคุณสมบัติของวัตถุ 1C "งานปกติ"

    [ซ่อน]

    แผงคุณสมบัติของวัตถุ "งานประจำ":

  • ชื่อของเมธอดคือพาธไปยังโพรซีเดอร์ ซึ่งเป็นสาธารณสมบัติและจะถูกดำเนินการในงานเบื้องหลังตามกำหนดการที่ระบุ ไม่แนะนำให้ใช้มาตรฐาน แต่ให้สร้างของคุณเอง
  • ชื่อ - กำหนดชื่อที่แสดงในการควบคุมงาน
  • คีย์ - ช่วยให้คุณสามารถจัดกลุ่มงานตามกำหนดเวลาต่างๆ 1C ได้ในขณะเดียวกันก็สามารถเปิดใช้งานได้ งานเดียวเท่านั้นที่มีค่าคีย์เดียวกันค่านั้นสามารถกำหนดได้ตามอำเภอใจ ค่าว่างจะไม่นำมาพิจารณาระหว่างการควบคุม (นั่นคือถือว่าว่างเปล่า)
  • การใช้งาน - แฟล็กสำหรับการใช้งานที่กำหนดเวลาไว้
  • กำหนดไว้- แฟล็กระบุว่างานตามกำหนดการกำหนดไว้ล่วงหน้าหรือไม่ เช่น ทำงานทันทีหลังจากวางลงในฐานข้อมูล (งานจะถูกสร้างขึ้นในอินสแตนซ์เดียวพร้อมกำหนดการที่ระบุในตัวกำหนดค่า) งานที่ไม่ได้กำหนดไว้ล่วงหน้าจะปรากฏโดยทางโปรแกรมในเวลาของกำหนดการ (คุณต้องใช้การประมวลผล "Job Console" หรือเรียกใช้การเปิดใช้งานโดยทางโปรแกรม)
  • จำนวนครั้งในการลองใหม่เมื่องานขัดข้อง- รีสตาร์ทกี่ครั้ง งานพื้นหลังหากดำเนินการโดยมีข้อผิดพลาด
  • งานยกเลิกช่วงเวลาลองใหม่- ความถี่ในการเริ่มงานพื้นหลังใหม่หากมีการดำเนินการโดยมีข้อผิดพลาด
  • กำหนดการ - การตั้งค่าช่วงเวลาสำหรับการเรียกใช้ขั้นตอนที่ระบุในฟิลด์ "ชื่อวิธีการ"

ในการจัดการงานพื้นหลัง คุณสามารถใช้การประมวลผลจากดิสก์ ITS "" ซึ่งช่วยให้คุณ:

  • ตรวจสอบการดำเนินงานของงานตามกำหนดเวลาและพื้นหลัง
  • ลบและสร้างงานพื้นหลังใหม่โดยใช้ภาษาในตัว
  • ปิดใช้งานกำหนดการชั่วคราว (?)

คุณสมบัติของการตั้งค่างานตามกำหนดเวลา 1C:

    งานจะดำเนินการโดยอัตโนมัติ - ต้องตรวจสอบ (ตรวจสอบ)

    [ซ่อน]

การตั้งค่างานที่กำหนดเวลาไว้ในโหมดไฟล์ของการดำเนินการ 1C

ใน โหมดไฟล์สำหรับงานตามกำหนดการ จะต้องเปิดใช้เซสชันแยกต่างหากของโปรแกรม 1C ปัญหานี้มักจะแก้ไขได้โดยการกำหนดผู้ใช้ "ทางเทคนิค" ซึ่งมีเซสชันทำงานอยู่เสมอ

การเริ่มต้นของงานที่กำหนดเวลาไว้เกิดขึ้น:

  1. โดยทั่วไป - เมื่อเริ่มเมธอด ExecuteProcessingJobs();
  2. สำหรับผู้ใช้เฉพาะ - เมื่อเรียกใช้เมธอด 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. สามารถสร้างได้ในรูปแบบของรายการ เข้าถึงได้ผ่านคำสั่งเมนูหลักของโปรแกรม ("การทำงาน / งานที่กำหนดเวลาไว้")
  3. จะมีการสร้างอินสแตนซ์เดียวเท่านั้น (เมื่อมีการสร้างออบเจกต์การกำหนดค่าที่สอดคล้องกัน)
  4. ถูกกำหนดเฉพาะในโหมดการกำหนดค่าบนแท็บอื่นๆ โดยใช้ปุ่ม "องค์ประกอบ"
  5. คำตอบที่ถูกต้อง 1 และ 2
คำตอบที่ถูกต้องคือคำตอบแรก หากมีการกำหนดงานที่กำหนดเวลาไว้ล่วงหน้า (รูป) งานจะถูกสร้างขึ้นในอินสแตนซ์เดียวพร้อมกำหนดการที่ระบุในตัวกำหนดค่า อินสแตนซ์ของงานที่ไม่ได้กำหนดไว้ล่วงหน้าปรากฏขึ้นตามกำหนดเวลาที่ตั้งค่าไว้ในโหมด Enterprise โดยทางโปรแกรม
คำถาม 09.60 ของการสอบ 1C: Platform professional จำนวนของการดำเนินงานตามกำหนดเวลาพร้อมกันสามารถเป็น:
  1. ใด ๆ โดยไม่จำกัด
  2. จำนวนเท่าใดก็ได้ แต่จะไม่รัน 2 งานด้วยชื่อคีย์และเมธอดเดียวกัน
  3. จำนวนใดๆ แต่สองงานที่มีคีย์และชื่อเดียวกันจะไม่ถูกดำเนินการ
  4. จำนวนใดก็ได้ แต่จะไม่รันงานสองงานด้วยคีย์เดียวกันและเชื่อมโยงกับออบเจกต์ข้อมูลเมตาเดียวกัน
คำตอบที่ถูกต้องคือหก คีย์คือคุณสมบัติของงานตามกำหนดการที่อนุญาตให้คุณจัดกลุ่มงานประเภทเดียวกันหลายงาน สามารถรันงานเดียวที่มีค่าคีย์เดียวพร้อมกันได้ (ไม่นับค่าว่าง) นอกจากนี้ จะมีการดำเนินการลงทะเบียนเพียงงานเดียวในแต่ละครั้งบนวัตถุหนึ่งๆ เพื่อหลีกเลี่ยงการชนกัน
คำถาม 09.62 ของการสอบ 1C: Platform professional ในฐานะที่เป็นวิธีการของงานตามกำหนดการ สามารถใช้ขั้นตอนซึ่ง:
  1. ไม่ควรมีพารามิเตอร์
  2. สามารถมีได้เพียงหนึ่งพารามิเตอร์เท่านั้น (รายการค่า)
  3. สามารถมีได้เพียงพารามิเตอร์เดียวเท่านั้น (struct)
  4. สามารถมีได้เพียงหนึ่งพารามิเตอร์ (อาร์เรย์)
  5. สามารถเป็นพารามิเตอร์จำนวนเท่าใดก็ได้
คำตอบที่ถูกต้องคือข้อที่ห้า จำนวนพารามิเตอร์ของวิธีการจัดกำหนดการงานสอดคล้องกับจำนวนของพารามิเตอร์ของงานจัดกำหนดการเอง
คำถาม 09.63 ของการสอบ 1C: Platform professional ในการสร้างงานที่กำหนดเวลาไว้ ผู้ใช้ต้องมี:
  1. สิทธิ์ของผู้ดูแลระบบ
  2. สิทธิ์ในการใช้ออบเจกต์การกำหนดค่านี้ (กำหนดค่าได้ในบทบาท)
  3. สิทธิ์ในการสร้างอินสแตนซ์ใหม่ของวัตถุการกำหนดค่านี้ (กำหนดค่าได้ในบทบาท)
  4. สิทธิ์ใด ๆ วิธีงานตามกำหนดเวลาจะดำเนินการในโหมดสิทธิพิเศษ
คำตอบที่ถูกต้องคือคำตอบแรก ผู้ดูแลระบบเท่านั้นที่มีสิทธิ์
คำถาม 09.64 ของการสอบ 1C: Platform professional หากมีการกำหนดงานที่กำหนดเวลาไว้ในตัวกำหนดค่า (ในวัตถุการกำหนดค่าที่สอดคล้องกัน) ตามที่กำหนดไว้ล่วงหน้า ก็จะมีลักษณะดังนี้ (เลือกคำตอบที่สมบูรณ์ที่สุด):
  1. ไม่สามารถสร้างอินสแตนซ์ที่ไม่ได้กำหนดไว้ล่วงหน้าของงานตามกำหนดการที่มีการเชื่อมโยงกับวัตถุข้อมูลเมตาของงานตามกำหนดเวลาที่กำหนดไว้ล่วงหน้า
  2. ไม่สามารถทำเครื่องหมายอินสแตนซ์งานที่กำหนดเวลาไว้ล่วงหน้าเพื่อลบและไม่สามารถลบได้
  3. เฉพาะอินสแตนซ์ที่กำหนดไว้ล่วงหน้าของงานที่กำหนดเวลาไว้เท่านั้นที่จัดเก็บไว้ในฐานข้อมูล อินสแตนซ์ที่ไม่ได้กำหนดไว้ล่วงหน้าคือวัตถุเซสชันและไม่ได้จัดเก็บไว้ในฐานข้อมูล
  4. คำตอบที่ถูกต้อง 1 และ 2
  5. คำตอบที่ถูกต้อง 2 และ 3
  6. คำตอบที่ถูกต้อง 1, 2, 3
คำตอบที่ถูกต้องคือคำตอบที่สอง อินสแตนซ์ของงานที่กำหนดไว้ล่วงหน้าสามารถแก้ไขได้ แต่ไม่สามารถลบออกได้ จะมีอยู่ในรายการเทมเพลตเสมอ:
คำถาม 09.67 ของการสอบ 1C: Platform professional หากใช้ฟังก์ชันเป็นเมธอดงานตามกำหนดการ ดังนั้น:
  1. ค่าที่ส่งคืนของฟังก์ชันจะถูกละเว้น
  2. ข้อผิดพลาดเกิดขึ้นเมื่อพยายามดำเนินงาน
  3. ระบบจะรอการดำเนินการของงานนี้ (การดำเนินการจะไม่เกิดขึ้นแบบอะซิงโครนัส)
  4. ค่าจะถูกส่งกลับไปยังพารามิเตอร์ที่สอดคล้องกันของงานที่กำหนดเวลาไว้
คำตอบที่ถูกต้องคือคำตอบแรก
คำถาม 09.61 ของการสอบ 1C: Platform professional งานตามกำหนดเวลาและงานเบื้องหลังเกี่ยวข้องกันได้อย่างไร?
  1. งานที่กำหนดเวลาไว้สามารถวางไข่งานเบื้องหลังได้
  2. งานที่กำหนดเวลาไว้จำเป็นต้องวางไข่งานเบื้องหลัง
  3. งานเบื้องหลังจำเป็นต้องสร้างงานตามกำหนดเวลา
  4. ไม่มีความสัมพันธ์
คำตอบที่ถูกต้องคือคำตอบที่สอง - งานเบื้องหลังคือวัตถุที่สร้างโดยงานตามกำหนดเวลา และต้องสร้างมันขึ้นมา มิฉะนั้น งานที่กำหนดเวลาไว้เองจะสูญเสียความหมายไป
คำถาม 09.65 ของการสอบ 1C: Platform professional เพื่อให้แน่ใจว่าการดำเนินงานตามกำหนดการและงานพื้นหลัง คุณต้อง:
  1. 1C: การเริ่มต้นองค์กรด้วยการตั้งค่าสถานะ "Scheduler" เมื่อเริ่มต้น
  2. ความพร้อมใช้งานของการเปิดตัว 1C:Enterprise พร้อมดำเนินการตามวิธีการที่สอดคล้องกันของระบบเป็นระยะ
  3. ความพร้อมใช้งานของการเปิดตัว 1C: Enterprise ด้วยวิธีการที่สอดคล้องกันของระบบ (แต่เฉพาะในเวอร์ชันไฟล์ของระบบเท่านั้น)
  4. ทั้งในเวอร์ชันไฟล์และไคลเอ็นต์เซิร์ฟเวอร์ ไม่จำเป็นต้องเปิดใช้อินสแตนซ์ 1C:Enterprise
ในทางปฏิบัติ คำตอบที่ถูกต้องคือข้อที่สาม ในโหมดการทำงานของไคลเอนต์เซิร์ฟเวอร์ งานที่จัดกำหนดการไว้จะถูกเรียกใช้โดยตัวจัดการคลัสเตอร์ ดังนั้น แม้ว่าจะไม่มีการสร้างการเชื่อมต่อไคลเอนต์กับฐานข้อมูล งานตามกำหนดเวลาจะถูกดำเนินการ (โดยมีเงื่อนไขว่าไม่ได้ถูกห้ามสำหรับฐานข้อมูลเฉพาะ) ในเวอร์ชันไฟล์ของงาน หากต้องการเริ่มงานตามกำหนดเวลาโดยอัตโนมัติ คุณต้องมีการเชื่อมต่อไคลเอนต์เฉพาะที่ใช้เป็นตัวกำหนดเวลางาน ต้องเริ่มการประมวลผลการรอบนการเชื่อมต่อนี้ โดยทำการเรียกใช้เมธอดภาษาที่ 1 ExecuteJobProcessing() ในบางช่วงเวลา
จากคำตอบ คำตอบที่ถูกต้องคือข้อที่สี่
คำถาม 09.57 ของการสอบ 1C: Platform professional งานพื้นหลังช่วยให้คุณ:
  1. ทำตามขั้นตอนตามกำหนดเวลา
  2. ดำเนินการตามขั้นตอนแบบอะซิงโครนัส
  3. รีสตาร์ทในกรณีที่เกิดข้อผิดพลาด
  4. คำตอบที่ถูกต้อง 1 และ 2
  5. คำตอบที่ถูกต้อง 2 และ 3
  6. คำตอบที่ถูกต้อง 1, 2, 3
คำตอบที่ถูกต้องคือคำตอบที่สอง อะซิงโครนัสหมายถึงการไม่รอให้กระบวนการเสร็จสิ้น
คำถาม 09.58 ของการสอบ 1C: Platform professional จำนวนของงานพื้นหลังที่ทำงานพร้อมกันสามารถเป็น:
  1. ใด ๆ โดยไม่จำกัด
  2. เพียงหนึ่งงานต่อหนึ่งฐานข้อมูล
  3. หนึ่งงานต่อเซสชันผู้ใช้เท่านั้น
  4. จำนวนเท่าใดก็ได้ แต่คุณไม่สามารถรันสองงานด้วยชื่อคีย์และเมธอดเดียวกันได้
  5. หมายเลขใดก็ได้ แต่คุณไม่สามารถรันสองงานด้วยคีย์และชื่อเดียวกันได้
  6. จำนวนเท่าใดก็ได้ แต่คุณไม่สามารถเรียกใช้งานสองงานด้วยคีย์เดียวกันและเชื่อมโยงกับออบเจกต์ข้อมูลเมตาเดียวกันได้
คำตอบที่ถูกต้องคือข้อที่สี่
คำถาม 09.66 ของการสอบ 1C: Platform professional งานพื้นหลังที่เสร็จสมบูรณ์:
  1. เก็บไว้ในฐานข้อมูล
  2. เป็นอ็อบเจกต์เซสชัน ซึ่งถูกเก็บไว้เป็นระยะเวลาหนึ่ง (ไม่ได้จัดเก็บไว้ในฐานข้อมูล)
  3. ไม่ได้เก็บไว้แต่อย่างใด
คำตอบที่ถูกต้องคือข้อที่หก - งานพื้นหลังคือวัตถุภาษา 1C: Enterprise ที่มีอยู่เฉพาะในช่วงระยะเวลาของเซสชัน

บทความนี้แสดงตัวอย่างการทำงานกับงานเบื้องหลัง เช่น งานพื้นหลัง 1C เปิดตัวแล้ววิธีรับรายการงานโดยใช้วิธีการ "GetBackgroundJobs()". ดังนั้นเมธอดนี้จึงคืนอาร์เรย์มาให้เรา มาดูกันว่าประกอบด้วยอะไรบ้าง

ฉันจะทำการจองทันทีว่าตัวอย่างข้างต้นได้รับการพัฒนาในฐานข้อมูลเวอร์ชันไคลเอ็นต์เซิร์ฟเวอร์

รูปด้านบนแสดงเนื้อหาของอาร์เรย์นี้

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

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

ตัวอย่างการทำงานกับงานพื้นหลัง 1C - วิธี "GetBackgroundTasks"

ลองดูการทำงานกับงานพื้นหลังโดยใช้วิธีการตัวอย่าง "GetBackgroundJobs()". ใน วิธีนี้เป็นไปได้ที่จะตั้งค่าตัวกรองในบันทึกที่ได้รับ นั่นคือในฐานะพารามิเตอร์เมธอด เราต้องผ่านโครงสร้าง

โครงสร้างอาจมีฟิลด์: ตัวระบุเฉพาะ, คีย์, สถานะ, เริ่ม, สิ้นสุด, ชื่อ, MethodName, ScheduledTask.

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


ลองทำสิ่งต่อไปนี้เพื่อใช้ตัวอย่าง:
1. มาสร้างโมดูลร่วมกัน "ตัวจัดการพื้นหลัง"ที่ทำงานบนเซิร์ฟเวอร์

และเพิ่มรหัสต่อไปนี้เข้าไป:

ขั้นตอนดำเนินการส่งออกการคำนวณพื้นหลัง (พารามิเตอร์)

เวลาเริ่มต้น = วันที่ปัจจุบัน () ;

ByeCurrentDate() - เวลาเริ่มต้น วัฏจักร

EndCycle ;

จบขั้นตอน

2. สร้างการประมวลผล วางปุ่มบนแบบฟอร์ม "ปฏิบัติงานอยู่เบื้องหลัง"และในขั้นตอนการจัดการเหตุการณ์การคลิกปุ่ม ให้เพิ่มรหัสต่อไปนี้:

ขั้นตอน &OnClient ExecuteJob(คำสั่ง) ExecuteBackgroundJobOnServer() ; จบขั้นตอน

คำอธิบายขั้นตอนที่เรียก:

ขั้นตอน &AtServer ExecuteBackgroundJobAtServer() พารามิเตอร์ BackgroundJob = อาร์เรย์ใหม่ พารามิเตอร์ของ BackgroundJob เพิ่ม( "พารามิเตอร์บางอย่าง" "ทดสอบ" ) ; BackgroundJobParameters = อาร์เรย์ใหม่; พารามิเตอร์ของ BackgroundJob เพิ่ม( "พารามิเตอร์บางอย่าง") ; งานพื้นหลัง ดำเนินการ ( "BackgroundJobHandlers.PerformBackgroundComputation", BackgroundJobParameters, UniqueIdentifier ใหม่, "ทดสอบ 2") ; จบขั้นตอน // ExecuteBackgroundJobOnServer()

ตอนนี้มาเรียกใช้ 1C ในโหมดองค์กรและเริ่มงานเบื้องหลัง


พร้อม. จากการดำเนินการเหล่านี้ เราได้รับรองว่าบันทึกเกี่ยวกับการดำเนินการของงานเบื้องหลัง 1C ได้ปรากฏในฐานข้อมูลสาธิตของเรา และตอนนี้เราสามารถแสดงตัวอย่างของการได้รับอาร์เรย์ที่มีอยู่ในฐานข้อมูลของเรา

การเพิ่มปุ่มอื่นลงในแบบฟอร์ม "รับงานเบื้องหลัง". ลองเขียนโค้ดต่อไปนี้ในขั้นตอนการจัดการคลิก:

ขั้นตอน &OnClient GetBackgroundJobs(คำสั่ง) GetBackgroundJobsOnServer() ; จบขั้นตอน

ข้อความของขั้นตอนบนเซิร์ฟเวอร์:

ขั้นตอน&AtServer GetBackgroundJobsAtServer() พารามิเตอร์การเลือก = โครงสร้างใหม่("ชื่อ" , "ทดสอบ 2") ; BackgroundJobsList = งานเบื้องหลัง GetBackgroundTasks(ตัวเลือกการเลือก); สำหรับแต่ละงานจากรายการของรายงานลูปงานเบื้องหลัง (ชื่องาน) ; EndCycle ; จบขั้นตอน // GetBackgroundJobsOnServer()

เรียกใช้ 1C เพื่อดำเนินการและกดปุ่ม "รับงานเบื้องหลัง".



กำลังโหลด...
สูงสุด