Rutinní úlohy a úlohy na pozadí (vytvoření, konfigurace, spouštění). Naplánované úlohy a úlohy na pozadí (vytvoření, konfigurace, spouštění) 1c konzole úloh na spravovaných formulářích

Platformy: 1C:Enterprise 8.3, 1C:Enterprise 8.2, 1C:Enterprise 8.1
Konfigurace: Všechny konfigurace

2012-11-13
53852

Ve správě dokumentů existují úkoly, které vyžadují pravidelné provádění - například dvacátého nebo denně. Společnosti zpravidla pro tento účel vytvářejí určitá pravidla, která určují, kdy a jak má být potřebný úkol vykonán a kdo by měl proces řídit. Takové úkoly se provádějí podle předpisů a nazývají se regulované.

Poměrně často se v IT dodržují monitorovací předpisy. Tato metoda je správcům velmi známá, protože existují speciální programy, který se používá k pravidelné kontrole výkonu síťové infrastruktury a serverů. O zjištěných problémech informují správce prostřednictvím SMS nebo emailu.

Podobný systém funguje i pro webmastery a dostupnost webu je kontrolována do 24 hodin. Pomocí mechanismu "Rutinní úlohy" v 1C se provádějí monitorovací úkoly a také pravidelné úkoly, které se provádějí podle plánu v automatickém režimu v 1C. Pojďme se na toto téma podívat blíže.

Naplánované úkoly 1C

Objekt 1C, nazývaný „Rutinní úlohy“, umožňuje zpracovávat informace nikoli po výskytu problému, ale podle plánu. V konfigurátoru je rutinní úkol způsob, jak nastavit nastavení a nastavit plán. Navíc je možné následně změnit rozvrh v režimu 1C Enterprise.

Při použití databáze souborů se úlohy nespouštějí automaticky. Chcete-li zahájit proces, musíte spustit relaci 1C v režimu 1C Enterprise a začít v ní provádět rutinní úlohu.

Všechny standardní konfigurace mají uživatelské nastavení, které vám umožňuje určit, že když je spuštěn 1C, budou se rutinní úlohy provádět automaticky.

Použití klient-server verze 1C umožňuje automatické provádění úloh na serveru. V naplánovanou dobu se spustí úloha na pozadí, která provede potřebné akce. Pro paralelní výpočty na serveru lze vytvořit úlohu na pozadí z textu programu pomocí jazyka 1C bez použití naplánované úlohy 1C. Akci naplánované úlohy lze dočasně deaktivovat pomocí konzoly pro správu serveru 1C.

Přidání naplánovaného úkolu

Rutinní úlohy se nacházejí v - Konfigurátor - Obecné - Rutinní úlohy. Přidejte nový „úkol“ a zadejte název. Dále musíte přejít do vlastností „Úkoly“. A vyberte Název metody. Zde musíte zadat funkci handleru, stejně jako se to děje v předplatném události. Tato funkce bude umístěna v obecném modulu a ve vlastnostech označena „ptačím“ serverem. To znamená, že požadovaný modul je nutné přidat předem.

Název úlohy ve vlastnostech naplánované úlohy umožňuje určit její název, který se pak zobrazí v nástrojích pro správu úloh. Funkce Schedule Task Properties je klíč, který vám umožňuje seskupit několik různých rutinní úkoly. V tomto případě lze současně spustit pouze jednu úlohu se stejnou hodnotou klíče. Zde může být hodnota libovolná, ale musí být vyplněna, protože prázdná hodnota není systémem zohledněna.

V Accounting edition 2.0, což je standardní konfigurace, jsou předdefinovány rutinní úlohy jako: „Přepočet součtů“ a „Aktualizace konfigurace“, ale jako například „Odložené pohyby“ a „Výměna dat“ předdefinovány nejsou.

Opakovat při abnormálním ukončení – restartuje aktuální úlohu. Navrženo k provedení startu, který nebyl úspěšný napoprvé. Zde je uvedeno, kolikrát můžete restartovat a po jaké době uplynulo po abnormálním ukončení.

Nástroje pro monitorování a správu pro rutinní úkoly 1C

Standardní zpracování „Task Console“, které lze nalézt na discích ITS, je zodpovědné za řízení rutinní úlohy. Toto zpracování je univerzální externí standardní zpracování pro 1C. Zpravidla není součástí konfigurace, ale dokupuje se samostatně.

S jeho pomocí můžete provádět následující akce:

Zapnutí a vypnutí naplánované úlohy;

Přidělovat a měnit plány;

Určete uživatelské jméno, se kterým bude rutinní úloha provedena;

