Rumah / Bekerja di Internet / tugas rutin server 1s. Tugas regulasi universal. Pekerjaan latar belakang dalam mode file

tugas rutin server 1s. Tugas regulasi universal. Pekerjaan latar belakang dalam mode file

1 mesin pekerjaan
2 Pekerjaan latar belakang
3 tugas terjadwal
4 Keunikan melakukan tugas latar belakang dalam versi file dan client-server
5 Pembuatan metadata pekerjaan terjadwal
6 Konsol Pekerjaan
7 Bekerja dengan tugas yang dijadwalkan
7.1 Objek pekerjaan
7.2 Mendapatkan daftar pekerjaan
7.3 Penciptaan
7.4 Penghapusan
7.5 Mendapatkan objek pekerjaan

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;
  • Pelaksanaan tindakan tertentu sesuai dengan jadwal;
  • Eksekusi panggilan ke prosedur atau fungsi yang diberikan 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 penyelesaian 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 pekerjaan 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, sebagai aturan, diatur di basis info, 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 sesuai dengan jadwal pekerjaan terjadwal. Jika cocok, penjadwal menjadwalkan pekerjaan itu 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. Setiap prosedur atau fungsi non-global dapat bertindak sebagai metode pekerjaan latar belakang. modul umum, yang dapat dipanggil di server. Parameter pekerjaan latar belakang dapat berupa nilai apa pun yang diizinkan untuk diteruskan ke server. Parameter pekerjaan latar belakang harus sama persis dengan parameter prosedur atau fungsi yang dipanggilnya. Jika metode pekerjaan latar belakang adalah suatu fungsi, nilai kembaliannya diabaikan.

Pekerjaan latar belakang dapat memiliki kunci - nilai aplikasi apa pun. Kunci memperkenalkan pembatasan 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). Kunci ini 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, itu dieksekusi 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 adalah murni objek sesi, tetapi bukan milik sesi pengguna mana pun. Untuk setiap pekerjaan, sesi sistem khusus dibuat, berjalan 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 perhitungan kompleks di seluruh proses kerja cluster, yang secara signifikan dapat mempercepat proses perhitungan secara keseluruhan. Paralelisasi diimplementasikan dengan memunculkan beberapa pekerjaan latar belakang anak, menunggu masing-masing untuk menyelesaikan 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. dilakukan tugas rutin, dan sebagainya.

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

Catatan. Saat bekerja dalam versi file, dimungkinkan untuk membuat dan mengedit tugas terjadwal tanpa memulai 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 pekerjaan terjadwal harus sama persis dengan parameter prosedur atau fungsi yang dipanggilnya. Jika metode pekerjaan terjadwal adalah suatu fungsi, maka nilai baliknya diabaikan.

Tugas terjadwal dapat memiliki kunci - nilai apa pun yang diterapkan. Kuncinya memperkenalkan pembatasan pada peluncuran tugas terjadwal, karena per unit waktu, di antara tugas terjadwal yang terkait dengan objek metadata yang sama, hanya satu tugas terjadwal dengan nilai kunci tertentu yang dapat dieksekusi. Kuncinya memungkinkan Anda untuk 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 tugas terjadwal yang telah ditentukan sebelumnya. Pekerjaan terjadwal yang telah 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 basis info. Jika kotak centang yang ditentukan sebelumnya dikosongkan, tugas terjadwal yang telah ditentukan sebelumnya akan dihapus secara otomatis di basis info saat konfigurasi diperbarui. Nilai awal properti tugas terjadwal yang telah ditentukan sebelumnya (misalnya, jadwal) diatur dalam metadata. Di masa depan, ketika aplikasi sedang berjalan, mereka dapat diubah. Pekerjaan terjadwal yang telah ditentukan sebelumnya tidak memiliki parameter.

Jadwal pekerjaan terjadwal menentukan pada titik waktu pekerjaan yang dijadwalkan 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. (lihat deskripsi built- dalam bahasa).

Contoh jadwal tugas terjadwal:

Setiap jam, hanya satu hari

