1C Cara belajar tentang eksekusi handler harapan. Antarmuka "Flash", atau rantai panggilan asinkron

Kode 1C V 8.2 UP Connecture Publishing (<ИмяПроцедуры>, <Интервал>, <Однократно>)
Parameter:
<ИмяПроцедуры>
<Интервал> (Wajib) Jenis: Nomor. Interval waktu dalam hitungan detik hingga 1/10 detik, di mana prosedur akan disebut (positif). Jika nilainya kurang dari 1, nilai parameter ketiga harus sama dengan kebenaran.
<Однократно> (Opsional) Jenis: Boolean. Tanda handler ekspektasi satu kali.
Kebenaran - Handler tunggu yang ditentukan akan dieksekusi satu kali. Nilai default: berbohong
Deskripsi: Menghubungkan prosedur yang ditentukan sebagai handler siaga. Prosedur ini akan dipanggil selama periode tunggu sistem setiap kali setelah interval waktu yang ditentukan.

Ketersediaan:
Klien Slim, klien web, klien FAT.

catatan:
Memanggil Handler Tunggu terus sampai formulir tidak akan ditutup atau sampai metode formasi Formasi yang dinonaktifkan akan dipanggil. Kode 1C v 8.2 UE dinonaktifkan<ИмяПроцедуры>)

Kode 1C V 8.2 Up
& Svalette.
Prosedur prosesor shell ()
Pemrosesan ();
Extrudresses.

& Di server
Pemrosesan prosedur ()
// Buat semua yang Anda butuhkan
Extrudresses.

//....
Metode penghubung ("prosesor shell", 3, kebenaran);

<ИмяПроцедуры>, <Интервал>, <Однократно>)
Menghubungkan panggilan ke prosedur yang ditentukan untuk modul aplikasi terkontrol (modul aplikasi yang biasa) atau modul bersama global setelah interval waktu tertentu. Panggilan hanya akan dilakukan dalam "keadaan istirahat", yaitu, pada saat program tidak memenuhi tindakan apa pun. Memanggil pawang yang menunggu berlanjut sampai sistem menyelesaikan pekerjaan atau sampai metode konteks global transaksi yang dinonaktifkan akan disebabkan.
Kode 1C V 8.x Prosedur Pelaporan Penjualan Lantai ()
// ...
Extrudresses.

//...
ConnectingConditions ("Penjualan Pelaporan", 60); // setiap menit
Kode 1C v 8.x // dalam pemeriksaan khas din. Pembaruan konfigurasi setiap 20 menit.
Metode penghubung ("pemrosesan - penggantian dinamis penulis anggur", 20 * 60);
// hubungkan pawang pertukaran data
Menghubungkan Penerbitan ("Terverifikasi", Bebas Global ("glcolitysycenchandproms"));
Metode penghubung ("Check -Langsewaning", 86400); // \u003d 24 (h) * 60 (min) * 60 (detik) \u003d 1 hari

Untuk bentuk
Kode 1C v 8 8.x Mesin penghubung (<ИмяПроцедуры>, <Интервал>, <Однократно>)
Parameter:
<ИмяПроцедуры> Jenis (Wajib): String. Nama prosedur yang terhubung sebagai penangan menunggu.
<Интервал> (Wajib) Jenis: Nomor. Interval waktu dalam hitungan detik hingga 1/10 detik, di mana prosedur ini disebut (positif). Jika kurang dari 1 ditentukan, nilai parameter ketiga harus sama dengan kebenaran.
<Однократно> (Opsional) Jenis: Boolean. Tanda handler ekspektasi satu kali. 0istina - Handler tunggu yang ditentukan akan dieksekusi satu kali. Nilai default: berbohong

Deskripsi:
Menghubungkan prosedur yang ditentukan sebagai handler siaga. Prosedur ini akan dipanggil selama periode tunggu sistem setiap kali setelah interval waktu yang ditentukan.

Ketersediaan:
Klien tebal.
catatan:
Memanggil Handler Tunggu terus sampai formulir tidak akan ditutup atau sampai metode formasi Formasi yang dinonaktifkan akan dipanggil.
Contoh:
Kode 1c v 8.x titik penghubung ("kemiskinan", 1);
Kode 1C v 8.x Formulir. Minervalustrust \u003d 300; // 5 menit
Jika bentuk. Minervatorstosteo<> 0 Lalu.
Bentuk. Peningkatan pemrosesan ("prosesor pemrosesan", untuk suatu bentuk (formulir. Minervatorship * 60));
Berakhir;

