Naplánovaná úloha je kľúčom. Plánované úlohy a úlohy na pozadí (1Cv8)

Pracovný mechanizmus

Mechanizmus úloh je navrhnutý tak, aby spúšťal akúkoľvek aplikáciu alebo funkciu podľa plánu alebo asynchrónne.

Mechanizmus úloh vykonáva tieto úlohy:

  • Schopnosť určiť rutinné postupy vo fáze konfigurácie systému;
  • Vykonávanie určených akcií podľa harmonogramu;
  • Vykonanie volania danej procedúry alebo funkcie je asynchrónne, t.j. bez čakania na jeho dokončenie;
  • Sledovanie postupu konkrétnej úlohy a získanie stavu jej dokončenia (hodnota označujúca úspech alebo zlyhanie jej vykonania);
  • Získanie zoznamu aktuálnych úloh;
  • Schopnosť čakať na dokončenie jednej alebo viacerých úloh;
  • Vedenie práce (možnosť zrušenia, zablokovania exekúcie a pod.).

Pracovný stroj pozostáva z nasledujúcich komponentov:

  • Metadáta naplánovaných úloh;
  • Plánované úlohy;
  • Pracovné miesta na pozadí;
  • Plánovač úloh.

Úlohy na pozadí – navrhnuté na vykonávanie úloh aplikácie asynchrónne. Úlohy na pozadí sú implementované pomocou vstavaného jazyka.

Naplánované úlohy – určené na vykonávanie úloh aplikácie podľa plánu. Naplánované úlohy sú uložené v informačnej databáze a vytvárajú sa na základe metadát definovaných v konfigurácii. metaúdaje rutinná úloha obsahujú informácie ako názov, spôsob, použitie atď.

Naplánovaná úloha má plán, ktorý určuje, v akom čase sa má vykonať metóda spojená s plánovanou úlohou. Plán sa spravidla nastavuje v informačnej databáze, ale dá sa nastaviť aj vo fáze konfigurácie (napríklad pre preddefinované naplánované úlohy).

Plánovač úloh sa používa na plánovanie vykonávania naplánovaných úloh. Pre každú naplánovanú úlohu plánovač pravidelne kontroluje, či sa aktuálny dátum a čas zhoduje s plánom naplánovanej úlohy. Ak sa zhoduje, plánovač naplánuje spustenie tejto úlohy. Na tento účel podľa tejto naplánovanej úlohy plánovač vytvorí úlohu na pozadí, ktorá vykoná skutočné spracovanie.

Úlohy na pozadí

Úlohy na pozadí sú užitočné pri vykonávaní zložitých výpočtov, kedy je možné výsledok výpočtu získať až po dlhšom čase. Nástroj úloh má prostriedky na vykonávanie takýchto výpočtov asynchrónne.

Úloha na pozadí má priradenú metódu, ktorá sa volá pri spustení úlohy na pozadí. Metódou úlohy na pozadí môže byť akákoľvek procedúra alebo funkcia neglobálneho zdieľaného modulu, ktorú možno volať na serveri. Parametre úlohy na pozadí môžu byť ľubovoľné hodnoty, ktoré sa môžu prenášať na server. Parametre úlohy na pozadí sa musia presne zhodovať s parametrami procedúry alebo funkcie, ktorú volá. Ak je metódou úlohy na pozadí funkcia, jej návratová hodnota sa ignoruje.

Úloha na pozadí môže mať kľúč – akúkoľvek aplikačnú hodnotu. Kľúč zavádza obmedzenie spúšťania úloh na pozadí – za jednotku času možno vykonať iba jednu úlohu na pozadí so špecifickou hodnotou kľúča a špecifikovaným názvom metódy úlohy na pozadí (názov metódy pozostáva z názvu modulu a názvu postup alebo funkcia). Kľúč vám umožňuje zoskupiť úlohy na pozadí, ktoré majú rovnaké metódy podľa určitého atribútu aplikácie, takže v rámci jednej skupiny sa nevykoná viac ako jedna úloha na pozadí.

Úlohy na pozadí sa vytvárajú a riadia programovo z akéhokoľvek pripojenia. Každý používateľ môže vytvoriť úlohu na pozadí. Zároveň sa vykonáva v mene používateľa, ktorý ho vytvoril. Používateľ s oprávneniami správcu alebo používateľ, ktorý vytvoril tieto úlohy na pozadí, môže prijímať úlohy, ako aj čakať na ich dokončenie, z akéhokoľvek pripojenia.

Úloha na pozadí je čisto objekt relácie, ale nepatrí do žiadnej používateľskej relácie. Pre každú úlohu sa vytvorí špeciálna systémová relácia, ktorá beží v mene užívateľa, ktorý uskutočnil volanie. Úlohy na pozadí nemajú trvalý stav.

Úloha na pozadí môže vyvolať ďalšie úlohy na pozadí. Vo verzii klient-server to umožňuje paralelizovať zložité výpočty naprieč pracovnými procesmi klastra, čo môže výrazne urýchliť proces výpočtu ako celku. Paralelizácia sa implementuje vytvorením niekoľkých podriadených úloh na pozadí, pričom sa čaká, kým každá z nich dokončí hlavnú úlohu na pozadí.