Coba Ulang PeriodeDays = 0, Coba Lagi PeriodeDuringDay = 3600

Setiap hari sekali sehari

Coba Ulang PeriodeDays = 1, Coba Lagi PeriodeDuringDay = 0

Suatu hari, satu kali

Periode Coba Ulang Hari = 0

Setiap hari sekali sehari

Periode Coba Ulang Hari = 2

Setiap jam dari pukul 01.00 hingga 07.00 setiap hari

Coba Ulang Periode Hari = 1
Periode Coba Lagi Selama Sehari = 3600
Waktu Mulai = 01.00
Waktu Berakhir = 07.00

Setiap Sabtu dan Minggu pukul 09.00

Coba Ulang Periode Hari = 1
Hari dalam seminggu = 6, 7
Waktu Mulai = 09.00

Setiap hari satu minggu, minggu berlalu

Coba Ulang Periode Hari = 1
PeriodeMinggu = 2

Pukul 01.00 satu kali

Waktu Mulai = 01.00

Hari terakhir setiap bulan pukul 9.00.

Coba Ulang Periode Hari = 1
HariDalamBulan = -1
Waktu Mulai = 09.00

Kelima setiap bulan pada 9:00

Coba Ulang Periode Hari = 1
HariDalamBulan = 5
Waktu Mulai = 09.00

Rabu kedua setiap bulan pada pukul 9:00

Coba Ulang Periode Hari = 1
Hari dalam seminggu dalam sebulan = 2
Hari dalam seminggu = 3
Waktu Mulai = 09.00

Anda dapat memeriksa apakah pekerjaan sedang berjalan tanggal tertentu(metode RequiredExecution dari objek ScheduleRegularTasks). Tugas terjadwal selalu dilakukan atas nama pengguna tertentu. Jika pengguna pekerjaan terjadwal tidak ditentukan, maka eksekusi terjadi atas nama pengguna default dengan hak administratif.

Pekerjaan terjadwal dijalankan menggunakan pekerjaan latar belakang. Ketika penjadwal menentukan bahwa tugas terjadwal harus diluncurkan, tugas latar belakang secara otomatis dibuat berdasarkan tugas terjadwal ini, yang melakukan semua pemrosesan lebih lanjut. Jika tugas terjadwal ini sudah berjalan, itu 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 server-klien) atau proses klien (dalam versi file) yang menjalankan tugas terjadwal dihentikan secara tidak normal. Dalam tugas terjadwal, Anda dapat menentukan berapa kali harus dimulai ulang, serta interval antara mulai ulang. Saat menerapkan metode pekerjaan terjadwal yang dapat dimulai ulang, harus diperhitungkan bahwa ketika dimulai ulang, pelaksanaannya akan dimulai dari awal, dan tidak berlanjut sejak mogok.

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 karena alasannya
bahwa tidak semua operasi platform dapat dibatalkan. Jika dilakukan kode siklik bahasa bawaan, lalu batalkan pekerjaan
bisa sebaliknya tidak. Itu semua tergantung pada pekerjaan apa yang dilakukan.
* Waktu berakhir - batas di mana tugas dapat dimulai dan tidak berakhir?
* Pemutusan paksa pekerjaan mengembalikan perubahan yang dibuat pada saat transaksi dimulai?

Keunikan melakukan tugas latar belakang dalam versi file dan client-server

Mekanisme untuk menjalankan pekerjaan latar belakang dalam file dan versi server-klien 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 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 "Manajer pekerjaan tidak aktif" akan dihasilkan. Tidak disarankan untuk menggunakan proses klien yang memproses pekerjaan latar belakang untuk fungsi lain.

Setelah proses klien yang menangani pekerjaan latar belakang berjalan, proses klien lainnya diberi kesempatan untuk akses program ke mekanisme pekerjaan latar belakang, yaitu. dapat menjalankan dan mengelola pekerjaan latar belakang.

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

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

  • Pemblokiran eksplisit tugas terjadwal telah ditetapkan di basis info. Kunci dapat diatur melalui konsol cluster;
  • Blok koneksi telah diatur 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 basis info, 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 Add 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 atur nilai yang diperlukan dalam formulir jadwal yang terbuka.

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

