Tugas terjadwal adalah kuncinya. Pekerjaan Terjadwal dan Latar Belakang (1Cv8)

Mekanisme pekerjaan

Mekanisme pekerjaan dirancang untuk menjalankan aplikasi atau fungsionalitas apa pun sesuai jadwal atau secara asinkron.

Mekanisme pekerjaan melakukan tugas-tugas berikut:

  • Kemampuan untuk menentukan prosedur rutin pada tahap konfigurasi sistem;
  • Eksekusi tindakan tertentu sesuai dengan jadwal;
  • Eksekusi panggilan ke prosedur atau fungsi tertentu tidak sinkron, mis. tanpa menunggu penyelesaiannya;
  • Melacak kemajuan pekerjaan tertentu dan mendapatkan status penyelesaiannya (nilai yang menunjukkan keberhasilan atau kegagalan pelaksanaannya);
  • Mendapatkan daftar tugas saat ini;
  • Kemampuan untuk menunggu selesainya satu atau lebih tugas;
  • Manajemen pekerjaan (kemungkinan pembatalan, pemblokiran eksekusi, dll.).

Mesin kerja terdiri dari komponen-komponen berikut:

  • Metadata tugas terjadwal;
  • Tugas terjadwal;
  • Pekerjaan latar belakang;
  • Penjadwal Tugas.

Pekerjaan latar belakang - dirancang untuk melakukan tugas aplikasi secara asinkron. Pekerjaan latar belakang diimplementasikan menggunakan bahasa bawaan.

Tugas terjadwal - dirancang untuk melakukan tugas aplikasi sesuai jadwal. Tugas terjadwal disimpan di infobase dan dibuat berdasarkan metadata yang ditentukan dalam konfigurasi. metadata tugas rutin berisi informasi seperti nama, metode, penggunaan, dll.

Pekerjaan terjadwal memiliki jadwal yang menentukan kapan metode yang terkait dengan pekerjaan terjadwal harus dijalankan. Jadwal biasanya diatur di basis informasi, tetapi juga dapat diatur pada tahap konfigurasi (misalnya, untuk tugas terjadwal yang telah ditentukan sebelumnya).

Penjadwal tugas digunakan untuk menjadwalkan pelaksanaan tugas yang dijadwalkan. Untuk setiap pekerjaan terjadwal, penjadwal secara berkala memeriksa apakah tanggal dan waktu saat ini cocok dengan jadwal pekerjaan terjadwal. Jika cocok, penjadwal menjadwalkan tugas tersebut untuk dijalankan. Untuk melakukannya, menurut tugas terjadwal ini, penjadwal membuat tugas latar belakang yang melakukan pemrosesan sebenarnya.

Pekerjaan latar belakang

Pekerjaan latar belakang berguna untuk melakukan perhitungan yang rumit, ketika hasil perhitungan dapat diperoleh setelah waktu yang lama. Mesin pekerjaan memiliki sarana untuk melakukan perhitungan seperti itu secara tidak sinkron.

Pekerjaan latar belakang memiliki metode terkait yang dipanggil saat pekerjaan latar belakang berjalan. Metode pekerjaan latar belakang dapat berupa prosedur atau fungsi Modul Bersama non-Global yang dapat dipanggil di server. Parameter pekerjaan latar belakang dapat berupa nilai apa pun yang diizinkan untuk diteruskan ke server. Parameter tugas latar belakang harus sama persis dengan parameter prosedur atau fungsi yang dipanggilnya. Jika metode pekerjaan latar belakang adalah fungsi, nilai pengembaliannya akan diabaikan.

Pekerjaan latar belakang dapat memiliki kunci - nilai aplikasi apa pun. Kunci memperkenalkan batasan pada peluncuran pekerjaan latar belakang - hanya satu pekerjaan latar belakang yang dapat dieksekusi per unit waktu dengan nilai kunci tertentu dan nama tertentu dari metode pekerjaan latar belakang (nama metode terdiri dari nama modul dan nama prosedur atau fungsi). Kuncinya memungkinkan Anda untuk mengelompokkan pekerjaan latar belakang yang memiliki metode yang sama menurut atribut aplikasi tertentu sehingga tidak lebih dari satu pekerjaan latar belakang yang dijalankan dalam satu grup.

Pekerjaan latar belakang dibuat dan dikelola secara terprogram dari koneksi apa pun. Setiap pengguna diizinkan untuk membuat pekerjaan latar belakang. Pada saat yang sama, dijalankan atas nama pengguna yang membuatnya. Pengguna dengan hak administratif, atau pengguna yang membuat tugas latar belakang ini, diizinkan untuk menerima tugas, serta menunggu penyelesaiannya, dari koneksi apa pun.

Pekerjaan latar belakang murni objek sesi, tetapi bukan milik sesi pengguna mana pun. Untuk setiap pekerjaan, sesi sistem khusus dibuat, dijalankan atas nama pengguna yang melakukan panggilan. Pekerjaan latar belakang tidak memiliki status persisten.

Pekerjaan latar belakang dapat menelurkan pekerjaan latar belakang lainnya. Dalam versi client-server, ini memungkinkan Anda untuk memparalelkan kalkulasi kompleks di seluruh proses kerja klaster, yang secara signifikan dapat mempercepat proses kalkulasi secara keseluruhan. Paralelisasi diimplementasikan dengan menelurkan beberapa pekerjaan latar belakang anak, menunggu masing-masing selesai dalam pekerjaan latar belakang utama.

