Domov / Pracujte na internete / 1s rutinné úlohy servera. Univerzálna regulačná úloha. Úlohy na pozadí v režime súborov

1s rutinné úlohy servera. Univerzálna regulačná úloha. Úlohy na pozadí v režime súborov

1 Pracovný stroj
2 Úlohy na pozadí
3 Naplánované úlohy
4 Osobitosti vykonávania úloh na pozadí vo verziách súborov a klient-server
5 Vytvorenie metadát naplánovanej úlohy
6 Konzola úloh
7 Práca s naplánovanými úlohami
7.1 Predmety práce
7.2 Získanie zoznamu úloh
7.3 Tvorba
7.4 Vymazanie
7.5 Získanie predmetu práce

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. 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.

Ú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í. Akýkoľvek neglobálny postup alebo funkcia môže pôsobiť ako metóda úlohy na pozadí. spoločný modul, ktorý je možné vyvolať 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ú: vykonaná volaná metóda, názov, kľúč, schopnosť použitia, znak predurčenia atď. rutinná úloha, 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 vo verzii súboru je možné vytvárať a upravovať naplánované úlohy bez spúšťania 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 je úloha spustená daný dátum(metóda RequiredExecution objektu ScheduleRegularTasks). Naplánované úlohy sa vždy vykonávajú na meno konkrétneho používateľa. 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 z tohto dôvodu je naďalej spustená
že nie všetky operácie platformy je možné vrátiť späť. Ak sa vykoná cyklický kód vstavaný jazyk, potom úlohu zrušte
inak nemôže. 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. Iba jeden klientsky proces na infobázu by mal 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í klientskeho procesu, ktorý spracováva úlohy na pozadí, dostanú príležitosť ďalšie klientske procesy prístup k programu na mechanizmus ú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ého vyhľadávania“:

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: Task Console.epf

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ť:

Pre každú reguláciu regulačného cyklu
NewLine = ListRegulationTasks.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 je LastJob 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

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, tučný klient, vonkajší spoj.

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);

[pre zobrazenie odkazu sa musíte zaregistrovať]

Vytvorte naplánovanú úlohu

Vytvorme naplánovanú úlohu „Prebieha spracovanie“.

Zakážte používanie naplánovanej úlohy, aby sa nespustila automaticky pri aktualizácii konfigurácie.

Priraďte procedúru, ktorá sa spustí pri spustení naplánovanej úlohy:Modul Scheduled Tasks.Spracovanie naplánovaných úloh.

Samotný postup vyzerá takto:

Procedúra ScheduledTaskPerformanceProcessing(Key) Export

Parameters of Scheduled Tasks.PerformProcessing with Parameters(Key);

EndProcedure

Vytvárame adresár pre rutinné úlohy

Naša naplánovaná úloha môže vyvolať mnoho procesov na pozadí – jeden pre každé spracovanie. Každá úloha na platforme 1C8 má kľúč. Metóda plánovanej úlohy však nepozná kľúč úlohy na pozadí, takže musíte použiť parametre úlohy na pozadí. V dôsledku toho môžeme vidieť úlohu na pozadí v konzole úloh, ale nemôžeme manuálne vytvoriť úlohu na pozadí z tejto konzoly, pretože úlohy s manuálnymi parametrami sa nevytvárajú.

Adresár "Parametre naplánovaných úloh" :

Požiadavky :

· CodeBeforeLaunch- neobmedzený reťazec - kód v jazyku 1C, ktorý je potrebné vykonať pred spustením.

· Spracovanie z konfigurácie - reťazec (100) - ID spracovania z konfigurácie

· Spracovanie z adresára - riadok (100) - odkaz na prvok adresára "Externé spracovanie", ak je v konfigurácii taký

· Spustite cez aplikáciu 1C - boolean - vytvorí sa samostatná aplikácia 1C a v ňom sa spustí naplánovaná úloha. Vytvorené pre 8.1, kde nie sú dostupné všetky aplikačné metódy na serveri, kde beží naplánovaná úloha.

· LaunchCode- - neobmedzený reťazec - kód v jazyku 1C, ktorý sa vykoná pri spustení naplánovanej úlohy.

Vytvorte tvar prvku :