Pengobatan ekspektasi dalam sistem 1C: EnterpriseSebagai berikut dari dokumentasi, ini dimaksudkan untuk eksekusi berkala dari prosedur modul global pada interval waktu tertentu. Kode awal akan terlihat seperti ini:
Kode 1C v 7.x memproses ("UpdateCeer _", 1);
Dimana "Perbarui Meter_" - Nama prosedur modul global, yang akan berjalan pada frekuensi 1 detik. (Parameter kedua sama dengan 1)

Tapi! Masalahnya adalah dimungkinkan untuk memulai pemrosesan harapan hanya 1 kali. Ulangi peluncuran akan membatalkan yang sebelumnya. Dengan kata lain, jika Anda ingin melakukannya, misalnya, memproses timer untuk menghitung waktu yang dihabiskan, Anda hanya dapat memulai satu timer, karena Mulai timer kedua akan mengarah ke yang pertama. Dan bagaimana jika Anda perlu menjalankan 2, 3 atau lebih timer pada saat yang sama? Atau apakah Anda perlu memindai secara berkala keadaan dokumen?

Ada jalan keluar! Pemrosesan siaga harus diluncurkan dalam konteks formulir untuk memisahkan aliran ini dari konteks global. Dan kemudian akan mungkin untuk peluncuran periodik prosedur modul lokal, I.E. Prosedur yang terletak di bentuk modul pemrosesan Anda.

Kode awal akan terlihat seperti ini:
Kode 1C v 7.x Formulir. Memproses ("Perbarui _", 1);
Dimana "Perbarui Meter_" - Nama prosedur modul formulir pemrosesan lokal, yang akan berjalan dengan frekuensi 1 detik. (Parameter kedua sama dengan 1)
Dengan demikian, dalam setiap pemrosesan, Anda dapat menjalankan pemrosesan harapan Anda, yang akan berfungsi sampai formulir terbuka.

Dalam bentuk yang dapat Anda gunakan Kode 1C v 8.x Formulir. Pemrosesan, "Nama Pamamu", waktu),
di mana nama nameprosesor adalah nama prosedur yang berjalan melalui waktu yang kedua
Dalam prosedur itu sendiri, masukkan kode 1c v 8.x Formulir. Pemrosesan, "Nama nama nama", 0) Untuk menghentikan pemrosesan harapan (secara alami, setelah melakukan kondisi yang diperlukan).
Sumber

Kode 1C V 8.2 UP Connecture Publishing (<ИмяПроцедуры>, <Интервал>, <Однократно>)
Parameter:
<ИмяПроцедуры>
<Интервал> (Wajib) Jenis: Nomor. Interval waktu dalam hitungan detik hingga 1/10 detik, di mana prosedur akan disebut (positif). Jika nilainya kurang dari 1, nilai parameter ketiga harus sama dengan kebenaran.
<Однократно> (Opsional) Jenis: Boolean. Tanda handler ekspektasi satu kali.
Kebenaran - Handler tunggu yang ditentukan akan dieksekusi satu kali. Nilai default: berbohong
Deskripsi: Menghubungkan prosedur yang ditentukan sebagai handler siaga. Prosedur ini akan dipanggil selama periode tunggu sistem setiap kali setelah interval waktu yang ditentukan.

Ketersediaan:
Klien Slim, klien web, klien FAT.

catatan:
Memanggil Handler Tunggu terus sampai formulir tidak akan ditutup atau sampai metode formasi Formasi yang dinonaktifkan akan dipanggil. Kode 1C v 8.2 UE dinonaktifkan<ИмяПроцедуры>)

Kode 1C V 8.2 Up
& Svalette.
Prosedur prosesor shell ()
Pemrosesan ();
Extrudresses.

& Di server
Pemrosesan prosedur ()
// Buat semua yang Anda butuhkan
Extrudresses.

//....
Metode penghubung ("prosesor shell", 3, kebenaran);

<ИмяПроцедуры>, <Интервал>, <Однократно>)
Menghubungkan panggilan ke prosedur yang ditentukan untuk modul aplikasi terkontrol (modul aplikasi yang biasa) atau modul bersama global setelah interval waktu tertentu. Panggilan hanya akan dilakukan dalam "keadaan istirahat", yaitu, pada saat program tidak memenuhi tindakan apa pun. Memanggil pawang yang menunggu berlanjut sampai sistem menyelesaikan pekerjaan atau sampai metode konteks global transaksi yang dinonaktifkan akan disebabkan.
Kode 1C V 8.x Prosedur Pelaporan Penjualan Lantai ()
// ...
Extrudresses.

