1C Beklenti işleyicisinin yürütülmesi hakkında nasıl öğrenilir. "Flash" arayüzü veya asenkron aramaların zincirleri

Kod 1C V 8.2 Yukarı Bağlantı Yayınları (<ИмяПроцедуры>, <Интервал>, <Однократно>)
Parametreler:
<ИмяПроцедуры>
<Интервал> (Zorunlu) Tür: Number. İşlemin aranacağı 1/10 saniyeye kadar olan zaman aralığı (pozitif). Değer 1'den azsa, üçüncü parametrenin değeri gerçeğe eşit olmalıdır.
<Однократно> (İsteğe bağlı) Tip: Boolean. Bir kerelik beklenti işleyicisinin imzası.
Gerçek - Belirtilen Bekleme İşleyicisi bir kez yürütülecek. Varsayılan değer: yalan
Açıklama: Belirtilen prosedürü bekleme işleyicisi olarak bağlar. İşlem, belirtilen zaman aralığından sonra her seferinde sistemin bekleme süresi boyunca çağrılacaktır.

Kullanılabilirlik:
Ince Client, Web İstemcisi, FAT Client.

Not:
Bekleme işleyicisini aramak, form kapatılmayacak kadar veya devre dışı bırakılmış oluşum formunun yöntemi olarak adlandırılıncaya kadar devam eder. Kod 1c v 8.2 ue devre dışı bırakıldı<ИмяПроцедуры>)

Kod 1c v 8.2
& Svalette
Kabuk işlemcisinin prosedürü ()
İşleme ();
Ekstrüdreler

& Sunucuda
Prosedür İşleme ()
// İhtiyacınız olan her şeyi yap
Ekstrüdreler

//....
Bağlantı yöntemleri ("Shell işlemci", 3, gerçek);

<ИмяПроцедуры>, <Интервал>, <Однократно>)
Aramayı, kontrol edilen uygulama modülü (her zamanki uygulamanın modülü) veya belirli bir zaman aralığından sonra küresel bir paylaşılan modül için belirtilen prosedüre bağlar. Çağrı, yalnızca "dinlenme durumunda", yani programın herhangi bir işlemi yerine getirmediği anda gerçekleştirilecektir. Bekleyen işleyiciyi aramak, sistem işi tamamlayana kadar veya engelli işlemin küresel bağlamının yöntemi yapılıncaya kadar devam eder.
Kod 1c v 8.x prosedür raporlama satış kat ()
// ...
Ekstrüdreler

//...
ConnectationConditions ("Raporlama Satışı", 60); // her dakika
Tipik DIN kontrolünde kod 1c v 8.x //. Yapılandırma her 20 dakikada bir güncellenir.
Bağlantı yöntemleri ("işleme-şarap yazma dinamik değiştirme", 20 * 60);
// veri değişim işleyicisini bağlayın
Yayının bağlanması ("Doğrulandı", Global-BEDAVA ("GLCOLITYSYCENCENCHANDPROMS"));
Bağlantı Yöntemleri ("Checklessansompanying", 86400); // \u003d 24 (h) * 60 (dak) * 60 (sn) \u003d 1 gün

Form için
Kod 1c V 8.x Bağlantı Makineleri (<ИмяПроцедуры>, <Интервал>, <Однократно>)
Parametreler:
<ИмяПроцедуры> (Zorunlu) Tür: Dize. Bekleme işleyicisi olarak bağlı prosedürün adı.
<Интервал> (Zorunlu) Tür: Number. İşlemin çağrıldığı (pozitif), 1/10 saniyeye kadar zaman aralığı. 1'den azsa, üçüncü parametrenin değeri gerçeğe eşit olmalıdır.
<Однократно> (İsteğe bağlı) Tür: Boolean. Bir kerelik beklenti işleyicisinin imzası. 0istina - belirtilen bekleme işleyicisi bir kez yürütülecek. Varsayılan değer: yalan

Açıklama:
Belirtilen prosedürü bekleme işleyicisi olarak bağlar. İşlem, belirtilen zaman aralığından sonra her seferinde sistemin bekleme süresi boyunca çağrılacaktır.

Kullanılabilirlik:
Kalın istemci.
Not:
Bekleme işleyicisini aramak, form kapatılmayacak kadar veya devre dışı bırakılmış oluşum formunun yöntemi olarak adlandırılıncaya kadar devam eder.
Misal:
Kod 1c v 8.x bağlantı noktaları ("yoksulluk", 1);
Kod 1c v 8.x formu. Minervalustrust \u003d 300; // 5 dakika
Eğer form ise. Minervatorstosteo<> 0 sonra
Formu. Artan işlem ("işleme işlemcisi", bir form için (form. Minervatorship * 60));
Bitti;