Pekerjaan latar belakang yang berhasil atau gagal disimpan selama 24 jam dan kemudian dihapus. Jika jumlah pekerjaan latar belakang yang berjalan melebihi 1000, maka pekerjaan latar belakang terlama juga akan dihapus.

Tugas terjadwal

Tugas terjadwal digunakan saat Anda perlu melakukan tindakan berkala atau satu kali tertentu sesuai dengan jadwal.

Tugas terjadwal disimpan di infobase dan dibuat berdasarkan metadata tugas terjadwal yang ditentukan dalam konfigurasi. Metadata mendefinisikan parameter tugas terjadwal seperti: metode yang disebut, nama, kunci, kemampuan untuk menggunakan, tanda penentuan sebelumnya, dll. untuk melaksanakan tugas terjadwal, dll.

Pembuatan dan pengelolaan tugas terjadwal dilakukan secara terprogram dari koneksi apa pun dan hanya diizinkan untuk pengguna dengan hak administratif.

Catatan. Saat bekerja di versi file dimungkinkan untuk membuat dan mengedit tugas terjadwal tanpa meluncurkan penjadwal tugas.

Tugas terjadwal dikaitkan dengan metode yang dipanggil saat tugas terjadwal dijalankan. Metode pekerjaan terjadwal dapat berupa prosedur atau fungsi apa pun dari modul bersama non-global yang dapat dipanggil di server. Parameter pekerjaan terjadwal dapat berupa nilai apa pun yang diizinkan untuk diteruskan ke server. Parameter tugas terjadwal harus sama persis dengan parameter prosedur atau fungsi yang dipanggilnya. Jika metode pekerjaan terjadwal adalah sebuah fungsi, maka nilai kembaliannya akan diabaikan.

Tugas terjadwal dapat memiliki kunci - nilai apa pun yang diterapkan. Kuncinya memperkenalkan batasan pada peluncuran tugas terjadwal, sejak per unit waktu, di antara tugas terjadwal yang terkait dengan objek metadata yang sama, hanya satu tugas terjadwal dengan nilai kunci tertentu yang dapat dijalankan. Kunci memungkinkan Anda mengelompokkan tugas terjadwal yang terkait dengan objek metadata yang sama menurut atribut aplikasi tertentu sehingga tidak lebih dari satu tugas terjadwal yang dijalankan dalam satu grup.

Selama konfigurasi, Anda dapat menentukan pekerjaan terjadwal yang telah ditentukan sebelumnya. Pekerjaan terjadwal yang ditentukan sebelumnya tidak berbeda dengan pekerjaan terjadwal reguler, kecuali bahwa pekerjaan tersebut tidak dapat dibuat atau dihapus secara eksplisit. Jika metadata tugas terjadwal diatur ke tanda tugas terjadwal yang telah ditentukan sebelumnya, lalu saat memperbarui konfigurasi, tugas terjadwal yang telah ditentukan sebelumnya akan dibuat secara otomatis di infobase. Jika kotak centang yang ditentukan sebelumnya dikosongkan, tugas terjadwal yang ditentukan sebelumnya akan dihapus secara otomatis di basis informasi saat konfigurasi diperbarui. Nilai awal dari properti tugas terjadwal yang telah ditentukan sebelumnya (misalnya, jadwal) diatur dalam metadata. Di masa mendatang, saat aplikasi sedang berjalan, aplikasi tersebut dapat diubah. Pekerjaan terjadwal yang ditentukan sebelumnya tidak memiliki parameter.

Jadwal pekerjaan terjadwal menentukan pada titik waktu apa pekerjaan terjadwal harus dimulai. Jadwal memungkinkan Anda untuk mengatur: tanggal dan waktu mulai dan akhir tugas, periode pelaksanaan, hari dalam seminggu dan bulan di mana tugas yang dijadwalkan harus dilakukan, dll. dalam bahasa).

Contoh jadwal tugas terjadwal:

Setiap jam, hanya satu hari

Coba lagi PeriodDays = 0, Coba lagi PeriodDuringDay = 3600

Setiap hari sekali sehari

Coba lagi PeriodDays = 1, Coba lagi PeriodDuringDay = 0

Suatu hari, satu kali

Ulangi Periode Hari = 0

Setiap hari sekali sehari

Ulangi Periode Hari = 2

Setiap jam mulai pukul 01.00 hingga 07.00 setiap hari

Ulangi Periode Hari = 1

Coba Lagi Periode Siang Hari = 3600

Waktu Mulai = 01.00

Waktu Berakhir = 07.00

Setiap hari Sabtu dan Minggu pukul 09.00

Ulangi Periode Hari = 1

Hari dalam Seminggu = 6, 7

Waktu Mulai = 09.00

Setiap hari satu minggu, minggu berlalu

Ulangi Periode Hari = 1

Periode Minggu = 2

Pukul 01.00 satu kali

Waktu Mulai = 01.00

Hari terakhir setiap bulan pada pukul 9:00.

Ulangi Periode Hari = 1

HariDalamBulan = -1

Waktu Mulai = 09.00

