internet pencereler Android

Zamanlanmış görevleri çalıştırma 1s 8.3. Arka plan görevleri: özellikler, yetenekler, özelleştirme

". İçinde, sistem arayüzü ile ilgili olmayan, ancak 1C: Enterprise 8 platformunun sağlanan işlevselliğini önemli ölçüde genişleten yeni özellikleri ele alacağız.

uygulanabilirlik

Makale, 1C: Enterprise platform sürümü 8.3.4.437'yi tartışıyor. Makalede açıklanan tüm işlevler 8.3.11 sürümüne güncellendi.

"1C: Enterprise 8.3"teki diğer yenilikler

1C: Enterprise 8.3 platformunun yeniliklerini tanımaya devam edelim.

Dosya bilgi tabanındaki arka plan ve zamanlanmış görevler

Birçok tipik platform konfigürasyonunda 8.2 dosya sürümünde görevlerin gerçekleştirildiği kullanıcıyı belirten bir sabit vardı.

Sistem bu kullanıcı altında çalışmaya başladığında, düzenli aralıklarla gömülü dil yöntemini çağıran bir bekleme işleyicisi bağlandı. RunProcessingJobs ().

Bu yaklaşım, dosya veritabanında zamanlanmış işleri kullanmak için ek zorluklar ve rahatsızlıklar yarattı.

Bu, özellikle aşağıdakiler gibi yapılandırmalarla çalışırken kritik olabilir: "Entegre Otomasyon" veya "Üretim İşletme Yönetimi" zamanlanmış görevlerin oldukça önemli bir rol oynadığı .

Dosya IB ise
=
Constants.UserForRunRoutineJobsIn FileVariant.Get();
Eğer hlValueDeğişken("GlCurrentKullanıcı") =
UserForPerformanceReglGörevler Sonra
// saniye aralıklarla, zamanlanmış işlerle çalışma prosedürünü çağırın
Dosya Sürümü için Normal İşi Destekleyin();
Anket Aralığı=
Constants.IntervalYoklama İçinRegularJobsIn FileVariant.Get();
Eğer Anket Aralığı= Tanımsız
VEYA Anket Aralığı= 0 O zaman
Anket Aralığı= 60 ;
EndIf;
ConnectHandlerBeklentileri("SupportRegularJobForFileVersion",
Anket Aralığı);
EndIf;
EndIf;

platformda 8.3 global bağlam yöntemine bir çağrı kullanmadan dosya bilgi tabanında arka plan ve zamanlanmış işlerin çalışmasını uyguladı RunProcessingJobs ().

Arka plan ve zamanlanmış işler, doğrudan istemci uygulamalarından birinde (ince, kalın istemci) veya web sunucusunun bir uzantısı tarafından yürütülür.

Bir oturum tarafından başlatılan bir arka plan işi, onu başlatan aynı istemci uygulaması tarafından yürütülür.

Arka plan işleri sırayla yürütülür, yani. bir istemci uygulamasında aynı anda yalnızca bir arka plan görevi (zamanlanmış dahil) yürütülebilir.

Zamanlanmış işler yalnızca bir istemci uygulaması tarafından gerçekleştirilir. Zamanlanmış işlerin başlatılmasını kontrol etmek için komut satırı tuşunu kullanın / AllowExecuteScheduledJobs.

Zamanlanmış görevler, ilk istemci uygulaması tarafından, zamanlanmış görevlerin gerçekleştirilmesi yasak olmayan başlangıç ​​sırasına göre gerçekleştirilir (oturumun yasaklanması için komut satırı parametresiyle başlatılmalıdır). / AllowExecuteScheduledJobs -Off).

Bu oturum sona erdiğinde, yürütme kalan çalışan oturumlardan herhangi birine atlar.

İstemci uygulama başlatma satırı, zamanlanmış işleri çalıştırma ihtiyacını açıkça belirtiyorsa (komut satırı şunları belirtir: / AllowExecuteScheduledJobs -Force), daha sonra diğer oturumların varlığından bağımsız olarak zamanlanmış görevler üzerinde gerçekleştirilmeye başlar.

Zamanlanmış işler her 60 saniyede bir işlenir.

Uygulanan çözümün (dosya sürümünde) zamanlanmış görevlerinin, istemci uygulaması başlatıldıktan sonra en geç 1 dakika içinde yürütülmeye başladığını unutmayın. 8.3.8 sürümünden itibaren bu süre iki katına çıkarılmıştır ve bu nedenle zamanlanmış görevler istemciyi başlattıktan (dosya sürümünde) maksimum 2 dakika sonra yürütülmeye başlar.

Bu karar, başvurunun başlangıcındaki gecikmenin azalmasından kaynaklanmaktadır. Ayrıca 8.3.7 sürümü, geçerli oturumun bir arka plan iş oturumu olduğunu hızlı bir şekilde belirleme özelliğini ekledi. Bu, küresel bağlamın GetCurrentSessionInformationBase () yeni yöntemi ve ayrıca bilgi bankası oturumu için yeni bir yöntem aracılığıyla uygulanır. GetBackgroundİş ().

Yukarıdakileri gösteren kod aşağıdadır:

Büyütmek için resmin üzerine tıklayın.

sağlama toplamlarını hesaplama

Platform artık veri sağlama toplamlarını hesaplamak için mekanizmalara sahiptir.

Bir sağlama toplamının (hash), belirli bir algoritma uygulanarak bir dizi veriden hesaplanan ve iletim veya depolama sırasında verilerin bütünlüğünü kontrol etmek için kullanılan belirli bir değer olduğunu hatırlayın.

