Rutinska in osnovna opravila 1s 8.2. Rutinska opravila in opravila v ozadju. Vključite vse ali nekatere naloge


1C Enterprise ima v svojih konfiguracijah rutinske in ozadne naloge. Ta opravila se izvajajo po urniku, pri čemer se upošteva urnik za posamezno opravilo. Nekatera opravila se po določenem številu sekund na začetku izvajajo na časovniku, kar lahko negativno vpliva na zmogljivost in izrazito moti delo v informacijski bazi.

Če želite urediti rutinska opravila in opravila v ozadju, na zavihku za upravljanje na levi strani izberite »rutinska opravila in opravila v ozadju«. Prikaže se seznam obstoječih opravil, njihov status, urnik in druge informacije.

Z nekajkratnim klikom na katero koli nalogo se odpre okno z lastnostmi te naloge. Tukaj lahko spremenite številne nastavitve po svojem okusu, vključno z urnikom za to nalogo. Če želite onemogočiti nalogo, morate počistiti potrditveno polje »Omogočeno«. Če pa se mora opravilo izvajati po urniku, je izjemno pomembno, da uporabite ločenega uporabnika s polnimi pravicami za vsa opravila v ozadju.

Parametri za razporejanje nalog so zelo prilagodljivi, vendar je vseeno priporočljivo, da vse naloge nastavite tako, da se naenkrat izvaja samo ena naloga in po možnosti v prostem času. Edina izjema je lahko sinhronizacija več povezanih podatkovnih baz podatkov, na primer računovodstvo podjetja + obračun plač in upravljanje osebja.

Nalaganje bančnega klasifikatorja - nedelja, 4:30
Nalaganje tečajev - vsak dan; 7:00
Ekstrakcija besedila - vsak dan; 6:00.
Izmenjava sporočil med računi za upravljanje dokumentov - vsak dan; vsakih 10800 sek.
Enote se posodabljajo vsak dan; od 5:00:00 enkrat dnevno
Posodobite računovodske naloge - vsak dan; od 6:30:00 enkrat dnevno
Posodobitev indeksa PPD (iskanje po celotnem besedilu) - vsak dan; vsakih 10800 sek.
Obnova enot - vsak dan, po dnevih v tednu [sobota]; od 3:00:00 enkrat na dan
Preračun trenutnih vrednosti relativnih datumov prepovedi sprememb - vsak dan; od 7:00:00 enkrat dnevno
Združevanje indeksa PPD (iskanje po celotnem besedilu) - vsak dan; od 4:00:00 enkrat na dan
Odstranjevanje nepomembnih informacij o sinhronizaciji - vsak dan; od 3:30:00 enkrat dnevno
Nastavitev obdobja za izračunane vsote - vsak dan, 5. v mesecu; od 1:00:00 enkrat dnevno

Pri delu v 1C obstaja veliko rutinskih operacij, ki jih je treba zagnati ali načrtovati za izvedbo enega ali drugega dejanja, na primer: objavljanje dokumentov ali nalaganje podatkov v 1C s spletnega mesta.

Nedavno sem objavil članek: Čas je, da to avtomatiziramo:

Rutinska opravila in opravila v ozadju

Motor opravil je zasnovan za izvajanje katere koli aplikacije ali funkcije po urniku ali asinhrono.

Mehanizem nalog rešuje naslednje naloge:

  • Sposobnost definiranja regulatornih postopkov v fazi konfiguracije sistema;
  • Izvedba določenih dejanj po urniku;
  • Asinhrono klicanje dane procedure ali funkcije, tj. brez čakanja na njegovo dokončanje;
  • Sledenje napredku določene naloge in pridobitev statusa njene dokončanosti (vrednost, ki označuje, ali je bila uspešna ali ne);
  • Pridobitev seznama tekočih nalog;
  • Sposobnost čakanja na dokončanje ene ali več nalog;
  • Vodenje poslov (možnost odpovedi, blokade izvedbe ipd.).

Delovni mehanizem je sestavljen iz naslednjih komponent:

  • Metapodatki o rutinskih opravilih;
  • Redne naloge;
  • Dela v ozadju;
  • Načrtovalnik opravil.

Opravila v ozadju in so zasnovana za asinhrono izvajanje aplikacijskih nalog. Naloge v ozadju se izvajajo z uporabo vgrajenega jezika.

Načrtovana opravila in so zasnovana za izvajanje aplikacijskih opravil po urniku. Rutinska opravila so shranjena v informacijski bazi in se kreirajo na podlagi metapodatkov, definiranih v konfiguraciji. Metapodatki regulativne naloge vsebujejo informacije, kot so ime, metoda, uporaba itd.

Rutinska naloga ima urnik, ki določa, kdaj je treba izvesti metodo, povezano z rutinsko nalogo. Urnik je praviloma določen v informacijski bazi, lahko pa tudi v fazi konfiguracije (na primer za vnaprej določene rutinske naloge).