Kelima setiap bulan pada pukul 09.00

Ulangi Periode Hari = 1

HariDalamBulan = 5

Waktu Mulai = 09.00

Rabu kedua setiap bulan pada pukul 09:00

Ulangi Periode Hari = 1

Hari dalam seminggu dalam bulan = 2

Hari dalam Seminggu = 3

Waktu Mulai = 09.00

Anda dapat memeriksa apakah tugas dijalankan untuk tanggal tertentu (metode RequiredExecution dari objek ScheduledTasks Schedule). Tugas terjadwal selalu dilakukan atas nama pengguna tertentu. Jika pengguna pekerjaan terjadwal tidak ditentukan, maka eksekusi dilakukan atas nama pengguna default dengan hak administratif.

Pekerjaan terjadwal dijalankan menggunakan pekerjaan latar belakang. Saat penjadwal menentukan bahwa tugas terjadwal harus diluncurkan, tugas latar belakang dibuat secara otomatis berdasarkan tugas terjadwal ini, yang melakukan semua pemrosesan lebih lanjut. Jika tugas terjadwal ini sudah berjalan, tidak akan dijalankan lagi, terlepas dari jadwalnya.

Pekerjaan terjadwal memiliki kemampuan untuk memulai kembali. Ini terutama benar ketika metode tugas terjadwal harus dijamin untuk dieksekusi. Tugas terjadwal dimulai ulang saat dihentikan secara tidak normal, atau saat proses pekerja (dalam versi klien-server) atau proses klien (dalam versi file) tempat tugas terjadwal berjalan dihentikan secara tidak normal. Dalam tugas terjadwal, Anda dapat menentukan berapa kali perlu dimulai ulang, serta interval antara mulai ulang. Saat menerapkan metode pekerjaan terjadwal yang dapat dimulai ulang, perlu diingat bahwa ketika dimulai ulang, pelaksanaannya akan dimulai dari awal, dan tidak berlanjut dari saat macet.

Penting untuk diingat bahwa akhir waktu belum tentu menyelesaikan pekerjaan latar belakang pada waktu yang ditentukan. Beberapa pernyataan:

* Pekerjaan latar belakang dapat mengabaikan pembatalan otomatisnya jika tidak digantung tetapi terus berjalan alasan itu bahwa tidak semua operasi platform dapat dibatalkan. Jika dilakukan kode siklik bahasa bawaan, pekerjaan dapat dibatalkan jika tidak. Itu semua tergantung pada apa pekerjaan itu lakukan. * Waktu akhir - batas di mana suatu tugas dapat dimulai dan tidak berakhir? * Pemutusan paksa pekerjaan memutar kembali perubahan yang dilakukan pada saat transaksi dimulai?

Keanehan melakukan tugas latar belakang dalam versi file dan server-klien

Mekanisme untuk mengeksekusi pekerjaan latar belakang dalam file dan versi client-server berbeda.

  • Dalam versi file, Anda perlu membuat proses klien khusus yang akan melakukan tugas latar belakang. Untuk melakukannya, fungsi konteks global ExecuteJobProcessing harus dipanggil secara berkala dalam proses klien. Hanya satu proses klien per basis informasi harus memproses pekerjaan latar belakang (dan karenanya memanggil fungsi ini). Jika tidak ada proses klien yang dibuat untuk memproses pekerjaan latar belakang, maka saat mengakses mesin pekerjaan secara terprogram, kesalahan "Pengelola pekerjaan tidak aktif" akan dihasilkan. Tidak disarankan untuk menggunakan proses klien yang memproses pekerjaan latar belakang untuk fungsi lain.

Setelah proses klien memproses pekerjaan latar belakang dimulai, proses klien lainnya dapat secara terprogram mengakses mekanisme pekerjaan latar belakang, mis. dapat menjalankan dan mengelola pekerjaan latar belakang.

Dalam versi klien-server, penjadwal tugas digunakan untuk mengeksekusi pekerjaan latar belakang, yang secara fisik terletak di manajer klaster. Penjadwal untuk semua pekerjaan latar belakang yang antri mendapatkan proses pekerja yang paling sedikit dimuat dan menggunakannya untuk menjalankan pekerjaan latar belakang yang sesuai. Proses pekerja mengeksekusi pekerjaan dan memberi tahu penjadwal hasil eksekusi.

Dalam versi klien-server, dimungkinkan untuk memblokir pelaksanaan tugas terjadwal. Memblokir pelaksanaan tugas terjadwal terjadi dalam kasus berikut:

  • Pemblokiran eksplisit tugas terjadwal telah ditetapkan di infobase. Kunci dapat diatur melalui konsol cluster;
  • Blok koneksi telah disetel di infobase. Kunci dapat diatur melalui konsol cluster;
  • Metode SetExclusiveMode() dipanggil dari bahasa bawaan dengan parameter True;
  • Dalam beberapa kasus lain (misalnya, saat memperbarui konfigurasi database).

Membuat Metadata Pekerjaan Terjadwal

Sebelum Anda secara terprogram membuat tugas terjadwal di infobase, Anda harus membuat objek metadata untuk itu.

Untuk membuat objek metadata pekerjaan terjadwal di pohon konfigurasi di cabang Umum untuk cabang Pekerjaan terjadwal, jalankan perintah Tambah dan isi properti berikut dari pekerjaan terjadwal di palet properti:

Nama metode - Tentukan nama metode tugas terjadwal.

Kunci - tentukan nilai string arbitrer yang akan digunakan sebagai kunci tugas terjadwal.

Jadwal - menentukan jadwal tugas yang dijadwalkan. Untuk membuat jadwal, klik tautan "Buka" dan tetapkan nilai yang diperlukan dalam formulir jadwal yang terbuka.

Tab Umum menentukan tanggal mulai dan berakhirnya tugas dan mode pengulangan.

Tab "Harian" menentukan jadwal harian untuk tugas tersebut.

Tentukan jadwal:

  • waktu mulai dan waktu akhir tugas;
  • waktu akhir tugas, setelah itu akan diselesaikan dengan paksa;
  • periode pengulangan tugas;
  • durasi jeda antara pengulangan;
  • durasi eksekusi.

Kombinasi kondisi yang sewenang-wenang diperbolehkan.

Jadwal mingguan tugas ditentukan pada tab Mingguan.

Pilih kotak centang untuk hari dalam seminggu di mana tugas akan dijalankan. Jika Anda ingin mengulang pekerjaan, tentukan interval coba lagi dalam minggu. Misalnya, tugas berjalan dalam 2 minggu, nilai pengulangannya adalah 2.

Pada tab "Bulanan", jadwal tugas bulanan ditunjukkan.

Pilih kotak centang untuk bulan di mana tugas akan dijalankan. Jika perlu, Anda dapat menentukan hari tertentu (bulan atau minggu) pelaksanaan dari awal bulan / minggu atau akhir.

Penggunaan - jika disetel, tugas akan dijalankan sesuai jadwal.

Predefined - jika disetel, pekerjaan adalah pekerjaan yang telah ditentukan sebelumnya.

Retry count on crash - Menentukan jumlah percobaan ulang saat crash.

Retry interval on crash - Menentukan interval coba lagi saat crash. Contoh

Membuat pekerjaan latar belakang "Index update pencarian teks lengkap»:

BackgroundJobs.Run("MemperbaruiFullTextSearchIndex");

Membuat tugas terjadwal "Memulihkan urutan":

Schedule = New ScheduleRegulationTask; Schedule.RepeatPeriodDays = 1; Schedule.RepeatPeriodDuringDay = 0;

Tugas = ScheduledTasks.Create ScheduledTask("RestoringSequences"); Tugas.Jadwal = Jadwal; Tugas.Tulis();

Konsol Pekerjaan

Memproses dengan ITS, mengelola tugas terjadwal:

Bekerja dengan tugas terjadwal

Objek pekerjaan

Objek pekerjaan tidak direferensikan, tetapi disimpan dalam database di beberapa penyimpanan khusus.

Jika bendera "Predefined" diaktifkan di metadata, maka objek seperti itu akan dibuat secara otomatis saat 1C:Enterprise dimulai dan selalu ada tepat dalam satu instance. Objek seperti itu tidak dapat dihapus.

Jika tanda "Predefined" tidak disetel, maka objek dari tugas semacam itu dibuat dan dihapus secara terprogram, dengan menentukan jadwal dan parameter.

Mendapatkan daftar tugas

Daftar tugas dapat diperoleh dengan metode ini Dapatkan Tugas Reguler manajer pekerjaan global Tugas yang dijadwalkan

Manajer Pekerjaan Terjadwal

GetScheduledJobs (GetScheduledJobs)

Sintaksis:

Dapatkan Tugas Reguler (<Отбор>)

Pilihan:

<Отбор>(opsional)

Jenis: Struktur. Struktur yang mendefinisikan seleksi. Nilai struktur dapat berupa: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Jika pemilihan tidak diatur, semua tugas terjadwal diperoleh.

Jika Anda memfilter menurut metadata, Anda dapat menentukan objek metadata tugas terjadwal atau namanya sebagai nilai Metadata.

Nilai pengembalian:

Jenis: Larik.

Keterangan:

Mendapatkan larik tugas terjadwal untuk pilihan yang ditentukan. Menerima tugas terjadwal hanya dimungkinkan untuk administrator.

Ketersediaan:

Scheduled = ScheduledTasks.Get ScheduledTasks(Seleksi);

Untuk Setiap Terjadwal dari Loop Terjadwal NewLine = ScheduledTasksList.Add(); NewString.Metadata = Scheduled.Metadata.View(); NewLine.Name = Dijadwalkan.Nama; NewString.Key = Scheduled.Key; NewString.Schedule = Terjadwal.Jadwal; NewString.User = Regular.UserName; NewString.Predefined = Dijadwalkan.Ditentukan sebelumnya; NewString.Usage = Regulatory.Usage; NewString.Identifier = Scheduled.UniqueIdentifier;

LastTask = Scheduled.LastTask; Jika LastQuest<>Undefined Kemudian NewString.Running = LastTask.Start; NewString.Status = LastJob.Status; Berakhir jika; Akhiri Siklus;

Penciptaan

Dibuat dengan metode CreateRegularTask dari pengelola tugas terjadwal:

ScheduledJob = ScheduledJobs.Create ScheduledJob(MetadataChoice);

