Menü
Bedava
kayıt
ev  /  Kurulum ve konfigürasyon/ Rutin ve arka plan işleri (1Cv8). Arka planda iş süreci sonlandırıldı Anormal şekilde arka planda iş süreci sonlandırıldı 8.3

Rutin ve arka plan işleri (1Cv8). Arka planda iş süreci sonlandırıldı Anormal şekilde arka planda iş süreci sonlandırıldı 8.3

Bu makalede, evrensel EnterpriseData formatı aracılığıyla veri alışverişini organize etme konusundaki şimdiye kadarki küçük deneyimimi anlatacağım.

Benim durumumda, değişim "Ticaret Yönetimi 11.2" (bundan böyle UT olarak anılacaktır) ve "Kurumsal Muhasebe 3.0.43" (bundan sonra BP olarak anılacaktır) konfigürasyonları arasında yapılandırılmıştır. Değişim, UT'den BP'ye tek yönlüdür. Ticaret Yönetimi 11.1'den 11.2 sürümüne yükseltmeden önce, veri alışverişi, Veri Dönüştürme 2.0 yapılandırması kullanılarak yapılandırıldı. Ancak, "Ticaret Yönetimi"nde "11.2"ye geçtikten sonra, kullanıcıların çalışmasında hatalar ortaya çıktı. Değişim kurallarını güncelleme prosedürü gerçekleştirildi, ancak bu herhangi bir sonuç vermedi. Hata ayıklayıcı, sorunun iletişim olduğunu gösterdi. Her iki konfigürasyonda da iletişim ayarının kaldırılmasına ve yeniden kurulmasına karar verildi.

Hem "Ticaret Yönetimi" hem de "Kurumsal Muhasebe", müşteri-sunucu sürümünde bizim için çalışır. UT ile senkronizasyonu kurmaya başladım. Veriler UT'den bir dosyaya boşaltılacak şekilde yürüttüm. Yani, bir ağ dizini aracılığıyla senkronizasyon. Güç kaynağı ünitesinde, güç kaynağı ünitesinden hiçbir veri boşaltılmayacak şekilde santrali kurdum.

Bağlam yöntemi çağrılırken bir hata oluştu (Kontrol): XDTO verileri kontrol edilirken hata oluştu:
"/ Karşı Tarafın Banka Hesabı / Bankası" nesnesinin yapısı şu türe uymuyor: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)
"BIC" özelliğinin kontrol edilmesi:
Şekil: Eleman
ad: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1) BIC
bir çeşit:
Gerekli özellik eksik
Konu: Karşı taraf No. ... ile sözleşme

Hatayı analiz etmek için "Gönderilecek verilerin bileşimi" simgesine tıkladım ve sevkıyat için kayıtlı yükleniciler listesinde bir hatanın göründüğü bir anlaşma buldum. Bir sözleşme açtı, karşı tarafın sözleşmede belirtilen banka hesabını hatırladı. Daha sonra sevkiyat için kayıtlı banka hesaplarına gittim. Gerekli hesabın kayıtlı olanlar listesinde olmadığı ortaya çıktı. Sorunlu banka hesabını ve sözleşmeyi yeniden gönderdim. Bundan sonra, gerekli banka hesabını manuel olarak kaydettim.

UT'den verileri tekrar senkronize etmeye çalıştım. Bu sefer, veriler başarıyla kaldırıldı. UT'den BP'ye aktarım için verileri içeren ağ klasöründe bir XML dosyası oluşturuldu.

Sonraki adım, bir dosyadan Kurumsal Muhasebe Departmanına veri yüklemektir. "Kurumsal Muhasebe" konfigürasyonunda "Senkronize Et" butonuna bastım, "Veri analizi devam ediyor" mesajlı bir işlem formu açıldı. Biraz sonra, mesaj "Verileri boşaltıyor" olarak değişti. Aynı zamanda, gösterge ve sayaç, güç kaynağı ünitesinden 80 binden fazla nesnenin boşaltıldığını gösterdi. Bu beni şaşırttı, çünkü ayarlarda güç kaynağı ünitesinden hiçbir şeyin boşaltılmaması gerektiğini belirttim. İşlem uzun sürdü ve bir hatayla sonuçlandı:

Etkinlik: Veri Değişimi
(SharedModule.LongedOperations.Module (371): Arka planda iş akışı anormal şekilde sonlandırıldı
CallException (ErrorText);

Hatayı yerelleştirmek için BP tabanının senkronizasyon ayarlarını ve çalışma seçeneklerini değiştirmeye çalıştım. Sonuç olarak, veritabanını dosya sürümüne geçirdiğimde sistem yeterince çalıştı: iki veritabanını karşılaştırmak için bir form açıldı. Nesneler eşlendikten sonra ilk eşitleme başarılı oldu. Sonra veritabanını tekrar istemci-sunucu sürümüne geçirdim.

Senkronizasyonun daha sonraki "çalışması" sırasında, nesneleri dönüştürmek için kurallarda bazı değişiklikler yapmak gerekliydi. Şimdi Data Conversion 3.0 yapılandırmasını kullanma zamanı. Çevrimiçi yapılandırma yardımı, nasıl çalışılacağını açıklar. ITS web sitesindeki makaleler de yardımcı oldu.

Sonuç olarak, aşağıdaki verileri "Data Conversion 3.0"a yükledim:

  • İki temelden "DataExchangeManagerViaUniversalFormat" ortak modülünün metinleri
  • Her iki tabanın şeması
  • EnterpriseData formatının açıklaması (herhangi bir veritabanından)
  • Dönüşüm kuralları

Yüklemeden sonra "Data Conversion 3.0" da verileri, nesneleri, özellikleri dönüştürmek için kuralları açtım. İhtiyacım olan düzenlemeleri yaptım. Sonra "Değişim yöneticisi modülünü kaldır" düğmesini kullandım. Modül metni panoya kopyalandı. Sadece konfigürasyona eklemek için kalır.

"Data Conversion 3.0" da kuralları ayarlamayı denedikten sonra, yapılan değişikliklerin önemsiz olması durumunda, "DataExchange" genel modülünde kuralları doğrudan UT ve BP yapılandırmalarında ayarlamanın daha kolay olduğu sonucuna vardım. YöneticiVia UniversalFormat". Düzenlemeler, örneğin borsaya yeni bir nesne eklemek gibi ciddiyse, yapılandırmayı kullanmalısınız " Veri Dönüştürme 3.0 ".

"Tedarikçiye sipariş" belgesini değişim planına ekleme görevini "kullanarak gerçekleştirdim. Veri dönüştürme 3.0 ". UT - BP'nin standart versiyonunda bu belge değişim planında yer almamaktadır.

Kaldırma için nesneleri kaydetme kurallarının hala "Veri Dönüştürme 2.0" yapılandırmasında yapılandırıldığını unutmayın.

Bunlar, evrensel EnterpriseData formatı aracılığıyla veri senkronizasyonunun ilk izlenimleridir.

not Evrensel Biçim ve Yapılandırma yoluyla veri alışverişi hakkında sorularınız ve kendi gözlemleriniz varsa " Data Conversion 3.0 ", yorumlara yazın. Deneyim alışverişinde bulunacağız.

  • Veri senkronizasyonu
  • Genel Kurumsal Veri Biçimi
  • Veri Dönüştürme 3.0
  • Veri Dönüştürme 2.0
  • ticaret yönetimi
  • kurumsal muhasebe

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üğündeki girişlerle kanıtlanabilir. Üstelik bu, kullanıcının çalışmasını hiçbir şekilde etkilemez, sadece onları fark etmez.

İdeal olarak, arka plan işi istemci-sunucu sürümünde 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 yardımcısı ile iletişime geçerek 1C arka plan işleri hakkında daha detaylı bilgi alabilirsiniz. Burada bunun tamamen programlı bir nesne olduğu ve veri tabanında hiçbir şekilde saklanmadığı belirtilmelidir. Yani sınıfın bir örneğini yaratırız, özellikleri başlatır ve yürütme için başlatırız.

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;

"Seçenekler"- öğ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 "Tamamlanmayı Bekleyin"... 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. Genel 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)" hangi bir dize türünden bir parametre alır;

