Proces úlohy na pozadí 8.3 zlyhal. Rutinné úlohy a úlohy na pozadí (1Cv8)

Proces úlohy na pozadí 8.3 zlyhal.  Rutinné úlohy a úlohy na pozadí (1Cv8)
Proces úlohy na pozadí 8.3 zlyhal. Rutinné úlohy a úlohy na pozadí (1Cv8)

Umožňuje nám vykonávať akékoľvek výpočty v systéme nepozorovane používateľom, teda na pozadí. Tento mechanizmus nám navyše umožňuje paralelizovať proces výpočtu. Môžeme dokonca paralelizovať postup, ktorý sa vykoná. Aby to bolo možné, naša úloha na pozadí musí spustiť niekoľko ďalších úloh na pozadí. V tomto prípade sú procesy paralelizované a ak máme viacprocesorový, viacjadrový systém, náš algoritmus bude fungovať efektívne. Po spustení niekoľkých procesov môžeme systému povedať, že musí počkať na dokončenie týchto procesov, aby mohol výsledok nejako skombinovať.

Napríklad v typických konfiguráciách, keď používateľ pracuje, sa vykonávajú rôzne druhy úloh služby na pozadí. Dôkazom toho môžu byť záznamy v protokole, ktoré zaznamenávajú skutočnosť, že takéto akcie boli vykonané. Navyše to žiadnym spôsobom neovplyvňuje prácu používateľa, jednoducho si ich nevšimne.

V ideálnom prípade je úloha na pozadí implementovaná vo verzii klient-server, v takom prípade ide celá záťaž na server. Čo sa týka možnosti súboru, práce práca na pozadí je to možné, ale má to určité zvláštnosti.

To je to, čo systém vytvorí, ak neberiete do úvahy tieto funkcie a spustíte úlohu na pozadí vo verzii súboru infobázy.


Úloha 1C na pozadí má určité obmedzenia. Keďže beží na strane servera, nie je tu možnosť interaktívnej práce s používateľom. Nemôžete napríklad zobraziť správu ani žiadne informácie. Všetky tieto údaje je potrebné uchovávať v rámci informačnej základne a ďalej ich nejakým spôsobom spracovávať.
Kontaktovaním asistenta syntaxe môžete získať podrobnejšie informácie o úlohách na pozadí 1C. Tu je potrebné poznamenať, že tento objekt je čisto softvérový a nie je nijako uložený v databáze. To znamená, že vytvoríme inštanciu triedy, inicializujeme vlastnosti a spustíme ju na vykonanie.

Aké nástroje máme na správu úloh na pozadí? Toto zariadenie je objekt metadát "Správca úloh na pozadí". Tento objekt má metódu "beh" pomocou tejto metódy sa spustí úloha na pozadí.

Má nasledujúce parametre:
"názov metódy"- názov procedúry alebo funkcie, ktorá sa má vykonať, a musí to byť procedúra alebo funkcia kontextu servera;

"Možnosti"- pole parametrov, ktorých počet prvkov musí zodpovedať počtu parametrov našej procedúry/funkcie špecifikovaných v parametri "názov metódy";

"kľúč"- určitý kľúč jedinečnosti, čo je riadok, pomocou ktorého systém pochopí, či je potrebné spustiť úlohu na pozadí alebo či už takáto úloha beží;

"Názov"- tu môžete zadať ľubovoľný popis našej metódy.

Návratová hodnota je objekt "Úloha na pozadí", ktorý obsahuje názov aktuálnej metódy, aktuálny kľúč a niekoľko ďalších vlastností a metód. Jednou z takýchto metód je metóda "Počkať dokončené". Jeho účelom je povedať systému, aby nerobil nič, kým sa nedokončí úloha na pozadí.

Úloha pozadia 1C 8.2, 8.3 - Príklad použitia