Tugas Terjadwal.Nama = Nama; ScheduledTask.Key = Kunci; ScheduledTask.Use = Gunakan; ScheduledTask.UserName = Pilihan Pengguna; ScheduledTask.Number of RepetitionsWhen Crashing = Jumlah Percobaan UlangSaat Crashing; ScheduledTask.RetryIntervalOnAccident = Coba LagiIntervalOnAccident; ScheduledTask.Schedule = Jadwal; ScheduledTask.Write();

TaskObject = ScheduledTasks.Create ScheduledTask("ExecuteExchange");

TaskObject.Name = Nama; JobObject.Use = true;

Objek pekerjaan memiliki bidang "Parameter" di mana parameter metode ditetapkan:

Pekerjaan Terjadwal

Pilihan(Parameter)

Penggunaan:

Membaca dan menulis.

Keterangan:

Jenis: Larik. Array parameter tugas terjadwal. Jumlah dan komposisi parameter harus sesuai dengan parameter metode tugas terjadwal.

Ketersediaan:

Server, klien tebal, koneksi eksternal.

Catatan:

Kemampuan membaca dan menulis hanya tersedia untuk administrator.

Pemindahan

Dihapus oleh metode Delete() dari objek pekerjaan:

ScheduledTask.Delete();

Mendapatkan Objek Pekerjaan

  • list melalui metode GetRegularTasks :

Scheduled = ScheduledTasks.Get ScheduledTasks(Seleksi);

  • melalui metode FindByUniqueID dari manajer pekerjaan:

Tugas = ScheduledTasks.FindBy UniqueIdentifier(UID);

1C Enterprise memiliki tugas terjadwal dan latar belakang dalam konfigurasinya. Pekerjaan ini dijadwalkan sesuai dengan jadwal untuk setiap pekerjaan. Beberapa tugas awalnya dijalankan pada pengatur waktu setelah beberapa detik, yang dapat memengaruhi kinerja secara negatif dan jelas mengganggu pekerjaan di basis info.

Untuk mengedit tugas terjadwal dan latar belakang di tab administrasi, pilih "Tugas reguler dan latar belakang" di sebelah kiri. Daftar tugas yang ada, statusnya, jadwal, dan informasi lainnya akan muncul.

Dengan mengklik beberapa kali pada salah satu tugas, jendela dengan properti dari tugas ini akan terbuka. Di sini Anda dapat mengubah banyak pengaturan sesuai selera Anda, termasuk jadwal untuk tugas ini. Untuk menonaktifkan tugas, kotak centang "Aktifkan" harus dihapus centangnya. Tetapi jika tugas itu berjalan sesuai jadwal, sangat penting untuk menggunakan pengguna terpisah dengan hak penuh untuk semua tugas latar belakang.

Parameter jadwal tugas sangat fleksibel, tetapi tetap diinginkan untuk mengatur semua tugas sedemikian rupa sehingga hanya 1 tugas yang berjalan pada waktu yang sama dan lebih disukai di luar jam kerja. Pengecualian hanya dapat berupa sinkronisasi beberapa basis informasi terkait, misalnya, akuntansi perusahaan + penggajian dan manajemen personalia.

Download Bank Classifier - Minggu 04:30
Memuat nilai tukar - setiap hari; 7:00
Mengekstrak teks - setiap hari; 6:00.
Pesan untuk akun alur kerja - setiap hari; setiap 10800 detik.
Memperbarui unit - setiap hari; dari 05:00:00 sekali sehari
Memperbarui Tugas Akuntan - setiap hari; dari 6:30:00 sekali sehari
Pembaruan indeks PPD (pencarian teks lengkap) - setiap hari; setiap 10800 detik.
Pembangunan kembali agregat - setiap hari, pada hari dalam seminggu [Sabtu]; dari 03:00:00 sekali sehari
Penghitungan ulang nilai saat ini dari tanggal relatif larangan perubahan - setiap hari; dari 07:00:00 sekali sehari
Gabungkan indeks PPD (pencarian teks lengkap) - setiap hari; dari 04:00:00 sekali sehari
Penghapusan informasi sinkronisasi usang - setiap hari; dari 3:30:00 sekali sehari
Menetapkan periode total yang dihitung - setiap hari, pada tanggal 5 setiap bulan; dari 01:00:00 sekali sehari

Saat bekerja di 1C, banyak operasi rutin yang harus diluncurkan atau dibentuk sesuai jadwal dengan melakukan satu atau beberapa tindakan, misalnya: memposting dokumen atau mengunduh data ke 1C dari suatu situs.

Saya baru-baru ini memposting artikel: saatnya mengotomatiskan ini:

Pekerjaan terjadwal dan latar belakang

Mekanisme pekerjaan dirancang untuk menjalankan aplikasi atau fungsionalitas apa pun sesuai jadwal atau secara asinkron.

Mekanisme pekerjaan melakukan tugas-tugas berikut:

  • Kemampuan untuk menentukan prosedur rutin pada tahap konfigurasi sistem;
  • Eksekusi tindakan tertentu sesuai dengan jadwal;
  • Eksekusi panggilan ke prosedur atau fungsi tertentu tidak sinkron, mis. tanpa menunggu penyelesaiannya;
  • Melacak kemajuan pekerjaan tertentu dan mendapatkan status penyelesaiannya (nilai yang menunjukkan keberhasilan atau kegagalan pelaksanaannya);
  • Mendapatkan daftar tugas saat ini;
  • Kemampuan untuk menunggu selesainya satu atau lebih tugas;
  • Manajemen pekerjaan (kemungkinan pembatalan, pemblokiran eksekusi, dll.).