Hash'ler, verilerin kimliğini kontrol etmek için kullanılabilir (örneğin, aktarım sırasında dosyanın zarar görmediğinden emin olmanız gerekir; dosyada değişiklik yapılıp yapılmadığını kontrol edin ve varsa, tekrar veritabanına yükleyin. ).

Bunun için platform nesneyi hayata geçirdi. HashingData sunucuda, kalın istemcide, dış bağlantıda ve ayrıca mobil uygulama sunucusunda kullanılabilir.

Bu nesnenin iki yöntemi vardır: Ekle() ve Dosya Ekle() parametrelerde iletilen verilere dayalı olarak karma toplamı güncelleyen.

Platformu 8.3.4.437 aşağıdaki hash fonksiyonlarının hesaplanmasını destekler: CRC32, MD5, SHA1, SHA256... Ama fonksiyonlar SHA1 ve SHA256 mobil platformda desteklenmez.

Basit bir örneğe bakalım. Program dizinindeki sunucuda bir dosya olduğu varsayılır “ ragent.exe”. hesaplamak gerekiyor MD5 bu dosyanın toplamıdır.

Bunu yapmak için, formuna komutu yerleştireceğimiz harici bir işlem oluşturacağız. Hesaplamak... İşleyici aşağıdaki kodu içerir:

& OnClient
Prosedür Hesaplama (Komut)
Sonuç = CalculateOnServer();
Rapor (Dize (Sonuç));
Prosedürün Sonu
&Sunucuda
İşlev CalculateOnServer()
Hash = Yeni HashingData(HashFunction .MD5);
Hash.AddFile(KatalogProgramlar() + “Ragent.exe”);
Hash.HashSum döndür;
EndFunction

Yöntemde 8.3.10+ sürümü platformunda Ekle() nesne HashingData karma toplamları güncellemenin çeşitli uygulamalı problemlerini çözmede kullanımlarını büyük ölçüde basitleştiren bir ikili veri akışı kullanmak mümkün hale geldi.

Protokollerin güvenli sürümleriyle çalışma SMTP / POP3

platformda 8.3 protokollerin korumalı sürümlerini kullanmak mümkün hale geldi SMTP / POP3(şartlar var SMTPS / POP3S veya SSLSMTP / SSLPOP3).

nesne için İnternetPostaProfili uygulanan yeni özellikler:

  • SSLSMTP'yi kullan;
  • KullanımSSLPOP3;
  • Yalnızca Güvenli Kimlik Doğrulama SMTP;
  • Yalnızca Güvenli POP3 Kimlik Doğrulaması.

Özellikleri Kimlik DoğrulamaSMTP ve POP3 kimlik doğrulaması nesne İnternetPostaProfili ayrıca numaralandırmalar Yöntem SMTP Kimlik Doğrulaması ve Yöntem POP3 Kimlik Doğrulamasıönerilmez - uyumluluk için desteklenirler.

Güvenli bir protokol kullanma SMTPS adresinden posta göndermeyi mümkün kılar 1C posta kutusunu kullanma Google.

Bir örneğe bakalım. Formda, mektubun konusunu ve alıcının adresini girmek ve mektubun metnini girmek için - biçimlendirilmiş belge alanı olan alanları yerleştireceğiz.

Büyütmek için resmin üzerine tıklayın.

Düğmeye basarak göndermek aşağıdaki kod yürütülecektir:

& OnClient
Prosedür Gönder (Komut) Postası = Yeni InternetMail; Profil = Yeni İnternetPostaProfili;
Profil.SMTP Sunucu Adresi= “Smtp.googlemail.com”;
Profil Kullanıcı SMTP= “[e-posta korumalı]” ;
Profil.Şifre SMTP= “ŞİFRE”;
Profil: SSLSMTP Kullan= Doğru;
Profile.SMTP Bağlantı Noktası = 465; Denemek
Mail.Connect(Profil);
Bir istisna
Rapor (Hata Açıklaması ());
Geri dönmek ;
Denemelerin Sonu; MailMessageMetin= “” ;
Ekler = Yeni Yapı;
Text.Get HTML(MailMessageMetin, Yatırımlar ); Posta Mesajı= Yeni İnternetPosta Mesajı;
MailMessage.Recipients.Add(Kime );
Posta Mesajı Konusu= Konu;
Posta Mesajı Metinler Ekle(MailMessageMetin,
MailMessageType.html); Posta.Gönder ( Posta Mesajı); Posta Bağlantısını Kes();
Prosedürün Sonu

Örneğimizde, SMTP sunucusu muhatap(lar)a bir e-posta mesajı gönderemezse, yöntemin Mail.Send (MailMessage) bir istisna atıyordu. Bu, geliştiriciler arasında bazı rahatsızlıklara neden oldu. istisnayı atma nedeni açık değildi.

8.3.9 sürümünde, bu davranış değişti ve şimdi Send () yöntemi, anahtarı muhatap olan ve değeri posta sunucusundan tanılama olan bir eşleşme döndürüyor. Bu, posta mesajının muhatapların her birine başarısız gönderilmesinin nedenlerini doğru bir şekilde belirlemenizi sağlar. 8.3.8 uyumluluk modunda davranış değişmedi.

İki taraflı yazdırma

platformda 8.2 platformun kendisi çift taraflı yazdırmayı kontrol etmiyordu; bu işlevi yalnızca yazıcı sürücüsünü kullanarak yönetmek mümkündü.