Razporejevalnik opravil se uporablja za načrtovanje izvajanja rutinskih opravil. Za vsako načrtovano opravilo razporejevalnik redno preverja, ali se trenutni datum in čas ujemata z urnikom načrtovanega opravila. Če se ujema, razporejevalnik dodeli to nalogo v izvedbo. Da bi to naredil, načrtovalec za to načrtovano nalogo ustvari nalogo v ozadju, ki izvede dejansko obdelavo.

Mislim, da je dovolj z opisom - pojdimo k izvedbi:

Ustvarjanje rutinske naloge

Ime metode– pot do postopka, ki se bo izvajal v opravilu v ozadju po danem urniku. Postopek mora biti v skupnem modulu. Priporočljivo je, da ne uporabljate standardnih skupnih modulov, ampak ustvarite svoje. Ne pozabite, da se opravila v ozadju izvajajo na strežniku!

Uporaba– znak uporabe rutinskega opravila.

Vnaprej določeno– označuje, ali je rutinsko opravilo vnaprej določeno.

Če želite, da rutinsko opravilo deluje takoj po postavitvi v bazo podatkov, podajte atribut Vnaprej določeno. V nasprotnem primeru boste morali uporabiti obdelavo »Job Console« ali sprožiti programsko izvajanje naloge.

Število ponovnih poskusov, ko se opravilo nenormalno zaključi– kolikokrat je bilo opravilo v ozadju znova zagnano, če je bilo izvedeno z napako.

Interval ponovnega poskusa, ko se opravilo nenormalno zaključi– kako pogosto se bo opravilo v ozadju znova zagnalo, če je bilo dokončano z napako.

Nastavitev urnika

Urnik dokončanje naloge:

Vsako uro, samo en danObdobje ponavljanja dni = 0, obdobje ponavljanja dni = 3600
Vsak dan enkrat na danObdobje ponavljanja dni = 1, obdobje ponavljanja dni = 0
En dan, enkratPeriodRepeatDays = 0
Vsak drugi dan enkrat na danPeriodRepeatDays = 2
Vsak dan od 01.00 do 07.00 vsako uroPeriodRepeatDays = 1RepeatPeriodDuringDay = 3600StartTime = 01.00

Končni čas = 07.00

Vsako soboto in nedeljo ob 09.00Obdobje ponavljanja dni = 1 dni v tednu = 6, 7 začetni čas = 09.00
Vsak dan en teden, en teden preskočitePeriodRepeatDays = 1PeriodWeeks = 2
Enkrat ob 01.00Začetek = 01.00
Zadnji dan v mesecu ob 9.00.PeriodRepeatDays = 1DayInMonth = -1StartTime = 09.00
Peti dan v mesecu ob 9.00PeriodRepeatDays = 1DayInMonth = 5StartTime = 09.00
Vsako drugo sredo v mesecu ob 9.00PeriodRepeatDays = 1DayWeekMonth = 2DaysWeek = 3

Začetek = 09.00

Funkcije izvajanja opravil v ozadju v različicah datoteka in odjemalec-strežnik

Mehanizmi za izvajanje opravil v ozadju v različici datoteka in odjemalec-strežnik se razlikujejo.

V datotečni različici ustvariti morate namenski odjemalski proces, ki bo izvajal opravila v ozadju. Če želite to narediti, mora odjemalski proces občasno klicati funkcijo globalnega konteksta ExecuteJobProcessing. Samo en odjemalski proces na informacijsko bazo mora obdelati opravila v ozadju (in v skladu s tem poklicati to funkcijo). Če odjemalski proces ni bil ustvarjen za obdelavo opravil v ozadju, bo pri programskem dostopu do mehanizma opravil prikazana napaka »Upravitelj opravil ni aktiven«. Ni priporočljivo uporabljati odjemalskega procesa, ki obdeluje opravila v ozadju za druge funkcije.

Ko se odjemalski proces, ki obdeluje opravila v ozadju, zažene, lahko drugi odjemalski procesi programsko dostopajo do mehanizma opravil v ozadju, tj. lahko izvaja in upravlja opravila v ozadju.

V različici odjemalec-strežnik Za izvajanje opravil v ozadju se uporablja razporejevalnik opravil, ki se fizično nahaja v upravljalniku gruče. Za vsa opravila v ozadju v čakalni vrsti razporejevalnik pridobi najmanj obremenjen delovni proces in ga uporabi za izvajanje ustreznega opravila v ozadju. Delovni proces izvede opravilo in obvesti načrtovalca o rezultatih izvajanja.

V različici odjemalec-strežnik je možno blokirati izvajanje rutinskih nalog. Izvajanje rutinskih nalog je blokirano v naslednjih primerih:

  • Na informacijski bazi je nameščena eksplicitna blokada rutinskih opravil. Ključavnico lahko nastavite prek konzole gruče;
  • Na informacijski bazi je povezovalni blok. Ključavnico lahko nastavite prek konzole gruče;
  • Metoda SetExclusiveMode() s parametrom True je bila poklicana iz vgrajenega jezika;
  • V nekaterih drugih primerih (na primer pri posodabljanju konfiguracije baze podatkov).