Tab "Harian" menentukan jadwal harian untuk tugas tersebut.

Tentukan jadwalnya:

  • 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-hari dalam seminggu di mana tugas akan dijalankan. Jika Anda ingin mengulangi pekerjaan, tentukan interval coba lagi dalam beberapa 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) eksekusi dari awal bulan / minggu atau akhir.

Penggunaan - jika disetel, tugas akan dijalankan sesuai jadwal.

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

Retry count on crash - Menentukan jumlah retry on crash.

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

Membuat pekerjaan latar belakang "Memperbarui indeks pencarian teks lengkap":

BackgroundJobs.Run("MemperbaruiFullTextSearchIndex");

Membuat tugas terjadwal "Memulihkan urutan":

Jadwal = ScheduleRegulationTask Baru;
Schedule.RepeatPeriodDays = 1;
Schedule.RepeatPeriodDuringDay = 0;

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

Konsol Pekerjaan

Memproses dengan ITS, mengelola tugas terjadwal: Task Console.epf

Bekerja dengan tugas terjadwal

Objek pekerjaan

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

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

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

Mendapatkan daftar tugas

Daftar tugas dapat diperoleh dengan metode 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 akan diperoleh.

Jika Anda memfilter menurut metadata, Anda bisa menentukan objek metadata pekerjaan terjadwal atau namanya sebagai nilai Metadata.

Nilai kembali:

Tipe: Array.

Keterangan:

Mendapat serangkaian tugas terjadwal untuk pilihan yang ditentukan. Menerima tugas terjadwal hanya dimungkinkan untuk administrator.

Ketersediaan:

Untuk Setiap Regulasi dari Siklus Regulasi
NewLine = ListRegulationTasks.Add();
NewString.Metadata = Terjadwal.Metadata.View();
NewLine.Name = Scheduled.Name;
NewString.Key = Scheduled.Key;
NewString.Schedule = Scheduled.Schedule;
NewString.User = Regular.UserName;
NewString.Predefined = Scheduled.Predefined;
NewString.Usage = Peraturan.Penggunaan;
NewString.Identifier = Scheduled.UniqueIdentifier;

LastTask = Scheduled.LastTask;
Jika LastJob Tidak Terdefinisi Maka
NewString.Running = LastTask.Start;
NewString.Status = Pekerjaan Terakhir.Status;
Berakhir jika;
Siklus Akhir;

Penciptaan

Dibuat oleh metode CreateRegularTask dari pengelola tugas terjadwal:

ScheduledJob = ScheduledJobs.Create ScheduledJob(MetadataChoice);

Tugas Terjadwal.Nama = Nama;
ScheduledTask.Key = Kunci;
ScheduledTask.Use = Gunakan;
ScheduledTask.UserName = UsersChoice;
ScheduledTask.Number of RepetitionsWhen Crashing = Jumlah RetriesWhen Crashing;
ScheduledTask.RetryIntervalOnAccident = RetryIntervalOnAccident;
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

Parameter

Penggunaan:

Membaca dan menulis.

Keterangan:

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

Ketersediaan:

Server, klien gemuk, gabungan luar.

Catatan:

Kemampuan membaca dan menulis hanya tersedia untuk administrator.

Pemindahan

Dihapus oleh metode Delete() dari objek pekerjaan:

ScheduledTask.Delete();

Mendapatkan Obyek Pekerjaan

  • daftar melalui metode GetRegularTasks:
    Scheduled = ScheduledTasks.Get ScheduledTasks(Selection);
  • melalui metode FindByUniqueID dari manajer pekerjaan:
    Tugas = ScheduledTasks.FindBy UniqueIdentifier(UID);

[Anda harus mendaftar untuk melihat tautan]

Buat tugas terjadwal

Mari buat tugas terjadwal "Melakukan pemrosesan".