Kliknutím na tlačidlo „Vytvoriť registr. task" programovo vytvorí naplánovanú úlohu s kľúčovým kódom:

Postup MainActionsFormsCreateReglTask(Button)

premenná referencia;

Key = ShortLP(Code);

Task = ScheduledTasks.Create ScheduledTask("PerformingProcessing");

Task.Name = Kľúč;

Job.Key = Kľúč;

Parametre = New Array();

Options.Add(Key);

Task.Parameters = Parametre;

Task.Write();

EndProcedure

Spustenie plánovanej úlohy

Každá nami vytvorená naplánovaná úloha má kľúč:

Tento kľúč zodpovedá kódu adresára "Parametre naplánovaných úloh", hľadá sa pri spustení úlohy. Ak sa prvok slovníka nenájde, úloha sa nevykoná.

Ďalej, ak je uvedený kódCodeBeforeLaunch potom sa tento kód vykoná. Ďalej, ak premenná Splniť vyhodnotí ako nepravda, úloha sa nevykoná. Premenná dostupná v analýze možnosti, kde je uložený odkaz na nájdený prvok adresára "Parametre naplánovaných úloh".

V závislosti od zvolených hodnôt detailov sa spustí buď kód v jazyku 1C, alebo spracovanie začne od konfigurácie, alebo spracovanie začne od štandardnej referenčnej knihy „Externé spracovanie“.

Pre 1C81 je spustenie zabezpečené v novej aplikácii – aby ste mohli používať kód, ktorý je dostupný len na klientovi, vrátane využitia externého spracovania. Ak to chcete urobiť, začiarknite políčko „Spustiť aplikáciu 1C“. V opačnom prípade sa naplánovaná úloha vykoná na serveri.

Odporúčam nastaviť používateľa v poli "Používateľ" novovytvorenej naplánovanej úlohy tak, aby sa úloha vykonávala pod určitými právami. Odporúčam dať tomuto používateľovi plné práva. Mám užívateľa"robota».

Plán naplánovanej úlohy sa vytvorí hypertextovým odkazom „Plán“ z formulára plánovanej úlohy. Môžete použiť spracovanie "Konzola naplánovaných úloh".

Pravidelné čistenie registrov (napríklad informačný register "Verzie objektov" v konfigurácii SCP), vykonávanie výpočtov podľa plánu, zaúčtovanie dokumentov v určitom čase - to nie je ani zďaleka úplný zoznam akcie, ktoré možno realizovať pomocou rutinných úloh 1C.

Vytvorte úlohu

Nemáme za cieľ popísať kód spustiteľného modulu, ukážeme všeobecné zásady fungovanie a vytvorenie procedurálnej úlohy.

Regulačná úloha je nevyhnutná:

  1. Ak je v úlohe nastavenej ako jedna z podmienok potreba periodicky vykonávať určitý algoritmus;
  2. Ak sa kód musí vykonať bez ohľadu na akcie operátorov a používateľov databázy;
  3. Ak spustenie spustiteľnej procedúry nezávisí od vonkajších udalostí, ktoré sa vyskytujú s objektmi informačnú základňu.

Na jej vytvorenie je potrebné prejsť do infobáz v režime „Konfigurátor“. Ďalej v konfiguračnom strome nájdeme vetvu „Pravidelné úlohy“, nachádzajú sa na karte „Všeobecné“ a kliknite na tlačidlo „Pridať“ (obr. 1).

Pozrime sa bližšie na jeho okno vlastností (obr. 2):
Obr.2

  1. Názov, synonymum a komentár - pravidlá a princípy vypĺňania týchto polí sú podobné pre všetky konfiguračné objekty a nie je potrebné ich znovu popisovať;
  2. Názov metódy je procedúra všeobecného modulu, ktorá čo najpresnejšie popisuje požadovaný algoritmus (stlačením tlačidla výberu sa otvoria dostupné procedúry, ktorých znázornenie pozostáva z názvu všeobecného modulu a názvu procedúry v rôznych stĺpcoch stôl);
  3. Kľúč – neurčuje ani tak jedinečnosť procedurálnej úlohy, ale jedinečnosť proces na pozadí, spustený na základe úlohy, má limit dĺžky;
  4. Rozvrh - popisu tohto prvku budeme venovať samostatný odsek nášho článku;
  5. Použitie – zaškrtnutím tohto políčka sa určí aktivita úlohy, TRUE znamená, že úloha bude spustená a vykonaná podľa plánu;
  6. Preddefinované – ak má prvok toto zaškrtávacie políčko, tieto úlohy sa nedajú vymazať, vytvárajú sa automaticky pri uložení konfigurácie do databázy;
  7. Počet opakovaní - ak sa počas vykonávania vyskytne výnimka, reštartuje sa, aby nenastala nekonečná slučka, program obmedzí počet reštartov;
  8. Interval opakovania – čas v sekundách medzi reštartmi zlyhaných úloh.