Úspešné alebo neúspešné úlohy na pozadí sa uložia na 24 hodín a potom sa odstránia. Ak počet spustených úloh na pozadí prekročí 1 000, vymažú sa aj najstaršie úlohy na pozadí.

Naplánované úlohy

Naplánované úlohy sa používajú, keď potrebujete vykonať určité pravidelné alebo jednorazové akcie v súlade s plánom.

Naplánované úlohy sú uložené v informačnej databáze a vytvárajú sa na základe metadát naplánovanej úlohy definovanej v konfigurácii. Metaúdaje definujú také parametre naplánovanej úlohy, ako sú: volaná metóda, názov, kľúč, schopnosť použitia, znak predurčenia atď. na vykonanie naplánovanej úlohy atď.

Vytváranie a správa naplánovaných úloh sa vykonáva programovo z akéhokoľvek pripojenia a je povolené iba používateľom s oprávneniami správcu.

Poznámka. Pri práci v verzia súboru je možné vytvárať a upravovať naplánované úlohy bez spustenia plánovača úloh.

Naplánovaná úloha je spojená s metódou, ktorá sa volá pri vykonaní naplánovanej úlohy. Metóda plánovanej úlohy môže byť ľubovoľná procedúra alebo funkcia neglobálneho zdieľaného modulu, ktorú možno volať na server. Parametre plánovanej úlohy môžu byť ľubovoľné hodnoty, ktoré sa môžu prenášať na server. Parametre naplánovanej úlohy sa musia presne zhodovať s parametrami procedúry alebo funkcie, ktorú volá. Ak je metódou naplánovanej úlohy funkcia, jej návratová hodnota sa ignoruje.

Naplánovaná úloha môže mať kľúč – akúkoľvek použitú hodnotu. Kľúč zavádza obmedzenie spúšťania naplánovaných úloh, od r za jednotku času, spomedzi naplánovaných úloh spojených s rovnakým objektom metaúdajov možno vykonať iba jednu naplánovanú úlohu s určitou hodnotou kľúča. Kľúč vám umožňuje zoskupiť naplánované úlohy spojené s rovnakým objektom metaúdajov podľa určitého atribútu aplikácie, takže v rámci jednej skupiny sa nevykoná viac ako jedna naplánovaná úloha.

Počas konfigurácie môžete definovať preddefinované naplánované úlohy. Preddefinované plánované úlohy sa nelíšia od bežných naplánovaných úloh, okrem toho, že ich nemožno explicitne vytvoriť ani odstrániť. Ak sú metaúdaje naplánovanej úlohy nastavené na znak preddefinovanej naplánovanej úlohy, potom pri aktualizácii konfigurácie sa v infobáze automaticky vytvorí preddefinovaná naplánovaná úloha. Ak nie je začiarknuté políčko preddefinované, preddefinovaná naplánovaná úloha sa automaticky vymaže z informačnej databázy pri aktualizácii konfigurácie. Počiatočné hodnoty vlastností preddefinovanej naplánovanej úlohy (napríklad plán) sú nastavené v metaúdajoch. V budúcnosti, keď je aplikácia spustená, je možné ich zmeniť. Preddefinované naplánované úlohy nemajú žiadne parametre.

Plán naplánovanej úlohy určuje, v ktorých časových bodoch sa má naplánovaná úloha spustiť. Plán umožňuje nastaviť: dátum a čas začiatku a konca úlohy, obdobie vykonávania, dni v týždni a mesiace, v ktorých sa má naplánovaná úloha vykonať atď. (pozri popis vstavaného v jazyku).

Príklady naplánovaných úloh:

Každú hodinu, len jeden deň

Počet dní opakovania = 0, Obdobie opakovaniaPočas dňa = 3600

Každý deň raz za deň

Počet dní opakovania = 1, Obdobie opakovaniaPočas dňa = 0

Jeden deň, raz

Dni obdobia opakovania = 0

Každý druhý deň raz za deň

Počet dní na opakovanie pokusu = 2

Každú hodinu od 01:00 do 07:00 každý deň

Počet dní na opakovaný pokus = 1

Obdobie opakovania počas dňa = 3600

Čas začiatku = 01:00

Koniec = 07:00

Každú sobotu a nedeľu o 09.00 hod

Počet dní na opakovaný pokus = 1

Dni v týždni = 6, 7

Čas začiatku = 09:00

Každý deň uplynie jeden týždeň, týždeň

Počet dní na opakovaný pokus = 1

Obdobie Týždne = 2

Raz o 01:00

Čas začiatku = 01:00

Posledný deň každého mesiaca o 9:00.

Počet dní na opakovaný pokus = 1

Deň v mesiaci = -1

Čas začiatku = 09:00

Piaty v každom mesiaci o 9:00

Počet dní na opakovaný pokus = 1

Deň v mesiaci = 5