Nonaktifkan penggunaan tugas terjadwal agar tidak dimulai secara otomatis saat konfigurasi diperbarui.

Tetapkan prosedur yang akan dipicu saat tugas terjadwal diluncurkan:Modul Tugas Terjadwal Pemrosesan Tugas Terjadwal.

Prosedur itu sendiri terlihat seperti:

Prosedur TerjadwalTugasPerformanceProcessing(Kunci) Ekspor

Parameter Tugas Terjadwal. Melakukan Pemrosesan dengan Parameter (Kunci);

AkhirProsedur

Kami membuat direktori untuk tugas rutin

Pekerjaan terjadwal kami dapat menelurkan banyak proses latar belakang - satu untuk setiap pemrosesan. Setiap tugas di platform 1C8 memiliki kunci. Tetapi metode tugas terjadwal tidak mengetahui kunci tugas latar belakang, jadi Anda perlu menggunakan parameter tugas latar belakang. Akibatnya, kita dapat melihat tugas latar belakang di konsol tugas, tetapi kita tidak dapat secara manual membuat tugas latar belakang dari konsol ini, karena pekerjaan dengan parameter manual tidak dibuat.

Direktori "Parameter tugas terjadwal" :

Persyaratan :

· KodeSebelum Peluncuran- string tak terbatas - kode dalam bahasa 1C, yang harus dijalankan sebelum memulai.

· Pemrosesan dari konfigurasi - string (100) - ID pemrosesan dari konfigurasi

· Memproses dari direktori - baris (100) - tautan ke elemen direktori "Pemrosesan eksternal", jika ada dalam konfigurasi

· Jalankan melalui aplikasi 1C - boolean - akan dibuat aplikasi terpisah 1C dan tugas terjadwal akan diluncurkan di dalamnya. Dibuat untuk 8.1 di mana tidak semua metode aplikasi tersedia di server tempat tugas terjadwal dijalankan.

· Kode Peluncuran- - string tak terbatas - kode dalam bahasa 1C, yang akan dieksekusi saat tugas terjadwal dimulai.

Buat bentuk elemen :

Dengan mengklik "Buat Reg. task" secara terprogram membuat tugas terjadwal dengan kode kunci:

Prosedur MainActionsFormsCreateReglTask(Tombol)

Referensi Variabel;

Kunci = ShortLP(Kode);

Tugas = ScheduledTasks.Create ScheduledTask("PerformingProcessing");

Tugas.Nama = Kunci;

Pekerjaan.Kunci = Kunci;

Parameter = Array Baru();

Opsi.Tambahkan (Kunci);

Tugas.Parameter = Parameter;

Tugas.Tulis();

AkhirProsedur

Memulai Pekerjaan Terjadwal

Setiap tugas terjadwal yang kami buat memiliki kunci:

Kunci ini sesuai dengan kode direktori "Parameter tugas terjadwal", kunci ini dicari saat memulai tugas. Jika elemen kamus tidak ditemukan, tugas tidak dijalankan.

Selanjutnya, jika kode diberikanKodeSebelum Peluncuran maka kode ini akan dieksekusi. Selanjutnya, jika variabel Memenuhi mengevaluasi ke false, tugas tidak akan dieksekusi. Variabel tersedia dalam analisis Pilihan, tempat tautan ke elemen yang ditemukan dari direktori "Parameter tugas terjadwal" disimpan.

Bergantung pada nilai detail yang dipilih, kode dalam bahasa 1C akan dimulai, atau pemrosesan akan dimulai dari konfigurasi, atau pemrosesan akan dimulai dari buku referensi standar "Pemrosesan Eksternal".

Untuk 1C81, eksekusi disediakan dalam aplikasi baru - sehingga Anda dapat menggunakan kode yang hanya tersedia di klien, termasuk penggunaan pemrosesan eksternal. Untuk melakukan ini, centang kotak "Jalankan melalui aplikasi 1C". Jika tidak, tugas terjadwal akan dijalankan di server.