Pozrime sa bližšie na harmonogram.

Plán naplánovanej úlohy

Obr.3

V prvom rade by ste mali venovať pozornosť spodnej časti okna, práve tam detailné informácie s rozpisom, ako často a v akom čase sa bude úloha vykonávať.

Karta Všeobecné:

  • Dátum začiatku úlohy;
  • Dátum ukončenia spracovania;
  • Frekvencia opakovania úlohy.

Ak na tejto karte nie sú zadané žiadne dátumy, nebude pre úlohu nastavený žiadny časový limit.

Záložka "Denne" (obr. 4)
Obr.4

Okrem vstupných polí pre čas začiatku a konca úlohy a frekvenciu jej spúšťania počas dňa obsahuje tabuľková časť Pre podrobné nastavenia frekvencia vykonávania.

Záložky „Denne“ a „Týždenne“ obsahujú informácie pre príslušné obdobia.

Funkcie fungovania

Vo verzii klient-server je vykonávanie naplánovaných úloh určené nástrojmi servera. Z administračnej konzoly môžete povoliť a zakázať možnosť spúšťania úloh pre konkrétnu databázu.

Situácia je oveľa komplikovanejšia so súborovou verziou práce. Pred určitým vydaním platformy sa vykonávanie procedúr na pozadí a naplánovaných procedúr vykonávalo iba vtedy, ak bola metóda ExecuteJobProcessing() aktivovaná pri štarte systému pod určitým používateľom. V tomto prípade boli algoritmy pravidelne spúšťané, pokiaľ bol používateľ, ktorý inicioval metódu, v programe.

V súčasnosti je práca úloh na pozadí v súborovej verzii práce rovnomerne rozdelená medzi používateľov autorizovaných v databáze, ak bol program spustený pomocou dodatočný parameter AllowExecuteSheduledJobs, je to tento proces, ktorý bude zodpovedný za bežnú údržbu.

Vymazaním alebo premenovaním súboru DoNotCopy.txt v priečinku s databázou môžete úplne zakázať vykonávanie prác na pozadí a údržby v databáze pracujúcej v súborovom režime. Prítomnosť tohto súboru hovorí platforme, že práca sa vykonáva v origináli a nie v kópii databázy.

Okrem toho v štandardných dodávkach 1C bolo možné riadiť plánovanú prácu priamo z programu bez toho, aby ste museli prejsť do „Konfigurátora“. V konfigurácii „ZUP“, verzia 3.1.3.223, môžete ovládací formulár otvoriť z menu Administrácia->Údržba->Plánované operácie->Plánované úlohy a úlohy na pozadí (obr. 5)
Obr.5

Otvorený formulár má intuitívne rozhranie a umožňuje:


Vykonávanie úlohy môžete spustiť aj priamo z formulára.

Otázka, ktorú sme nastolili v názve článku, je relevantná pre mnohých systémových administrátorov pracujúcich s týmto produktom. Pokiaľ je to možné, snažíme sa hovoriť o parametroch, ktoré ovplyvňujú výkon 1C a vyvracajú populárne mýty. Dnes vám na príklade jedného nedávneho prípadu chceme povedať o ďalšom aspekte, ktorý môže vážne ovplyvniť výkon – o naplánovaných úlohách.

Začnime skutočným prípadom. Nie je to tak dávno, čo nás kontaktoval jeden z našich klientov so sťažnosťou na „brzdy“ 1C od jedného z jeho zamestnancov. Symptómy boli vyjadrené v tom, že po určitom čase sa konfigurácia Trade Management 10 začala veľmi spomaľovať, alebo, inými slovami, na chvíľu visela.