Uveďme príklad práce s úlohami na pozadí 1C. Najprv si vytvoríme jednoduchý algoritmus, ktorý krátkodobo načíta systém 1C tak, aby sme v tejto chvíli nemohli nič robiť.

Pre to:

1. Vytvorme spoločný modul "Obslužné nástroje na pozadí úloh", ktorý bude zostavený na strane servera;


2. Popíšeme si v ňom postup exportu "ProduceBackgroundCalculation (Parameter)", ktorý preberá jeden parameter typu reťazec;

Procedure PerformBackgroundCalculation(Parameter) ExportStartTime = CurrentDate() ; Kým CurrentDate() - Čas začiatku< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление("nejaký parameter"); EndProcedure
Pripravený. Teraz, keď začnete spracovávať a stlačíte tlačidlo, systém na niekoľko sekúnd zamrzne, počas ktorých sa nedá nič robiť. Presne toto sme potrebovali urobiť.

Teraz zabezpečíme, aby sa tieto výpočty vykonávali na pozadí, to znamená, že úloha na pozadí 1C 8.2, 8.3 sa vykoná, ale nezasahuje do nás.

Pre to:

1. Pri spracovaní napíšte do udalosti kliknutia na tlačidlo nasledujúci kód.

Procedúra KnPress() Parametre = Nové pole; Možnosti. Pridať( "nejaký parameter"); BackgroundTask. Spustiť ( "BackgroundTask Handlers. Perform BackgroundComputation", Parametre, Nový UniqueIdentifier, "test"); EndProcedure

Tu odovzdáme názov procedúry spoločného modulu ako prvý parameter a pole parametrov ako druhý. Tretiemu parametru je potrebné odovzdať jedinečný kľúč a štvrtému parametru nejaký popis nášho postupu.

Pravdepodobne ani jedna seriózna konfigurácia na 1C 8.3 alebo 8.2 sa nezaobíde bez použitia rutinných úloh a úloh na pozadí. Sú veľmi pohodlné, pretože sa budú vykonávať podľa jasne definovaného plánu bez zásahu používateľa alebo programátora.

Raz za deň si napríklad potrebujete vymeniť dáta s iným programom. Pomocou rutinných úloh a úloh na pozadí bude spoločnosť 1C schopná vykonávať tieto akcie nezávisle, napríklad počas mimopracovných hodín. Táto metóda žiadnym spôsobom neovplyvní používateľskú skúsenosť a pomôže ušetriť čas.

Po prvé, poďme zistiť, čo znamenajú a aký je ich rozdiel:

  • Naplánovaná úloha umožňuje spustiť akékoľvek špecifické akcie podľa vopred nakonfigurovaného plánu.
  • Práca na pozadí je objekt, ktorý obsahuje akcie, ktoré sa majú vykonať.

Predpokladajme, že naša spoločnosť niečo predáva a má vlastnú webovú stránku, kde sa nachádzajú ceny. Chceme ich nahrať raz denne, aby sme zachovali relevantnosť.

Otvorte konfiguráciu a pridajte naplánovanú úlohu.

Nastavenie vlastností

Pozrime sa na najdôležitejšie parametre, ktoré je potrebné vyplniť v jeho vlastnostiach.

  • V poli" Názov metódy» vyberie postup konkrétneho všeobecného modulu, ktorý sa priamo vykoná. Označí všetky kroky na nahranie cien na našu webovú stránku. Upozorňujeme, že spustenie bude prebiehať na serveri. Je to logické, pretože rutinné operácie sa vykonávajú bez účasti používateľa.
  • Naplánovanú úlohu je možné podľa potreby deaktivovať alebo povoliť. Nie je potrebné zakaždým upravovať jeho rozvrh. Ak to chcete urobiť, na palete vlastností nastavte alebo zrušte príznak " Použitie».
  • Ďalšou dôležitou vecou je nastaviť, či táto rutinná úloha bude vopred určené, alebo nie. Preddefinované rutinné úlohy sa spúšťajú automaticky. Ak tento príznak nie je nainštalovaný, budete ich musieť spustiť programovo alebo použiť spracovanie „Konzola úloh“ s ITS.
  • Môžete tiež špecifikovať počet opakovaní a interval medzi nimi v prípade abnormálneho ukončenia. Abnormálne ukončenie sa týka situácií, keď úlohy neboli dokončené z dôvodu chyby.