Obdelava zagona in ogled načrtovanih opravil lahko prenesete tukaj.

Občasno brisanje registrov (na primer informacijski register »Različice objekta« v konfiguraciji SCP), izvajanje izračunov po urniku, dokončanje dokumentov ob določenem času - to ni popoln seznam dejanj, ki jih je mogoče izvesti z rutinskimi nalogami 1C.

Ustvari nalogo

Naš cilj ni opisati kodo izvedljivega modula, ampak bomo prikazali splošna načela delovanja in ustvarjanje rutinske naloge.

Rutinsko opravilo je nenadomestljivo:

  1. Če obravnavana naloga kot enega od pogojev vključuje potrebo po občasnem izvajanju določenega algoritma;
  2. Če je treba kodo izvesti ne glede na dejanja operaterjev in uporabnikov baze podatkov;
  3. Če zagon izvršljive procedure ni odvisen od zunanjih dogodkov, ki se zgodijo z objekti informacijske baze.

Če ga želite ustvariti, morate iti v informacijsko bazo v načinu »Konfigurator«. Nato v konfiguracijskem drevesu poiščite vejo »Rutinska opravila«, nahajajo se na zavihku »Splošno« in kliknite gumb »Dodaj« (slika 1)

Oglejmo si podrobneje njegovo okno lastnosti (slika 2):
Slika 2

  1. Ime, sinonim in komentar - pravila in načela za izpolnjevanje teh polj so podobna za vse konfiguracijske objekte in jih ni treba ponovno opisovati;
  2. Ime metode – postopek splošnega modula, ki čim bolj natančno opiše zahtevani algoritem (klik na gumb za izbiro odpre razpoložljive procedure, katerih predstavitev je sestavljena iz imena splošnega modula in imena procedure v različnih stolpcih). mize);
  3. Ključ – ne določa toliko edinstvenosti načrtovanega opravila, temveč edinstvenost procesa v ozadju, ki se sproži na podlagi opravila, ima omejitev dolžine;
  4. Urnik - opisu tega elementa bomo posvetili ločen odstavek našega članka;
  5. Uporaba – označitev tega polja določa aktivnost opravila, TRUE pomeni, da se bo opravilo zagnalo in izvajalo po urniku;
  6. Vnaprej določeno – če ima element to potrditveno polje, teh nalog ni mogoče izbrisati; ustvarijo se samodejno, ko se konfiguracija shrani v bazo podatkov;
  7. Število ponovitev - če med izvajanjem pride do izjeme, se ponovno zažene, da ne pride do neskončne zanke, program omeji število ponovnih zagonov;
  8. Interval ponovnih poskusov – čas v sekundah med ponovnimi zagoni neobičajno dokončanih opravil.

Oglejmo si razpored pobližje.

Urnik rutinskih opravil

Slika 3

Najprej bodite pozorni na spodnji del okna, kjer so prikazane podrobne informacije z razčlenitvijo, kako pogosto in ob katerem času se bo naloga izvajala.

Zavihek "Splošno":

  • datum začetka naloge;
  • Končni datum obdelave;
  • Pogostost ponavljanja naloge.

Če na tem zavihku ni določen noben datum, za opravilo ne bo nastavljen rok.

Zavihek »Dnevno« (slika 4)
Slika 4

Poleg vnosnih polj za začetni in končni čas opravila ter pogostost njegovega zagona čez dan vsebuje tabelarični del za podrobno konfiguracijo pogostosti izvajanja.

Zavihka »Dnevno« in »Tedensko« vsebujeta informacije za ustrezna obdobja.

Značilnosti delovanja

V različici dela odjemalec-strežnik določajo izvajanje rutinskih nalog strežniška orodja. Na skrbniški konzoli lahko omogočite ali onemogočite možnost izvajanja nalog za določeno bazo podatkov.

Situacija je veliko bolj zapletena z datotečno različico dela. Pred določeno izdajo platforme so se postopki v ozadju in rutinski postopki izvajali le, če je bila aktivirana metoda ExecuteTaskProcessing(), ko se je sistem zagnal pod določenim uporabnikom. V tem primeru so se algoritmi občasno zagnali, dokler je bil uporabnik, ki je sprožil metodo, v programu.

Trenutno je delo opravil v ozadju v datotečni različici dela enakomerno porazdeljeno med uporabnike, pooblaščene v bazi; če je bil program zagnan z dodatnim parametrom AllowExecuteSheduledJobs, bo ta proces odgovoren za redno vzdrževanje.

Delo v ozadju in rutinsko delo v bazi podatkov, ki se izvaja v datotečnem načinu, lahko popolnoma onemogočite tako, da izbrišete ali preimenujete datoteko DoNotCopy.txt v mapi z bazo podatkov. Prisotnost te datoteke pove platformi, da se delo izvaja v izvirniku in ne v kopiji baze podatkov.