Čas začiatku = 09:00

Druhá streda v mesiaci o 9:00 hod

Počet dní na opakovaný pokus = 1

Deň v týždni v mesiaci = 2

Dni v týždni = 3

Čas začiatku = 09:00

Môžete skontrolovať, či sa úloha vykonáva pre daný dátum (metóda RequiredExecution objektu ScheduledTasks Schedule). Naplánované úlohy sa vždy vykonávajú v mene konkrétny používateľ. Ak nie je zadaný používateľ plánovanej úlohy, vykoná sa v mene predvoleného používateľa s právami správcu.

Naplánované úlohy sa vykonávajú pomocou úloh na pozadí. Keď plánovač určí, že by sa mala spustiť naplánovaná úloha, na základe tejto naplánovanej úlohy sa automaticky vytvorí úloha na pozadí, ktorá vykoná všetky ďalšie spracovanie. Ak je táto naplánovaná úloha už spustená, nespustí sa znova bez ohľadu na jej plán.

Naplánované úlohy majú možnosť reštartu. To platí najmä vtedy, keď sa musí zaručiť vykonanie metódy naplánovanej úlohy. Naplánovaná úloha sa reštartuje, keď sa nenormálne ukončí, alebo keď sa pracovný proces (vo verzii klient-server) alebo klientsky proces (vo verzii súboru), na ktorom bežala naplánovaná úloha, nenormálne ukončí. V naplánovanej úlohe môžete určiť, koľkokrát sa má reštartovať, ako aj interval medzi reštartmi. Pri implementácii metódy reštartovateľnej plánovanej úlohy je potrebné vziať do úvahy, že po jej reštartovaní sa jej vykonávanie začne od začiatku a nebude pokračovať od okamihu, keď došlo k jej zlyhaniu.

Je dôležité si to pamätať čas ukončenia nemusí nevyhnutne dokončiť úlohu na pozadí v určenom čase. Niektoré vyjadrenia:

* Úloha na pozadí môže ignorovať svoje automatické zrušenie, ak nie je pozastavená, ale stále beží ten dôvodže nie všetky operácie platformy je možné vrátiť späť. Ak sa vykoná cyklický kód vstavaný jazyk, úlohu možno zrušiť inak nie. Všetko závisí od toho, čo práca robí. * Čas ukončenia – limit, v rámci ktorého môže úloha začať a nie skončiť? * Vynútiť ukončenieúloha vráti späť zmeny vykonané do okamihu začatia transakcie?

Zvláštnosti vykonávania úloh na pozadí vo verziách súborov a klient-server

Mechanizmy na vykonávanie úloh na pozadí vo verziách súborov a klient-server sú odlišné.

  • Vo verzii súboru musíte vytvoriť vyhradený klientsky proces, ktorý bude vykonávať úlohy na pozadí. Na tento účel sa musí v klientskom procese pravidelne volať funkcia globálneho kontextu ExecuteJobProcessing. Len jeden klientsky proces na informačnú základňu musí spracovávať úlohy na pozadí (a teda volať túto funkciu). Ak nebol vytvorený žiadny klientsky proces na spracovanie úloh na pozadí, potom sa pri programovom prístupe k nástroju úloh vygeneruje chyba „Správca úloh nie je aktívny“. Neodporúča sa používať klientsky proces, ktorý spracováva úlohy na pozadí pre iné funkcie.

Po spustení úloh spracovania klientskeho procesu na pozadí môžu ostatné klientske procesy programovo pristupovať k mechanizmu úloh na pozadí, t.j. môže spúšťať a spravovať úlohy na pozadí.

Vo verzii klient-server sa na vykonávanie úloh na pozadí používa plánovač úloh, ktorý je fyzicky umiestnený v správcovi klastrov. Plánovač pre všetky úlohy na pozadí vo fronte získa najmenej zaťažený pracovný proces a použije ho na spustenie zodpovedajúcej úlohy na pozadí. Pracovný proces vykoná úlohu a oznámi plánovačovi výsledky vykonania.

Vo verzii klient-server je možné blokovať vykonávanie naplánovaných úloh. K blokovaniu vykonávania naplánovaných úloh dochádza v nasledujúcich prípadoch:

  • Na informačnej báze bolo nastavené explicitné blokovanie naplánovaných úloh. Zámok je možné nastaviť cez konzolu klastra;
  • Na informačnej báze bol nastavený blok pripojenia. Zámok je možné nastaviť cez konzolu klastra;
  • Metóda SetExclusiveMode() bola volaná zo vstavaného jazyka s parametrom True;
  • V niektorých iných prípadoch (napríklad pri aktualizácii konfigurácie databázy).

Vytváranie metadát plánovanej úlohy

Predtým, ako programovo vytvoríte naplánovanú úlohu v informačnej databáze, musíte pre ňu vytvoriť objekt metaúdajov.

Ak chcete vytvoriť objekt metadát plánovanej úlohy v konfiguračnom strome vo vetve Všeobecné pre vetvu Plánované úlohy, vykonajte príkaz Pridať a na palete vlastností vyplňte nasledujúce vlastnosti plánovanej úlohy:

Názov metódy – zadajte názov metódy plánovanej úlohy.

Kľúč – zadajte ľubovoľnú hodnotu reťazca, ktorá sa použije ako kľúč plánovanej úlohy.

Plán – určuje plán naplánovanej úlohy. Ak chcete vygenerovať plán, kliknite na odkaz „Otvoriť“ a nastavte požadované hodnoty vo formulári plánu, ktorý sa otvorí.

Karta Všeobecné určuje dátum začiatku a konca úlohy a režim opakovania.

Karta „Denne“ určuje denný plán úlohy.

Uveďte rozvrh:

  • čas začiatku a čas ukončenia úlohy;
  • čas ukončenia úlohy, po ktorom bude násilne dokončená;
  • obdobie opakovania úlohy;
  • trvanie pauzy medzi opakovaniami;
  • trvanie vykonania.

Je povolená ľubovoľná kombinácia podmienok.

Týždenný plán úlohy je špecifikovaný na karte Týždenne.

Začiarknite políčka pre dni v týždni, v ktorých bude úloha spustená. Ak chcete úlohu zopakovať, zadajte interval opakovania v týždňoch. Napríklad úloha sa spustí o 2 týždne, hodnota opakovania je 2.

Na karte „Mesačne“ je uvedený mesačný plán úlohy.

Začiarknite políčka pre mesiace, v ktorých bude úloha spustená. V prípade potreby môžete určiť konkrétny deň (mesiac alebo týždeň) vykonania od začiatku mesiaca / týždňa alebo konca.

Použitie – ak je nastavené, úloha sa vykoná podľa plánu.

Preddefinované – ak je nastavené, úloha je preddefinovaná.

Počet opakovaní pri zlyhaní – určuje počet opakovaní pri zlyhaní.

Interval opakovania pri zlyhaní – určuje interval opakovania pri zlyhaní. Príklady

Vytvorenie úlohy na pozadí „Aktualizácia indexu fulltextové vyhľadávanie»:

BackgroundJobs.Run("UpdatingFullTextSearchIndex");

Vytvorenie naplánovanej úlohy „Obnovenie sekvencií“:

Schedule = New ScheduleRegulationTask; Schedule.RepeatPeriodDays = 1; Schedule.RepeatPeriodDuringDay = 0;

Task = ScheduledTasks.Create ScheduledTask("RestoringSequences"); Task.Schedule = Plán; Task.Write();

Pracovná konzola

Spracovanie s ITS, spravuje naplánované úlohy:

Pracujte s naplánovanými úlohami

Predmety práce

Objekty úloh nie sú odkazované, ale sú uložené v databáze v nejakom špeciálnom úložisku.

Ak je v metaúdajoch povolený príznak "Predefined", potom sa takýto objekt vytvorí automaticky pri spustení 1C:Enterprise a vždy existuje presne v jednej inštancii. Takýto objekt nie je možné vymazať.

Ak nie je nastavený príznak "Predefined", potom sa objekty takejto úlohy vytvoria a vymažú programovo s uvedením plánu a parametrov.

Získanie zoznamu úloh

Zoznam úloh možno získať metódou GetRegularAssignments globálny manažér práce Plánované úlohy

Manažér naplánovaných úloh

GetScheduledJobs (GetScheduledJobs)

Syntax:

GetRegular Tasks(<Отбор>)

Možnosti:

<Отбор>(voliteľné)

Typ: Štruktúra. Štruktúra, ktorá definuje výber. Hodnoty štruktúry môžu byť: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Ak výber nie je nastavený, získajú sa všetky naplánované úlohy.

Ak filtrujete podľa metaúdajov, ako hodnotu Metaúdajov môžete zadať buď objekt metaúdajov naplánovanej úlohy, alebo jeho názov.

Návratová hodnota:

Typ: Array.

Popis:

Získa pole naplánovaných úloh pre zadaný výber. Prijímanie naplánovaných úloh je možné len pre administrátora.

Dostupnosť:

Scheduled = ScheduledTasks.Get ScheduledTasks(Selection);

Pre každú naplánovanú z naplánovanej slučky Nový riadok = ScheduledTasksList.Add(); NewString.Metadata = Scheduled.Metadata.View(); NewLine.Name = Scheduled.Name; NewString.Key = Scheduled.Key; NewString.Schedule = Scheduled.Schedule; NewString.User = Regular.UserName; NewString.Predefined = Scheduled.Predefined; NewString.Usage = Regulatory.Usage; NewString.Identifier = Scheduled.UniqueIdentifier;

LastTask = Scheduled.LastTask; Ak LastQuest<>Undefined Then NewString.Running = LastTask.Start; NewString.Status = LastJob.Status; Koniec Ak; EndCycle;

Tvorba

Vytvorené metódou CreateRegularTask správcu naplánovaných úloh:

ScheduledJob = ScheduledJobs.Create ScheduledJob(MetadataChoice);