Nastavenie harmonogramu

Posledným krokom je nastavenie plánu nahrávania na stránku pomocou príslušného hypertextového odkazu na palete vlastností.

Typické nastavenie plánu uvidíte v 1C 8.3. Nie je tu nič zložité. Vnútri tento príklad Nastavili sme spustenie nášho nahrávania cien na stránku denne od piatej do siedmej ráno. V prípade, že sa naplánovaná úloha nestihne dokončiť do 7:00, bude dokončená hneď nasledujúci deň.

Blokovanie naplánovaných úloh

Spustite štandardný nástroj „Správa podnikových serverov 1C“ a otvorte vlastnosti informačnej databázy, v ktorej ste vytvorili rutinnú úlohu (pre verzie klient-server 1C).

V okne, ktoré sa otvorí (po zadaní prihlasovacieho mena a hesla pre prístup k informačnej bezpečnosti), skontrolujte, či nie je začiarknuté políčko „Blokovanie rutinných úloh je povolené“. Ak narazíte na situáciu, keď úloha nefunguje, skontrolujte najskôr toto nastavenie.

Rovnakým spôsobom môžete úplne zakázať rutinné úlohy v 1C 8.3. Ak chcete zakázať konkrétne úlohy na pozadí, môžete použiť spracovanie „Konzola úloh na pozadí“ zabudované do najnovších vydaní.

Úlohy na pozadí a naplánované úlohy v režime súborov

V tomto režime je nastavenie a spustenie týchto úloh oveľa náročnejšie na organizáciu. Najčastejšie dodatočné účtu, ktorej relácia bude vždy otvorená.

V tomto prípade sa rutinné úlohy aktivujú pomocou metódy „RunTaskProcessing()“.

Môžete tiež použiť nasledujúcu konštrukciu:

Ako názov procedúry musíte zadať názov klientskej procedúry, ktorá sa vykoná. Interval ukazuje, o koľko sekúnd neskôr sa vykoná vykonanie. Parameter „Jednoraz“ sa nevyžaduje. Odráža, či sa tento postup vykoná raz alebo niekoľkokrát.

Sledovanie chýb v úlohách na pozadí

Pozrite si priebeh úloh na pozadí, ako aj dostupnosť možné chyby nájdete v knihe jázd. Vo filtri vyberte aplikáciu „Pozadie práce“ a v prípade potreby vyberte dôležitosť záujmu, napríklad len „Chyby“.

V denníku sa zobrazia všetky záznamy, ktoré zodpovedajú vášmu výberu, spolu s komentárom, ktorý vám pomôže pochopiť dôvod chyby.

Pracovný mechanizmus

Nástroj úloh je navrhnutý tak, aby vykonával akúkoľvek aplikáciu alebo funkciu podľa plánu alebo asynchrónne.

Mechanizmus úloh rieši tieto úlohy:

  • Schopnosť definovať regulačné postupy vo fáze konfigurácie systému;
  • Vykonávanie určených akcií podľa harmonogramu;
  • Uskutočnenie volania danej procedúry alebo funkcie asynchrónne, t.j. bez čakania na jeho dokončenie;
  • Sledovanie priebehu konkrétnej úlohy a získanie stavu jej dokončenia (hodnota označujúca, či bola úspešná alebo nie);
  • 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.).

Mechanizmus práce pozostáva z nasledujúcich komponentov:

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

Úlohy na pozadí sú navrhnuté tak, aby vykonávali úlohy aplikácie asynchrónne. Úlohy na pozadí sú implementované pomocou vstavaného jazyka.