Poleg tega je v standardnih dobavah 1C postalo mogoče upravljati načrtovano delo neposredno iz programa, ne da bi šli v »Konfigurator«. V konfiguraciji “ZUP”, različica 3.1.3.223, odprete obrazec za upravljanje iz menija Administracija->Vzdrževanje->Rutinske operacije->Rutinska in opravila v ozadju (slika 5)
Slika 5

Obrazec, ki se odpre, ima intuitiven vmesnik in omogoča:


Nalogo lahko začnete tudi neposredno iz obrazca.

Verjetno je moral vsak programer 1C 8.3 prej ali slej nastaviti izvajanje določenih nalog po urniku. Spodaj bom podal podroben opis teh mehanizmov, upam, da bodo to koristne informacije za programerje začetnike 1C. To je zelo priročno, saj ne zahteva človeškega ukrepanja, rutinsko opravilo se konfigurira enkrat in deluje po vašem urniku.

Na spodnjem primeru boste našli podrobna navodila.

Kaj so rutinska in ozadna opravila v 1C

  • Načrtovana opravila je poseben mehanizem 1C Enterprise 8.3, zasnovan za izvedbo določenega dejanja po danem urniku.
  • Delo v ozadju- predmeti, ustvarjeni z rutinsko nalogo, ki neposredno izvajajo predvideno dejanje brez sodelovanja uporabnika ali programerja 1C 8.2.

Mehanizem načrtovanih opravil in opravil v ozadju deluje v načinu odjemalec-strežnik (SQL), zahvaljujoč funkcionalnosti DBMS. Če imate bazo datotek, lahko nalogo tudi konfigurirate, vendar po nekoliko drugačnem principu.

Nastavitev opravil v ozadju v načinu odjemalec-strežnik 1C

Najprej ustvarimo nov objekt metapodatkov – rutinsko opravilo. Svojo nalogo bom imenoval »Nalaganje valutnih tečajev«. Oglejmo si paleto lastnosti tega konfiguracijskega predmeta:

Pridobite 267 video lekcij o 1C brezplačno:

  • Ime metode— pot do postopka, ki se bo izvajal v opravilu v ozadju po danem urniku. Postopek mora biti v skupnem modulu. Priporočljivo je, da ne uporabljate standardnih, ampak ustvarite svoje. Ne pozabite, da se opravila v ozadju izvajajo na strežniku!
  • Uporaba— znak uporabe rutinskega opravila.
  • Vnaprej določeno— označuje, ali je rutinska naloga vnaprej določena. Če želite, da rutinsko opravilo deluje takoj po postavitvi v bazo podatkov, določite to zastavico. V nasprotnem primeru boste morali uporabiti obdelavo Job Console ali povzročiti programsko izvajanje opravila.
  • Število ponovnih poskusov, ko se opravilo nenormalno zaključi— kolikokrat je bilo opravilo v ozadju znova zagnano, če je bilo izvedeno z napako.
  • Interval ponovnega poskusa, ko se opravilo nenormalno zaključi— kako pogosto se bo opravilo v ozadju znova zagnalo, če je bilo dokončano z napako.

In najbolj zanimiva nastavitev je Urnik:

Tukaj konfigurirate interval zagona postopka, določenega v polju »Ime metode«. Recimo, da sem konfiguriral

Pozor! Ne pozabite onemogočiti blokiranja izvajanja rutin in opravil v ozadju na ravni DBMS!

To lahko storite v skrbniškem pripomočku različice odjemalec-strežnik ali pri ustvarjanju nove baze podatkov:

Nastavitev rutinskih opravil v načinu datoteke 1C

V datotečnem načinu je nastavitev takih opravil nekoliko težja. Za takšno nalogo je treba zagnati ločeno sejo programa 1C. To se pogosto reši z ustvarjanjem "tehničnega" uporabnika, katerega seja se vedno izvaja.

V datotečnem načinu se rutinsko opravilo inicializira, ko se zažene metoda »RunTaskProcessing()«.

Za določenega uporabnika lahko konfigurirate to metodo za izvajanje z drugo metodo −

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

  • Ime postopka— ime postopka, povezanega kot čakajoči obravnavalec. Ime izvoženega postopka modula upravljane aplikacije (navadnega modula aplikacije) ali globalnega modula v skupni rabi. Postopek mora biti lociran na stranki.
  • Interval— obdobje med izvršitvami operacij v sekundah.
  • Enkrat- kako opraviti nalogo, enkrat ali ne.

ConnectWaitHandler, 3600 );

Dvominutni video, ki prikazuje, kako nastaviti rutinsko opravilo v konfiguratorju 1C:

Mehanizem dela

Motor opravil je zasnovan za izvajanje katere koli aplikacije ali funkcije po urniku ali asinhrono.

Mehanizem nalog rešuje naslednje naloge:

  • Sposobnost definiranja regulatornih postopkov v fazi konfiguracije sistema;
  • Izvedba določenih dejanj po urniku;
  • Asinhrono klicanje dane procedure ali funkcije, tj. brez čakanja na njegovo dokončanje;
  • Sledenje napredku določene naloge in pridobitev statusa njene dokončanosti (vrednost, ki označuje, ali je bila uspešna ali ne);
  • Pridobitev seznama tekočih nalog;
  • Sposobnost čakanja na dokončanje ene ali več nalog;
  • Vodenje poslov (možnost odpovedi, blokade izvedbe ipd.).