platformda 8.3 artık elektronik tablo belgeleri, grafik şemaları (katıştırılmış dilden ve etkileşimli olarak) ve metin belgeleri (yalnızca etkileşimli olarak) için çift taraflı yazdırmayı yönetmek mümkündür.

Sistem numaralandırmaları yerleşik dilde göründü:

  • TipÇift Taraflı Yazdırma(Hayır, Yukarı Çevir, Sola Çevir);
  • (Otomatik, Üste Ayna, Sola Ayna, Kullanmayın).

ve nesneler TabularBelge ve GrafikDiyagramıözellikler ortaya çıktı İki taraflı yazdırma ve InterleavingSayfa Düzenleri yazdırılan sayfaların konumunu değiştirebileceğiniz

Platform sürümü 8.3.9'da, sistem numaralandırmaTypeDouble-SidedPrint yeni bir değere sahiptir Yazıcı Ayarlarını Kullan... Bu değerin seçilmesi, sistem belgelerini yazdırırken yazıcı ayarlarının kullanılmasına izin verdi. 8.3.8 sürümü uyumluluk modunda, davranış değişmedi ve ilgili yazıcı ayarları yok sayıldı.

Bir web sunucusunda bilgi tabanı yayınlamak için kullanılan iletişim kutusu daha işlevsel hale getirildi. Artık yapılandırıcıdan yayınlamak, tüm dosya parametrelerini ayarlamanıza olanak tanır varsayılan.vrd.

Konfigüratör aracılığıyla bir web istemcisi ve web hizmetleri yayınlamak için iletişim kutusu için aşağıdakiler uygulanır:

  • varsayılan olarak Web hizmetlerinin kullanılabilirliğini kontrol etme yeteneği (öznitelik noktaEtkinleştirOrtak eleman ws);
  • dosya sürümünde arka plan işlerinin yürütülmesini kontrol etme yeteneği (öznitelik izin verexecuteprogramedjobs eleman ws).

onay kutusu ise "Web Hizmetlerini Varsayılan Olarak Yayınla" yer iminde "Temel" işaretlenirse, yayın güncellendiğinde seçilen Web servisleri otomatik olarak yayınlanacaktır.

Aksi takdirde, web hizmetleri yayınlanmamış olarak işaretlenecektir. Bu bayrak özniteliğe karşılık gelir noktaEtkinleştirOrtak eleman ws dosyada varsayılan.vrd web istemcisini ve web hizmetlerini yapılandırmak için.

Bağlanmak noktaEtkinleştirOrtak ws öğesi, kullanım iznini (özellik) açıkça belirtmeden yayınlanan bu bilgi bankası Web hizmetlerinde kullanım yeteneğinden sorumludur. etkinleştirme eleman nokta).

Özelliğin bir değeri varsa NS, ardından öznitelik değerinin açıkça belirtilmediği tüm Web hizmetleri etkinleştirme eleman nokta kullanımına izin verilecektir.

Aksi takdirde, bu tür Web servislerinin kullanımı yasaklanacaktır.

özelleştirme "Dosya modunda arka plan işleri"öznitelikle eşleşir izin verexecuteprogramedjobs dosyadaki ws öğesi varsayılan.vrd.

Bağlanmak izin verexecuteprogramedjobs dosya tabanlı bilgi tabanı için web sunucusunu genişleterek rutin görevleri yürütme yeteneğini yönetir.

Nitelik aşağıdaki değerleri alabilir:

  • kapalı- bu durumda, web sunucusu uzantısı zamanlanmış görevleri gerçekleştirmeyecektir. Zamanlanmış görevler, bir web sunucusu kullanmadan doğrudan bilgi tabanına bağlanan istemci uygulaması (varsa) tarafından gerçekleştirilecektir.
  • Kuvvet- bu durumda, web sunucusu uzantısı zamanlanmış görevleri gerçekleştirecektir.
    Bu özniteliğin değeri belirtilmezse, zamanlanmış görevler bilgi tabanına ilk bağlantı için kullanılacak uygulama tarafından gerçekleştirilecektir.

Platformun güncel sürümünde web servis üzerindeki yayın penceresi daha da kullanışlı ve ergonomik hale geldi. Artık OpenID kimlik doğrulamasını açıklayan parametreler ayrı bir sekmeye taşındı.

Bilgi bankası nesnelerinin numaralandırılması

platformda 8.3 bilgi bankası nesnelerinin otomatik numaralandırma mekanizması yeniden tasarlandı. Numara veya kodun benzersizliğinin kontrolü (sayı veya kodun otomatik olarak üretilmesi sonucunda elde edilen dahil) her zaman nesnenin kaydı sırasında gerçekleştirilir.

Numara veya kodun benzersizliğinin ihlali ile ilgili mesaj metnine hangi numara veya kodun benzersiz olmadığına dair bir gösterge eklendi.

Boşalan numara veya kodun kullanımı değişti. Önceden verilmiş numaralar veya numara veya kodun daha büyük (sırasıyla) ön ekine sahip kodlar varsa, boşalan numaralar veya kodlar kullanılmadan yeni bir numara veya kod atanır.

Veri oluşturma sistemi ifade dilinin toplu işlevleri

Veri oluşturma sisteminin ifade dilinde yeni toplama işlevleri uygulanır:

  • Herkes();
  • Herhangi();
  • GenelKoleksiyon StandardıSapma ();
  • Örnek Sapma ();
  • Örnek Dağılım ();
  • GenelKoleksiyon Dağılımı ();
  • Genel Koleksiyon Kovaryansı ();
  • Örnek Kovaryans ();
  • Korelasyon();
  • Regresyon Eğimi ();
  • RegresyonSegmenti ();
  • RegresyonNumarası ();
  • RegresyonR2 ();
  • Regresyon OrtalamasıX ();
  • Regresyon OrtalamasıY ();
  • Regresyon OrtalamasıSXX ();
  • RegresyonOrtalamaSYY ();
  • Regresyon Ortalaması SXY ().