Saya merekomendasikan pengaturan pengguna di bidang "Pengguna" dari tugas terjadwal yang baru dibuat sehingga tugas dijalankan di bawah hak tertentu. Saya sarankan untuk memberikan hak penuh kepada pengguna ini. saya punya pengguna"robot».

Jadwal tugas terjadwal dibuat oleh hyperlink "Jadwal" dari bentuk tugas terjadwal. Anda dapat menggunakan pemrosesan "Konsol tugas terjadwal".

Pembersihan register secara berkala (misalnya, informasi register "Versi Objek" dalam konfigurasi SCP), melakukan perhitungan sesuai jadwal, memposting dokumen pada waktu tertentu - ini jauh dari daftar lengkap tindakan yang dapat diimplementasikan menggunakan tugas rutin 1C.

Buat tugas

Kami tidak bertujuan untuk menjelaskan kode modul yang dapat dieksekusi, kami akan menunjukkan prinsip-prinsip umum fungsi dan penciptaan tugas prosedural.

Tugas regulasi sangat diperlukan:

  1. Jika dalam tugas yang ditetapkan sebagai salah satu kondisi ada kebutuhan untuk mengeksekusi algoritma tertentu secara berkala;
  2. Jika kode harus dieksekusi terlepas dari tindakan operator dan pengguna database;
  3. Jika peluncuran prosedur yang dapat dieksekusi tidak bergantung pada peristiwa eksternal yang terjadi dengan objek basis informasi.

Untuk membuatnya, Anda harus pergi ke infobase dalam mode "Configurator". Selanjutnya, kami menemukan cabang "Tugas biasa" di pohon konfigurasi, mereka berada di tab "Umum" dan klik tombol "Tambah" (Gbr. 1)

Mari kita lihat lebih dekat jendela propertinya (Gbr. 2):
Gbr.2

  1. Nama, sinonim, dan komentar - aturan dan prinsip pengisian kolom ini serupa untuk semua objek konfigurasi dan tidak perlu dijelaskan lagi;
  2. Nama metode adalah prosedur modul umum yang menggambarkan algoritma yang diperlukan seakurat mungkin (menekan tombol pilih membuka prosedur yang tersedia, representasi yang terdiri dari nama modul umum dan nama prosedur di berbagai kolom meja);
  3. Kunci - tidak terlalu menentukan keunikan tugas prosedural, tetapi keunikannya proses latar belakang, diluncurkan atas dasar pekerjaan, memiliki batas panjang;
  4. Jadwal - kami akan mencurahkan paragraf terpisah dari artikel kami untuk deskripsi elemen ini;
  5. Penggunaan - mencentang kotak ini menentukan aktivitas tugas, BENAR berarti tugas akan diluncurkan dan dijalankan sesuai jadwal;
  6. Standar – jika elemen memiliki kotak centang ini, tugas-tugas ini tidak dapat dihapus, mereka dibuat secara otomatis ketika konfigurasi disimpan ke database;
  7. Jumlah pengulangan - jika pengecualian terjadi selama eksekusi, itu akan dimulai ulang sehingga loop tanpa akhir tidak terjadi, program membatasi jumlah restart;
  8. Retry interval - waktu dalam hitungan detik antara restart pekerjaan yang macet.

Mari kita lihat lebih dekat jadwalnya.

Jadwal tugas yang dijadwalkan

Gbr.3

Pertama-tama, Anda harus memperhatikan bagian bawah jendela, di sanalah Informasi rinci dengan rincian seberapa sering dan pada jam berapa tugas akan dilakukan.

Tab umum:

  • Tanggal mulai tugas;
  • Tanggal akhir pemrosesan;
  • Frekuensi mengulang tugas.

Jika tidak ada tanggal yang ditentukan pada tab ini, maka tidak ada batas waktu yang akan ditetapkan untuk tugas tersebut.

Bookmark "Harian" (Gbr. 4)
Gbr.4

Selain bidang input untuk waktu mulai dan akhir tugas dan frekuensi peluncurannya di siang hari, itu berisi bagian tabel untuk pengaturan terperinci frekuensi eksekusi.