Zobrazit dokončené úkoly (kdy a s jakým výsledkem) a také chyby úkolů;

Rutinní úloha a kopie databází

Při použití serveru 1C může nastat následující okamžik:

Chcete-li programovat, musíte si vytvořit kopii pracovní databáze;

Nutnost pracovat v kopiích databáze (testování);

Z nějakého důvodu nebyla naplánovaná úloha zahrnuta do testovací databáze.

Pokud některá z těchto situací nastala při provádění úkolů rutinním úkolem, které jsou spojeny pouze s jejich databází, pak to nemá negativní důsledky. Rutinní úkol však často může ukládat soubory nebo jiná data, odesílat e-maily a provádět výměny. V tomto případě může dojít k záměně mezi výsledky „úlohy“ a kopiemi. Abyste tomu zabránili, musíte zakázat „úlohy“ v konzole pro správu serveru.

Dokončené a nedokončené regulační úkoly

Při vytváření rutinních úloh je důležité zkontrolovat, zda lze úlohu provést jako rutinní úlohu. Je důležité vědět, že modul serveru nedělá mnoho věcí, které jsou možné na klientovi. Dále úloha, která se zabývá něčím, co je mimo databázi - důležitou roli v tom hrají práva uživatele Windows, pod kterými je úloha vykonávána.

Poslední faktor je obzvláště důležitý, protože pokud modul není spuštěn na serveru, nelze úlohu v zásadě dokončit. Pro kontrolu je potřeba spustit jednu úlohu a vyhodnotit výsledek.

Pravděpodobně každý programátor 1C 8.3 musel dříve nebo později nastavit provádění určitých úkolů podle plánu. Níže dám Detailní popis z těchto mechanismů, doufám, že bude užitečné informace pro začínající programátory 1C. To je velmi výhodné, protože to nevyžaduje lidský zásah, rutinní úloha se nakonfiguruje jednou a funguje podle vašeho plánu.

Níže naleznete podrobné pokyny na příkladu.

Co jsou rutinní úkoly a úkoly na pozadí v 1C

  • Naplánované úkoly je speciální mechanismus 1C Enterprise 8.3 určený k provádění konkrétní akce podle daného plánu.
  • Práce na pozadí- objekty generované rutinní úlohou, které přímo provádějí zamýšlenou akci bez účasti uživatele nebo programátora 1C 8.2.

Mechanismus naplánovaných úloh a úloh na pozadí funguje v režimu klient-server (SQL), díky funkcionalitě DBMS. Pokud máte databázi souborů, pak lze úlohu také nakonfigurovat, ale podle trochu jiného principu.

Nastavení úloh na pozadí v režimu klient-server 1C

Nejprve vytvořte nový objekt metadat – rutinní úkol. Svůj úkol nazvu „Načítání kurzů měn“. Podívejme se na paletu vlastností tohoto konfiguračního objektu:

Získejte 267 videolekcí na 1C zdarma:

  • Název metody— cesta k proceduře, která bude provedena v úloze na pozadí podle daného plánu. Postup musí být ve společném modulu. Doporučuje se nepoužívat standardní, ale vytvořit si vlastní. Nezapomeňte, že úlohy na pozadí běží na serveru!
  • Používání— známka používání rutinního úkolu.
  • Předurčeno— označuje, zda je rutinní úkol předem určen. Pokud chcete, aby rutinní úloha fungovala ihned po umístění do databáze, zadejte tento příznak. V opačném případě budete muset použít zpracování Job Console nebo nechat úlohu spustit programově.
  • Počet opakování, když se úloha ukončí abnormálně— kolikrát byla úloha na pozadí restartována, pokud byla provedena s chybou.
  • Interval opakování při abnormálním ukončení úlohy— jak často bude úloha na pozadí restartována, pokud byla dokončena s chybou.

A nejzajímavější je nastavení Plán:

Zde nakonfigurujete interval spouštění procedury zadaný v poli „Název metody“. Řekněme, že jsem nakonfiguroval

Pozornost! Nezapomeňte zakázat blokování provádění rutinních úloh a úloh na pozadí na úrovni DBMS!

To lze provést v obslužném programu pro správu verze klient-server nebo při vytváření nové databáze:

Nastavení rutinních úloh v režimu souborů 1C

V režimu souborů je nastavení takových úloh poněkud obtížnější. Pro takový úkol musí být spuštěna samostatná relace programu 1C. To se často řeší vytvořením „technického“ uživatele, jehož relace je vždy spuštěna.