Mesin kerja terdiri dari komponen-komponen berikut:

  • Metadata tugas terjadwal;
  • Tugas terjadwal;
  • Pekerjaan latar belakang;
  • Penjadwal Tugas.

Pekerjaan latar belakang & dirancang untuk menjalankan tugas aplikasi secara asinkron. Pekerjaan latar belakang diimplementasikan menggunakan bahasa bawaan.

Tugas terjadwal & dirancang untuk melakukan tugas terjadwal. Tugas terjadwal disimpan di infobase dan dibuat berdasarkan metadata yang ditentukan dalam konfigurasi. Metadata tugas terjadwal berisi informasi seperti nama, metode, penggunaan, dan sebagainya.

Pekerjaan terjadwal memiliki jadwal yang menentukan kapan metode yang terkait dengan pekerjaan terjadwal harus dijalankan. Jadwal biasanya diatur di basis informasi, tetapi juga dapat diatur pada tahap konfigurasi (misalnya, untuk tugas terjadwal yang telah ditentukan sebelumnya).

Penjadwal tugas digunakan untuk menjadwalkan pelaksanaan tugas yang dijadwalkan. Untuk setiap pekerjaan terjadwal, penjadwal secara berkala memeriksa apakah tanggal dan waktu saat ini cocok dengan jadwal pekerjaan terjadwal. Jika cocok, penjadwal menjadwalkan tugas tersebut untuk dijalankan. Untuk melakukannya, menurut tugas terjadwal ini, penjadwal membuat tugas latar belakang yang melakukan pemrosesan sebenarnya.

Dengan uraiannya, saya rasa sudah cukup - mari kita lanjutkan ke penerapannya:

Membuat Pekerjaan Terjadwal

Nama metode– jalur ke prosedur yang akan dijalankan di tugas latar belakang sesuai dengan jadwal yang ditentukan. Prosedur harus dalam modul bersama. Disarankan untuk tidak menggunakan modul umum yang umum, tetapi untuk membuatnya sendiri. Jangan lupa bahwa pekerjaan latar belakang berjalan di server!

Penggunaan- tanda penggunaan tugas yang dijadwalkan.

ditentukan sebelumnya– menunjukkan apakah pekerjaan terjadwal sudah ditentukan sebelumnya.

Jika Anda ingin tugas terjadwal segera bekerja setelah ditempatkan di database, tentukan tandanya ditentukan sebelumnya. Jika tidak, Anda harus menggunakan pemrosesan "Konsol Pekerjaan" atau memanggil pekerjaan untuk dijalankan secara terprogram.

Jumlah percobaan ulang saat pekerjaan mogok– berapa kali pekerjaan latar belakang dimulai ulang jika dijalankan dengan kesalahan.

Interval percobaan batalkan pekerjaan– seberapa sering tugas latar belakang akan dimulai ulang jika dijalankan dengan kesalahan.

Pengaturan jadwal

Jadwal pelaksanaan tugas:

Setiap jam, hanya satu hariCoba lagi PeriodDays = 0, Coba lagi PeriodDuringDay = 3600
Setiap hari sekali sehariCoba lagi PeriodDays = 1, Coba lagi PeriodDuringDay = 0
Suatu hari, satu kaliUlangi Periode Hari = 0
Setiap hari sekali sehariUlangi Periode Hari = 2
Setiap jam mulai pukul 01.00 hingga 07.00 setiap hariRetryPeriodDays = 1RepeatPeriodDay = 3600StartTime = 01.00

Waktu Berakhir = 07.00

Setiap hari Sabtu dan Minggu pukul 09.00Ulangi Periode Hari = 1 Hari dalam Seminggu = 6, 7 Waktu Mulai = 09.00
Setiap hari satu minggu, minggu berlaluUlangi Periode Hari = 1 Periode Minggu = 2
Pukul 01.00 satu kaliWaktu Mulai = 01.00
Hari terakhir setiap bulan pada pukul 9:00.Ulangi Periode Hari = 1DayInMonth = -1StartTime = 09.00
Kelima setiap bulan pada pukul 09.00Ulangi Periode Hari = 1DayInMonth = 5StartTime = 09.00
Rabu kedua setiap bulan pada pukul 09:00Ulangi PeriodeHari = 1HariMingguDalamBulan = 2HariMinggu = 3

Waktu Mulai = 09.00

Keanehan melakukan tugas latar belakang dalam versi file dan server-klien

Mekanisme untuk mengeksekusi pekerjaan latar belakang dalam file dan versi client-server berbeda.

Dalam format file Anda perlu membuat proses klien khusus yang akan melakukan tugas latar belakang. Untuk melakukannya, fungsi konteks global ExecuteJobProcessing harus dipanggil secara berkala dalam proses klien. Hanya satu proses klien per infobase yang harus memproses pekerjaan latar belakang (dan karenanya memanggil fungsi ini). Jika tidak ada proses klien yang dibuat untuk memproses pekerjaan latar belakang, maka saat mengakses mesin pekerjaan secara terprogram, kesalahan "Pengelola pekerjaan tidak aktif" akan dihasilkan. Tidak disarankan untuk menggunakan proses klien yang memproses pekerjaan latar belakang untuk fungsi lain.