Naplánované úlohy – určené na vykonávanie aplikovaných úloh podľa plánu. Naplánované úlohy sú uložené v informačnú základňu a sú vytvorené na základe metadát definovaných v konfigurácii. Metadáta regulačnej úlohy obsahujú informácie, ako je názov, metóda, použitie atď.

Rutinná úloha má plán, ktorý určuje, kedy sa musí vykonať metóda spojená s rutinnou úlohou. Plán je spravidla špecifikovaný v informačnej báze, ale môže byť špecifikovaný aj vo fáze konfigurácie (napríklad pre preddefinované rutinné úlohy).

Plánovač úloh sa používa na plánovanie vykonávania rutinných úloh. Pre každú naplánovanú úlohu plánovač pravidelne kontroluje, či je Aktuálny dátum a čas na plán rutinných úloh. Ak sa zhoduje, plánovač priradí túto úlohu na vykonanie. Na tento účel plánovač pre túto naplánovanú úlohu vytvorí úlohu na pozadí, ktorá vykoná skutočné spracovanie.

Úlohy na pozadí

Úlohy na pozadí sú vhodné na vykonávanie zložitých výpočtov, keď získanie výsledku výpočtu môže trvať dlho. Nástroj úloh má prostriedky na vykonávanie takýchto výpočtov asynchrónne.

S úlohou na pozadí je spojená metóda, ktorá sa volá pri spustení úlohy na pozadí. Metóda úlohy na pozadí môže byť ľubovoľná procedúra alebo funkcia neglobálneho spoločného modulu, ktorú možno volať na server. 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 daným názvom metódy úlohy na pozadí (názov metódy pozostáva z názvu modulu a názvu procedúry alebo funkcia). Kľúč vám umožňuje zoskupiť úlohy na pozadí, ktoré majú rovnaké metódy podľa špecifickej charakteristiky aplikácie, takže v rámci jednej skupiny sa nevykoná viac ako jedna úloha na pozadí.

Úlohy na pozadí sa vytvárajú a spravujú programovo z akéhokoľvek pripojenia. Každý používateľ môže vytvoriť úlohu na pozadí. Okrem toho sa vykonáva v mene používateľa, ktorý ho vytvoril. Prijímanie úloh, ako aj čakanie na ich dokončenie je povolené z akéhokoľvek pripojenia k používateľovi s oprávneniami správcu alebo používateľovi, ktorý tieto úlohy na pozadí vytvoril.

Úloha na pozadí je čisto objekt relácie a nepatrí do žiadnej relácie používateľa. Pre každú úlohu sa vytvorí špeciálna systémová relácia spustená v mene užívateľa, ktorý uskutočnil hovor. Ú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č procesmi klastrových pracovníkov, č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í a čakaním na dokončenie každej z nich v hlavnej úlohe na pozadí.

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

Plánované úlohy

Naplánované úlohy sa používajú, keď je potrebné vykonať určité periodické alebo jednorazové akcie podľa plánu.

Naplánované úlohy sú uložené v informačnej báze a vytvárajú sa na základe metadát rutinnej úlohy definovanej v konfigurácii. Metadáta špecifikujú také parametre rutinnej úlohy, ako sú: volaná metóda, názov, kľúč, možnosť použitia, znak predurčenia atď. Pri vytváraní rutinnej úlohy môžete dodatočne špecifikovať plán (môže byť špecifikovaný v metadátach), hodnoty ​parametrov metódy, meno používateľa, v mene ktorého vykonáva rutinné úlohy atď.

Tvorba a riadenie rutinné úlohy spúšťa sa programovo z akéhokoľvek pripojenia a je povolený iba používateľom s právami správcu.

Poznámka. Pri práci v súborovej verzii je možné vytvárať a upravovať rutinné úlohy bez spúšťania plánovača úloh.