V režimu souborů se rutinní úloha inicializuje při spuštění metody „RunTaskProcessing()“.

Pro konkrétního uživatele můžete nakonfigurovat tuto metodu tak, aby se spouštěla ​​pomocí jiné metody −

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

  • Název procedury— název postupu připojeného jako obsluha čekání. Název exportované procedury spravovaného aplikačního modulu (běžného aplikačního modulu) nebo globálního sdíleného modulu. Postup musí být umístěn na klientovi.
  • Interval— doba mezi provedeními operací v sekundách.
  • Jednou- jak dokončit úkol, jednou nebo ne.

ConnectWaitHandler, 3600 );

Dvouminutové video, které ukazuje, jak nastavit rutinní úlohu v konfigurátoru 1C:

Některé úkoly ve správě dokumentů a účetnictví může být nutné provádět pravidelně. Například dvacátého. Nebo denně.

Typicky se společnost snaží vytvořit pravidla pro provádění takových úkolů – kdo, kdy a jak by měl úkol splnit, kdo by ho měl řídit.

Takové úkoly se nazývají regulované, tj. vykonávané v souladu s předpisy.

V IT se sledování často provádí regulovaně.

To je dobře známé správci systému - existují speciální programy, které pravidelně kontrolují výkon serverů a síťové infrastruktury a hlásí SMS popř. emailem správce.

Podobné věci existují i ​​pro webmastery – pro kontrolu dostupnosti webu během dne.

V 1C jsou monitorovací úlohy a jakékoli další pravidelné úlohy, které by měly být prováděny automaticky podle plánu, prováděny pomocí mechanismu 1C Scheduled Tasks.

Promluvme si o nich dnes.

Naplánované úkoly 1C

Naplánované úlohy 1C jsou ty, které vám umožňují provádět je tak, jak to dělají, ale podle plánu.

Samotná rutinní úloha 1C v konfigurátoru je způsob, jak specifikovat nastavení a nastavit plán. Mimochodem, plán lze později dynamicky změnit v režimu 1C Enterprise.

Úlohy na pozadí lze vytvářet z textu programu v jazyce 1C libovolně bez naplánované úlohy 1C - pro paralelní výpočty na serveru.

Provádění rutinních úloh 1C lze dočasně zakázat - in.

Přidání rutinního úkolu 1C

Úlohy rutiny 1C se nacházejí v konfiguraci ve větvi Obecné/Úlohy rutiny 1C. Pojďme přidat nový regulační úkol 1C a uvést jeho název.

Ve vlastnosti rutinní úlohy 1C je uveden název metody, stejně jako v. Funkce bude umístěna ve společném modulu se zaškrtnutým políčkem Server ve vlastnostech, to znamená, že modul musí být přidán předem.

Vlastnost naplánované úlohy 1C – Název úlohy – určuje název, pod kterým se úloha zobrazí v nástrojích pro správu úloh.

Vlastnost rutinní úlohy 1C – Key – vám umožňuje seskupit několik různých rutinních úloh 1C. Najednou lze spustit pouze jednu úlohu se stejnou hodnotou klíče. Samotná hodnota může být libovolná. Prázdná hodnota se při kontrole nebere v úvahu (to znamená, že je považována za prázdnou).

Vlastnost rutinní úlohy 1C – Předdefinováno – určuje, že při spuštění 1C Enterprise bude taková úloha vytvořena v jedné kopii s plánem uvedeným v konfigurátoru. Nepředdefinované úkoly se zobrazují programově v době plánu.

V typické konfigurace, například Accounting edition 2.0, takové rutinní úlohy 1C jako Aktualizace konfigurace a Přepočet součtů jsou předdefinovány, ale jako Výměna dat nebo Odložené pohyby předdefinovány nejsou.

Použití – povolí úlohu (to znamená, že se provede pouze v případě, že je zaškrtnuto políčko Použití).

Opakovat při abnormálním ukončení – jak asi tušíte, znamená restartování úlohy, pokud se nepodařilo úspěšně dokončit napoprvé – můžete určit, kolikrát se má restartovat a jak dlouho po abnormálním ukončení.

Správa a monitorování rutinních úloh 1C

Pro správu rutinních úloh 1C je k dispozici speciální standardní zpracovatelská Job Console. Lze jej nalézt také na.

Toto zpracování patří k tzv. univerzálnímu externímu standardnímu zpracování 1C, které často není součástí konfigurace, ale je distribuováno samostatně např. na ITS discích.