Pri podrobnejšom rozbore situácie sa ukázalo, že sa to stáva iba jednému zamestnancovi a na akomkoľvek pracovisku sa to deje dlhodobo, ale ak skôr „brzdy“ trvali asi sekundu, teraz po aktualizácii, môžu trvať až 15-20 sekúnd, čo mimoriadne znepríjemňuje prácu.

V zásade už počiatočné údaje stačia na vyvodenie prvých záverov. Zoberme si ich znova:

  • "Brzdy" sa vyskytujú neustále, s určitou frekvenciou
  • "Spomalí" len pre jedného používateľa
  • "Spomalí" na akomkoľvek pracovisku

Aby sme potvrdili naše dohady, pozrime sa na to Nastavenia účtovníctva:

V skutočnosti je „problémový“ používateľ uvedený ako používateľ na vykonávanie rutinných úloh. Ako sa ukázalo, kedysi v mene tohto používateľa fungovala úloha automatickej výmeny RIB. Zostáva zistiť, čo presne bolo príčinou epizodického „brzdenia“. Toto je tiež jednoduché:

A tu je „hrdina príležitosti“ - úloha aktualizovať index fulltextového vyhľadávania, ktorý sa spúšťal raz za 2,5 minúty. V tomto prípade bol problém úplne vyriešený zakázaním vykonávania naplánovaných úloh pod týmto používateľom, čo však nie je vždy možné alebo vhodné, preto nižšie zvážime, ako možno naplánované úlohy spravovať a ako zabezpečiť, aby nemali negatívny vplyv na výkon.

Všeobecná aplikácia

V konfiguráciách založených pravidelná aplikácia neexistuje jediný súbor nástrojov na riadenie rutinných úloh. Je to do značnej miery spôsobené tým, že v čase ich počiatočného vývoja bol samotný koncept procedurálnych úloh vypracovaný dosť slabo.

Mnohé naplánované úlohy sú riadené prostredníctvom konfigurácie podsystémov, ktoré sú s nimi spojené. Napríklad nastavenia rutinných úloh súvisiacich s výmenou údajov by ste mali hľadať v nastaveniach výmeny súvisiacich s Jednotným štátnym automatizovaným informačným systémom v nastaveniach obchodu s alkoholom atď.

Na prvý pohľad je všetko celkom logické, no nedostatok jediného nástroja sťažuje kontrolu nad nakonfigurovanými naplánovanými úlohami a optimálnosť ich nastavení. No, ak existuje jedna alebo dve úlohy a ak ich je viac, alebo ako v našom prípade existuje podozrenie na niektorú z naplánovaných úloh, ale netušíte, kto a čo v tejto databáze nastavil.

V tomto prípade by ste mali použiť externé spracovanie ConsoleQuests (JobsConsole), ktorý je súčasťou sady štandardného spracovania na disku ITS. Processing poskytuje jednotné rozhranie pre všetky úlohy a umožňuje vám ich centrálne konfigurovať, ako aj riadiť aktuálne spustené úlohy.

Tento zoznam by sa mali dôkladne preštudovať, všetky nepotrebné úlohy by sa mali vypnúť a tie potrebné by sa mali naplánovať v súlade s naliehavými potrebami a zdravým rozumom. Napríklad v našom prípade nie je potrebné spracovávať odpovede EGAIS raz za 30 sekúnd (toto nastavenie je určené na testovanie) a v prevádzkovom režime to bude stačiť povedzme raz za pol hodinu.

Spravovaná aplikácia

V konfiguráciách založených na riadenej aplikácii zohrávajú naplánované úlohy významnejšiu úlohu, dajú sa použiť na vykonávanie rôznych úloh na udržiavanie a aktuálnosť infobáz, no zároveň sú to práve naplánované úlohy, ktoré najčastejšie spôsobujú „ brzdy“.

Na zvládnutie bežných úkonov je v menu položka hotel Administrácia – podpora a údržba.

Okamžite možno poznamenať, že úlohy sa výrazne zvýšili (napríklad sme vzali rovnakú konfiguráciu - Maloobchod) a ich kompetentná konfigurácia môže výrazne zlepšiť výkon informačnej základne. Predvolené nastavenia robí 1C na základe potrieb priemernej sférickej firmy vo vákuu a nie sú ani zďaleka optimálne.