S rutinnou úlohou je spojená metóda, ktorá sa volá pri vykonávaní rutinnej úlohy. Metóda rutinnej úlohy môže byť ľubovoľná procedúra alebo funkcia neglobálneho spoločného modulu, ktorú možno volať na server. Parametre rutinnej úlohy môžu byť ľubovoľné hodnoty, ktoré sa môžu prenášať na server. Parametre rutinnej úlohy sa musia presne zhodovať s parametrami procedúry alebo funkcie, ktorú volá. Ak je metódou rutinnej úlohy funkcia, jej návratová hodnota sa ignoruje.

Rutinná úloha môže mať kľúč – akúkoľvek aplikačnú hodnotu. Kľúč zavádza obmedzenie spúšťania naplánovaných úloh, pretože za jednotku času možno medzi rutinnými úlohami spojenými s rovnakým objektom metaúdajov vykonať iba jednu rutinnú úlohu so špecifickou hodnotou kľúča. Kľúč vám umožňuje zoskupiť rutinné úlohy spojené s rovnakým objektom metaúdajov podľa špecifickej charakteristiky aplikácie tak, aby sa v rámci jednej skupiny nevykonávala viac ako jedna rutinná úloha.

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

Plán rutinnej úlohy určuje, kedy by sa mala rutinná ú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, do ktorých musí byť naplánovaná úloha vykonaná atď. (pozri popis vstavaného v jazyku).

Príklady plánov rutinných úloh:

Každú hodinu, len jeden deň

Obdobie RepeatDays = 0, RepeatDays Period = 3600

Každý deň raz za deň

Obdobie RepeatDays = 1, RepeatDays Period = 0

Jeden deň, raz

PeriodRepeatDays = 0

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

PeriodRepeatDays = 2

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

PeriodRepeatDays = 1

Opakovanie počas dňa = 3600

Čas začiatku = 01:00

Koniec = 07:00

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

PeriodRepeatDays = 1

Dni v týždni = 6, 7

Čas začiatku = 09:00

Každý deň po dobu jedného týždňa, týždeň preskočte

PeriodRepeatDays = 1

Obdobie Týždne = 2

Raz o 01:00

Čas začiatku = 01:00

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

PeriodRepeatDays = 1

Deň v mesiaci = -1

Čas začiatku = 09:00

Piaty deň každého mesiaca o 9:00

PeriodRepeatDays = 1

Deň v mesiaci = 5

Čas začiatku = 09:00

Druhá streda v mesiaci o 9:00

PeriodRepeatDays = 1

DayWeekInMonth = 2

Dni v týždni = 3

Čas začiatku = 09:00

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

Rutinné ú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 rutinná úloha už spustená, nespustí sa znova bez ohľadu na jej plán.

Naplánované úlohy je možné reštartovať. To platí najmä vtedy, keď sa musí zaručiť vykonanie metódy rutinnej úlohy. Rutinná ú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 bola rutinná úloha vykonaná, nenormálne ukončí. V naplánovanej úlohe môžete určiť, koľkokrát je potrebné reštartovať, ako aj interval medzi reštartmi. Pri implementácii metódy reštartovateľnej rutinnej úlohy musíte vziať do úvahy, že po reštarte sa jej vykonávanie začne od začiatku a nebude pokračovať od okamihu abnormálneho ukončenia.

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

* Úloha na pozadí ju môže ignorovať automatické zrušenie, ak nezamrzne, ale pokračuje v práci ten dôvodže nie všetky operácie platformy je možné zrušiť. Ak sa splní cyklický kód vstavaný jazyk, potom možno úlohu zrušiť, inak nie. Všetko závisí od toho, čo práca robí. * Čas ukončenia – hranica, v rámci ktorej môže úloha začať a nie skončiť? * Nútené ukončenie úlohy vráti späť zmeny vykonané na začiatku transakcie?

Funkcie vykonávania úloh na pozadí vo variantoch súborov a klient-server