Setelah proses klien memproses pekerjaan latar belakang dimulai, proses klien lainnya dapat secara terprogram mengakses mekanisme pekerjaan latar belakang, mis. dapat menjalankan dan mengelola pekerjaan latar belakang.

Dalam versi client-server Untuk menjalankan pekerjaan latar belakang, penjadwal tugas digunakan, yang secara fisik terletak di manajer klaster. Penjadwal untuk semua pekerjaan latar belakang yang antri mendapatkan proses pekerja yang paling sedikit dimuat dan menggunakannya untuk menjalankan pekerjaan latar belakang yang sesuai. Proses pekerja mengeksekusi pekerjaan dan memberi tahu penjadwal hasil eksekusi.

Dalam versi klien-server, dimungkinkan untuk memblokir pelaksanaan tugas terjadwal. Memblokir pelaksanaan tugas terjadwal terjadi dalam kasus berikut:

  • Pemblokiran eksplisit tugas terjadwal telah ditetapkan di infobase. Kunci dapat diatur melalui konsol cluster;
  • Blok koneksi telah disetel di infobase. Kunci dapat diatur melalui konsol cluster;
  • Metode SetExclusiveMode() dipanggil dari bahasa bawaan dengan parameter True;
  • Dalam beberapa kasus lain (misalnya, saat memperbarui konfigurasi database).

Memproses peluncuran dan melihat tugas terjadwal Anda dapat mengunduh di sini.

Manajemen tugas terjadwal database 1C dari updater

2018-11-20T15:18:30+00:00

Dalam catatan ini, mari kita lihat kemampuan pembaru untuk mengelola tugas terjadwal dalam database.

Pertama-tama, di item "Lainnya" -> "Kelola tugas terjadwal ...":

DI DALAM menu konteks basis khusus (atau kelompok basis):

Dan, terakhir, di templat untuk skrip batch (ini memungkinkan Anda untuk melakukan operasi pada tugas terjadwal dari skrip sesuai jadwal):

Beginilah tampilan dialog untuk mengelola tugas terjadwal dalam database:

Tugas apa yang memungkinkan untuk diselesaikan kelompok yang diinginkan basa (atau satu basa)?

Pemilihan tugas terjadwal

Perhatikan kemampuan untuk memilih daftar tugas terjadwal dalam banyak operasi di bawah ini:

Namun dalam dialog pemilihan mungkin tidak ada tugas terjadwal khusus untuk basis Anda:

Dalam hal ini, Anda dapat menentukan nama tugas terjadwal yang Anda perlukan di bagian "Tugas sendiri ...", misalnya seperti ini:

Nama untuk tugas terjadwal tersebut dapat diambil langsung dari laporan semua tugas terjadwal (dijelaskan).

Menampilkan status tugas saat ini

Untuk melakukannya, buka tab "Tarik" dan tekan tombol "Tarik...":

Dalam hasil kita dapat melihat:

  1. Mengaktifkan atau menonaktifkan peluncuran tugas terjadwal baru di server 1C.
  2. Daftar tugas terjadwal dalam database.
  3. Jadwal mereka.
  4. Pekerjaan diaktifkan atau dinonaktifkan.
  5. Jika tugas terakhir dijalankan dengan kesalahan, kesalahan ini ditampilkan dengan warna merah di sebelah tugas.

Jika perlu, dalam pengaturan fitur, kami dapat mempersempit daftar tugas terjadwal, serta hanya menampilkan tugas yang diaktifkan:

Matikan semua atau beberapa tugas

Untuk melakukan ini, buka tab "Matikan":

Semua atau pekerjaan terjadwal yang dipilih akan mengosongkan kotak centang Penggunaan.

Inilah hasil untuk satu basis (klik untuk meluaskan)

Sertakan semua atau beberapa tugas

Untuk melakukan ini, buka tab "Aktifkan":

Semua atau pekerjaan terjadwal yang dipilih akan memilih kotak centang Penggunaan.

Harap perhatikan bahwa di tab ini bendera "Make cadangan dasar" di sudut kiri bawah.

Inilah hasil untuk satu basis (klik untuk meluaskan)

Kami mengelola peluncuran tugas terjadwal di server 1C

Untuk melakukan ini, buka tab "Server 1C":

Pilih "blokir" atau "buka blokir" dan klik tombol "Jalankan".

Menyiapkan jadwal tugas

Tetapi bagaimana jika kita perlu mengatur jadwal peluncuran tugas (atau sekelompok tugas) di banyak database sekaligus?

Untuk melakukannya, buka tab "Siapkan jadwal":

Kami mengatur jadwal (dialog dan kemampuannya benar-benar sama dengan yang biasa di 1C itu sendiri) dan klik "Siapkan ...".

Meluncurkan tugas untuk dieksekusi

Untuk melakukan ini, buka tab "Mulai":

Pilih tugas yang diinginkan dan klik tombol "Mulai":

Menyimpan pengaturan pekerjaan ke file eksternal

Misalkan kita telah mengonfigurasi tugas terjadwal secara ideal di salah satu database dan ingin mentransfer pengaturan ini ke semua database lain.