Adlarından da anlaşılacağı gibi, bunlar istatistiksel işlevlerdir; bu, geliştiricilerin istatistiksel verileri hesaplamak için geliştirme prosedürlerine başvurmadan karmaşık raporlar oluşturma fırsatına sahip oldukları anlamına gelir.

Büyütmek için resmin üzerine tıklayın.

Şekilden de görebileceğiniz gibi, açılır listede yeni işlevler yok, ancak bunları manuel olarak girerseniz hata mesajı olmayacak ve rapor oluşturulacak:

Ayrıca ilgi çekici olan yeni işlevdir Sınıflandırma ABC ()... Fonksiyonun sonucu 1'den başlayan bir sınıf numarası olacaktır (1 A sınıfına, 2 B sınıfına, 3 C sınıfına vb. karşılık gelir).

Bu fonksiyonun nasıl çalıştığını gösterelim. Yeni bir harici rapor oluşturalım "Malların sınıflandırılması" istek üzerine:

SEÇ
mal tüketimi,
Malların tüketimiÜrünler.Miktar
İTİBAREN
Belge.GiderÜrün.Ürünler NASIL TüketimÜrünÜrünler

Yeni bir hesaplanan alan tanımlayalım Sınıf:

Büyütmek için resmin üzerine tıklayın.

Kaynakları aşağıdaki gibi yapılandıralım:

Büyütmek için resmin üzerine tıklayın.

Özel modda, rapor şöyle görünür:

Sonuç olarak, 1C 8.3 platformunda baskıdan baskıya, ACS mekanizmasının sürekli geliştirildiğini ve iyileştirildiğini ve bu değişiklikleri “acemi” makalemiz çerçevesinde tam olarak getirmenin mümkün olmadığını not ediyoruz. Ve gereksiz görünüyor, çünkü platformun mevcut sürümü üzerinde çalışırken, bu mekanizmanın çalışmasının bir veya başka yönünün analizine yardımcı olmak için her zaman çeşitli yardım sistemlerini kullanabilirsiniz.

Ek olarak, bu mekanizma ile çalışırken tüm incelikleri ve tuzakları en küçük ayrıntısına kadar demonte eden Veri Kompozisyon Sistemi hakkında 1C 8.3'te raporların profesyonel gelişimi için ayrı kursumuzu unutmayın. Demoyu kendiniz görün ve.

O halde ara sonuçları özetleyelim. Bu noktaya kadar, Taksi arayüzünün ve yönetilen formların yeni yeteneklerinin yanı sıra platformun daha önce kullanılamayan bazı yetenekleri hakkında da bilgi sahibi olduk. Şimdi, yapılandırıcıda geliştiriciye hangi kullanışlı özelliklerin sunulduğunu görmenin zamanı geldi.

1C'de çalışma nasıl hızlandırılır: Muhasebe 8.3 (revizyon 3.0) veya rutin ve arka plan görevlerini devre dışı bırakma

2019-01-15T13:28:19+00:00

1C: Accounting 8.3'ün (sürüm 3.0) yeni sürümüne geçmeyi başarmış olanlarınız, çalışmanın ikiden daha yavaş hale geldiğini fark ettiler. Bazı anlaşılmaz yavaşlamalar, günde birkaç kez sonsuz arka plan görevleri, kimsenin ondan bilgimiz dışında yapmasını istemediği.

Geçişten hemen sonra muhasebecilerim bana 1C: Accounting 3.0'ın yeni versiyonunun öncekilere kıyasla açıkçası yavaşladığını söyledi! Ve çalışmak imkansız.

Bunu çözmeye başladım ve çok geçmeden, donmaların ve bunu takip eden kullanıcıların memnuniyetsizliğinin ana nedeninin, muhasebecilerin büyük çoğunluğu için buna gerek olmamasına rağmen, çoğu varsayılan olarak etkinleştirilen planlanmış ve arka plan işleri olduğunu öğrendim. onlara.

Örneğin, veritabanımızdaki tüm nesneler arasında tam metin (muhasebeciler, alarma geçmeyin) araması yapmıyorsak neden günde yüz kez "Metin çıkar" görevini çalıştırmamız gerekiyor.

Veya döviz işlemleri yapmıyorsak veya ara sıra yapıyorsak neden döviz kurlarını sürekli indirelim (ve ondan önce indirme oranları düğmesini kendimiz tıklayabiliriz).

Aynısı, 1C'nin siteye bağlanmak ve banka sınıflandırıcılarını kontrol etmek ve güncellemek için sürekli girişimleri için de geçerlidir. Ne için? BIC ile gerekli bankayı bulamazsam, sınıflandırıcıları güncellemek için düğmeye kendim basacağım.

Aşağıdaki noktalara göre nasıl yapılır.

1. "Yönetim" bölümüne gidin ve işlem çubuğundaki () "Bakım" öğesini seçin:

2. Açılan pencerede "Zamanlanmış ve arka plan görevleri" öğesini bulun ve seçin:

3. "Açık" sütunu olan her işi açın. bir karga var.

4. Etkin onay kutusunun işaretini kaldırın ve Kaydet ve Kapat düğmesini tıklayın.

5. Bunu, dahil edilen görevlerin her biriyle yapın ve yeni sürümün keyfini çıkarın. Genel olarak, bence, ikiden çok daha iyi.