V prvom rade deaktivujeme to, čo je zjavne zbytočné, s čím nepracujete. Potom optimalizujeme rozvrh málo používaných funkcií, napríklad aktualizáciu bankového klasifikátora v Retaile, ako aj kontrolu protistrán možno vykonať raz týždenne v mimopracovnej dobe alebo na konci (začiatku) pracovného dňa.

Osobitná pozornosť by sa mala venovať všetkému, s čím súvisí vyhľadávací index. Fulltextové vyhľadávanie určite pohodlná vec, ale práca s jeho indexom je veľmi, veľmi náročná na zdroje. Preto by ste nemali ísť do extrémov a opustiť ho, ale mali by ste vážne preskúmať a upraviť jeho parametre.

Začnime s extrakcia textu, táto operácia vám umožňuje prehľadávať obsah priložených súborov, takže ak ich nepoužívate, nehľadáte, alebo tam máte len obrázky, tak túto operáciu možno ho v každom prípade zakázať, aby sa vykonal raz za 85 sekúnd - zrejmý zoznam.

Aktualizácia indexu PPA- jedna z najnáročnejších operácií na zdroje, štandardne sa vykonáva raz za minútu.

Teraz sa zamyslime nad tým, ako často sa pridávajú alebo aktualizujú informácie v databáze, ktorú najčastejšie vyhľadávate? Je zrejmé, že nie každú minútu, takže bude stačiť aktualizovať index oveľa menej často: raz za hodinu, raz za deň alebo dokonca raz za týždeň.

To isté platí pre zlúčenie indexu PPD, ak aktualizujete index raz denne, mali by ste nastaviť spustenie zlúčenia raz týždenne, pričom ako začiatok úlohy by ste mali zvoliť najmenej rušivý čas.

Tieto jednoduché operácie vám umožnia bez veľkého poškodenia funkčnosti konfigurácie zvýšiť komfort práce s ňou nová úroveň odmietnutím častého vykonávania operácií náročných na zdroje. Len nechoďte do extrémov, správne posúďte, ako veľmi potrebujete určité funkcie a ako často by ste mali vykonávať úlohy s nimi spojené.

  • Značky:

Ak chcete zobraziť, povoľte JavaScript

Používatelia sa často sťažujú, že „1C 8.3 sa spomaľuje“: formuláre dokumentov sa otvárajú pomaly, dokumenty sa odosielajú dlho, program sa spúšťa, zostavy sa generujú dlho atď.

Okrem toho sa takéto „chyby“ môžu vyskytnúť v rôznych programoch:

Dôvody môžu byť rôzne. Nie je to obnovené, drží papiere, slabý počítač alebo server, server 1C je nesprávne nakonfigurovaný.

V tomto článku chcem zvážiť jeden z najjednoduchších a najbežnejších dôvodov pomalá práca programy - . Tento pokyn bude relevantná pre používateľov súborových databáz pre 1-2 používateľov, kde neexistuje konkurencia o zdroje.

Ak máte záujem o serióznejšiu optimalizáciu klient-server možností pre systém, navštívte sekciu stránky.

Kde sú naplánované úlohy v 1C 8.3

Predtým, ako som mal čas načítať program, bolo v 1C dokončených veľa úloh na pozadí. Môžete si ich pozrieť tak, že prejdete do ponuky "Správa" a potom - "Podpora a údržba":

Získajte 267 1C video lekcií zadarmo:

Takto vyzerá okno s dokončenými úlohami:

A tu je úplný zoznam všetkých naplánovaných úloh, ktoré sa spúšťajú:

Medzi týmito úlohami sú viditeľné „“, načítanie rôznych klasifikátorov, kontrola relevantnosti verzie programu atď. Ja napríklad nepotrebujem takmer všetky tieto úlohy. Menovú evidenciu nevediem, verzie kontrolujem sám, podľa potreby nahrávam klasifikátory.

Preto je v mojom (a vo väčšine prípadov aj vo vašom) záujme deaktivovať nepotrebné úlohy.

Zakázanie naplánovaných úloh a úloh na pozadí v 1C 8.3