Delovni mehanizem je sestavljen iz naslednjih komponent:

  • Metapodatki o rutinskih opravilih;
  • Redne naloge;
  • Dela v ozadju;
  • Načrtovalnik opravil.

Opravila v ozadju so zasnovana za asinhrono izvajanje aplikacijskih nalog. Naloge v ozadju se izvajajo z uporabo vgrajenega jezika.

Načrtovana opravila – namenjena izvajanju uporabljenih opravil po urniku. Rutinska opravila so shranjena v informacijski bazi in se kreirajo na podlagi metapodatkov, definiranih v konfiguraciji. Metapodatki regulativne naloge vsebujejo informacije, kot so ime, metoda, uporaba itd.

Rutinska naloga ima urnik, ki določa, kdaj je treba izvesti metodo, povezano z rutinsko nalogo. Urnik je praviloma določen v informacijski bazi, lahko pa tudi v fazi konfiguracije (na primer za vnaprej določene rutinske naloge).

Razporejevalnik opravil se uporablja za načrtovanje izvajanja rutinskih opravil. Za vsako načrtovano opravilo razporejevalnik redno preverja, ali se trenutni datum in čas ujemata z urnikom načrtovanega opravila. Če se ujema, razporejevalnik dodeli to nalogo v izvedbo. Da bi to naredil, načrtovalec za to načrtovano nalogo ustvari nalogo v ozadju, ki izvede dejansko obdelavo.

Dela v ozadju

Opravila v ozadju so primerna za izvajanje zapletenih izračunov, ko je za pridobitev rezultata izračuna potrebno dolgo časa. Motor opravil ima sredstva za asinhrono izvajanje takšnih izračunov.

Z opravilom v ozadju je povezana metoda, ki se pokliče, ko se opravilo v ozadju izvaja. Metoda opravila v ozadju je lahko kateri koli postopek ali funkcija neglobalnega skupnega modula, ki ga je mogoče poklicati na strežniku. Parametri opravila v ozadju so lahko katere koli vrednosti, ki jih je dovoljeno posredovati strežniku. Parametri opravila v ozadju se morajo natančno ujemati s parametri procedure ali funkcije, ki jo kliče. Če je metoda opravila v ozadju funkcija, je njena vrnjena vrednost prezrta.

Opravilo v ozadju ima lahko ključ - katero koli vrednost aplikacije. Ključ uvaja omejitev pri zagonu opravil v ozadju - na časovno enoto se lahko izvede samo eno opravilo v ozadju z določeno vrednostjo ključa in podanim imenom metode opravila v ozadju (ime metode je sestavljeno iz imena modula in imena procedure). ali funkcija). Ključ vam omogoča, da združite opravila v ozadju, ki imajo enake metode glede na specifično karakteristiko aplikacije, tako da se znotraj ene skupine ne izvaja več kot eno opravilo v ozadju.

Opravila v ozadju se ustvarijo in upravljajo programsko iz katere koli povezave. Vsak uporabnik lahko ustvari opravilo v ozadju. Poleg tega se izvaja v imenu uporabnika, ki ga je ustvaril. Prejemanje nalog in čakanje na njihovo dokončanje je dovoljeno iz katere koli povezave do uporabnika z skrbniškimi pravicami ali do uporabnika, ki je ustvaril te naloge v ozadju.

Opravilo v ozadju je izključno predmet seje in ne pripada nobeni uporabniški seji. Za vsako nalogo se ustvari posebna sistemska seja, ki teče v imenu uporabnika, ki je opravil klic. Opravila v ozadju nimajo trajnega stanja.

Opravilo v ozadju lahko sproži druga opravila v ozadju. V različici odjemalec-strežnik vam to omogoča vzporedno izvajanje zapletenih izračunov v delovnih procesih gruče, kar lahko znatno pospeši celoten postopek izračuna. Paralelizacija se izvaja tako, da se ustvari več podrejenih opravil v ozadju in počaka, da se vsako od njih dokonča v glavnem opravilu v ozadju.

Opravila v ozadju, ki se uspešno ali neuspešno zaključijo, se shranijo 24 ur in nato izbrišejo. Če število dokončanih opravil v ozadju preseže 1000, se izbrišejo tudi najstarejša opravila v ozadju.

Načrtovana opravila

Načrtovana opravila se uporabljajo, ko je treba izvesti določena občasna ali enkratna dejanja po urniku.

Načrtovana opravila so shranjena v informacijski bazi in se ustvarijo na podlagi metapodatkov rutinskega opravila, definiranega v konfiguraciji. Metapodatki določajo takšne parametre rutinskega opravila, kot so: klicana metoda, ime, ključ, možnost uporabe, znak vnaprejšnje določitve itd. Pri ustvarjanju rutinskega opravila lahko dodatno določite urnik (lahko ga določite v metapodatkih), vrednosti ​​parametrov metode, ime uporabnika, v imenu katerega se izvajajo rutinska opravila itd.