Aynı zamanda, platform yine de devre dışı bıraktığınız bazı zamanlanmış görevleri açar.

1C'de çalışırken, belirli bir eylemi gerçekleştirerek bir programda başlatılması veya oluşturulması gereken birçok rutin işlem vardır, örneğin: belgeleri tutmak veya siteden 1C'ye veri indirmek.

Geçenlerde bir makale yayınladım: Bunu otomatikleştirmenin zamanı geldi:

Zamanlanmış ve arka plan işleri

İş motoru, bazı uygulamaları veya işlevleri bir zamanlamaya göre veya zaman uyumsuz olarak yürütmek üzere tasarlanmıştır.

Görev mekanizması aşağıdaki görevleri çözer:

  • Sistem konfigürasyonu aşamasında rutin prosedürleri tanımlayabilme;
  • Belirtilen eylemlerin programa göre yürütülmesi;
  • Belirli bir prosedüre veya işleve yapılan bir çağrının yürütülmesi eşzamansızdır, yani. tamamlanmasını beklemeden;
  • Belirli bir görevin ilerlemesini izleme ve tamamlama durumunu alma (tamamlanmanın başarısını veya başarısızlığını gösteren bir değer);
  • Mevcut görevlerin bir listesini almak;
  • Bir veya daha fazla görevin tamamlanmasını bekleme yeteneği;
  • İş yönetimi (iptal, yürütmenin engellenmesi vb.).

İş motoru aşağıdaki bileşenlerden oluşur:

  • Zamanlanmış görevlerin meta verileri;
  • Rutin görevler;
  • Arka plan işleri;
  • Görev Zamanlayıcısı.

Arka plan işleri & uygulama görevlerini eşzamansız olarak çalıştırmak için tasarlanmıştır. Arka plan işleri, yerleşik dil kullanılarak uygulanır.

Zamanlanmış görevler ve uygulama görevlerini bir zamanlamaya göre gerçekleştirmek için tasarlanmıştır. Zamanlanmış görevler bilgi tabanında depolanır ve konfigürasyonda tanımlanan meta verilere dayalı olarak oluşturulur. Zamanlanmış iş meta verileri, ad, yöntem, kullanım vb. bilgileri içerir.

Zamanlanmış bir iş, zamanlanmış işle ilişkili yöntemin hangi zaman noktalarında yürütülmesi gerektiğini tanımlayan bir zamanlamaya sahiptir. Zamanlama, kural olarak bilgi tabanında belirtilir, ancak yapılandırma aşamasında da belirtilebilir (örneğin, önceden tanımlanmış zamanlanmış görevler için).

Görev zamanlayıcı, zamanlanmış görevlerin yürütülmesini zamanlamak için kullanılır. Zamanlanmış her görev için, zamanlayıcı, geçerli tarih ve saatin zamanlanan görevin zamanlamasında olup olmadığını düzenli olarak kontrol eder. Eğer öyleyse, zamanlayıcı yürütülecek böyle bir görevi atar. Bunu yapmak için, bu zamanlanmış görev için zamanlayıcı, gerçek işlemeyi gerçekleştiren bir arka plan görevi oluşturur.

Bir açıklama ile bu kadarının yeterli olduğunu düşünüyorum - hadi uygulamaya geçelim:

Zamanlanmış bir iş oluşturma

Yöntem adı- belirtilen programa göre arka plan işinde yürütülecek prosedürün yolu. Prosedür ortak bir modülde olmalıdır. Tipik ortak modülleri kullanmamanız, kendi modüllerinizi oluşturmanız önerilir. Arka plan işlerinin sunucuda çalıştığını unutmayın!

kullanım- zamanlanmış bir görev kullanmanın bir işareti.

önceden belirlenmiş- zamanlanan işin önceden tanımlı olup olmadığını gösterir.

Rutin görevin veritabanına yerleştirildikten hemen sonra çalışmasını istiyorsanız, işaretini belirtin. önceden belirlenmiş... Aksi takdirde, "İş Konsolu" işlemeyi kullanmanız veya işin başlangıcını programlı olarak çağırmanız gerekir.

Görevin anormal tamamlanması durumunda yeniden deneme sayısı- bir hatayla tamamlandıysa arka plan işinin kaç kez yeniden başlatıldığı.

Anormal iş sonlandırma için yeniden deneme aralığı- bir hatayla yürütülürse arka plan işinin ne sıklıkta yeniden başlatılacağı.

Kurulum zamanlaması

Takvim görevi tamamlamak:

Her saat, sadece bir günRepeatDays Periyodu = 0, RepeatPeriodGün İçinde = 3600
Her gün, günde bir kezRepeatPeriodDays = 1, RepeatPeriodOverDay = 0
Bir gün, bir kezTekrar Günleri Dönem = 0
Her gün, günde bir kezDönem Günlerini Tekrar Et = 2
Her gün 01.00 - 07.00 arası her saatDayRepeatPeriod = 1RepeatPeriodGündüz = 3600Başlangıç ​​Zamanı = 01.00

Bitiş Saati = 07.00

Her Cumartesi ve Pazar 09.00'daRepeatDays Periyodu = 1DaysWeeks = 6, 7Başlangıç ​​Saati = 09.00
Her gün bir hafta, hafta geçerRecurrence PeriodDays = 1PeriodWeeks = 2
01.00'de bir kezBaşlangıç ​​Saati = 01.00
Her ayın son günü saat 9:00'da.RepeatDays Periyodu = 1DayInMonth = -1Başlangıç ​​Saati = 09.00
Her ayın beşi saat 9:00'daRepeatDays Periyodu = 1DayInMonth = 5Başlangıç ​​Saati = 09.00
Her ayın ikinci çarşambası saat 9:00'daTekrarlama PeriodDays = 1DayWeekInMonth = 2DaysWeeks = 3