Pomocí zpracování konzoly úloh můžete:

  • Povolí/zakáže provádění rutinní úlohy 1C
  • Přiřadit/změnit plán naplánované úlohy 1C (a další parametry)
  • Zadejte uživatele 1C, jehož jménem bude rutinní úloha 1C provedena
  • Podívejte se, jaké úkoly byly dokončeny, kdy a s jakým výsledkem, chyby při plnění úkolů 1C
  • Proveďte úkol.

Kopie databází a rutinních úloh 1C

Pokud používáte server 1C, nastane následující situace:

  • Pro vaše vlastní účely (například pro programování) se vytvoří kopie pracovní databáze
  • Práce, testování atd. v kopii databáze
  • V takové testovací databázi zapomenete vypnout rutinní úlohy 1C.

Zatímco rutinní úkoly 1C provádějí úkoly související pouze s jejich informační základnou, pak v tom není nic.

Rutinní úlohy 1C však mohou často ukládat jakékoli soubory, data do jiných databází, provádět výměny a odesílat e-maily.

V tomto případě můžete získat zajímavou směs mezi výsledkem provádění rutinních úloh 1C v pracovní databázi a kopiemi.

Rutinní úlohy 1C pro kopie pracovní databáze musí být zakázány v .

Plnění a neplnění regulačních úkolů 1C

Při vytváření rutinních úloh 1C si musíte pamatovat:

  • Úkoly se plní samy – je třeba je hlídat
  • Úlohy jsou prováděny v modulu na serveru
  • Úlohy jsou prováděny pod jiným uživatelem Windows s různými právy.

Nejprve musíte zkontrolovat, zda je úloha prováděna a může být dokončena jako rutinní úloha 1C.

Za druhé, modul serveru znamená, že mnoho věcí, které jsou k dispozici na klientovi, není k dispozici. Například někdy nelze všechny dokumenty odeslat pouze na server, protože jejich algoritmus může zajistit, že odesílání spouští ručně uživatel a lze použít neserverové funkce, např.
Upozornění ("Ahoj!")

Zatřetí, pokud se úkol zabývá něčím mimo databázi 1C, stanou se důležitá práva uživatele systému Windows, pod kterým je úkol prováděn.

Třetí bod je zvláště důležitý při vývoji. Pokud modul nelze na serveru spustit, úloha nebude provedena vůbec. Chcete-li to zkontrolovat, musíte úlohu spustit alespoň jednou a vidět výsledek „Úloha dokončena“ ve zpracování konzoly úloh.

Při práci v 1C existuje mnoho rutinních operací, které musí být spuštěny nebo naplánovány k provedení jedné nebo druhé akce, například: odesílání dokumentů nebo načítání dat do 1C z webu.

Nedávno jsem zveřejnil článek: Je čas to automatizovat:

Rutinní úkoly a úkoly na pozadí

Modul úloh je navržen tak, aby vykonával jakoukoli aplikaci nebo funkci podle plánu nebo asynchronně.

Mechanismus úloh řeší následující úlohy:

  • Schopnost definovat regulační postupy ve fázi konfigurace systému;
  • Provádění určených akcí podle harmonogramu;
  • Volání dané procedury nebo funkce asynchronně, tzn. bez čekání na jeho dokončení;
  • Sledování průběhu konkrétního úkolu a získávání stavu jeho dokončení (hodnota udávající, zda byl úspěšný či nikoli);
  • Získání seznamu aktuálních úkolů;
  • Schopnost čekat na dokončení jednoho nebo více úkolů;
  • Vedení zakázky (možnost zrušení, blokace exekuce atd.).

Mechanismus práce se skládá z následujících součástí:

  • Metadata rutinních úkolů;
  • Pravidelné úkoly;
  • Pracovní místa na pozadí;
  • Plánovač úkolů.

Úlohy na pozadí a jsou navrženy tak, aby prováděly aplikační úlohy asynchronně. Úlohy na pozadí jsou implementovány pomocí vestavěného jazyka.

Naplánované úlohy a jsou navrženy k provádění úloh aplikace podle plánu. Rutinní úlohy jsou uloženy v informační bázi a jsou vytvářeny na základě metadat definovaných v konfiguraci. Metadata regulačního úkolu obsahují informace, jako je název, metoda, použití atd.

Rutinní úloha má plán, který určuje, ve kterých časech musí být metoda spojená s rutinní úlohou provedena. Plán je zpravidla specifikován v informační bázi, ale může být také specifikován ve fázi konfigurace (například pro předdefinované rutinní úlohy).