Tab "Harian" dan "Mingguan" berisi informasi untuk periode masing-masing.

Fitur berfungsi

Dalam versi operasi klien-server, pelaksanaan tugas terjadwal ditentukan oleh alat server. Dari konsol administrasi, Anda dapat mengaktifkan dan menonaktifkan kemampuan untuk menjalankan pekerjaan untuk database tertentu.

Situasinya jauh lebih rumit dengan versi file kerja. Sebelum rilis platform tertentu, eksekusi latar belakang dan prosedur terjadwal dilakukan hanya jika metode ExecuteJobProcessing() diaktifkan saat startup sistem di bawah pengguna tertentu. Dalam hal ini, algoritme diluncurkan secara berkala selama pengguna yang memulai metode tersebut berada dalam program.

Saat ini, pekerjaan pekerjaan latar belakang dalam versi file pekerjaan didistribusikan secara merata di antara pengguna yang berwenang di database, jika program diluncurkan dengan parameter tambahan AllowExecuteSheduledJobs, proses inilah yang akan bertanggung jawab untuk pemeliharaan rutin.

Anda dapat sepenuhnya menonaktifkan pelaksanaan pekerjaan latar belakang dan pemeliharaan dalam database yang beroperasi dalam mode file dengan menghapus atau mengganti nama file DoNotCopy.txt di folder dengan database. Kehadiran file ini memberi tahu platform bahwa pekerjaan dilakukan dalam aslinya, dan bukan dalam salinan database.

Selain itu, dalam pengiriman 1C standar, menjadi mungkin untuk mengelola pekerjaan terjadwal langsung dari program tanpa membuka "Konfigurator". Dalam konfigurasi “ZUP”, versi 3.1.3.223, Anda dapat membuka formulir kontrol dari menu Administrasi->Pemeliharaan->Operasi terjadwal->Tugas terjadwal dan latar belakang (Gbr. 5)
Gbr.5

Formulir yang dibuka memiliki antarmuka yang intuitif dan memungkinkan Anda untuk:


Anda juga dapat memulai eksekusi tugas langsung dari formulir.

Pertanyaan yang kami ajukan dalam judul artikel relevan untuk banyak administrator sistem yang bekerja dengan produk ini. Sejauh mungkin, kami mencoba berbicara tentang parameter yang memengaruhi kinerja 1C dan menghilangkan mitos populer. Hari ini, dengan menggunakan contoh satu kasus baru-baru ini, kami ingin memberi tahu Anda tentang aspek lain yang dapat secara serius memengaruhi kinerja - tugas terjadwal.

Mari kita mulai dengan kasus nyata. Belum lama ini, salah satu klien kami menghubungi kami dengan keluhan tentang "rem" 1C dari salah satu karyawannya. Gejalanya terungkap dalam kenyataan bahwa setelah jangka waktu tertentu, konfigurasi Manajemen Perdagangan 10 mulai melambat banyak, atau, dengan kata lain, macet untuk sementara waktu.

Dengan analisis situasi yang lebih rinci, ternyata ini hanya terjadi untuk satu karyawan, dan di tempat kerja mana pun, itu terjadi untuk waktu yang lama, tetapi jika sebelumnya "rem" berlangsung sekitar satu detik, sekarang, setelah pembaruan, mereka dapat bertahan hingga 15-20 detik, yang membuat pekerjaan menjadi sangat tidak nyaman.

Pada prinsipnya, data awal sudah cukup untuk menarik kesimpulan pertama. Mari kita ambil lagi:

  • "Rem" terjadi terus-menerus, dengan frekuensi tertentu
  • "Melambat" hanya untuk satu pengguna
  • "Melambat" di tempat kerja mana pun

Untuk mengkonfirmasi tebakan kita, mari kita lihat Pengaturan Akuntansi:

Memang, pengguna "bermasalah" terdaftar sebagai pengguna untuk melakukan tugas-tugas rutin. Ternyata, pada suatu waktu atas nama pengguna ini, tugas pertukaran otomatis RIB berhasil. Masih harus dilihat apa sebenarnya penyebab "pengereman" episodik itu. Ini juga mudah dilakukan:

Dan inilah "pahlawan kesempatan" - tugas memperbarui indeks pencarian teks lengkap, yang diluncurkan setiap 2,5 menit sekali. Dalam hal ini, masalah telah diselesaikan sepenuhnya dengan menonaktifkan pelaksanaan tugas terjadwal di bawah pengguna ini, tetapi ini tidak selalu memungkinkan atau disarankan, jadi di bawah ini kami akan mempertimbangkan bagaimana tugas terjadwal dapat dikelola dan bagaimana memastikan bahwa mereka tidak memiliki dampak negatif pada kinerja.

Aplikasi umum

Dalam konfigurasi berbasis aplikasi biasa tidak ada perangkat tunggal untuk mengelola tugas-tugas rutin. Ini sebagian besar disebabkan oleh fakta bahwa pada saat pengembangan awal mereka, konsep tugas prosedural dikembangkan agak buruk.

Banyak tugas terjadwal dikelola melalui konfigurasi subsistem yang terkait dengannya. Misalnya, pengaturan untuk tugas rutin yang terkait dengan pertukaran data harus dicari di pengaturan pertukaran yang terkait dengan Sistem Informasi Otomatis Negara Terpadu dalam pengaturan perdagangan alkohol, dll.

Sepintas, semuanya cukup logis, tetapi kurangnya alat tunggal menyulitkan untuk mengontrol tugas terjadwal yang dikonfigurasi dan optimalitas pengaturannya. Nah, jika ada satu atau dua tugas, dan jika ada lebih banyak atau, seperti dalam kasus kami, ada kecurigaan terhadap salah satu tugas terjadwal, tetapi Anda tidak tahu siapa dan apa yang diatur dalam database ini.

Dalam hal ini, Anda harus menggunakan pemrosesan eksternal Misi Konsol (PekerjaanKonsol), yang termasuk dalam set pemrosesan standar pada disk ITS. Pemrosesan menyediakan antarmuka tunggal untuk semua pekerjaan dan memungkinkan Anda untuk mengonfigurasinya secara terpusat, serta mengontrol pekerjaan yang sedang berjalan.

daftar ini harus dipelajari dengan cermat, semua tugas yang tidak perlu harus dimatikan, dan yang perlu harus dijadwalkan sesuai dengan kebutuhan mendesak dan akal sehat. Misalnya, dalam kasus kami, tidak perlu memproses respons EGAIS sekali setiap 30 detik (pengaturan ini dibuat untuk pengujian) dan dalam mode operasi, ini akan cukup untuk dilakukan, katakanlah, setiap setengah jam sekali.

Aplikasi Terkelola

Dalam konfigurasi berdasarkan aplikasi terkelola, tugas terjadwal memainkan peran yang lebih signifikan, mereka dapat digunakan untuk melakukan berbagai tugas untuk mempertahankan basis info dan memperbaruinya, tetapi pada saat yang sama, tugas terjadwallah yang paling sering menyebabkan " rem".

Untuk mengelola tugas rutin, ada item hotel di menu Administrasi - Dukungan dan Pemeliharaan.

Dapat segera dicatat bahwa tugas telah meningkat secara signifikan (misalnya, kami mengambil konfigurasi yang sama - Ritel) dan konfigurasi kompeten mereka dapat secara signifikan meningkatkan kinerja basis info. Pengaturan default dibuat oleh 1C berdasarkan kebutuhan rata-rata perusahaan bola dalam ruang hampa dan bahkan tidak mendekati optimal.

Pertama-tama, kami menonaktifkan apa yang jelas tidak perlu, yang tidak Anda gunakan. Kemudian kita optimalkan jadwal fungsi yang jarang digunakan, misalnya update bank classifier di Retail, serta pengecekan counterparty, bisa dilakukan seminggu sekali di luar jam kerja atau di akhir (awal) hari kerja.