Başlangıç ​​Saati = 09.00

Dosya ve istemci-sunucu sürümlerinde arka plan işlerini yürütmenin özellikleri

Dosya ve istemci-sunucu sürümlerinde arka plan işlerini yürütme mekanizmaları farklıdır.

dosya sürümünde arka plan işlerini halledecek özel bir istemci süreci oluşturmanız gerekir. Bunu yapmak için, istemci işlemi düzenli aralıklarla ExecuteJobProcessing genel bağlam işlevini çağırmalıdır. Bilgi bankası başına yalnızca bir istemci işlemi arka plan işlerini işlemelidir (ve dolayısıyla bu işlevi çağırmalıdır). Arka plan işlerini işlemek için istemci işlemi oluşturulmazsa, iş motoruna programlı olarak erişirken "İş yöneticisi etkin değil" hatası görüntülenir. Arka plan işlerini işleyen istemci işleminin diğer işlevler için kullanılması önerilmez.

Arka planda iş işlemeyi gerçekleştiren istemci süreci başladıktan sonra, istemci süreçlerinin geri kalanı, arka plan işi motoruna programlı olarak erişebilir, yani. arka plan işlerini çalıştırabilir ve yönetebilir.

İstemci-sunucu sürümünde arka plan görevlerini yürütmek için, fiziksel olarak küme yöneticisinde bulunan görev zamanlayıcı kullanılır. Kuyruğa alınmış tüm arka plan işleri için zamanlayıcı, en az meşgul olan iş akışını alır ve bunu karşılık gelen arka plan işini yürütmek için kullanır. Çalışan süreç işi çalıştırır ve yürütmenin sonuçlarını planlayıcıya bildirir.

İstemci-sunucu sürümünde, zamanlanmış görevlerin yürütülmesini engellemek mümkündür. Zamanlanmış görevlerin yürütülmesinin engellenmesi aşağıdaki durumlarda gerçekleşir:

  • Bilgi tabanına planlanmış işlerin açık bir şekilde engellenmesi yüklenir. Kilit, küme konsolu aracılığıyla ayarlanabilir;
  • Bilgi tabanına bir bağlantı engelleme kurulur. Kilit, küme konsolu aracılığıyla ayarlanabilir;
  • SetExclusiveMode() yöntemi, True parametresiyle gömülü dilden çağrıldı;
  • Diğer bazı durumlarda (örneğin, veritabanı yapılandırmasını güncellerken).

Zamanlanmış işlerin başlatılması ve görüntülenmesinin işlenmesi buradan indirebilirsiniz.

Sistemde herhangi bir hesaplamayı kullanıcı fark etmeden yani arka planda yapmamızı sağlar. Ayrıca, bu mekanizma hesaplama sürecini paralel hale getirmemizi sağlar. Hatta uygulanacak prosedürü paralel hale getirebiliriz. Bunu yapmak için arka plan işimizin birkaç arka plan işi daha çalıştırması gerekiyor. Bu durumda süreçler paralelleştirilir ve çok işlemcili, çok çekirdekli bir sistemimiz varsa, algoritmamız verimli bir şekilde çalışacaktır. Birkaç işlem başlattıktan sonra, sonucu bir şekilde azaltmak için bu işlemlerin tamamlanmasını beklemenin gerekli olduğunu sisteme söyleyebiliriz.

Örneğin, tipik yapılandırmalarda, kullanıcı çalışırken çeşitli türde hizmet arka plan işleri gerçekleştirilir. Bu, bu tür eylemlerin gerçeğini kaydeden kayıt günlüğünün kayıtları ile kanıtlanabilir. Üstelik bu, kullanıcının çalışmasını hiçbir şekilde etkilemez, sadece onları fark etmez.

İdeal olarak, bir istemci-sunucu sürümünde bir arka plan işi uygulanır, bu durumda tüm yük sunucuya gider. Dosya seçeneğine gelince, arka plan işi mümkündür, ancak bazı özellikleri vardır.

Bu özellikleri dikkate almazsanız ve bilgi tabanının dosya sürümünde bir arka plan görevi başlatırsanız, sistemin vereceği şey budur.


1C arka plan işinin bazı sınırlamaları vardır. Sunucu tarafında çalıştığı için etkileşimli bir kullanıcı deneyimi yoktur. Örneğin, bir mesajı veya herhangi bir bilgiyi görüntüleyemezsiniz. Tüm bu veriler bilgi tabanında saklanmalı ve bir şekilde daha fazla işlenmelidir.
Sözdizimi asistanı ile iletişime geçerek 1C arka plan işleri hakkında daha detaylı bilgi alabilirsiniz. Burada bu nesnenin tamamen programlı olduğu ve hiçbir şekilde veritabanında saklanmadığı belirtilmelidir. Yani sınıfın bir örneğini oluşturuyoruz, özellikleri başlatıyoruz ve yürütme için başlatıyoruz.

Arka plan işlerini yönetmek için hangi araçlara sahibiz? Bu tesis bir meta veri nesnesidir "Arka Plan Yöneticisi"... Bu nesnenin bir yöntemi var "Çalıştırmak", bu yöntemle arka plan işi başlatılır.