Mechanizmy vykonávania ú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 musí klientsky proces pravidelne volať funkciu globálneho kontextu ExecuteJobProcessing. Úlohy na pozadí by mal spracovávať iba jeden klientsky proces na informačnú základňu (a podľa toho volať túto funkciu). Ak nebol vytvorený klientsky proces na spracovanie úloh na pozadí, pri programovom prístupe k nástroju úloh sa zobrazí 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 na pozadí klientskeho procesu môžu ostatné klientske procesy softvérový prístup 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. Pre všetky úlohy na pozadí vo fronte dostane plánovač 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 rutinných úloh. Vykonávanie rutinných úloh je zablokované v nasledujúcich prípadoch:

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

Vytváranie metadát pre rutinnú úlohu

Predtým, ako programovo vytvoríte rutinnú úlohu v informačnej databáze, musíte pre ňu vytvoriť objekt metadát.

Ak chcete vytvoriť metaúdajový objekt pre rutinnú úlohu v konfiguračnom strome vo vetve „Všeobecné“ pre vetvu „Rutinné úlohy“, spustite príkaz „Pridať“ a na palete vlastností vyplňte nasledujúce vlastnosti rutinnej úlohy:

Názov metódy - uveďte názov metódy rutinnej úlohy.

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

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

Na karte „Všeobecné“ sú uvedené dátumy začiatku a konca úlohy a režim opakovania.

Na karte „Denne“ je uvedený denný plán úlohy.

Uveďte svoj rozvrh:

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

Je možné zadať ľubovoľnú kombináciu podmienok.

Na karte „Týždenne“ je uvedený týždenný plán úlohy.

Začiarknite políčka pre dni v týždni, v ktorých sa bude úloha vykonávať. Ak chcete úlohu zopakovať, zadajte interval opakovania v týždňoch. Napríklad úloha sa vykoná za 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 vykonaná. V prípade potreby môžete určiť konkrétny deň (mesiac alebo týždeň) exekúcie 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í v prípade abnormálneho ukončenia – udáva počet opakovaní v prípade abnormálneho ukončenia.

Interval opakovania pri abnormálnom ukončení – určuje interval opakovania pri abnormálnom ukončení. Príklady

Vytvorenie úlohy na pozadí „Aktualizácia indexu fulltextového vyhľadávania“:

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

Vytvorenie rutinnej úlohy „Obnova sekvencií“:

Schedule = New ScheduleTask; Schedule.PeriodRepeatDays = 1; Schedule.RepeatPeriodDuringDay = 0;

Task = RoutineTasks.CreateRoutineTask("Obnovenie sekvencií"); Job.Schedule = Rozvrh; Task.Write();

Pracovná konzola

Spracovanie s ITS, riadi rutinné úlohy:

Práca s rutinnými úlohami

Objekty 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 existuje vždy presne v jednej inštancii. Takýto objekt nie je možné vymazať.

Ak nie je nastavený príznak "Preddefinované", 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ť pomocou metódy Získajte rutinné úlohy globálny manažér práce Rutinné úlohy

ScheduledJobsManager

Získajte ScheduledJobs (GetScheduledJobs)

Syntax:

Získať rutinné úlohy(<Отбор>)

Možnosti:

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

Typ: Štruktúra. Štruktúra definujúca výber. Hodnoty štruktúry môžu byť: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Ak výber nie je špecifikovaný, získajú sa všetky rutinné úlohy.

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

Návratová hodnota:

Typ: Array.

Popis:

Prijíma celý rad rutinných úloh pre daný výber. Prijímanie naplánovaných úloh je možné len pre administrátora.

Dostupnosť:

Rutina = RoutineTasks.GetRoutineTasks(Selection);