Naplánovaná úloha.Name = Názov; ScheduledTask.Key = Kľúč; ScheduledTask.Use = Použiť; ScheduledTask.UserName = UsersChoice; ScheduledTask.Number of RepetitionsWhen Crashing = Počet opakovaní When Crashing; ScheduledTask.RetryIntervalOnAccident = RetryIntervalOnAccident; ScheduledTask.Schedule = Plán; ScheduledTask.Write();

TaskObject = ScheduledTasks.Create ScheduledTask("ExecuteExchange");

TaskObject.Name = Názov; JobObject.Use = true;

Objekt úlohy má pole "Parametre", v ktorom sú nastavené parametre metódy:

ScheduledJob

možnosti(Parametre)

Použitie:

Čítanie a písanie.

Popis:

Typ: Array. Množstvo parametrov naplánovaných úloh. Počet a zloženie parametrov musí zodpovedať parametrom metódy plánovanej úlohy.

Dostupnosť:

Server, hrubý klient, externé pripojenie.

Poznámka:

Schopnosť čítať a zapisovať je dostupná iba administrátorovi.

Odstránenie

Odstránené metódou Delete() objektu úlohy:

ScheduledTask.Delete();

Získanie úlohy

  • zoznam pomocou metódy GetRegularTasks:

Scheduled = ScheduledTasks.Get ScheduledTasks(Selection);

  • prostredníctvom metódy FindByUniqueID manažéra úloh:

Task = ScheduledTasks.FindBy UniqueIdentifier(UID);

1C Enterprise má vo svojich konfiguráciách naplánované úlohy a úlohy na pozadí. Tieto úlohy sú naplánované podľa plánu pre každú úlohu. Niektoré z úloh sa na začiatku vykonávajú na časovači po určitom počte sekúnd, čo môže nepriaznivo ovplyvniť výkon a jednoznačne narúšať prácu v informačnej databáze.

Ak chcete upraviť naplánované úlohy a úlohy na pozadí na karte správy, vyberte vľavo "Pravidelné úlohy a úlohy na pozadí". Zobrazí sa zoznam existujúcich úloh, ich stav, plán a ďalšie informácie.

Niekoľkonásobným kliknutím na ktorúkoľvek z úloh sa otvorí okno s vlastnosťami tejto úlohy. Tu môžete zmeniť mnohé nastavenia podľa svojho vkusu, vrátane plánu tejto úlohy. Ak chcete zakázať úlohu, políčko „Povolené“ musí byť zrušené. Ale ak sa má úloha spustiť podľa plánu, je mimoriadne dôležité použiť samostatného používateľa s plnými právami pre všetky úlohy na pozadí.

Parametre harmonogramu úloh sú veľmi flexibilné, ale aj tak je žiaduce nastaviť všetky úlohy tak, aby bežala iba 1 úloha súčasne a najlepšie v mimopracovnom čase. Výnimkou môže byť len synchronizácia viacerých súvisiacich infobáz, napríklad podnikové účtovníctvo + mzdy a personálny manažment.

Stiahnutie bankového klasifikátora – nedeľa 4:30
Načítavanie výmenných kurzov - každý deň; 7:00
Extrahovanie textov - každý deň; 6:00.
Správy pre účty pracovného toku – každý deň; každých 10 800 sekúnd.
Aktualizácia jednotiek - každý deň; od 5:00:00 raz denne
Aktualizácia úloh účtovníka - každý deň; od 6:30:00 raz denne
Aktualizácia indexu PPD (fulltextové vyhľadávanie) - každý deň; každých 10 800 sekúnd.
Súhrnná prestavba - každý deň, podľa dňa v týždni [sobota]; od 3:00:00 raz denne
Prepočet aktuálnych hodnôt relatívnych dátumov zákazu zmien - každý deň; od 7:00:00 raz denne
Zlúčiť index PPD (úplné textové vyhľadávanie) - každý deň; od 4:00:00 raz denne
Odstránenie zastaraných informácií o synchronizácii - každý deň; od 3:30:00 raz denne
Nastavenie obdobia vypočítaných súčtov - každý deň, 5. deň v mesiaci; od 1:00:00 raz denne

Pri práci v 1C existuje veľa rutinných operácií, ktoré sa musia spustiť alebo vytvoriť podľa plánu vykonaním jednej alebo druhej akcie, napríklad: odosielanie dokumentov alebo sťahovanie údajov do 1C z lokality.

Nedávno som uverejnil článok: je čas to zautomatizovať:

Plánované úlohy a úlohy na pozadí

Mechanizmus úloh je navrhnutý tak, aby spúšťal akúkoľvek aplikáciu alebo funkciu podľa plánu alebo asynchrónne.

Mechanizmus úloh vykonáva tieto úlohy:

  • Schopnosť určiť rutinné postupy vo fáze konfigurácie systému;
  • Vykonávanie určených akcií podľa harmonogramu;
  • Vykonanie volania danej procedúry alebo funkcie je asynchrónne, t.j. bez čakania na jeho dokončenie;
  • Sledovanie postupu konkrétnej úlohy a získanie stavu jej dokončenia (hodnota označujúca úspech alebo zlyhanie jej vykonania);
  • Získanie zoznamu aktuálnych úloh;
  • Schopnosť čakať na dokončenie jednej alebo viacerých úloh;
  • Vedenie práce (možnosť zrušenia, zablokovania exekúcie a pod.).