Ustvarjanje in upravljanje načrtovanih opravil se izvaja programsko iz katere koli povezave in je dovoljeno le uporabnikom z skrbniškimi pravicami.

Opomba. Pri delu v datotečni različici je mogoče ustvarjati in urejati rutinska opravila brez zagona razporejevalnika opravil.

Z rutinskim opravilom je povezana metoda, ki se pokliče, ko se rutinsko opravilo izvede. Metoda rutinskega opravila je lahko kateri koli postopek ali funkcija neglobalnega skupnega modula, ki ga je mogoče poklicati na strežniku. Parametri rutinske naloge so lahko katere koli vrednosti, ki jih je dovoljeno prenesti na strežnik. Parametri rutinske naloge se morajo natančno ujemati s parametri procedure ali funkcije, ki jo kliče. Če je metoda rutinskega opravila funkcija, potem je njena vrnjena vrednost prezrta.

Rutinska naloga ima lahko ključ - katero koli vrednost aplikacije. Ključ uvaja omejitev zagona razporejenih nalog, saj na časovno enoto je med rutinskimi opravili, povezanimi z istim metapodatkovnim objektom, mogoče izvesti samo eno rutinsko opravilo z določeno vrednostjo ključa. Ključ vam omogoča združevanje rutinskih opravil, povezanih z istim metapodatkovnim objektom, glede na specifično karakteristiko aplikacije, tako da se znotraj ene skupine ne izvaja več kot eno rutinsko opravilo.

Med konfiguracijo lahko definirate vnaprej določene rutinske naloge. Vnaprej določena rutinska opravila se ne razlikujejo od običajnih rutinskih opravil, le da jih ni mogoče izrecno ustvariti ali izbrisati. Če je v metapodatkih načrtovanega opravila nastavljeno znak vnaprej določene rutinske naloge, potem se bo ob posodobitvi konfiguracije v informacijski bazi samodejno ustvarilo vnaprej določeno rutinsko opravilo. Če je vnaprej določena zastavica počiščena, bo ob posodabljanju konfiguracije v informacijski bazi vnaprej določeno rutinsko opravilo samodejno izbrisano. Začetne vrednosti lastnosti vnaprej določenega načrtovanega opravila (na primer urnika) so nastavljene v metapodatkih. V prihodnosti, ko se aplikacija izvaja, jih je mogoče spremeniti. Vnaprej določena rutinska opravila nimajo parametrov.

Razpored rutinskega opravila določa, kdaj naj se izvaja rutinsko opravilo. Urnik vam omogoča nastavitev: datuma in ure začetka in konca naloge, obdobja izvajanja, dni v tednu in mesecev, do katerih mora biti načrtovana naloga opravljena itd. (glej opis vgrajenega v jeziku).

Primeri urnikov rutinskih opravil:

Vsako uro, samo en dan

Obdobje ponavljanja dni = 0, obdobje ponavljanja dni = 3600

Vsak dan enkrat na dan

Obdobje ponavljanja dni = 1, obdobje ponavljanja dni = 0

En dan, enkrat

PeriodRepeatDays = 0

Vsak drugi dan enkrat na dan

PeriodRepeatDays = 2

Vsak dan od 01.00 do 07.00 vsako uro

PeriodRepeatDays = 1

Obdobje ponavljanja med dnevom = 3600

Začetek = 01.00

Končni čas = 07.00

Vsako soboto in nedeljo ob 09.00

PeriodRepeatDays = 1

Dnevi v tednu = 6, 7

Začetek = 09.00

Vsak dan en teden, en teden preskočite

PeriodRepeatDays = 1

Obdobje tedni = 2

Enkrat ob 01.00

Začetek = 01.00

Zadnji dan v mesecu ob 9.00.

PeriodRepeatDays = 1

Dan v mesecu = -1

Začetek = 09.00

Peti dan v mesecu ob 9.00

PeriodRepeatDays = 1

Dan v mesecu = 5

Začetek = 09.00

Vsako drugo sredo v mesecu ob 9.00

PeriodRepeatDays = 1

DanTedenVMesecu = 2

Dnevi v tednu = 3

Začetek = 09.00

Preverite lahko, ali se opravilo izvaja za določen datum (metoda RequiredExecution objekta ScheduleTasks). Načrtovana opravila se vedno izvajajo pod imenom določenega uporabnika. Če uporabnik načrtovanega opravila ni podan, se izvršitev izvede v imenu privzetega uporabnika, ki ima skrbniške pravice.

Rutinska opravila se izvajajo z opravili v ozadju. Ko razporejevalnik ugotovi, da je treba zagnati načrtovano opravilo, se na podlagi tega načrtovanega opravila samodejno ustvari opravilo v ozadju, ki izvede vso nadaljnjo obdelavo. Če se to rutinsko opravilo že izvaja, se ne bo znova izvajalo, ne glede na njegov urnik.