Untuk melakukannya, pertama-tama kami mengunggah semua pengaturan pekerjaan di database ideal ke file eksternal:

Mengembalikan pengaturan pekerjaan dari file eksternal

Dan kemudian kami memuat file ini dengan pengaturan pekerjaan ke semua database lain:

Perhatikan saja bahwa untuk tugas ini (mentransfer pengaturan pekerjaan dari satu database ke database lainnya), saya memilih metode pencocokan berdasarkan nama pekerjaan, dan bukan dengan pengidentifikasi internal.

kata perpisahan

Secara umum, hanya itu yang ingin saya sampaikan. Saya sendiri melihat banyak skenario untuk menggunakan fitur-fitur baru, tetapi di sini saya hanya membaca sepintas poin-poin utamanya.

Mungkin, setiap programmer 1C 8.3 cepat atau lambat harus mengatur pelaksanaan tugas tertentu sesuai jadwal. Di bawah ini saya akan memberikan Detil Deskripsi mekanisme ini, saya berharap itu akan terjadi informasi berguna untuk programmer pemula 1C. Ini sangat nyaman, karena tidak memerlukan tindakan manusia, tugas terjadwal dikonfigurasi sekali dan berfungsi sesuai jadwal Anda.

Instruksi terperinci dengan contoh dapat ditemukan di bawah.

Apa tugas terjadwal dan latar belakang di 1C

  • Tugas terjadwal adalah mekanisme 1C enterprise 8.3 khusus yang dirancang untuk melakukan tindakan tertentu pada jadwal tertentu.
  • Pekerjaan latar belakang- objek yang dihasilkan oleh tugas terjadwal yang secara langsung melakukan tindakan bawaan tanpa partisipasi pengguna atau pemrogram 1C 8.2.

Mekanisme pekerjaan terjadwal dan latar belakang bekerja dalam mode operasi klien-server (SQL), berkat fungsionalitas DBMS. Jika Anda memiliki database file, tugas juga dapat dikonfigurasi, tetapi dengan cara yang sedikit berbeda.

Menyiapkan tugas latar belakang dalam mode operasi klien-server 1C

Untuk memulai, mari buat objek metadata baru - tugas terjadwal. Saya akan menamai tugas saya "Memuat Tarif Mata Uang". Pertimbangkan palet properti objek ini konfigurasi:

Dapatkan 267 pelajaran video 1C gratis:

  • Nama metode— jalur ke prosedur yang akan dijalankan di tugas latar belakang sesuai dengan jadwal yang ditentukan. Prosedur harus dalam modul bersama. Disarankan untuk tidak menggunakan yang standar, tetapi untuk membuatnya sendiri. Jangan lupa bahwa pekerjaan latar belakang berjalan di server!
  • Penggunaan- tanda penggunaan tugas yang dijadwalkan.
  • ditentukan sebelumnya Menunjukkan apakah pekerjaan terjadwal sudah ditentukan sebelumnya. Jika Anda ingin tugas terjadwal segera bekerja setelah ditempatkan di database, tentukan flag ini. Jika tidak, Anda harus menggunakan pemrosesan "Konsol Pekerjaan" atau memanggil pekerjaan untuk dijalankan secara terprogram.
  • Jumlah percobaan ulang saat pekerjaan mogok— berapa kali pekerjaan latar belakang dimulai ulang jika dijalankan dengan kesalahan.
  • Interval percobaan batalkan pekerjaan- seberapa sering tugas latar belakang akan dimulai ulang jika diselesaikan dengan kesalahan.

Dan pengaturan yang paling menarik - Jadwal:

Di sini Anda dapat mengatur interval untuk memulai prosedur yang ditentukan di bidang "Nama metode". Biarkan saya mengatur

Perhatian! Jangan lupa untuk menonaktifkan pemblokiran pekerjaan terjadwal dan latar belakang di tingkat DBMS!

Ini dapat dilakukan di utilitas administrasi versi klien-server atau saat membuat database baru:

Menyiapkan tugas terjadwal dalam mode file operasi 1C

DI DALAM modus file menyiapkan tugas semacam itu agak lebih sulit. Untuk tugas seperti itu, sesi terpisah dari program 1C harus diluncurkan. Seringkali ini diselesaikan oleh institusi pengguna "teknis", yang sesinya selalu berjalan.

Dalam mode file, inisialisasi pekerjaan terjadwal terjadi saat metode "ExecuteJobProcessing()" diluncurkan.

Untuk pengguna tertentu, dimungkinkan untuk mengonfigurasi metode ini agar dijalankan menggunakan metode lain −

HubungkanWaitingHandler( <ИмяПроцедуры>, <Интервал>, <Однократно>).

  • Nama prosedur— nama prosedur yang terhubung sebagai penangan tunggu. Nama prosedur yang diekspor untuk modul aplikasi terkelola (modul aplikasi reguler) atau modul bersama global. Prosedur harus terletak pada klien.
  • Selang— periode antara eksekusi operasi dalam hitungan detik.
  • sekali- bagaimana menyelesaikan tugas, sekali atau tidak.

ConnectWaitingHandler, 3600 );

Video dua menit yang menunjukkan cara menyiapkan tugas terjadwal di konfigurator 1C:



Memuat...
Atas