Pracovný stroj pozostáva z nasledujúcich komponentov:

  • Metadáta naplánovaných úloh;
  • Plánované úlohy;
  • Pracovné miesta na pozadí;
  • Plánovač úloh.

Úlohy na pozadí a sú navrhnuté tak, aby spúšťali aplikačné úlohy asynchrónne. Úlohy na pozadí sú implementované pomocou vstavaného jazyka.

Naplánované úlohy a sú navrhnuté tak, aby vykonávali naplánované úlohy. Naplánované úlohy sú uložené v informačnej databáze a vytvárajú sa na základe metadát definovaných v konfigurácii. Metadáta naplánovanej úlohy obsahujú informácie, ako je názov, metóda, použitie atď.

Naplánovaná úloha má plán, ktorý určuje, v akom čase sa má vykonať metóda spojená s plánovanou úlohou. Plán sa spravidla nastavuje v informačnej databáze, ale dá sa nastaviť aj vo fáze konfigurácie (napríklad pre preddefinované naplánované úlohy).

Plánovač úloh sa používa na plánovanie vykonávania naplánovaných úloh. Pre každú naplánovanú úlohu plánovač pravidelne kontroluje, či sa aktuálny dátum a čas zhoduje s plánom naplánovanej úlohy. Ak sa zhoduje, plánovač naplánuje spustenie tejto úlohy. Na tento účel podľa tejto naplánovanej úlohy plánovač vytvorí úlohu na pozadí, ktorá vykoná skutočné spracovanie.

S popisom si myslím, že to stačí - prejdime k implementácii:

Vytvorenie plánovanej úlohy

Názov metódy– cesta k procedúre, ktorá sa vykoná v úlohe na pozadí podľa zadaného plánu. Postup musí byť v zdieľanom module. Odporúča sa nepoužívať typické spoločné moduly, ale vytvoriť si vlastné. Nezabudnite, že úlohy na pozadí bežia na serveri!

Použitie- znak použitia naplánovanej úlohy.

vopred určené– označuje, či je naplánovaná úloha preddefinovaná.

Ak chcete, aby naplánovaná úloha fungovala ihneď po umiestnení do databázy, zadajte znamienko vopred určené. V opačnom prípade budete musieť použiť spracovanie „Konzola úloh“ alebo zavolať úlohu, aby sa spustila programovo.

Počet opakovaní pri zlyhaní úlohy– koľkokrát bola úloha na pozadí reštartovaná, ak bola vykonaná s chybou.

Interval opakovania úlohy– ako často sa úloha na pozadí reštartuje, ak bola vykonaná s chybou.

Nastavenie rozvrhu

Rozvrh vykonanie úlohy:

Každú hodinu, len jeden deňPočet dní opakovania = 0, Obdobie opakovaniaPočas dňa = 3600
Každý deň raz za deňPočet dní opakovania = 1, Obdobie opakovaniaPočas dňa = 0
Jeden deň, razDni obdobia opakovania = 0
Každý druhý deň raz za deňPočet dní na opakovanie pokusu = 2
Každú hodinu od 01:00 do 07:00 každý deňRetryPeriodDays = 1RepeatPeriodDay = 3600StartTime = 01:00

Koniec = 07:00

Každú sobotu a nedeľu o 09.00 hodObdobie opakovania dní = 1 deň v týždni = 6, 7 Čas začiatku = 09:00
Každý deň uplynie jeden týždeň, týždeňObdobie opakovania dní = 1 Obdobie týždňov = 2
Raz o 01:00Čas začiatku = 01:00
Posledný deň každého mesiaca o 9:00.Obdobie opakovania dní = 1 Deň v mesiaci = -1 Čas začiatku = 09:00
Piaty v každom mesiaci o 9:00Obdobie opakovania dní = 1 Deň v mesiaci = 5 Čas začiatku = 09:00
Druhá streda v mesiaci o 9:00 hodOpakovanie PeriodDays = 1DayWeekInMonth = 2DaysWeek = 3

Čas začiatku = 09:00

Zvláštnosti vykonávania úloh na pozadí vo verziách súborov a klient-server

Mechanizmy na vykonávanie úloh na pozadí vo verziách súborov a klient-server sú odlišné.

Vo formáte súboru musíte vytvoriť vyhradený klientsky proces, ktorý bude vykonávať úlohy na pozadí. Na tento účel sa musí v klientskom procese pravidelne volať funkcia globálneho kontextu ExecuteJobProcessing. Iba jeden klientsky proces na infobázu by mal spracovávať úlohy na pozadí (a preto volať túto funkciu). Ak nebol vytvorený žiadny klientsky proces na spracovanie úloh na pozadí, potom sa pri programovom prístupe k nástroju úloh vygeneruje chyba „Správca úloh nie je aktívny“. Neodporúča sa používať klientsky proces, ktorý spracováva úlohy na pozadí pre iné funkcie.