Aşağıdaki parametrelere sahiptir:
"Yöntem Adı"- yürütülecek prosedürün veya işlevin adı ve sunucu bağlamının bir prosedürü veya işlevi olmalıdır;

"Parametreler"- öğelerin sayısı, parametrede belirtilen prosedürümüzün / işlevimizin parametre sayısına karşılık gelmesi gereken bir parametre dizisi "Yöntem Adı";

"Anahtar"- sistemin bir arka plan görevi başlatmanın gerekli olup olmadığını veya böyle bir görevin zaten başlatılıp başlatılmadığını anladığı bir satır olan belirli bir benzersizlik anahtarı;

"İsim"- burada yöntemimizin keyfi bir açıklamasını belirtebilirsiniz.

Dönüş değeri bir nesnedir "Arka Plan İşi" yöntemin geçerli adını, geçerli anahtarı ve birkaç özellik ve yöntemi daha içerir. Bu yöntemlerden biri yöntem "BekleTamamlanma"... Amacı, sisteme arka plan işi tamamlanana kadar hiçbir şey yapmamasını söyleyebilmemizdir.

Arka plan görevi 1C 8.2, 8.3 - Kullanım örneği

1C arka plan işleriyle çalışmaya bir örnek verelim. Öncelikle 1C sistemini şu anda hiçbir şey yapamayacağımız şekilde kısaca yükleyecek basit bir algoritma oluşturacağız.

Bunun için:

1. Ortak bir modül oluşturalım "Arka Plan İş İşleyicileri" sunucu tarafında derlenecek olan;


2. İçindeki ihracat prosedürünü anlatalım. "Arka Plan Hesabını Gerçekleştir (Parametre)" bir dize türünden bir parametre alan;

Prosedür PerformBackgroundHesaplama (Parametre) ExportStartTime = CurrentDate (); CurrentDate () - TimeStart iken< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление("Bazı parametreler"); Prosedürün Sonu
Hazır. Şimdi, işlemeye başladığınızda ve düğmeye bastığınızda, sistem birkaç saniye donar ve bu sırada hiçbir şey yapılamaz. Bu tam olarak yapmamız gereken şeydi.

Şimdi bu hesaplamaların arka planda yapılmasını sağlayacağız yani arka plan görevi 1C 8.2, 8.3 gerçekleştirilir, ancak bu bizi rahatsız etmez.

Bunun için:

1. İşlemde butona basılması durumunda aşağıdaki kodu yazınız.

Prosedür KnNazenie () Parametreler = Yeni Dizi; Parametreler. Ekle( "Bazı parametreler"); Arka Plan İşi. Uygulamak ( "BackgroundJob Handlers.Produce andBackgroundComputing", Parametreler, Yeni UniqueIdentifier, "Ölçek"); Prosedürün Sonu

Burada, ilk parametre olarak, genel modül prosedürünün adını ve ikinci - bir dizi parametreyi geçiyoruz. Üçüncü parametre benzersiz bir anahtardır ve dördüncüsü prosedürümüzün bir açıklamasıdır.

Yazının başlığına koymuş olduğumuz soru bu ürünle çalışan birçok sistem yöneticisini ilgilendirmektedir. Mümkün olduğunca, 1C'nin performansını etkileyen parametreler hakkında konuşmaya ve popüler mitleri çürütmeye çalışıyoruz. Bugün, yakın geçmişten bir örnek kullanarak, verimliliği ciddi şekilde etkileyebilecek başka bir konudan bahsetmek istiyoruz - planlanmış işler.

Gerçek bir vakayla başlayalım. Çok uzun zaman önce, müşterilerimizden biri, çalışanlarından birinin 1C "frenler" ile ilgili şikayeti ile bizimle iletişime geçti. Belirtiler, belirli bir süre sonra Trade Management 10 konfigürasyonunun büyük ölçüde yavaşlamaya başladığı veya daha basit bir şekilde bir süre askıda kaldığı gerçeğinde ifade edildi.

Durumun daha ayrıntılı bir analiziyle, bunun sadece bir çalışan için olduğu ve herhangi bir işyerinde uzun süredir gerçekleştiği ortaya çıktı, ancak "frenler" bir saniye kadar sürdüyse, şimdi, sonra güncelleme, 15-20 saniyeye kadar sürebilir, bu da işi son derece rahatsız eder.

Prensip olarak, ilk veriler, ilk sonuçları çıkarmak için zaten yeterlidir. Onlara bir kez daha verelim:

  • "Frenler" belirli bir sıklıkta sürekli olarak meydana gelir
  • Yalnızca bir kullanıcı "yavaşlar"
  • Herhangi bir işyerinde "yavaşlar"

Tahminlerimizi doğrulamak için şuna bir göz atalım: Muhasebe parametre ayarları:

Gerçekten de, "sorunlu" kullanıcı, rutin görevleri gerçekleştirecek bir kullanıcı olarak listelenir. Görünüşe göre, bir zamanlar, bu kullanıcı adına bir RIB otomatik değişim görevi çalışıyordu. Epizodik "engellemenin" nedeninin tam olarak ne olduğunu görmek için kalır. Bunu yapmak da kolaydır:

Ve işte "günün kahramanı" - her 2,5 dakikada bir başlatılan tam metin arama dizinini güncelleme görevi. Bu durumda, bu kullanıcı altında zamanlanmış işlerin yürütülmesini devre dışı bırakarak sorun tamamen çözüldü, ancak bu her zaman mümkün veya tavsiye edilmez, bu nedenle aşağıda zamanlanmış işleri nasıl yönetebileceğinizi ve bunların yapılmamasını nasıl sağlayacağınızı ele alacağız. performans üzerinde olumsuz bir etkisi vardır.