Načrtovana opravila je mogoče znova zagnati. To še posebej velja, kadar je treba zagotoviti izvedbo metode rutinskega opravila. Rutinska naloga se znova zažene, ko se nenormalno zaključi ali ko se delovni proces (v različici odjemalec-strežnik) ali odjemalski proces (v datotečni različici), na katerem je bila rutinska naloga izvedena, nenormalno zaključi. V načrtovanem opravilu lahko določite, kolikokrat ga je treba znova zagnati, kot tudi interval med ponovnimi zagoni. Pri izvajanju metode rutinskega opravila, ki ga je mogoče znova zagnati, morate upoštevati, da se bo ob ponovnem zagonu njegovo izvajanje začelo od začetka in se ne bo nadaljevalo od trenutka nenormalnega zaključka.

Pomembno si je to zapomniti Končni čas ne bo nujno dokončal opravila v ozadju ob določenem času. Nekaj ​​izjav:

* Opravilo v ozadju lahko prezre svojo samodejno preklic, če ni zamrznjeno, ampak se še naprej izvaja, ker vseh operacij platforme ni mogoče preklicati. Če se izvede ciklična koda vgrajenega jezika, je opravilo mogoče preklicati, sicer ne. Vse je odvisno od tega, kaj delo opravlja. * Končni čas – meja, znotraj katere se lahko opravilo začne in ne konča? * Ali prisilna prekinitev opravila povrne spremembe, narejene na začetku transakcije?

Funkcije izvajanja opravil v ozadju v različicah datoteka in odjemalec-strežnik

Mehanizmi za izvajanje opravil v ozadju v različici datoteka in odjemalec-strežnik se razlikujejo.

  • V različici datoteke morate ustvariti namenski odjemalski proces, ki bo izvajal opravila v ozadju. Če želite to narediti, mora odjemalski proces občasno klicati funkcijo globalnega konteksta ExecuteJobProcessing. Samo en odjemalski proces na informacijsko bazo mora obdelati opravila v ozadju (in v skladu s tem poklicati to funkcijo). Če odjemalski proces ni bil ustvarjen za obdelavo opravil v ozadju, bo pri programskem dostopu do mehanizma opravil prikazana napaka »Upravitelj opravil ni aktiven«. Ni priporočljivo uporabljati odjemalskega procesa, ki obdeluje opravila v ozadju za druge funkcije.

Ko se odjemalski proces, ki obdeluje opravila v ozadju, zažene, lahko drugi odjemalski procesi programsko dostopajo do mehanizma opravil v ozadju, tj. lahko izvaja in upravlja opravila v ozadju.

V različici odjemalec-strežnik se za izvajanje opravil v ozadju uporablja razporejevalnik opravil, ki se fizično nahaja v upravljalniku gruče. Za vsa opravila v ozadju v čakalni vrsti razporejevalnik pridobi najmanj obremenjen delovni proces in ga uporabi za izvajanje ustreznega opravila v ozadju. Delovni proces izvede opravilo in obvesti načrtovalca o rezultatih izvajanja.

V različici odjemalec-strežnik je možno blokirati izvajanje rutinskih nalog. Izvajanje rutinskih nalog je blokirano v naslednjih primerih:

  • Na informacijski bazi je nameščena eksplicitna blokada rutinskih opravil. Ključavnico lahko nastavite prek konzole gruče;
  • Na informacijski bazi je povezovalni blok. Ključavnico lahko nastavite prek konzole gruče;
  • Metoda SetExclusiveMode() s parametrom True je bila poklicana iz vgrajenega jezika;
  • V nekaterih drugih primerih (na primer pri posodabljanju konfiguracije baze podatkov).

Ustvarjanje metapodatkov za rutinsko opravilo

Preden programsko ustvarite rutinsko nalogo v informacijski bazi, morate zanjo ustvariti metapodatkovni objekt.

Če želite ustvariti metapodatkovni objekt za rutinsko opravilo v konfiguracijskem drevesu v veji »Splošno« za vejo »Rutinska opravila«, izvedite ukaz »Dodaj« in izpolnite naslednje lastnosti rutinskega opravila v paleti lastnosti:

Ime metode - navedite ime metode rutinskega opravila.

Ključ - določite poljubno vrednost niza, ki bo uporabljena kot ključ načrtovanega opravila.

Urnik - označuje urnik rutinskega opravila. Če želite ustvariti urnik, kliknite povezavo »Odpri« in v obrazcu urnika, ki se odpre, nastavite zahtevane vrednosti.

Na zavihku »Splošno« sta navedena začetni in končni datum opravila ter način ponavljanja.

Na zavihku "Dnevno" je prikazan dnevni urnik opravila.

Določite urnik:

  • začetni in končni čas naloge;
  • čas dokončanja naloge, po katerem bo prisilno prekinjena;
  • obdobje ponavljanja naloge;
  • trajanje premora med ponovitvami;
  • trajanje izvedbe.