Pre každú rutinu cyklu rutiny Nový riadok = zoznam úloh rutiny.Add(); NewRow.Metadata = Regular.Metadata.View(); NewLine.Name = Regular.Name; NewString.Key = Bežný.Kľúč; NewLine.Schedule = Schedule.Schedule; NewLine.User = Regular.UserName; NewString.Predefined = Regular.Predefined; NewString.Use = Regular.Use; NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask; Ak LastTask<>Undefined Then NewRow.Running = LastTask.Start; NewRow.State = LastTask.State; koniec Ak; EndCycle;

Tvorba

Vytvorené metódou Create RoutineTask pre manažéra rutinných úloh:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Name = Meno; RegularTask.Key = Kľúč; RegularTask.Use = Použitie; RoutineTask.UserName = UsersSelection; RoutineTask.Number of RepetitionsAtEmergencyCompletion =Počet opakovaníAtEmergencyCompletion; ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion; ScheduleTask.Schedule = Plán; RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

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:

Čítaj a píš.

Popis:

Typ: Array. Súbor parametrov pre naplánovanú úlohu. Počet a zloženie parametrov musí zodpovedať parametrom metódy rutinnej úlohy.

Dostupnosť:

server, tučný klient, vonkajší spoj.

Poznámka:

Možnosti čítania a zápisu sú dostupné iba pre správcu.

Odstránenie

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

ScheduledTask.Delete();

Získanie úlohy

  • zoznam pomocou metódy GetRoutineTasks:

Rutina = RoutineTasks.GetRoutineTasks(Selection);

  • cez FindByUniqueIdentifier metódy správcu úloh:

Task = ScheduledTasks.FindByUniqueIdentifier(UID);

V tomto článku popíšem moje, zatiaľ malé skúsenosti s organizáciou výmeny dát cez univerzálny formát EnterpriseData.

V mojom prípade je výmena nakonfigurovaná medzi konfiguráciami „Trade Management 11.2“ (ďalej UT) a „Enterprise Accounting 3.0.43“ (ďalej len BP). Výmena je jednosmerná, z UT do BP. Pred aktualizáciou Trade Management 11.1 na 11.2 bola výmena údajov nakonfigurovaná pomocou konfigurácie Data Conversion 2.0. Po prepnutí na „11.2“ sa však používateľom objavili chyby v „Správe obchodu“. Postup aktualizácie pravidiel výmeny bol vykonaný, ale nepriniesol žiadne výsledky. Ladiaci program ukázal, že problém bol vo výmene údajov. Bolo rozhodnuté odstrániť nastavenie výmeny údajov v oboch konfiguráciách a znova ho nakonfigurovať.

„Manažment obchodu“ aj „Podnikové účtovníctvo“ fungujú vo verzii klient-server. Začal som nastavovať synchronizáciu s UT. Urobil som to tak, že sa dáta nahrali z UT do súboru. Teda synchronizácia cez sieťový adresár. V BP som nastavil výmenu tak, aby sa z BP nesťahovali žiadne dáta.

Chyba pri volaní kontextovej metódy (Verify): Chyba overenia údajov XDTO:
Štruktúra objektu "/Bankový účet protistrany/Banka" nezodpovedá typu: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)KeyPropertiesBank
Kontrola vlastnosti "BIK":
tvar: Element
názov: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)BIK
typ:
Chýba požadovaná vlastnosť
Predmet: Zmluva s protistranou č. ...

Pre analýzu chyby som klikol na ikonu „Zloženie odosielaných údajov“ a v zozname dodávateľských zmlúv zaregistrovaných na odoslanie som našiel dohodu, pri ktorej sa chyba objavila. Otvoril som zmluvu a spomenul som si na bankový účet protistrany uvedený v zmluve. Potom som prešiel na bankové účty zaregistrované na prepravu. Ukázalo sa, že požadovaný účet nebol v zozname registrovaných. Prerobil som problémový bankový účet a zmluvu. Potom som manuálne zaregistroval požadovaný bankový účet.

Skúsil som znova synchronizovať dáta z UT. Tentoraz boli údaje úspešne nahrané. IN sieťový priečinok tvorené XML súbor, obsahujúci údaje, ktoré sa majú preniesť z UT do BP.