Prosedür ProduceBackgroundHesaplama (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; Seçenekler. Ekle( "Bazı parametreler"); Arka Plan İşi. Uygulamak ( "BackgroundJob Handlers.Produce andBackgroundCompute", Parametreler, Yeni UniqueIdentifier, "Ölçek"); Prosedürün Sonu

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

Sorun yeni değil ve zaman zaman her türlü 1C forumunda tartışılıyor. En basit ve en popüler çözüm, 1C sunucusunu yeniden başlatmaktır. Ne yazık ki, bu seçenek her zaman kabul edilebilir veya çok istenmeyen bir durum değildir. Böyle bir durumda daha hassas çözümler vardır.

Buraya kısa bir adım adım talimat şeklinde bu yöntemlerden biri:

1. 1C sunucu yönetim konsolunu kullanarak sorunlu bir dosya arıyoruzbağlantı listesindeki yeni bir görev (örneğin, görev konsolundaki zamanlanmış bir görevin başlangıç ​​zamanı ile karşılaştırıldığında, çalışmasının başlangıç ​​saatine göre). biz tanımlarızasılı bağlantıyı içeren iş akışı.

2. Bu işlemin özelliklerini açın ve kullanılmadı olarak işaretleyin (yalnızca bir işlem kullanılıyorsa, tüm etkin bağlantıların yeniden bağlanması için önce yeni bir iş akışı oluşturmanız gerekir). Bu işlemin PID numarasını hatırlıyoruz.


3. Mevcut tüm bağlantıların, bağlantısı kesilmiş süreçten kullanılmış olanlardan birine geçmesini bekliyoruz. Sonuç olarak, sürecimizde sadece kaldırmak istediğimiz sorunlu bağlantılar kalmalıdır.

4. 1C sunucusunun bulunduğu bilgisayarda, görev yöneticisini kullanarak, devre dışı bırakılan işçi işleminin PID'si ile ilgili rphost.exe işlemini arar ve sileriz.

5 ... Her ihtimale karşı, yönetici gönderisiyle devre dışı bıraktığımız 1C iş akışını silebilirsiniz. konsol ve gerekirse yeni bir tane oluşturun.

6... Hazır. İş konsoluna girebilir ve planlanan işin performansını kontrol edebilirsiniz.

Asenkron programlama konsepti

Asenkron programlama kavramı, fonksiyon yürütme sonucunun hemen değil, bir süre sonra bazı asenkron (olağan yürütme sırasını bozan) çağrı şeklinde mevcut olmasıdır.

Onlar. Asenkron programlamanın ana fikri, ayrı metot çağrıları çalıştırmak ve çağrıların bitmesini beklemeden diğer işleri paralel olarak yapmaya devam etmektir.

İstisnaların en aza indirildiği bazı yöntemler, asenkron bir yaklaşıma ihtiyaç duymaz, ancak diğerleri geliştirmenin en başında bunu gerektirir.

Grafiklerden de görülebileceği gibi, senkron programlama modelinde sistem kullanıcı arayüzünü bloke ettiğinden faydalı etkileşimli kullanıcı eylemlerinin katsayısı yoktur, asenkron modelde ise kullanıcı sistemde aktif olarak çalışmaya devam eder.

Eşzamanlı olarak çalışırken, uygulama yalnızca bir iş parçacığına sahiptir. Eşzamansız programlama modeliyle, birçok eşzamanlı iş parçacığı başlatabilir ve çalışırken yeni kullanıcı eylemlerine tepki verebilirsiniz. n-thread işlemi tamamlandıktan sonra sonucu ekrana görüntülersiniz.

"1C: Enterprise 8" de arka plan görevleri

1C: Enterprise 8'de arka plan işleri, uygulanan görevleri eşzamansız olarak gerçekleştirmek için tasarlanmıştır. Örneğin, kümenin farklı çalışan sunucuları arasındaki karmaşık hesaplamaları istemci-sunucu tarzında paralel hale getirmek için alt arka plan işlerini oluşturabilirler.

Aynı yöntemlere sahip arka plan işlerinin yürütülmesini belirli bir uygulama kriterine göre kısıtlamak mümkündür. Arka plan işlerinin programlı oluşturulması ve yönetimi, sistem bilgi tabanına herhangi bir kullanıcı bağlantısından mümkündür. Arka plan işi, onu oluşturan kullanıcı adına çalışır.

Görev mekanizması hem istemci-sunucuda hem de dosya işletim modunda çalışır, ancak her iki seçenekte de görevlerin yönetimi ve yürütülmesi için olasılıklar biraz farklıdır.

İstemci-sunucu seçeneği

İstemci-sunucu sürümünde, görev zamanlaması, fiziksel olarak küme yöneticisinde bulunan görev zamanlayıcı tarafından gerçekleştirilir.

Zamanlayıcı, arka plan işleri için herhangi bir istek olup olmadığını periyodik olarak kontrol eder. Gerçekleştirilecek görevler varsa, zamanlayıcı en az yüklenen küme çalışan işlemlerini tanımlar ve bunların her birine yürütülecek kendi görevini sırayla atar. Böylece, aynı iş akışı potansiyel olarak birden çok işi paralel olarak çalıştırabilir. Görev iş akışı tarafından alındıktan sonra, iş akışı bilgi tabanına bir bağlantı kurar ve görevi bu bağlantı içinde yürütür. İş tamamlandıktan sonra, iş akışı planlayıcıya işin başarısını veya başarısızlığını bildirir.

Dosya seçeneği

Platformun 8.3.3.641 sürümünden başlayarak, geliştiriciler dosya sürümündeki arka plan işleriyle çalışmayı büyük ölçüde basitleştirdi.

Önceden, görevlerin otomatik olarak yürütülmesi, görev zamanlayıcı olarak kullanılan ayrı, ek bir 1C: Enterprise oturumunun başlatılmasını gerektiriyordu. Ve bu oturumda, gömülü dil yöntemini periyodik olarak yürütmek gerekliydi. ExecuteJobProcessing (). Bu yaklaşım oldukça hantaldı, elverişsizdi ve dosya işletim modunda arka plan ve zamanlanmış işlerin kullanımını ciddi şekilde sınırladı.

Şimdi her şey çok daha kolay hale geldi. İnce veya kalın bir istemci başlatılırsa veya web sunucusunun istemci bağlantıları varsa, bu uygulamaların her birinde, veritabanına bağlantıyla otomatik olarak başka bir iş parçacığı başlatılır. Bu iş parçacıkları, arka plan ve zamanlanmış işleri gerçekleştirmekten sorumludur.

Listelenen uygulamaların her birinin kendi arka plan işleri vardır. Uygulama birkaç arka plan işi başlattıysa, bunlar alındıkları sırayla sırayla yürütülür.

1C arka plan işlerinin bariz bir dezavantajı: sunucu tarafında yürütüldükleri için kullanıcı ile etkileşimli çalışma imkanı yoktur (örneğin, bir mesaj veya başka herhangi bir bilgi görüntüleyemezsiniz; tüm bu veriler bilgi tabanında saklanmalı ve bir şekilde daha fazla işlenmelidir) .

Arka plan işlerinin tamamen programlı nesneler olduğu ve veritabanına kaydedilemeyeceği unutulmamalıdır. Yani sınıfın yalnızca bir örneğini oluşturabilir, özelliklerini başlatabilir ve yürütme için başlatabiliriz.

1C'de eşzamansız kod yürütme örneği: Enterprise 8

“Bir fonksiyon çağrısının sonucunun bilinmeyen bir tarihte geldiği programları yazmak normalden çok daha zor. İç içe çağrılar, hata işleme, neler olup bittiği üzerinde kontrol - her şey daha karmaşık hale geliyor ”- bunu yalnızca platformun yeteneklerini doğru şekilde kullanmayı bilmeyenler söyleyecek, biz değil!

Eşzamansız kod yürütmenin tüm basitliğini ve zarafetini 1C: Enterprise 8'de gösterelim!

Aşama 1. Konfigürasyon geliştirme için yeni bir bilgi güvenliği oluşturalım

Adım 2. Konfigürasyonda, ortak bir "AsynchronousHandlers" modülü ekleyin.

Neden ortak bir modül ekledik? Burada her şey basit: "1C: Enterprise 8" de asenkron işlemleri gerçekleştirmek için, kendi yöneticileri olan "BackgroundJobs Manager" arka plan görevleri kullanılır. Bu nesne, arka plan işini başlatmak için kullanılan Run yöntemine sahiptir.

Sözdizimi yardımcısına dönelim.

Bu nedenle ortak bir modüle ihtiyacımız var.

Aşama 3."AysynchronousProcessors" genel modülünde OurLongedOperation () dışa aktarma prosedürünü ekleyeceğiz.

Prosedür OurLongedOperation (Süre) Dışa Aktarma // Sürekli çalışma simülasyonu (Süre sn.). OperationStartDate = CurrentDate (); CurrentDate () - İşlem Başlangıcı Tarihi iken< Длительность Цикл КонецЦикла; КонецПроцедуры

Adım 4."AsynchronousProgrammingConcept" işlemini konfigürasyona ekleyin (harici işleme oluşturabilirsiniz)

Forma bir sahne ekleyin:

Süre (Sayı)

ve iki takım

Uzun Bir İşlem Gerçekleştirin;

ExecuteLongOperationEşzamansız olarak.

Adım 5. Sözdizimi yardımcısına göre form modülünü doldurun

& İstemci Prosedüründe ExecuteLongOperation (Command) ExecuteLongOperationAtServer (); EndProcedure & OnServer Prosedürü ExecuteLongServerOperation () AsynchronousHandlers.OurLongOperation (Süre); EndProcedure & AtClient Prosedürü ExecuteLongOperationAsynchronously (Command) ExecuteLongOperationAsynchronouslyAtServer (); EndProcedure & AtServer Prosedürü ExecuteLongOperationAsynchronouslyOnServer () Parametreler = Yeni Dizi; Seçenekler.Ekle (Süre); BackgroundJobs.Run ("AsynchronousHandlers.OurLongOperation", Parameters, New UniqueIdentifier, "Bir asenkron programlama konsepti örneği"); Prosedürün Sonu

Adım 6. Fırlatalım ve kontrol edelim!

Sonuç:

"Uzun bir işlem yap" butonuna tıklarsak, kullanıcı arayüzü "Süre" saniyeliğine bloke olur;

"Uzun bir işlemi asenkron olarak yürüt" düğmesine tıklarsak, kullanıcı arayüzü bloke edilmez, ancak program kodu paralel olarak yürütülür.

Günlüğe bakarak program kodunun eşzamansız olarak yürütüldüğünü doğrulayabiliriz.

Hata ayıklama parametrelerinde ilgili özelliği ayarlarsak, "arka planda" yürütülen program kodunun hatalarını ayıklayabiliriz.

BSP kullanarak 1C: Enterprise 8'de eşzamansız kod yürütme örneği

BSP'de "1C: Enterprise 8" de eşzamansız programlama konseptinin uygulanmasına bir örnek, "Güncel işler" işleme örneğinde ele alınacaktır.

Mantık şu şekildedir: programın başlangıcında, "Güncel işler" işleme formunu görüntüleyebileceğiniz başlangıç ​​sayfasının çalışma alanı başlatılır. Bu form, kullanıcının güncel işleri ile doldurulur ve doldurulması zaman alır. Geliştiriciler, kodu eşzamansız olarak yürütme fırsatına sahip değilse, kullanıcı arabirimi, işlem formunu doldurma süresinin tamamı boyunca engellenir!

Formun program kodunu inceleyelim.

"OnCreateAtServer" formunun olayı "RunBackgroundJob" prosedürünü çağırır - ihtiyacımız olan şey bu.

Nüanslardan rahatsız olmadan, bu prosedürü analiz ediyoruz

Ve burada arka plan iş yöneticisinin ve onun Çalıştır yönteminin kullanıldığını görebiliriz. Geliştiricilerin arka plan işi için benzersiz bir kimlik tuttuğunu unutmayın.

Bunun için geliştiriciler yöntemi kullanır ConnectWaitingHandler (<ИмяПроцедуры>, <Интервал>, <Однократно>).



Takılabilir bir prosedürde Connectable_VerifyJobProcessing () geliştiriciler bir işlev çağırır İş Tamamlandı (İş Kimliği)


Bu işlev, tanımlayıcıya göre arka plan işinin yürütülmesini kontrol eder.

BSP'nin uzun vadeli sunucu işlemlerinin çalışmasını desteklemek için ortak modüller geliştirdiğini belirtmek gerekir.

Bu nedenle, 1C: Enterprise 8'deki eşzamansız programlama konsepti, geliştirici için problem çözme karmaşıklığını biraz arttırır, ancak programın işlevselliğini kullanıcı açısından belirgin şekilde iyileştirir.

Muhtemelen, 1C 8.3 veya 8.2'deki tek bir ciddi yapılandırma, planlanmış ve arka plan işleri kullanmadan yapamaz. Kullanıcı veya programcı müdahalesi olmadan açıkça tanımlanmış bir programa göre yürütülecekleri için çok uygundurlar.

Örneğin, günde bir kez başka bir programla veri alışverişi yapmanız gerekiyor. Zamanlanmış ve arka plan görevlerini kullanarak 1C, bu eylemleri örneğin mesai saatleri dışında kendi başına gerçekleştirebilecektir. Bu yöntem kullanıcı deneyimini hiçbir şekilde etkilemeyecek ve zamandan tasarruf etmenize yardımcı olacaktır.

İlk önce, ne anlama geldiklerini ve farklarının ne olduğunu anlayalım:

  • Rutin görevönceden yapılandırılmış bir programda herhangi bir belirli eylemi çalıştırmanıza olanak tanır.
  • Arka plan işi Gerçekleştirilecek eylemleri içeren bir nesnedir.

Diyelim ki firmamız bir şey satıyor ve fiyatların yer aldığı kendi web sitesine sahip. Alaka düzeylerini korumak için günde bir kez bunları boşaltmak istiyoruz.

Yapılandırmayı açın ve zamanlanmış bir iş ekleyin.

özellikleri ayarlama

Özelliklerinde doldurulması gereken en önemli parametreleri ele alalım.

  • alanında" Yöntem adı»Doğrudan yürütülecek olan belirli bir genel modülün prosedürü seçilir. Sitemize fiyat yüklemek için tüm işlemleri gösterecektir. Yürütmenin sunucuda gerçekleşeceğini unutmayın. Bu mantıklıdır, çünkü rutin işlemler kullanıcı müdahalesi olmadan gerçekleştirilir.
  • Zamanlanmış iş gerektiğinde devre dışı bırakılabilir veya etkinleştirilebilir. Her seferinde programını değiştirmek zorunda değilsin. Bunu yapmak için, " kullanım».
  • Bir diğer önemli şey, bu zamanlanmış görevin gerçekleştirilip gerçekleştirilmeyeceğinin ayarlanmasıdır. önceden belirlenmiş, ya da değil. Önceden tanımlanmış zamanlanmış işler otomatik olarak başlar. Bu işaret ayarlanmamışsa, bunları programlı olarak çalıştırmanız veya ITS'den "Görev Konsolu" işlemesini kullanmanız gerekir.
  • Ayrıca belirtebilirsiniz tekrar sayısı ve aralarındaki aralık anormal fesih üzerine. Anormal sonlandırma, görevlerin bir hata nedeniyle çalışmadığı durumları ifade eder.

Kurulum zamanlaması

Son adım, özellikler paletindeki ilgili köprüyü kullanarak siteye yüklememiz için programı ayarlamaktır.

1C 8.3'te tipik bir program ayarı göreceksiniz. Burada zor bir şey yok. Bu örneğin bir parçası olarak, sitedeki fiyatların boşaltılmasının başlatılmasını her gün sabah beşten yediye kadar yapılandırdık. Zamanlanmış görevin saat 7:00'den önce çalışacak zamanı yoksa, ertesi gün tamamlanacaktır.

Zamanlanmış işleri engelleme

"1C Enterprise sunucularının yönetimi" standart yardımcı programını çalıştırın ve zamanlanmış görevi oluşturduğunuz bilgi tabanının özelliklerini açın (1C'nin istemci-sunucu sürümleri için).

Açılan pencerede (IB'ye erişim için kullanıcı adı ve şifreyi girdikten sonra), "Zamanlanmış görevlerin engellenmesi etkinleştirildi" öğesindeki bayrağın ayarlanmadığını kontrol edin. Görevin yürümediği bir durumla karşı karşıya kalırsanız, önce bu ayarı kontrol edin.

Aynı şekilde, 1C 8.3'te zamanlanmış görevleri tamamen devre dışı bırakabilirsiniz. Belirli arka plan işlerini devre dışı bırakmak için en son sürümlerde yerleşik olarak bulunan "Arka Plan İş Konsolu" işlemini kullanabilirsiniz.

Dosya modunda arka plan ve zamanlanmış görevler

Bu modda, bu görevleri kurmak ve çalıştırmak organize etmek çok daha zordur. Çoğu zaman, oturumu her zaman açık olacak ek bir hesap oluşturulur.

Bu durumda, zamanlanmış işler "RunJobProcessing ()" yöntemi kullanılarak etkinleştirilir.

Aşağıdaki yapıyı da kullanabilirsiniz:

Prosedürün adı olarak, yürütülecek müşteri prosedürünün adını belirtmelisiniz. Aralık, yürütmenin kaç saniye süreceğini gösterir. "Bir kez" parametresi isteğe bağlıdır. Bu prosedürün bir kez mi yoksa birkaç kez mi gerçekleştirileceğini yansıtır.

Arka plan işlerinde izleme hataları

Arka plan görevlerinin ilerlemesini ve günlükte olası hataların varlığını görüntüleyebilirsiniz. Filtrede, filtreyi "Arka plan işi" uygulamasına ayarlayın ve gerekirse, yalnızca "Hatalar" gibi ilginin önemini seçin.

Günlük, seçiminizle eşleşen tüm girişleri, hatanın nedenini belirten bir yorumla birlikte gösterecektir.