Perhatian khusus harus diberikan pada segala sesuatu yang berhubungan dengan indeks pencarian. Pencarian teks lengkap tentu saja hal yang nyaman, tetapi bekerja dengan indeksnya adalah tugas yang sangat, sangat intensif sumber daya. Karena itu, Anda tidak boleh bertindak ekstrem dan mengabaikannya, tetapi Anda harus meninjau dan menyesuaikan parameternya dengan serius.

Mari kita mulai dengan ekstraksi teks, operasi ini memungkinkan Anda untuk mencari konten file terlampir, jadi jika Anda tidak menggunakannya, jangan mencarinya, atau Anda hanya memiliki gambar di sana, maka operasi ini dapat dinonaktifkan, dalam hal apapun, untuk melakukannya sekali setiap 85 detik - enumerasi yang jelas.

Pembaruan indeks PPA- salah satu operasi paling intensif sumber daya, secara default dilakukan satu menit sekali.

Sekarang mari kita pikirkan seberapa sering informasi ditambahkan atau diperbarui dalam database yang paling sering Anda cari? Jelas tidak setiap menit, jadi itu akan cukup untuk memperbarui indeks lebih jarang: satu jam sekali, sekali sehari, atau bahkan seminggu sekali.

Hal yang sama berlaku untuk penggabungan indeks PPD, jika Anda memperbarui indeks sekali sehari, maka Anda harus mengatur penggabungan agar berjalan seminggu sekali, sambil memilih waktu yang paling tidak mengganggu sebagai awal pekerjaan.

Operasi sederhana ini akan memungkinkan Anda, tanpa banyak kerusakan pada fungsionalitas konfigurasi, untuk meningkatkan kenyamanan bekerja dengannya tingkat baru dengan menolak untuk sering melakukan operasi yang memakan banyak sumber daya. Hanya saja, jangan berlebihan, menilai dengan benar seberapa banyak Anda membutuhkan fitur tertentu dan seberapa sering Anda harus menyelesaikan tugas yang terkait dengannya.

  • Tag:

Harap aktifkan JavaScript untuk melihat

Seringkali, pengguna mengeluh bahwa "1C 8.3 melambat": formulir dokumen terbuka perlahan, dokumen diposting untuk waktu yang lama, program dimulai, laporan dibuat untuk waktu yang lama, dan seterusnya.

Selain itu, "gangguan" seperti itu dapat terjadi di berbagai program:

Alasannya mungkin berbeda. Ini tidak dikembalikan memegang kertas, komputer lemah atau server, server 1C tidak dikonfigurasi dengan benar.

Dalam artikel ini, saya ingin mempertimbangkan salah satu alasan paling sederhana dan paling umum kerja lambat program - . Instruksi ini akan relevan untuk pengguna database file untuk 1-2 pengguna, di mana tidak ada persaingan untuk sumber daya.

Jika Anda tertarik pada pengoptimalan yang lebih serius dari opsi server-klien untuk sistem, kunjungi bagian situs.

Di mana tugas yang dijadwalkan di 1C 8.3

Sebelum saya sempat memuat program, banyak tugas latar belakang diselesaikan di 1C. Anda dapat melihatnya dengan masuk ke menu "Administrasi", lalu - "Dukungan dan pemeliharaan":

Dapatkan pelajaran video 267 1C gratis:

Beginilah tampilan jendela dengan tugas yang sudah selesai:

Dan berikut adalah daftar lengkap dari semua tugas terjadwal yang dijalankan:

Di antara tugas-tugas ini terlihat seperti "", memuat berbagai pengklasifikasi, memeriksa relevansi versi program, dan sebagainya. Misalnya, saya tidak membutuhkan hampir semua tugas ini. Saya tidak menyimpan catatan mata uang, saya mengontrol versi sendiri, saya mengunggah pengklasifikasi sesuai kebutuhan.

Oleh karena itu, adalah kepentingan saya (dan dalam kebanyakan kasus Anda) untuk menonaktifkan tugas yang tidak perlu.

Menonaktifkan tugas terjadwal dan tugas latar belakang di 1C 8.3