Po spustení úloh spracovania klientskeho procesu na pozadí môžu ostatné klientske procesy programovo pristupovať k mechanizmu úloh na pozadí, t.j. môže spúšťať a spravovať úlohy na pozadí.

Vo verzii klient-server Na vykonávanie úloh na pozadí sa používa plánovač úloh, ktorý je fyzicky umiestnený v správcovi klastrov. Plánovač pre všetky úlohy na pozadí vo fronte získa najmenej zaťažený pracovný proces a použije ho na spustenie zodpovedajúcej úlohy na pozadí. Pracovný proces vykoná úlohu a oznámi plánovačovi výsledky vykonania.

Vo verzii klient-server je možné blokovať vykonávanie naplánovaných úloh. K blokovaniu vykonávania naplánovaných úloh dochádza v nasledujúcich prípadoch:

  • Na informačnej báze bolo nastavené explicitné blokovanie naplánovaných úloh. Zámok je možné nastaviť cez konzolu klastra;
  • Na informačnej báze bol nastavený blok pripojenia. Zámok je možné nastaviť cez konzolu klastra;
  • Metóda SetExclusiveMode() bola volaná zo vstavaného jazyka s parametrom True;
  • V niektorých iných prípadoch (napríklad pri aktualizácii konfigurácie databázy).

Spracovanie spustenia a prezeranie naplánovaných úloh môžete stiahnuť tu.

Správa naplánovaných úloh databáz 1C z aktualizátora

2018-11-20T15:18:30+00:00

V tejto poznámke sa pozrime na možnosti aktualizátora na správu naplánovaných úloh v databázach.

Najprv v položke „Viac“ -> „Spravovať naplánované úlohy ...“:

IN obsahové menu vyhradená základňa (alebo skupina základní):

A nakoniec v šablónach pre dávkové skripty (to vám umožňuje vykonávať operácie s naplánovanými úlohami zo skriptu podľa plánu):

Takto vyzerá dialóg pre správu naplánovaných úloh v databázach:

Aké úlohy umožňuje riešiť v požadovanú skupinu základy (alebo jeden základ)?

Výber naplánovaných úloh

Venujte pozornosť možnosti vybrať zoznam naplánovaných úloh v mnohých operáciách nižšie:

V dialógovom okne výberu však nemusia byť naplánované úlohy konkrétne pre vašu základňu:

V tomto prípade môžete zadať názvy plánovaných úloh, ktoré potrebujete, v časti „Vlastné úlohy ...“, napríklad takto:

Názvy takýchto naplánovaných úloh možno prevziať priamo zo správy o všetkých naplánovaných úlohách (je popísaná).

Zobrazenie aktuálneho stavu úloh

Ak to chcete urobiť, prejdite na kartu „Vybrať“ a stlačte tlačidlo „Vybrať...“:

Vo výsledkoch môžeme vidieť:

  1. Povolí alebo zakáže spustenie nových naplánovaných úloh na serveri 1C.
  2. Zoznam naplánovaných úloh v databáze.
  3. Ich rozvrh.
  4. Úlohy povolené alebo zakázané.
  5. Ak pri poslednom spustení úlohy došlo k chybe, táto chyba sa vedľa úlohy zobrazí červenou farbou.

V prípade potreby môžeme v nastaveniach funkcií zúžiť zoznam naplánovaných úloh, ako aj zobraziť iba povolené úlohy:

Vypnite všetky alebo niektoré úlohy

Ak to chcete urobiť, prejdite na kartu „Vypnúť“:

Všetky alebo vybrané naplánované úlohy zrušia začiarknutie políčka Použitie.

Tu je výsledok pre jeden základ (kliknutím rozbalíte)

Zahrňte všetky alebo niektoré úlohy

Ak to chcete urobiť, prejdite na kartu „Povoliť“:

Všetky alebo vybrané naplánované úlohy budú mať začiarknuté políčko Použitie.

Upozorňujeme, že na tejto karte sa zobrazuje príznak „Vytvoriť zálohovanie základňa“ v ľavom dolnom rohu.

Tu je výsledok pre jeden základ (kliknutím rozbalíte)

Riadime spúšťanie naplánovaných úloh na serveri 1C

Ak to chcete urobiť, prejdite na kartu „Server 1C“:

Vyberte „blokovať“ alebo „odblokovať“ a kliknite na tlačidlo „Spustiť“.

Nastavenie plánu úloh

Čo ak však potrebujeme nastaviť plán spúšťania úlohy (alebo skupiny úloh) v mnohých databázach naraz?

Ak to chcete urobiť, prejdite na kartu „Nastaviť plán“:

Nastavíme plán (dialógové okno a jeho možnosti sú úplne rovnaké ako bežné v samotnom 1C) a klikneme na „Nastaviť ...“.

Spustenie úloh na vykonanie