//...
ConnectingConditions ("Penjualan Pelaporan", 60); // setiap menit
Kode 1C v 8.x // dalam pemeriksaan khas din. Pembaruan konfigurasi setiap 20 menit.
Metode penghubung ("pemrosesan - penggantian dinamis penulis anggur", 20 * 60);
// hubungkan pawang pertukaran data
Menghubungkan Penerbitan ("Terverifikasi", Bebas Global ("glcolitysycenchandproms"));
Metode penghubung ("Check -Langsewaning", 86400); // \u003d 24 (h) * 60 (min) * 60 (detik) \u003d 1 hari

Untuk bentuk
Kode 1C v 8 8.x Mesin penghubung (<ИмяПроцедуры>, <Интервал>, <Однократно>)
Parameter:
<ИмяПроцедуры> Jenis (Wajib): String. Nama prosedur yang terhubung sebagai penangan menunggu.
<Интервал> (Wajib) Jenis: Nomor. Interval waktu dalam hitungan detik hingga 1/10 detik, di mana prosedur ini disebut (positif). Jika kurang dari 1 ditentukan, nilai parameter ketiga harus sama dengan kebenaran.
<Однократно> (Opsional) Jenis: Boolean. Tanda handler ekspektasi satu kali. 0istina - Handler tunggu yang ditentukan akan dieksekusi satu kali. Nilai default: berbohong

Deskripsi:
Menghubungkan prosedur yang ditentukan sebagai handler siaga. Prosedur ini akan dipanggil selama periode tunggu sistem setiap kali setelah interval waktu yang ditentukan.

Ketersediaan:
Klien tebal.
catatan:
Memanggil Handler Tunggu terus sampai formulir tidak akan ditutup atau sampai metode formasi Formasi yang dinonaktifkan akan dipanggil.
Contoh:
Kode 1c v 8.x titik penghubung ("kemiskinan", 1);
Kode 1C v 8.x Formulir. Minervalustrust \u003d 300; // 5 menit
Jika bentuk. Minervatorstosteo<> 0 Lalu.
Bentuk. Peningkatan pemrosesan ("prosesor pemrosesan", untuk suatu bentuk (formulir. Minervatorship * 60));
Berakhir;

Pengobatan ekspektasi dalam sistem 1C: EnterpriseSebagai berikut dari dokumentasi, ini dimaksudkan untuk eksekusi berkala dari prosedur modul global pada interval waktu tertentu. Kode awal akan terlihat seperti ini:
Kode 1C v 7.x memproses ("UpdateCeer _", 1);
Dimana "Perbarui Meter_" - Nama prosedur modul global, yang akan berjalan pada frekuensi 1 detik. (Parameter kedua sama dengan 1)

Tapi! Masalahnya adalah dimungkinkan untuk memulai pemrosesan harapan hanya 1 kali. Ulangi peluncuran akan membatalkan yang sebelumnya. Dengan kata lain, jika Anda ingin melakukannya, misalnya, memproses timer untuk menghitung waktu yang dihabiskan, Anda hanya dapat memulai satu timer, karena Mulai timer kedua akan mengarah ke yang pertama. Dan bagaimana jika Anda perlu menjalankan 2, 3 atau lebih timer pada saat yang sama? Atau apakah Anda perlu memindai secara berkala keadaan dokumen?

Ada jalan keluar! Pemrosesan siaga harus diluncurkan dalam konteks formulir untuk memisahkan aliran ini dari konteks global. Dan kemudian akan mungkin untuk peluncuran periodik prosedur modul lokal, I.E. Prosedur yang terletak di bentuk modul pemrosesan Anda.

Kode awal akan terlihat seperti ini:
Kode 1C v 7.x Formulir. Memproses ("Perbarui _", 1);
Dimana "Perbarui Meter_" - Nama prosedur modul formulir pemrosesan lokal, yang akan berjalan dengan frekuensi 1 detik. (Parameter kedua sama dengan 1)
Dengan demikian, dalam setiap pemrosesan, Anda dapat menjalankan pemrosesan harapan Anda, yang akan berfungsi sampai formulir terbuka.