Dovoljeno je določiti poljubno kombinacijo pogojev.

Na zavihku “Tedensko” je prikazan tedenski urnik opravila.

Izberite potrditvena polja za dneve v tednu, v katerih bo naloga izvedena. Če želite nalogo ponoviti, določite interval ponovitve v tednih. Naloga je na primer izvedena v 2 tednih, vrednost ponovitve je 2.

Na zavihku »Mesečno« je prikazan mesečni urnik opravila.

Izberite potrditvena polja za mesece, v katerih bo naloga izvedena. Po potrebi lahko določite določen dan (mesec ali teden) izvedbe od začetka meseca/tedna ali konca.

Uporaba - če je nastavljeno, bo naloga izvedena po urniku.

Vnaprej določeno – če je nastavljeno, je opravilo vnaprej določeno opravilo.

Število ponovnih poskusov v primeru nenormalne prekinitve - označuje število ponovnih poskusov v primeru nenormalne prekinitve.

Interval ponovnega poskusa ob nenormalnem zaključku - določa interval ponovnega poskusa ob nenormalnem zaključku. Primeri

Ustvarjanje opravila v ozadju »Posodobitev indeksa iskanja po celotnem besedilu«:

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

Ustvarjanje rutinske naloge "Obnovitev sekvenc":

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

Naloga = RoutineTasks.CreateRoutineTask("Obnavljanje zaporedij"); Job.Schedule = Razpored; Task.Write();

Job Console

Obdelava z ITS upravlja rutinske naloge:

Delo z rutinskimi opravili

Job Objects

Objekti opravila niso navedeni, ampak so shranjeni v bazi podatkov v nekem posebnem pomnilniku.

Če je v metapodatkih omogočena zastavica "Preddefined", potem se tak objekt samodejno ustvari ob zagonu 1C:Enterprise in vedno obstaja natanko v enem primerku. Takega predmeta ni mogoče izbrisati.

Če zastavica »Vnaprej določeno« ni nastavljena, se objekti takšne naloge ustvarijo in izbrišejo programsko, pri čemer se določi urnik in parametri.

Pridobivanje seznama nalog

Seznam nalog lahko dobite z metodo Pridobite RoutineTasks globalni manager zaposlitve RutineTasks

ScheduledJobsManager

Pridobite načrtovana opravila (GetScheduledJobs)

Sintaksa:

Get RoutineTasks(<Отбор>)

Opcije:

<Отбор>(neobvezno)

Tip: Struktura. Izbor, ki definira strukturo. Vrednosti strukture so lahko: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Če izbira ni podana, se pridobijo vse rutinske naloge.

Če filtrirate po metapodatkih, lahko kot vrednost metapodatkov podate metapodatkovni objekt rutinskega opravila ali njegovo ime.

Vrnjena vrednost:

Vrsta: niz.

Opis:

Prejme niz rutinskih opravil za dano izbiro. Prejemanje načrtovanih nalog je možno samo za skrbnika.

Razpoložljivost:

Routine = RoutineTasks.GetRoutineTasks(Izbor);

Za vsako rutino rutinskega cikla NewLine = Seznam RoutineTasks.Add(); NewRow.Metadata = Regular.Metadata.View(); NewLine.Name = Regular.Name; NewString.Key = Regular.Key; NewLine.Schedule = Razpored.Urnik; NewLine.User = Regular.UserName; NewString.Predefined = Regular.Predefined; NewString.Use = Regular.Use; NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask; Če LastTask<>Undefined Then NewRow.Running = LastTask.Start; NewRow.State = LastTask.State; endIf; EndCycle;

Ustvarjanje

Ustvarjeno z metodo Create RoutineTask za upravitelja rutinskih opravil:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Name = Ime; RegularTask.Key = Ključ; RegularTask.Use = Uporaba; RoutineTask.UserName = UsersChoice; RoutineTask.Number ofRepetitionsAtEmergencyCompletion =Število ponovitev ob nujnem zaključku; ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion; ScheduleTask.Schedule = Razpored; RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Name = Ime; JobObject.Use = True;

Objekt opravila ima polje "Parametri", v katerem so podani parametri metode:

ScheduledJob

Opcije(Parametri)

Uporaba:

Beri in piši.

Opis:

Vrsta: niz. Niz parametrov za načrtovano opravilo. Število in sestava parametrov morata ustrezati parametrom metode rutinskega opravila.

Razpoložljivost:

Strežnik, debel odjemalec, zunanja povezava.

Opomba:

Zmožnosti branja in pisanja so na voljo samo skrbniku.

Odstranitev

Izbrisano z metodo Delete() predmeta opravila:

ScheduledTask.Delete();

Pridobivanje delovnega predmeta

  • seznam prek metode GetRoutineTasks:

Routine = RoutineTasks.GetRoutineTasks(Izbor);

  • prek FindByUniqueIdentifier metode upravitelja opravil:

Naloga = ScheduledTasks.FindByUniqueIdentifier(UID);