Ak to chcete urobiť, prejdite na kartu "Štart":

Vyberte požadované úlohy a kliknite na tlačidlo "Štart":

Uloženie nastavení úlohy do externého súboru

Predpokladajme, že máme ideálne nakonfigurované naplánované úlohy v jednej z databáz a chceme tieto nastavenia preniesť do všetkých ostatných databáz.

Aby sme to dosiahli, najprv nahráme všetky nastavenia úlohy v ideálnej databáze do externého súboru:

Obnovenie nastavení úlohy z externého súboru

A potom načítame tento súbor s nastaveniami úlohy do všetkých ostatných databáz:

Len si všimnite, že pre túto úlohu (prenos nastavení úlohy z jednej databázy do iných) som zvolil metódu zhody podľa názvu úlohy a nie podľa interného identifikátora.

slovo na rozlúčku

Vo všeobecnosti je to všetko, čo som chcel povedať. Sám vidím veľa scenárov používania nových funkcií, ale tu som len preletel hlavné body.

Pravdepodobne každý programátor 1C 8.3 musel skôr alebo neskôr nastaviť vykonávanie určitých úloh podľa plánu. Nižšie dám Detailný popis tieto mechanizmy, dúfam, že budú užitočná informácia pre začínajúcich programátorov 1C. To je veľmi výhodné, pretože to nevyžaduje ľudské akcie, naplánovaná úloha je nakonfigurovaná raz a funguje podľa vášho plánu.

Podrobný návod s príkladom nájdete nižšie.

Aké sú naplánované úlohy a úlohy na pozadí v 1C

  • Naplánované úlohy je špeciálny mechanizmus 1C enterprise 8.3 určený na vykonávanie konkrétnej akcie v danom rozvrhu.
  • Práca na pozadí- objekty generované naplánovanou úlohou, ktorá priamo vykonáva inherentnú akciu bez účasti používateľa alebo programátora 1C 8.2.

Mechanizmus naplánovaných úloh a úloh na pozadí funguje vďaka funkcionalite DBMS v režime klient-server (SQL). Ak máte databázu súborov, úlohu možno tiež nakonfigurovať, ale trochu iným spôsobom.

Nastavenie úloh na pozadí v prevádzkovom režime klient-server 1C

Na začiatok si vytvorme nový objekt metadát – naplánovanú úlohu. Svoju úlohu pomenujem „LoadingCurrency Rates“. Zvážte paletu vlastností tento objekt konfigurácie:

Získajte bezplatné video lekcie 267 1C:

  • Názov metódy— cesta k procedúre, ktorá sa vykoná v úlohe na pozadí podľa zadaného plánu. Postup musí byť v zdieľanom module. Odporúča sa nepoužívať štandardné, ale vytvoriť si vlastné. Nezabudnite, že úlohy na pozadí bežia na serveri!
  • Použitie- znak použitia naplánovanej úlohy.
  • vopred určené Označuje, či je naplánovaná úloha preddefinovaná. Ak chcete, aby naplánovaná úloha fungovala ihneď po umiestnení do databázy, zadajte tento príznak. V opačnom prípade budete musieť použiť spracovanie "Konzola úloh" alebo zavolať úlohu, aby sa spustila programovo.
  • Počet opakovaní pri zlyhaní úlohy— koľkokrát bola úloha na pozadí reštartovaná, ak bola vykonaná s chybou.
  • Interval opakovania úlohy- ako často sa úloha na pozadí reštartuje, ak bola dokončená s chybou.

A najzaujímavejšie nastavenie - Rozvrh:

Tu môžete nastaviť interval spustenia procedúry zadaný v poli "Názov metódy". Nechajte ma nastaviť

Pozor! Nezabudnite vypnúť blokovanie naplánovaných úloh a úloh na pozadí na úrovni DBMS!

Môžete to urobiť v administračnej utilite verzie klient-server alebo pri vytváraní novej databázy:

Nastavenie naplánovaných úloh v súborovom režime prevádzky 1C

IN súborový režim nastavenie takýchto úloh je o niečo náročnejšie. Pre takúto úlohu musí byť spustená samostatná relácia programu 1C. Často to rieši inštitúcia „technického“ používateľa, ktorého relácia vždy beží.

V režime súborov nastane inicializácia naplánovanej úlohy pri spustení metódy "ExecuteJobProcessing()".

Pre konkrétneho používateľa je možné nakonfigurovať túto metódu na spustenie pomocou inej metódy −

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

  • Názov procedúry— názov postupu spojeného ako obsluha čakania. Názov exportovanej procedúry pre modul riadenej aplikácie (bežný aplikačný modul) alebo globálny zdieľaný modul. Postup musí byť umiestnený na klientovi.
  • Interval— obdobie medzi vykonaním operácií v sekundách.
  • raz- ako dokončiť úlohu, raz alebo nie.

ConnectWaitingHandler, 3600 );

Dvojminútové video ukazuje, ako nastaviť naplánovanú úlohu v konfigurátore 1C:



Načítava...
Hore