Dalam bentuk yang dapat Anda gunakan Kode 1C v 8.x Formulir. Pemrosesan, "Nama Pamamu", waktu),
di mana nama nameprosesor adalah nama prosedur yang berjalan melalui waktu yang kedua
Dalam prosedur itu sendiri, masukkan kode 1c v 8.x Formulir. Pemrosesan, "Nama nama nama", 0) Untuk menghentikan pemrosesan harapan (secara alami, setelah melakukan kondisi yang diperlukan).
Sumber

Platform 1C memberi kami kemungkinan tantangan asinkron prosedur yang, kadang-kadang, dapat digunakan untuk hal-hal sederhana, tetapi lucu. Misalnya, Anda dapat "flash" untuk semua orang, apa yang memiliki warna atau kemungkinan mengubah desain visual. Selain itu, Anda dapat menggunakan mekanisme yang lebih sederhana dan tidak terkendali, dan membangun rantai tantangan asinkron yang menarik dan menetapkan perilaku yang disukai.

Ini datang ke sini, tentu saja, tentang prosedur pembuatan konektor;).

Biarkan saya mengingatkan prosedur sintaks:

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

Selain itu, jika Anda menentukan interval kurang dari satu detik, peluncuran prosedur harus satu kali. Di sini kita kehilangan kendali atas aliran eksekusi dan kehilangan kemampuan untuk "menyesuaikan" itu (secara fleksibel, dikonfigurasi secara individual).

Tetapi pembatasan ini mudah dilakukan.

Agar tidak menyebarkan pikiran di pohon, segera berikan contoh sederhana dan saya akan menjelaskannya.

Misalkan kita memiliki dokumen tabel pada formulir dan kita ingin "berkedip" 5 kali beberapa jenis daerahnya.

///////////// / / /// // // "Mignem" daerah dokumen tabel 5 kali, dengan interval dalam setengah detik // ///// ////// ///////// / PROSED PROSEDUR (tim) mfsmymind \u003d 3; // counter. Formulir yang diperlukan, "terlihat" dalam prosedur penangan harapan yang menghubungkan poin ("ShowDeeling Complex", 0,1, Kebenaran); // Anda dapat langsung memanggil prosedur terperinci & prosedur. Prosedur untuk menunjukkan penutupan () area \u003d objek. TD. Kiri (mfperstrowardated, mfpertayolonkada, ifslessellesholds); Batas \u003d baris baru (Kesurukan Typhelnaincertable. Ganda); Daerah. Kemiskinan (perbatasan, perbatasan, perbatasan, perbatasan); // wajib MF Regionmymymyg Region \u003d mfsmymind - 1; // Hiasi meja koneksi koneksi. // sambungkan rantai panggilan asinkron. Kontrol & prosedur Klusor Akhir Remajaoptwwwwork CLIME () Wilayah \u003d objek. TD Batas \u003d baris baru (kesengsaraan typhelnainclable. Subjek); Daerah. Kemiskinan (perbatasan, perbatasan, perbatasan, perbatasan); // hapus sirkulasi wilayah jika mfsmymyg ... 0 kemudian menghubungkan Covds ("showdeeling", 0,5, kebenaran); // Kami ulangi sebanyak yang tersisa di meteran. Extrudresses.

Persyaratan dasar adalah hanya variabel MFSMIMG-Meter "terlihat" dari prosedur yang kami luncurkan secara asinkron. DI kasus ini Variabelnya adalah bentuk alat peraga.

Pembaca yang penuh perhatian dapat memperhatikan bahwa dengan pembentukan rantai tersebut, kami membunuh dua hares sekaligus:

  • Kami mem-bypass pembatasan pada pengulangan tantangan prosedur dengan nilai-nilai interval kurang dari satu detik;
  • Kami memiliki kesempatan untuk membentuk rantai dengan panjang dan kompleksitas yang berbeda:
    • hubungkan handler ekspektasi langsung di handler harapan itu sendiri;
    • membuat prosedur untuk saling menghubungkan;
    • mengatur struktur rantai rantai yang lebih kompleks;
    • menyulitkan tantangan manajemen panggilan (misalnya, berubah dalam panggilan tidak hanya penghitung mereka, tetapi juga nilai-nilai interval, gaya desain (sehingga pelangi dipenuhi 🌈).

Meskipun kesederhanaan metode yang dijelaskan, potensi yang cukup besar disembunyikan di dalamnya.

Pada 2017, lebih fleksibel mengelola perilaku program modern.