Düzenli uygulama

Normal bir uygulamaya dayalı konfigürasyonlarda, zamanlanmış işleri yönetmek için tek bir araç takımı yoktur. Bu, büyük ölçüde, ilk gelişimleri sırasında, zamanlanmış görevler kavramının oldukça zayıf bir şekilde geliştirilmiş olmasından kaynaklanmaktadır.

Birçok zamanlanmış iş, ilişkili alt sistemlerin konfigürasyonu aracılığıyla yönetilir. Örneğin, veri alışverişi ile ilgili zamanlanmış görevlerin ayarları, alkol ticareti vb. ayarlarında EGAIS ile ilgili değişim ayarlarında bulunmalıdır.

İlk bakışta, her şey oldukça mantıklı, ancak tek bir aracın olmaması, yapılandırılmış zamanlanmış görevleri ve bunlar için en uygun ayarları kontrol etmeyi zorlaştırıyor. Bir veya iki görev varsa ve bunlardan daha fazlası varsa veya bizim durumumuzda olduğu gibi, zamanlanmış görevlerden herhangi birinin şüphesi varsa iyidir, ancak bu veritabanında kimin ve neyin kurulduğu hakkında hiçbir fikriniz yok. .

Bu durumda, harici işleme kullanmalısınız İş Konsolu (İşlerKonsol), ITS diskindeki standart tedaviler grubuna dahil edilmiştir. İşleme, tüm işler için tek bir arayüz sağlar ve o anda yürütülen işleri kontrol etmenin yanı sıra, bunların merkezi olarak yapılandırılmasına olanak tanır.

Bu liste dikkatle incelenmeli, tüm gereksiz işler kapatılmalı, gerekli olanlar acil ihtiyaçlar ve sağduyu ile uyumlu hale getirilmelidir. Örneğin, bizim durumumuzda, EGAIS yanıtlarını her 30 saniyede bir işlemeye gerek yoktur (bu ayar test için yapılmıştır) ve çalışma modunda bunu yarım saatte bir yapmak yeterli olacaktır.

Yönetilen uygulama

Yönetilen bir uygulamaya dayalı konfigürasyonlarda, zamanlanmış görevlere daha önemli bir rol atanır, bilgi tabanını korumak ve güncel tutmak için çeşitli görevleri gerçekleştirmek için kullanılabilirler, ancak aynı zamanda, en sık neden olan zamanlanmış görevlerdir. "frenler".

Rutin görevleri yönetmek için menüde bir otel öğesi var. Yönetim - Destek ve Servis.

Görev sayısının önemli ölçüde arttığı hemen belirtilebilir (örneğin, aynı konfigürasyonu aldık - Perakende) ve yetkin ayarları bilgi tabanının performansını önemli ölçüde artırabilir. Varsayılan ayarlar, vakumda ortalama bir küresel firmanın ihtiyaçlarına göre 1C tarafından yapılır ve optimuma yakın bile değildir.

Her şeyden önce, çalışmadığınız açıkça gereksiz olanı kapatıyoruz. Ardından, nadiren kullanılan işlevlerin zamanlamasını optimize ediyoruz, örneğin, Perakende'deki bankaların sınıflandırıcısını güncelleme ve karşı tarafları kontrol etme, haftada bir kez çalışma saatleri dışında veya bir çalışma gününün sonunda (başlangıçta) gerçekleştirilebilir.

Arama dizini ile ilgili her şeye özel dikkat gösterilmelidir. Tam metin araması kesinlikle uygun bir şeydir, ancak dizini ile çalışmak çok, çok kaynak yoğun bir iştir. Bu nedenle aşırıya kaçmamalı ve onu terk etmemelisiniz, ancak parametrelerini ciddi şekilde gözden geçirmeli ve ayarlamalısınız.

İle başlayalım metin ayıkla, bu işlem ekli dosyaların içeriğine göre arama yapmanızı sağlar, bu nedenle bunları kullanmazsanız, arama yapmazsanız veya orada yalnızca resimleriniz varsa, bu işlem devre dışı bırakılabilir, her durumda olabilir. her 85 saniyede bir gerçekleştirilir - bariz bir fazlalık.

RPM endeksini güncelleme- en kaynak yoğun işlemlerden biri, varsayılan olarak dakikada bir gerçekleştirilir.

Şimdi en sık aradığınız bilgilerin veri tabanına ne sıklıkla eklendiğini veya güncellendiğini bir düşünelim. Açıkçası her dakika değil, bu nedenle dizini çok daha az sıklıkta güncellemek yeterli olacaktır: saatte bir, günde bir veya hatta haftada bir.

Aynısı için de geçerlidir PPD endeksinin birleşmesi Dizini günde bir kez güncellerseniz, görevin başlangıcı olarak en az müdahale eden zamanı seçerken birleştirmeyi haftada bir çalışacak şekilde yapılandırmanız gerekir.

Bu basit işlemler, konfigürasyonun işlevselliğine fazla zarar vermeden, oldukça kaynak yoğun işlemlerin sık yürütülmesini reddederek, onunla çalışma konforunu yeni bir düzeye çıkarmanıza izin verecektir. Sadece aşırı uçlara gitmeyin, belirli fırsatlara ne kadar ihtiyacınız olduğunu ve bunlarla ilgili görevleri ne sıklıkta gerçekleştirmeniz gerektiğini doğru bir şekilde değerlendirin.

  • Etiketler:

görüntülemek için lütfen JavaScript'i etkinleştirin.