Sistemdeki Beklenti Tedavisi: KurumsalBelgelerden aşağıdaki gibi, belirli bir zaman aralığında küresel modül prosedürünün periyodik bir şekilde yürütülmesi amaçlanmaktadır. Başlangıç \u200b\u200bkodu şöyle görünecek:
Kod 1c v 7.x işlem ("UpdateCeer _", 1);
Nerede "GÜNCELLEME Ölçer_" - 1 sn frekansta çalışacak olan küresel modül prosedürünün adı. (1'e eşit ikinci parametre)

Fakat! Sorun şu ki, beklenti işleme işleminin sadece 1 kez başlamanın mümkün olmasıdır. Tekrarla başlatmak öncekini iptal edecektir. Başka bir deyişle, yapmak istiyorsanız, örneğin, zamanlayıcıyı harcanan zamanı saymak için işleme koymak istiyorsanız, yalnızca bir zamanlayıcıyı başlatabilirsiniz, çünkü İkinci zamanlayıcıyı başlatmak, birincisine yol açacaktır. Ve aynı anda 2, 3 veya daha fazla zamanlayıcı çalıştırmanız gerekirse? Veya belgelerin durumunu periyodik olarak taramanız gerekiyor mu?

Bir çıkış var! Bekleme işlemi, bu akımı küresel bağlamdan ayırmak için formun bağlamında başlatılmalıdır. Ve sonra yerel modül prosedürünün periyodik lansmanı mümkün olacaktır. İşleminizin modül biçimlerinde bulunan prosedürler.

Başlangıç \u200b\u200bkodu şöyle görünecek:
Kod 1C v 7.x formu. İşleme ("Güncelleme _", 1);
Nerede "GÜNCELLEME Ölçer_" - 1 sn frekansı ile çalışacak yerel işleme form modülünün prosedürünün adı. (1'e eşit ikinci parametre)
Böylece, her işlemede, beklenti işlemenizi, formun açık olana kadar çalışacak şekilde çalıştırabilirsiniz.

Formlarda kullanabilirsiniz Kod 1c v 8.x formu. İşleme, "Nameprocessor", zaman),
Nameprocessor adının, saniyenin zamanında geçen prosedürün adıdır.
Prosedürün kendisinde, kodu 1c v 8.x form yerleştirin. İşleme, "Nameprocessor'un adı", 0) beklenti işlemesini durdurmak için (doğal olarak, gerekli koşulları yerine getirdikten sonra).
Bir kaynak

Kod 1C V 8.2 Yukarı Bağlantı Yayınları (<ИмяПроцедуры>, <Интервал>, <Однократно>)
Parametreler:
<ИмяПроцедуры>
<Интервал> (Zorunlu) Tür: Number. İşlemin aranacağı 1/10 saniyeye kadar olan zaman aralığı (pozitif). Değer 1'den azsa, üçüncü parametrenin değeri gerçeğe eşit olmalıdır.
<Однократно> (İsteğe bağlı) Tip: Boolean. Bir kerelik beklenti işleyicisinin imzası.
Gerçek - Belirtilen Bekleme İşleyicisi bir kez yürütülecek. Varsayılan değer: yalan
Açıklama: Belirtilen prosedürü bekleme işleyicisi olarak bağlar. İşlem, belirtilen zaman aralığından sonra her seferinde sistemin bekleme süresi boyunca çağrılacaktır.

Kullanılabilirlik:
Ince Client, Web İstemcisi, FAT Client.

Not:
Bekleme işleyicisini aramak, form kapatılmayacak kadar veya devre dışı bırakılmış oluşum formunun yöntemi olarak adlandırılıncaya kadar devam eder. Kod 1c v 8.2 ue devre dışı bırakıldı<ИмяПроцедуры>)

Kod 1c v 8.2
& Svalette
Kabuk işlemcisinin prosedürü ()
İşleme ();
Ekstrüdreler

& Sunucuda
Prosedür İşleme ()
// İhtiyacınız olan her şeyi yap
Ekstrüdreler

//....
Bağlantı yöntemleri ("Shell işlemci", 3, gerçek);