Ďalším krokom je načítanie údajov zo súboru do podnikového účtovného oddelenia. V konfigurácii "Podnikové účtovníctvo" som klikol na tlačidlo "Synchronizovať", otvoril sa formulár spracovania so správou "Prebieha analýza údajov." O niečo neskôr sa správa zmenila na „Prebieha nahrávanie údajov“. Ukazovateľ a počítadlo zároveň ukazovali, že z napájacej jednotky sa vykladá viac ako 80 tisíc predmetov. To ma zmiatlo, pretože som v nastaveniach naznačil, že sa nemá nič vykladať zo zdroja. Spracovanie trvalo pomerne dlho a skončilo s chybou:

Udalosť: Výmena údajov
(GeneralModule.Long-runningOperations.Module(371)): Proces pracovníka na pozadí bol abnormálne ukončený
RaiseException(ErrorText);

Na lokalizáciu chyby som sa pokúsil zmeniť nastavenia synchronizácie a možnosti prevádzky napájacej základne. Výsledkom bolo, že keď som skonvertoval databázu na verziu súboru, systém fungoval adekvátne: otvoril sa formulár na porovnanie dvoch databáz. Po spárovaní objektov bola počiatočná synchronizácia úspešná. Potom som databázu prepol späť na verziu klient-server.

Pri ďalšom testovaní synchronizácie bolo potrebné urobiť niekoľko zmien v pravidlách pre konverziu objektov. Je čas použiť konfiguráciu Data Conversion 3.0. Zabudovaný pomocník pre konfiguráciu popisuje prevádzkový postup. Pomohli aj články na stránke ITS.

V dôsledku toho som do "Data Conversion 3.0" načítal nasledujúce údaje:

  • Texty všeobecného modulu „Správca výmeny údajov prostredníctvom univerzálneho formátu“ z dvoch databáz
  • Rozloženie oboch podstavcov
  • Popis Formát EnterpriseData(z ktorejkoľvek databázy)
  • Konverzné pravidlá

Po stiahnutí som otvoril pravidlá pre konverziu údajov, objektov a vlastností v „Data Conversion 3.0“. Urobil som zmeny, ktoré som potreboval. Potom som použil tlačidlo „Vyložiť modul správcu výmeny“. Text modulu bol skopírovaný do schránky. Zostáva len vložiť do konfigurácie.

Po experimentovaní s nastavením pravidiel v "Data Conversion 3.0" som dospel k záveru, že v prípade, keď sú vykonávané zmeny bezvýznamné, je jednoduchšie nastaviť pravidlá priamo v konfiguráciách UT a BP, vo všeobecnom module "Správca výmeny údajov prostredníctvom univerzálneho formátu". Ak sú úpravy vážne, ako napríklad pridanie nového objektu do výmeny, mali by ste použiť konfiguráciu " Konverzia dát 3,0".

Úlohu pridať dokument "Objednávka dodávateľovi" do plánu výmeny som vykonal pomocou " Konverzia dát 3.0". V štandardnej verzii UT - BP tento dokument nie je súčasťou výmenného plánu.

Pripomeňme si, že pravidlá registrácie objektov na nahrávanie sú stále nakonfigurované v konfigurácii „Data Conversion 2.0“.

Toto sú prvé dojmy zo synchronizácie dát prostredníctvom univerzálneho formátu EnterpriseData.

P.S. Ak máte otázky alebo svoje vlastné postrehy týkajúce sa výmeny údajov prostredníctvom univerzálneho formátu a konfigurácií" Konverzia dát 3.0", napíšte do komentárov. Vymeníme si skúsenosti.

  • Synchronizácia údajov
  • Formát Universal EnterpriseData
  • Konverzia dát 3.0
  • Konverzia dát 2.0
  • Riadenie obchodu
  • Podnikové účtovníctvo