Plánovač úloh se používá k plánování provádění rutinních úloh. U každé naplánované úlohy plánovač pravidelně kontroluje, zda Aktuální datum a čas plánu rutinních úkolů. Pokud se shoduje, plánovač přiřadí tuto úlohu ke spuštění. Chcete-li to provést, plánovač pro tuto naplánovanou úlohu vytvoří úlohu na pozadí, která provede skutečné zpracování.

Myslím, že to s popisem stačí - pojďme k implementaci:

Vytvoření rutinního úkolu

Název metody– cesta k proceduře, která bude provedena v úloze na pozadí podle daného plánu. Postup musí být ve společném modulu. Doporučuje se nepoužívat standardní společné moduly, ale vytvořit si vlastní. Nezapomeňte, že úlohy na pozadí běží na serveru!

Používání– známka použití rutinního úkolu.

Předurčeno– označuje, zda je rutinní úkol předem určen.

Pokud chcete, aby rutinní úloha fungovala ihned po umístění do databáze, zadejte atribut Předurčeno. V opačném případě budete muset použít zpracování „Konzola úloh“ nebo spustit úlohu programově.

Počet opakování, když se úloha ukončí abnormálně– kolikrát byla úloha na pozadí restartována, pokud byla provedena s chybou.

Interval opakování při abnormálním ukončení úlohy– jak často bude úloha na pozadí restartována, pokud byla dokončena s chybou.

Nastavení rozvrhu

Plán dokončení úkolu:

Každou hodinu, jen jeden denObdobí RepeatDays = 0, RepeatDays Period = 3600
Každý den jednou denněObdobí RepeatDays = 1, RepeatDays Period = 0
Jeden den, jednouPeriodRepeatDays = 0
Každý druhý den jednou denněPeriodRepeatDays = 2
Každou hodinu od 01:00 do 07:00 každý denPeriodRepeatDays = 1RepeatPeriodDuringDay = 3600StartTime = 01:00

Konec = 07:00

Každou sobotu a neděli v 09:00Období RepeatDays = 1 WeekDays = 6, 7 StartTime = 09:00
Každý den po dobu jednoho týdne, týden přeskočtePeriodRepeatDays = 1 PeriodWeeks = 2
Jednou v 01:00Čas začátku = 01:00
Poslední den každého měsíce v 9:00.PeriodRepeatDays = 1DayInMonth = -1StartTime = 09:00
Pátý den každého měsíce v 9:00PeriodRepeatDays = 1DayInMonth = 5StartTime = 09:00
Druhou středu v měsíci v 9:00PeriodRepeatDays = 1DayWeekMonth = 2DaysWeek = 3

Čas začátku = 09:00

Funkce spouštění úloh na pozadí ve variantách soubor a klient-server

Mechanismy pro provádění úloh na pozadí ve verzi souboru a klient-server se liší.

Ve verzi souboru musíte vytvořit vyhrazený klientský proces, který bude provádět úlohy na pozadí. K tomu musí klientský proces pravidelně volat funkci globálního kontextu ExecuteJobProcessing. Pouze jeden klientský proces za informační základna musí zpracovávat úlohy na pozadí (a podle toho volat tuto funkci). Pokud nebyl vytvořen klientský proces pro zpracování úloh na pozadí, pak se při programovém přístupu k enginu úloh zobrazí chyba „Správce úloh není aktivní“. Nedoporučuje se používat klientský proces, který zpracovává úlohy na pozadí pro jiné funkce.

Jakmile jsou spuštěny úlohy zpracování klientského procesu na pozadí, ostatní klientské procesy jsou schopny programově přistupovat k enginu úloh na pozadí, tzn. může spouštět a spravovat úlohy na pozadí.

Ve verzi klient-server K provádění úloh na pozadí se používá plánovač úloh, který je fyzicky umístěn ve správci clusteru. Pro všechny úlohy na pozadí ve frontě získá plánovač nejméně zatížený pracovní proces a použije jej ke spuštění odpovídající úlohy na pozadí. Pracovní proces provede úlohu a oznámí plánovači výsledky provedení.

Ve verzi klient-server je možné blokovat provádění rutinních úloh. Provádění rutinních úloh je blokováno v následujících případech:

  • Na informační základnu bylo nainstalováno explicitní blokování rutinních úkolů. Zámek lze nastavit pomocí konzoly clusteru;
  • Na infobázi je blok připojení. Zámek lze nastavit pomocí konzoly clusteru;
  • Metoda SetExclusiveMode() s parametrem True byla volána z vestavěného jazyka;
  • V některých jiných případech (například při aktualizaci konfigurace databáze).

Zpracování spouštění a prohlížení naplánovaných úloh můžete stáhnout zde.