<ИмяПроцедуры>, <Интервал>, <Однократно>)
Aramayı, kontrol edilen uygulama modülü (her zamanki uygulamanın modülü) veya belirli bir zaman aralığından sonra küresel bir paylaşılan modül için belirtilen prosedüre bağlar. Çağrı, yalnızca "dinlenme durumunda", yani programın herhangi bir işlemi yerine getirmediği anda gerçekleştirilecektir. Bekleyen işleyiciyi aramak, sistem işi tamamlayana kadar veya engelli işlemin küresel bağlamının yöntemi yapılıncaya kadar devam eder.
Kod 1c v 8.x prosedür raporlama satış kat ()
// ...
Ekstrüdreler

//...
ConnectationConditions ("Raporlama Satışı", 60); // her dakika
Tipik DIN kontrolünde kod 1c v 8.x //. Yapılandırma her 20 dakikada bir güncellenir.
Bağlantı yöntemleri ("işleme-şarap yazma dinamik değiştirme", 20 * 60);
// veri değişim işleyicisini bağlayın
Yayının bağlanması ("Doğrulandı", Global-BEDAVA ("GLCOLITYSYCENCENCHANDPROMS"));
Bağlantı Yöntemleri ("Checklessansompanying", 86400); // \u003d 24 (h) * 60 (dak) * 60 (sn) \u003d 1 gün

Form için
Kod 1c V 8.x Bağlantı Makineleri (<ИмяПроцедуры>, <Интервал>, <Однократно>)
Parametreler:
<ИмяПроцедуры> (Zorunlu) Tür: Dize. Bekleme işleyicisi olarak bağlı prosedürün adı.
<Интервал> (Zorunlu) Tür: Number. İşlemin çağrıldığı (pozitif), 1/10 saniyeye kadar zaman aralığı. 1'den azsa, üçüncü parametrenin değeri gerçeğe eşit olmalıdır.
<Однократно> (İsteğe bağlı) Tür: Boolean. Bir kerelik beklenti işleyicisinin imzası. 0istina - belirtilen bekleme işleyicisi bir kez yürütülecek. Varsayılan değer: yalan

Açıklama:
Belirtilen prosedürü bekleme işleyicisi olarak bağlar. İşlem, belirtilen zaman aralığından sonra her seferinde sistemin bekleme süresi boyunca çağrılacaktır.

Kullanılabilirlik:
Kalın istemci.
Not:
Bekleme işleyicisini aramak, form kapatılmayacak kadar veya devre dışı bırakılmış oluşum formunun yöntemi olarak adlandırılıncaya kadar devam eder.
Misal:
Kod 1c v 8.x bağlantı noktaları ("yoksulluk", 1);
Kod 1c v 8.x formu. Minervalustrust \u003d 300; // 5 dakika
Eğer form ise. Minervatorstosteo<> 0 sonra
Formu. Artan işlem ("işleme işlemcisi", bir form için (form. Minervatorship * 60));
Bitti;

Sistemdeki Beklenti Tedavisi: KurumsalBelgelerden aşağıdaki gibi, belirli bir zaman aralığında küresel modül prosedürünün periyodik bir şekilde yürütülmesi amaçlanmaktadır. Başlangıç \u200b\u200bkodu şöyle görünecek:
Kod 1c v 7.x işlem ("UpdateCeer _", 1);
Nerede "GÜNCELLEME Ölçer_" - 1 sn frekansta çalışacak olan küresel modül prosedürünün adı. (1'e eşit ikinci parametre)

Fakat! Sorun şu ki, beklenti işleme işleminin sadece 1 kez başlamanın mümkün olmasıdır. Tekrarla başlatmak öncekini iptal edecektir. Başka bir deyişle, yapmak istiyorsanız, örneğin, zamanlayıcıyı harcanan zamanı saymak için işleme koymak istiyorsanız, yalnızca bir zamanlayıcıyı başlatabilirsiniz, çünkü İkinci zamanlayıcıyı başlatmak, birincisine yol açacaktır. Ve aynı anda 2, 3 veya daha fazla zamanlayıcı çalıştırmanız gerekirse? Veya belgelerin durumunu periyodik olarak taramanız gerekiyor mu?

Bir çıkış var! Bekleme işlemi, bu akımı küresel bağlamdan ayırmak için formun bağlamında başlatılmalıdır. Ve sonra yerel modül prosedürünün periyodik lansmanı mümkün olacaktır. İşleminizin modül biçimlerinde bulunan prosedürler.

Başlangıç \u200b\u200bkodu şöyle görünecek:
Kod 1C v 7.x formu. İşleme ("Güncelleme _", 1);
Nerede "GÜNCELLEME Ölçer_" - 1 sn frekansı ile çalışacak yerel işleme form modülünün prosedürünün adı. (1'e eşit ikinci parametre)
Böylece, her işlemede, beklenti işlemenizi, formun açık olana kadar çalışacak şekilde çalıştırabilirsiniz.

Formlarda kullanabilirsiniz Kod 1c v 8.x formu. İşleme, "Nameprocessor", zaman),
Nameprocessor adının, saniyenin zamanında geçen prosedürün adıdır.
Prosedürün kendisinde, kodu 1c v 8.x form yerleştirin. İşleme, "Nameprocessor'un adı", 0) beklenti işlemesini durdurmak için (doğal olarak, gerekli koşulları yerine getirdikten sonra).
Bir kaynak

1C platform bize, bazen basit, ama komik şeyler için kullanılabilecek prosedürlerin eşzamansız zorluklarının olanaklarını sunar. Örneğin, herkese "flaş", rengini veya görsel tasarımın değişim olasılığına sahip olabilirsiniz. Ayrıca, daha basit, ancak kontrolsüz bir mekanizma olarak kullanabilirsiniz ve ilginç bir asenkron zorluklar zinciri oluşturun ve tercih edilen davranışı belirleyebilirsiniz.

Bu, tabii ki buraya, konektör yapma amaçlı () ().

Sözdizimi prosedürünü hatırlatmama izin verin:

BağlantıConitions (<ИмяПроцедуры>, <Интервал>, <Однократно>)

Ayrıca, bir saniyeden daha az aralığı belirlerseniz, prosedürün başlatılması bir kerelik olmalıdır. Burada, yürütme akışının üzerinde kontrolü kaybediyoruz ve "özelleştirmeyi" "özelleştirmeyi" kaybettik (esnek, ayrı ayrı yapılandırılmış).

Ancak bu kısıtlama kolayca yapılır.

Ağaçtaki düşünceleri yaymamak için hemen basit bir örnek verin ve bunu açıklayacağım.

Formda bir masa belgesine sahip olduğumuzu varsayalım, 5 katı alanını 5 kat daha fazla "göz kırpmak istiyoruz.

///////////////////////////////////// "Mignem" Tablo belgesinin alanını 5 kez, yarım saniyede bir aralıkla ////// ////////////////// / şikayet prosedürü cemaat (takım) mfsmymind \u003d 3; // sayaç. İstenilen formlar, "görünür", noktaları bağlayan beklenti işleyicilerinin prosedürlerinde ("gösteren", 0.1, gerçek); // Detaylı prosedür ve şikayet prosedürünü doğrudan arayabilirsiniz. Sınır \u003d Yeni çizgi (typhelniacyclable kabiliyet. Çift); Alan. Yoksulluk (sınır, sınır, sınır, sınır); // mf regionmymymymyg region \u003d mfsmymind - 1; // Bağlantının bağlantısının sayacını süsleyin. // Asenkron çağrıların zincirini bağlayın. Son kontrolmenler ve fıkra prosedürü NOVEROPTWORK Slimes () bölge \u003d nesne. TD. Sınır \u003d yeni satır (typhelniacyclable kabiliyet. Konu); Alan. Yoksulluk (sınır, sınır, sınır, sınır); // MFSMYMYG ... 0 sonra bölgenin dolaşımını çıkarın, sonra Covds ("ShowDeeling", 0.5, gerçek); // sayaçta kaldığı kadar tekrar ediyoruz. Ekstrüdreler

Temel gereksinim, yalnızca MFSMIMG-Meter değişkeninin, asenkron olarak başlattığımız prosedürlerden "görünür" olmasıdır. İÇİNDE bu durum Değişken, sahne formudur.

Özenli okuyucu, bu tür zincirlerin oluşumuyla bir kerede iki harmanı öldürdüğümüzü fark edebilir:

  • İşlemin zorluklarının bir saniyeden daha az olan aralığın değerleri ile tekrarlanabilirliğine ilişkin kısıtlamayı atlarız;
  • Farklı uzunluk ve karmaşıklık zincirleri oluşturma fırsatımız var:
    • beklenti işleyicisini doğrudan beklenti işleyicisine bağlayın;
    • birbirlerini bağlamak için bu tür prosedürler yapın;
    • zincir zincirlerinin daha karmaşık bir yapısını düzenleyin;
    • Çağrı yönetimi zorluğunu sonsuz şekilde karmaşıklaştırın (örneğin, çağrılardaki değişiklikler, yalnızca sayaçları değil, aralıkların değerlerini, tasarım stillerinin (gökkuşağının taşması 🌈) değerlerini de zorlaştırır.

Açıklanan yöntemin sadeliğine rağmen, içinde önemli bir potansiyel gizlenir.

2017 yılında, programın davranışını daha esnek bir şekilde yönetin moderndir.