Rutinski i pozadinski zadaci 1s 8.2. Rutinski i pozadinski zadaci. Uključite sve ili neke zadatke


1C Enterprise ima rutinske i pozadinske zadatke u svojim konfiguracijama. Ovi poslovi se izvršavaju prema planeru, uzimajući u obzir raspored za svaki posao. Neki od zadataka se inicijalno izvršavaju na tajmeru nakon određenog broja sekundi, što može negativno uticati na performanse i jasno ometati rad u bazi podataka.

Da biste uredili rutinske i pozadinske zadatke, na kartici administracije odaberite "rutinski i pozadinski zadaci" na lijevoj strani. Pojavit će se lista postojećih zadataka, njihov status, raspored i druge informacije.

Klikom nekoliko puta na bilo koji od zadataka otvorit će se prozor sa svojstvima ovog zadatka. Ovdje možete promijeniti mnoge postavke po svom ukusu, uključujući i raspored za ovaj zadatak. Da biste onemogućili zadatak, polje za potvrdu „Omogućeno“ mora biti poništeno. Ali ako se zadatak mora izvoditi po rasporedu, izuzetno je važno koristiti zasebnog korisnika s punim pravima za sve pozadinske zadatke.

Parametri za zakazivanje zadataka su vrlo fleksibilni, ali je ipak preporučljivo sve zadatke postaviti na način da se istovremeno izvršava samo 1 zadatak i po mogućnosti u neradno vrijeme. Jedini izuzetak može biti sinhronizacija nekoliko povezanih baza podataka, na primjer, računovodstvo preduzeća + obračun plaća i upravljanje osobljem.

Učitavanje bankovnog klasifikatora - nedelja, 4:30
Učitavanje kurseva - svaki dan; 7:00
Ekstrakcija teksta - svaki dan; 6:00.
Razmjena poruka preko naloga za upravljanje dokumentima - svaki dan; svakih 10800 sek.
Jedinice se ažuriraju svaki dan; od 5:00:00 jednom dnevno
Ažuriranje zadataka računovođe - svaki dan; od 6:30:00 jednom dnevno
Ažuriranje PPD indeksa (pretraga cijelog teksta) - svaki dan; svakih 10800 sek.
Obnova jedinica - svaki dan, po danu u sedmici [subota]; od 3:00:00 jednom dnevno
Preračunavanje trenutnih vrijednosti relativnih datuma zabrane promjena - svaki dan; od 7:00:00 jednom dnevno
Spajanje PPD indeksa (pretraga cijelog teksta) - svaki dan; od 4:00:00 jednom dnevno
Uklanjanje nebitnih informacija o sinhronizaciji - svaki dan; od 3:30:00 jednom dnevno
Podešavanje perioda za izračunate sume - svaki dan, 5. u mesecu; od 1:00:00 jednom dnevno

Kada radite u 1C, postoje mnoge rutinske operacije koje se moraju pokrenuti ili zakazati za obavljanje jedne ili druge radnje, na primjer: objavljivanje dokumenata ili učitavanje podataka u 1C s web stranice.

Nedavno sam objavio članak: Vrijeme je da se ovo automatizira:

Rutinski i pozadinski zadaci

Mehanizam poslova je dizajniran da izvodi bilo koju aplikaciju ili funkcionalnost prema rasporedu ili asinhrono.

Mehanizam zadataka rješava sljedeće zadatke:

  • Sposobnost definisanja regulatornih procedura u fazi konfiguracije sistema;
  • Izvođenje navedenih radnji prema planu;
  • Pozivanje date procedure ili funkcije asinhrono, tj. bez čekanja njegovog završetka;
  • Praćenje napretka određenog zadatka i dobijanje statusa njegovog završetka (vrijednost koja pokazuje da li je bio uspješan ili ne);
  • Dobivanje liste tekućih zadataka;
  • Sposobnost čekanja da se završi jedan ili više zadataka;
  • Upravljanje poslom (mogućnost otkazivanja, blokada izvršenja, itd.).

Mehanizam posla sastoji se od sljedećih komponenti:

  • Metapodaci rutinskih zadataka;
  • Redovni zadaci;
  • Pozadinski poslovi;
  • Task Scheduler.

Pozadinski poslovi & dizajnirani su za asinhrono izvršavanje zadataka aplikacije. Pozadinski zadaci se implementiraju pomoću ugrađenog jezika.

Planirani zadaci & su dizajnirani da izvršavaju zadatke aplikacije prema rasporedu. Rutinski zadaci su pohranjeni u informacijskoj bazi i kreirani su na osnovu metapodataka definiranih u konfiguraciji. Metapodaci regulatornog zadatka sadrže informacije kao što su naziv, metoda, upotreba itd.

Rutinski zadatak ima raspored koji određuje u koje vrijeme mora biti izvršena metoda povezana s rutinskim zadatkom. Raspored je, po pravilu, određen u bazi podataka, ali se može odrediti i u fazi konfiguracije (na primjer, za unaprijed definirane rutinske zadatke).

Planer zadataka se koristi za planiranje izvršavanja rutinskih zadataka. Za svaki zakazani posao, planer periodično provjerava da li se trenutni datum i vrijeme podudaraju s rasporedom zakazanog posla. Ako se podudara, planer dodjeljuje taj zadatak izvršenju. Da bi to uradio, za ovaj zakazani zadatak, planer kreira pozadinski zadatak, koji obavlja stvarnu obradu.

Mislim da je dovoljno sa opisom - prijeđimo na implementaciju:

Kreiranje rutinskog zadatka

Naziv metode– put do procedure koja će se izvršiti u pozadinskom poslu prema datom rasporedu. Procedura mora biti u zajedničkom modulu. Preporučuje se da se ne koriste standardni zajednički moduli, već da se kreiraju sopstveni. Ne zaboravite da se poslovi u pozadini pokreću na serveru!

Upotreba– znak korištenja rutinskog zadatka.

Unaprijed određeno– označava da li je rutinski zadatak unaprijed određen.

Ako želite da rutinski zadatak radi odmah nakon postavljanja u bazu podataka, navedite atribut Unaprijed određeno. U suprotnom, morat ćete koristiti obradu "Job Console" ili pokrenuti zadatak da se programski pokrene.

Broj ponovnih pokušaja kada se posao nenormalno završava– koliko je puta pozadinski posao ponovo pokrenut ako je izvršen s greškom.

Interval ponovnog pokušaja kada se posao završi nenormalno– koliko često će se pozadinski posao ponovo pokretati ako je dovršen s greškom.

Postavljanje rasporeda

Raspored izvršavanje zadatka:

Svaki sat, samo jedan danPeriod dana ponavljanja = 0, period ponavljanja dana = 3600
Svaki dan jednom dnevnoPeriod dana ponavljanja = 1, period ponavljanja dana = 0
Jednog dana, jednomPeriodRepeatDays = 0
Svaki drugi dan jednom dnevnoPeriodRepeatDays = 2
Svaki sat od 01.00 do 07.00 svaki danPeriodRepeatDays = 1RepeatPeriodDuringDay = 3600StartTime = 01.00

Vrijeme završetka = 07.00

Svake subote i nedjelje u 09.00 satiPeriod ponavljanja = 1 dani u nedelji = 6, 7 vreme početka = 09,00
Svaki dan jednu sedmicu, preskočite sedmicuPeriodRepeatDays = 1PeriodWeeks = 2
U 01.00 jednomVrijeme početka = 01.00
Zadnji dan svakog mjeseca u 9:00.PeriodRepeatDays = 1DayInMonth = -1StartTime = 09.00
Peti dan svakog mjeseca u 9:00PeriodRepeatDays = 1DayInMonth = 5StartTime = 09.00
Svake druge srijede u mjesecu u 9:00PeriodRepeatDays = 1DayWeekMonth = 2DaysWeek = 3

Vrijeme početka = 09.00

Karakteristike izvršavanja pozadinskih poslova u fajl i klijent-server varijantama

Mehanizmi za izvršavanje pozadinskih poslova u verzijama datoteke i klijent-server su različiti.

U verziji fajla morate kreirati namjenski klijentski proces koji će obavljati pozadinske poslove. Da bi to učinio, klijentski proces mora periodično pozvati funkciju globalnog konteksta ExecuteJobProcessing. Samo jedan klijentski proces po bazi podataka bi trebao obraditi pozadinske poslove (i, shodno tome, pozvati ovu funkciju). Ako klijentski proces nije kreiran za obradu pozadinskih poslova, tada će se prilikom programskog pristupa motoru poslova prikazati greška “Upravitelj poslova nije aktivan”. Ne preporučuje se korištenje klijentskog procesa koji obrađuje pozadinske poslove za druge funkcije.

Jednom kada klijentski proces obrađuje pozadinske poslove, drugi klijentski procesi mogu programski pristupiti mašini za pozadinske poslove, tj. može pokrenuti i upravljati poslovima u pozadini.

U klijent-server verziji Za izvršavanje pozadinskih poslova koristi se planer zadataka, koji se fizički nalazi u upravitelju klastera. Za sve pozadinske poslove u redu čekanja, planer dobiva najmanje opterećen radni proces i koristi ga za pokretanje odgovarajućeg pozadinskog posla. Radnički proces izvršava posao i obavještava planer o rezultatima izvršenja.

U verziji klijent-server moguće je blokirati izvršavanje rutinskih zadataka. Izvršavanje rutinskih zadataka je blokirano u sljedećim slučajevima:

  • Na informacijskoj bazi je instalirano eksplicitno blokiranje rutinskih zadataka. Zaključavanje se može postaviti preko konzole klastera;
  • Na infobazi postoji blok veze. Zaključavanje se može postaviti preko konzole klastera;
  • Metoda SetExclusiveMode() sa parametrom True je pozvana iz ugrađenog jezika;
  • U nekim drugim slučajevima (na primjer, prilikom ažuriranja konfiguracije baze podataka).

Obrada pokretanja i pregled planiranih zadataka možete preuzeti ovdje.

Povremeno brisanje registara (na primjer, registar informacija "Verzije objekta" u SCP konfiguraciji), izvođenje proračuna po rasporedu, dovršavanje dokumenata u određeno vrijeme - ovo nije potpuna lista radnji koje se mogu implementirati pomoću 1C rutinskih zadataka.

Kreirajte zadatak

Naš cilj nije da opišemo kod izvršnog modula, već ćemo pokazati opšte principe rada i kreiranja rutinskog zadatka.

Rutinski zadatak je nezamjenjiv:

  1. Ako predmetni zadatak uključuje, kao jedan od uslova, potrebu za periodičnim izvršavanjem određenog algoritma;
  2. Ako se kod mora izvršiti bez obzira na radnje operatera i korisnika baze podataka;
  3. Ako pokretanje izvršne procedure ne zavisi od eksternih događaja koji se dešavaju sa objektima infobaze.

Da biste ga kreirali, morate otići na bazu podataka u načinu rada „Konfigurator“. Zatim pronađite granu "Rutinski zadaci" u stablu konfiguracije, oni se nalaze na kartici "Općenito" i kliknite na dugme "Dodaj" (slika 1)

Pogledajmo pobliže prozor njegovih svojstava (slika 2):
Fig.2

  1. Naziv, sinonim i komentar - pravila i principi za popunjavanje ovih polja su slični za sve konfiguracijske objekte i nema potrebe da ih ponovo opisujemo;
  2. Naziv metode – procedura opšteg modula koja što preciznije opisuje traženi algoritam (klikom na dugme za odabir otvaraju se dostupne procedure čiji se prikaz sastoji od naziva opšteg modula i naziva procedure u različitim kolonama stola);
  3. Ključ – određuje ne toliko jedinstvenost zakazanog zadatka, već jedinstvenost pozadinskog procesa pokrenutog na osnovu zadatka; ima ograničenje dužine;
  4. Raspored – opisu ovog elementa posvetit ćemo poseban pasus našeg članka;
  5. Upotreba – izbor ovog polja za potvrdu određuje aktivnost zadatka, TRUE znači da će zadatak biti pokrenut i izvršen prema rasporedu;
  6. Predefinirano – ako element ima ovaj checkbox, ovi zadaci se ne mogu izbrisati, kreiraju se automatski kada se konfiguracija pohrani u bazu podataka;
  7. Broj ponavljanja - ako se tokom izvršavanja dogodi izuzetak, biće ponovo pokrenut, tako da ne dođe do beskonačne petlje, program ograničava broj ponovnih pokretanja;
  8. Interval ponovnog pokušaja – vrijeme u sekundama između ponovnih pokretanja abnormalno dovršenih zadataka.

Pogledajmo pobliže raspored.

Raspored rutinskih zadataka

Fig.3

Prije svega, obratite pažnju na donji dio prozora, tu se prikazuju detaljne informacije s prikazom koliko često i u koje vrijeme će se zadatak obavljati.

Kartica "Općenito":

  • Datum početka zadatka;
  • Datum završetka obrade;
  • Učestalost ponavljanja zadataka.

Ako na ovoj kartici nisu navedeni datumi, tada se neće postaviti rok za zadatak.

Kartica “Dnevno” (slika 4)
Fig.4

Pored polja za unos za vrijeme početka i završetka zadatka i učestalost njegovog pokretanja u toku dana, sadrži i tabelarni dio za detaljnu konfiguraciju učestalosti izvršavanja.

Kartice “Dnevno” i “Nedeljno” sadrže informacije za odgovarajuće periode.

Karakteristike rada

U klijent-server verziji rada, izvršavanje rutinskih zadataka je određeno serverskim alatima. Iz administrativne konzole možete omogućiti ili onemogućiti mogućnost pokretanja zadataka za određenu bazu podataka.

Situacija je mnogo složenija s verzijom datoteke rada. Prije određenog izdanja platforme, pozadinske i rutinske procedure su se izvršavale samo ako je metoda ExecuteTaskProcessing() bila aktivirana kada je sistem pokrenut pod određenim korisnikom. U ovom slučaju, algoritmi su se periodično pokretali sve dok je korisnik koji je pokrenuo metodu bio u programu.

Trenutno je rad pozadinskih poslova u verziji rada datoteke ravnomjerno raspoređen među korisnicima ovlaštenim u bazi podataka; ako je program pokrenut s dodatnim parametrom AllowExecuteSheduledJobs, taj proces će biti odgovoran za rutinsko održavanje.

Možete potpuno onemogućiti pozadinski i rutinski rad u bazi podataka koja radi u režimu datoteke tako što ćete izbrisati ili preimenovati datoteku DoNotCopy.txt u fascikli sa bazom podataka. Prisustvo ove datoteke govori platformi da se posao obavlja u originalu, a ne u kopiji baze podataka.

Osim toga, u standardnim 1C isporukama postalo je moguće upravljati planiranim radom direktno iz programa, bez ulaska u „Konfigurator“. U "ZUP" konfiguraciji, verzija 3.1.3.223, možete otvoriti obrazac za upravljanje iz menija Administracija->Održavanje->Rutinske operacije->Rutinski i pozadinski zadaci (slika 5)
Sl.5

Obrazac koji se otvara ima intuitivan interfejs i omogućava vam da:


Također možete započeti zadatak direktno iz obrasca.

Vjerojatno je svaki 1C 8.3 programer prije ili kasnije morao postaviti izvršavanje određenih zadataka po rasporedu. U nastavku ću dati detaljan opis ovih mehanizama, nadam se da će ovo biti korisne informacije za početnike 1C programera. Ovo je vrlo zgodno, jer ne zahtijeva ljudsku akciju, rutinski zadatak se konfigurira jednom i radi prema vašem rasporedu.

Naći ćete detaljne upute koristeći primjer u nastavku.

Šta su rutinski i pozadinski zadaci u 1C

  • Planirani zadaci je poseban mehanizam 1C enterprise 8.3 dizajniran da izvrši određenu radnju prema datom rasporedu.
  • Pozadinski posao- objekti generirani rutinskim zadatkom koji izravno izvode namjeravanu radnju bez sudjelovanja korisnika ili 1C 8.2 programera.

Mehanizam zakazanih i pozadinskih poslova radi u klijent-server modu (SQL), zahvaljujući funkcionalnosti DBMS-a. Ako imate bazu podataka, zadatak se također može konfigurirati, ali po malo drugačijem principu.

Postavljanje pozadinskih poslova u 1C klijent-server načinu rada

Prvo, napravimo novi objekat metapodataka - rutinski zadatak. Svoj zadatak ću nazvati “Učitavanje kurseva valuta”. Pogledajmo paletu svojstava ovog konfiguracijskog objekta:

Nabavite 267 video lekcija na 1C besplatno:

  • Naziv metode— putanja do procedure koja će se izvršiti u pozadinskom poslu prema datom rasporedu. Procedura mora biti u zajedničkom modulu. Preporučuje se da ne koristite standardne, već da kreirate svoje. Ne zaboravite da se poslovi u pozadini pokreću na serveru!
  • Upotreba— znak korištenja rutinskog zadatka.
  • Unaprijed određeno— označava da li je rutinski zadatak unaprijed određen. Ako želite da rutinski zadatak radi odmah nakon postavljanja u bazu podataka, navedite ovu zastavicu. U suprotnom, morat ćete koristiti obradu Konzole posla ili uzrokovati programsko pokretanje posla.
  • Broj ponovnih pokušaja kada se posao nenormalno završava— koliko puta je pozadinski posao ponovo pokrenut ako je izvršen s greškom.
  • Interval ponovnog pokušaja kada se posao završi nenormalno— koliko često će se pozadinski posao ponovo pokretati ako je dovršen s greškom.

A najzanimljivija postavka je Raspored:

Ovdje konfigurišete interval pokretanja procedure naveden u polju „Naziv metode“. Recimo da sam konfigurisao

Pažnja! Ne zaboravite da onemogućite blokiranje izvršavanja rutinskih i pozadinskih poslova na nivou DBMS-a!

To se može učiniti u administrativnom uslužnom programu klijent-server verzije ili prilikom kreiranja nove baze podataka:

Postavljanje rutinskih zadataka u načinu 1C datoteke

U načinu rada datoteke, postavljanje takvih poslova je nešto teže. Za takav zadatak mora se pokrenuti zasebna sesija programa 1C. Ovo se često rješava kreiranjem "tehničkog" korisnika čija je sesija uvijek pokrenuta.

U režimu datoteke, rutinski posao se inicijalizira kada se pokrene metoda “RunTaskProcessing()”.

Za određenog korisnika, možete konfigurirati ovu metodu za pokretanje pomoću druge metode −

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

  • Naziv procedure— naziv procedure povezane kao rukovalac čekanja. Ime izvezene procedure modula upravljane aplikacije (obični modul aplikacije) ili globalnog dijeljenog modula. Procedura se mora nalaziti na klijentu.
  • Interval— period između izvođenja operacija u sekundama.
  • Jednom- kako izvršiti zadatak, jednom ili ne.

ConnectWaitHandler, 3600 ) ;

Dvominutni video koji pokazuje kako postaviti rutinski zadatak u 1C konfiguratoru:

Mehanizam posla

Mehanizam poslova je dizajniran da izvodi bilo koju aplikaciju ili funkcionalnost prema rasporedu ili asinhrono.

Mehanizam zadataka rješava sljedeće zadatke:

  • Sposobnost definisanja regulatornih procedura u fazi konfiguracije sistema;
  • Izvođenje navedenih radnji prema planu;
  • Pozivanje date procedure ili funkcije asinhrono, tj. bez čekanja njegovog završetka;
  • Praćenje napretka određenog zadatka i dobijanje statusa njegovog završetka (vrijednost koja pokazuje da li je bio uspješan ili ne);
  • Dobivanje liste tekućih zadataka;
  • Sposobnost čekanja da se završi jedan ili više zadataka;
  • Upravljanje poslom (mogućnost otkazivanja, blokada izvršenja, itd.).

Mehanizam posla sastoji se od sljedećih komponenti:

  • Metapodaci rutinskih zadataka;
  • Redovni zadaci;
  • Pozadinski poslovi;
  • Task Scheduler.

Pozadinski poslovi su dizajnirani da asinhrono izvršavaju zadatke aplikacije. Pozadinski zadaci se implementiraju pomoću ugrađenog jezika.

Planirani zadaci - dizajnirani za obavljanje primijenjenih zadataka po rasporedu. Rutinski zadaci su pohranjeni u informacijskoj bazi i kreirani su na osnovu metapodataka definiranih u konfiguraciji. Metapodaci regulatornog zadatka sadrže informacije kao što su naziv, metoda, upotreba itd.

Rutinski zadatak ima raspored koji određuje u koje vrijeme mora biti izvršena metoda povezana s rutinskim zadatkom. Raspored je, po pravilu, određen u bazi podataka, ali se može odrediti i u fazi konfiguracije (na primjer, za unaprijed definirane rutinske zadatke).

Planer zadataka se koristi za planiranje izvršavanja rutinskih zadataka. Za svaki zakazani posao, planer periodično provjerava da li se trenutni datum i vrijeme podudaraju s rasporedom zakazanog posla. Ako se podudara, planer dodjeljuje taj zadatak izvršenju. Da bi to uradio, za ovaj zakazani zadatak, planer kreira pozadinski zadatak, koji obavlja stvarnu obradu.

Pozadinski poslovi

Pozadinske poslove pogodne su za izvođenje složenih proračuna kada može potrajati dugo da se dobije rezultat izračuna. Mehanizam poslova ima sredstva za asinhrono izvođenje takvih proračuna.

Povezana s pozadinskim poslom je metoda koja se poziva kada se pozadinski posao izvodi. Metoda pozadinskog posla može biti bilo koja procedura ili funkcija neglobalnog zajedničkog modula koji se može pozvati na poslužitelju. Parametri pozadinskog posla mogu biti bilo koje vrijednosti koje su dozvoljene za prosljeđivanje serveru. Parametri pozadinskog posla moraju se točno podudarati s parametrima procedure ili funkcije koju poziva. Ako je metoda pozadinskog posla funkcija, njena povratna vrijednost se zanemaruje.

Pozadinski posao može imati ključ - bilo koju vrijednost aplikacije. Ključ uvodi ograničenje na pokretanje pozadinskih poslova - samo jedan pozadinski posao može se izvršiti u jedinici vremena sa specifičnom vrijednošću ključa i datim imenom metode pozadinskog posla (ime metode se sastoji od naziva modula i naziva procedure ili funkciju). Ključ vam omogućava da grupišete pozadinske poslove koji imaju iste metode prema specifičnoj karakteristici aplikacije tako da se unutar jedne grupe ne izvršava više od jednog pozadinskog posla.

Pozadinski poslovi se kreiraju i upravljaju programski iz bilo koje veze. Svakom korisniku je dozvoljeno da kreira posao u pozadini. Štaviše, izvršava se u ime korisnika koji ga je kreirao. Primanje zadataka, kao i čekanje na njihov završetak, dozvoljeno je iz bilo koje veze korisniku s administrativnim pravima ili korisniku koji je kreirao ove pozadinske poslove.

Pozadinski posao je čisto objekt sesije i ne pripada nijednoj korisničkoj sesiji. Za svaki zadatak kreira se posebna sistemska sesija koja se pokreće u ime korisnika koji je uputio poziv. Pozadinski poslovi nemaju trajno stanje.

Pozadinski posao može pokrenuti druge pozadinske poslove. U verziji klijent-server, ovo vam omogućava da paralelizirate složene proračune kroz procese radnika klastera, što može značajno ubrzati proces izračunavanja u cjelini. Paralelizacija se provodi pokretanjem nekoliko podređenih pozadinskih poslova i čekanjem da se svaki od njih završi u glavnom pozadinskom poslu.

Pozadinski poslovi koji se uspješno završe ili neuspješno pohranjuju se 24 sata, a zatim se brišu. Ako broj dovršenih pozadinskih poslova prelazi 1000, najstariji pozadinski poslovi se također brišu.

Planirani zadaci

Planirani zadaci se koriste kada je potrebno izvršiti određene periodične ili jednokratne radnje prema rasporedu.

Planirani zadaci se pohranjuju u bazu informacija i kreiraju se na osnovu metapodataka rutinskog zadatka definiranog u konfiguraciji. Metapodaci specificiraju takve parametre rutinskog zadatka kao što su: pozvana metoda, naziv, ključ, mogućnost upotrebe, znak predodređenosti, itd. Prilikom kreiranja rutinskog zadatka, možete dodatno odrediti raspored (može se navesti u metapodacima), vrijednosti ​​parametara metode, ime korisnika u čije ime izvršava rutinske zadatke itd.

Kreiranje i upravljanje planiranim zadacima vrši se programski sa bilo koje veze i dozvoljeno je samo korisnicima sa administrativnim pravima.

Bilješka. Kada radite u verziji datoteke, moguće je kreirati i uređivati ​​rutinske zadatke bez pokretanja planera zadataka.

S rutinskim zadatkom povezana je metoda koja se poziva kada se rutinski zadatak izvršava. Metoda rutinskog zadatka može biti bilo koja procedura ili funkcija neglobalnog zajedničkog modula koji se može pozvati na poslužitelju. Parametri rutinskog zadatka mogu biti bilo koje vrijednosti koje se smiju prenijeti na server. Parametri rutinskog zadatka moraju se točno podudarati s parametrima procedure ili funkcije koju poziva. Ako je metoda rutinskog zadatka funkcija, tada se njena povratna vrijednost zanemaruje.

Rutinski zadatak može imati ključ - bilo koju vrijednost aplikacije. Ključ uvodi ograničenje na pokretanje zakazanih zadataka, jer po jedinici vremena, među rutinskim zadacima povezanim sa istim objektom metapodataka, može se izvršiti samo jedan rutinski zadatak sa specifičnom vrijednošću ključa. Ključ vam omogućava da grupišete rutinske zadatke povezane s istim objektom metapodataka prema specifičnoj karakteristici aplikacije tako da se unutar jedne grupe ne izvodi više od jednog rutinskog zadatka.

Tokom konfiguracije, možete definirati unaprijed definirane rutinske zadatke. Unaprijed definirani rutinski zadaci se ne razlikuju od redovnih rutinskih zadataka, osim što se ne mogu eksplicitno kreirati ili izbrisati. Ako je u metapodacima zakazanog zadatka postavljeno znak unaprijed određenog rutinskog zadatka, tada će se prilikom ažuriranja konfiguracije u infobazi automatski kreirati unaprijed definirani rutinski zadatak. Ako je unaprijed određena zastavica obrisana, tada će prilikom ažuriranja konfiguracije u bazi podataka, unaprijed definirani rutinski zadatak biti automatski obrisan. Početne vrijednosti svojstava unaprijed definiranog zakazanog zadatka (na primjer, rasporeda) postavljaju se u metapodacima. U budućnosti, kada je aplikacija pokrenuta, mogu se mijenjati. Unaprijed definirani rutinski zadaci nemaju parametre.

Raspored rutinskih zadataka određuje u koje vrijeme treba pokrenuti rutinski zadatak. Raspored vam omogućava da podesite: datum i vreme početka i završetka zadatka, period izvršenja, dane u nedelji i mesece do kojih se planirani zadatak mora izvršiti itd. (pogledajte opis ugrađenog- na jeziku).

Primjeri rutinskih rasporeda zadataka:

Svaki sat, samo jedan dan

Period dana ponavljanja = 0, period ponavljanja dana = 3600

Svaki dan jednom dnevno

Period dana ponavljanja = 1, period ponavljanja dana = 0

Jednog dana, jednom

PeriodRepeatDays = 0

Svaki drugi dan jednom dnevno

PeriodRepeatDays = 2

Svaki sat od 01.00 do 07.00 svaki dan

PeriodRepeatDays = 1

Period ponavljanja tokom dana = 3600

Vrijeme početka = 01.00

Vrijeme završetka = 07.00

Svake subote i nedjelje u 09.00 sati

PeriodRepeatDays = 1

Dani u sedmici = 6, 7

Vrijeme početka = 09.00

Svaki dan jednu sedmicu, preskočite sedmicu

PeriodRepeatDays = 1

Razdoblje sedmice = 2

U 01.00 jednom

Vrijeme početka = 01.00

Zadnji dan svakog mjeseca u 9:00.

PeriodRepeatDays = 1

Dan u mjesecu = -1

Vrijeme početka = 09.00

Peti dan svakog mjeseca u 9:00

PeriodRepeatDays = 1

Dan u mjesecu = 5

Vrijeme početka = 09.00

Svake druge srijede u mjesecu u 9:00

PeriodRepeatDays = 1

DayWeekInMonth = 2

Dani u sedmici = 3

Vrijeme početka = 09.00

Možete provjeriti da li je zadatak pokrenut za dati datum (metoda RequiredExecution objekta ScheduleTasks). Planirani zadaci se uvijek izvode pod imenom određenog korisnika. Ako korisnik zakazanog zadatka nije naveden, tada se izvršavanje događa u ime zadanog korisnika koji ima administrativna prava.

Rutinski zadaci se izvršavaju pomoću zadataka u pozadini. Kada planer utvrdi da se planirani zadatak treba pokrenuti, automatski se kreira pozadinski posao na osnovu ovog planiranog zadatka, koji obavlja svu dalju obradu. Ako je ovaj rutinski zadatak već pokrenut, neće se ponovo pokrenuti, bez obzira na njegov raspored.

Planirani zadaci se mogu ponovo pokrenuti. Ovo je posebno tačno kada se mora garantovati da će se rutinska metoda zadatka izvršiti. Rutinski zadatak se ponovo pokreće kada se nenormalno završi ili kada se radni proces (u verziji klijent-server) ili klijentski proces (u verziji datoteke) na kojem je rutinski zadatak bio nenormalno prekinut. U planiranom zadatku možete odrediti koliko puta ga treba ponovo pokrenuti, kao i interval između ponovnih pokretanja. Prilikom implementacije metode rutinskog zadatka koji se može ponovo pokrenuti, morate uzeti u obzir da će pri ponovnom pokretanju njegovo izvršavanje početi od početka, a ne nastaviti od trenutka abnormalnog završetka.

Važno je to zapamtiti Vrijeme završetka neće nužno završiti pozadinski posao u određeno vrijeme. Neke izjave:

* Pozadinski posao može zanemariti svoje automatsko otkazivanje ako nije zamrznut, ali nastavi da se izvodi jer se ne mogu otkazati sve operacije platforme. Ako se izvrši ciklički kod ugrađenog jezika, tada se posao može otkazati, inače ne. Sve zavisi od toga čime se posao bavi. * Vrijeme završetka - granica unutar koje zadatak može započeti, a ne završiti? * Prisilno okončanje zadatka vraća nazad promjene napravljene na početku transakcije?

Karakteristike izvršavanja pozadinskih poslova u fajl i klijent-server varijantama

Mehanizmi za izvršavanje pozadinskih poslova u verzijama datoteke i klijent-server su različiti.

  • U verziji datoteke morate kreirati namjenski klijentski proces koji će obavljati pozadinske poslove. Da bi to učinio, klijentski proces mora periodično pozvati funkciju globalnog konteksta ExecuteJobProcessing. Samo jedan klijentski proces po bazi podataka bi trebao obraditi pozadinske poslove (i, shodno tome, pozvati ovu funkciju). Ako klijentski proces nije kreiran za obradu pozadinskih poslova, tada će se prilikom programskog pristupa motoru poslova prikazati greška “Upravitelj poslova nije aktivan”. Ne preporučuje se korištenje klijentskog procesa koji obrađuje pozadinske poslove za druge funkcije.

Jednom kada klijentski proces obrađuje pozadinske poslove, drugi klijentski procesi mogu programski pristupiti mašini za pozadinske poslove, tj. može pokrenuti i upravljati poslovima u pozadini.

U verziji klijent-server, planer zadataka se koristi za izvršavanje pozadinskih poslova, koji se fizički nalazi u upravitelju klastera. Za sve pozadinske poslove u redu čekanja, planer dobiva najmanje opterećen radni proces i koristi ga za pokretanje odgovarajućeg pozadinskog posla. Radnički proces izvršava posao i obavještava planer o rezultatima izvršenja.

U verziji klijent-server moguće je blokirati izvršavanje rutinskih zadataka. Izvršavanje rutinskih zadataka je blokirano u sljedećim slučajevima:

  • Na informacijskoj bazi je instalirano eksplicitno blokiranje rutinskih zadataka. Zaključavanje se može postaviti preko konzole klastera;
  • Na infobazi postoji blok veze. Zaključavanje se može postaviti preko konzole klastera;
  • Metoda SetExclusiveMode() sa parametrom True je pozvana iz ugrađenog jezika;
  • U nekim drugim slučajevima (na primjer, prilikom ažuriranja konfiguracije baze podataka).

Kreiranje metapodataka za rutinski zadatak

Prije nego što programski kreirate rutinski zadatak u bazi podataka, trebate kreirati objekt metapodataka za njega.

Da biste kreirali objekat metapodataka za rutinski zadatak u stablu konfiguracije u grani “Općenito” za granu “Rutinski zadaci”, izvršite naredbu “Dodaj” i popunite sljedeća svojstva rutinskog zadatka u paleti svojstava:

Naziv metode - označava naziv metode rutinskog zadatka.

Ključ - navedite proizvoljnu vrijednost niza koja će se koristiti kao ključ planiranog zadatka.

Raspored - označava raspored rutinskog zadatka. Da biste kreirali raspored, kliknite na vezu „Otvori“ i u obrascu rasporeda koji se otvori postavite potrebne vrijednosti.

Na kartici "Općenito" naznačeni su datum početka i završetka zadatka i način ponavljanja.

Na kartici „Dnevno“ naznačen je dnevni raspored zadatka.

Navedite raspored:

  • vrijeme početka i vrijeme završetka zadatka;
  • vrijeme završetka zadatka, nakon kojeg će biti prinudno prekinut;
  • period ponavljanja zadatka;
  • trajanje pauze između ponavljanja;
  • trajanje izvršenja.

Dozvoljeno je specificirati proizvoljnu kombinaciju uslova.

Na kartici „Sedmično“ naznačen je nedeljni raspored zadatka.

Označite potvrdne okvire za dane u sedmici u kojima će se zadatak izvršiti. Ako želite da ponovite zadatak, odredite interval ponavljanja u sedmicama. Na primjer, zadatak se izvršava za 2 sedmice, vrijednost ponavljanja je 2.

Na kartici “Mjesečno” je naznačen mjesečni raspored zadatka.

Označite potvrdne okvire za mjesece u kojima će se zadatak izvršiti. Po potrebi možete odrediti konkretan dan (mjesec ili sedmicu) izvršenja od početka mjeseca/tjedne ili do kraja.

Upotreba - ako je postavljeno, zadatak će se izvršavati prema rasporedu.

Predefinirano - ako je postavljeno, zadatak je unaprijed definirani zadatak.

Broj ponovnih pokušaja u slučaju abnormalnog prekida - označava broj ponovnih pokušaja u slučaju abnormalnog prekida.

Interval ponovnog pokušaja nakon abnormalnog završetka - specificira interval ponovnog pokušaja nakon abnormalnog završetka. Primjeri

Kreiranje pozadinskog posla “Ažuriranje indeksa pretraživanja punog teksta”:

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

Kreiranje rutinskog zadatka "Oporavak sekvenci":

Raspored = Novi zadatak rasporeda; Schedule.PeriodRepeatDays = 1; Schedule.RepeatPeriodDuringDay = 0;

Zadatak = RoutineTasks.CreateRoutineTask("Vraćanje sekvenci"); Job.Schedule = Raspored; Task.Write();

Job Console

Obrada sa ITS-om, upravlja rutinskim zadacima:

Rad sa rutinskim zadacima

Job Objects

Objekti poslova nisu referencirani, već su pohranjeni u bazi podataka u nekom posebnom skladištu.

Ako je u metapodacima omogućena oznaka "Unaprijed definirano", tada se takav objekt kreira automatski kada se pokrene 1C:Enterprise i uvijek postoji u tačno jednoj instanci. Takav objekat se ne može izbrisati.

Ako oznaka "Predefined" nije postavljena, tada se objekti takvog zadatka kreiraju i brišu programski, specificirajući raspored i parametre.

Dobivanje liste zadataka

Spisak zadataka se može dobiti pomoću metode Get RoutineTasks globalni menadžer poslova RutineTasks

ScheduledJobsManager

Get ScheduledJobs (GetScheduledJobs)

sintaksa:

Nabavite rutinske zadatke(<Отбор>)

Opcije:

<Отбор>(opciono)

Tip: Struktura. Selekcija koja definira strukturu. Vrijednosti strukture mogu biti: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Ako izbor nije specificiran, dobijaju se svi rutinski zadaci.

Ako filtrirate prema metapodacima, tada kao vrijednost Metapodataka možete navesti ili objekt metapodataka rutinskog zadatka ili njegovo ime.

Povratna vrijednost:

Tip: niz.

Opis:

Prima niz rutinskih zadataka za dati odabir. Primanje zakazanih zadataka moguće je samo za administratora.

Dostupnost:

Rutina = RoutineTasks.GetRoutineTasks(Izbor);

Za svaku rutinu ciklusa rutine NewLine = Lista rutinskih zadataka.Add(); NewRow.Metadata = Regular.Metadata.View(); NewLine.Name = Regular.Name; NewString.Key = Regular.Key; NewLine.Schedule = Raspored.Raspored; NewLine.User = Regular.UserName; NewString.Predefined = Regular.Predefined; NewString.Use = Regular.Use; NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask; Ako LastTask<>Nedefinirano Zatim NewRow.Running = LastTask.Start; NewRow.State = LastTask.State; endIf; EndCycle;

Kreacija

Kreiran metodom Create RoutineTask za upravitelja rutinskih zadataka:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Name = Ime; RegularTask.Key = Ključ; RegularTask.Use = Upotreba; RoutineTask.UserName = UsersChoice; RoutineTask.Number ofRepetitionsAtEmergencyCompletion =BrojRepetitionsAtEmergencyCompletion; ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion; ScheduleTask.Schedule = Raspored; RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Name = Ime; JobObject.Use = Tačno;

Objekt zadatka ima polje "Parametri" u kojem su specificirani parametri metode:

ScheduledJob

Opcije(Parametri)

Upotreba:

Citaj i pisi.

Opis:

Tip: niz. Niz parametara za zakazani zadatak. Broj i sastav parametara moraju odgovarati parametrima metode rutinskog zadatka.

Dostupnost:

Server, debeli klijent, eksterna veza.

Bilješka:

Mogućnosti čitanja i pisanja dostupne su samo administratoru.

Odstranjivanje

Izbrisano pomoću metode Delete() objekta zadatka:

ScheduledTask.Delete();

Dobivanje objekta posla

  • lista putem GetRoutineTasks metode:

Rutina = RoutineTasks.GetRoutineTasks(Izbor);

  • preko FindByUniqueIdentifier metode upravitelja zadataka:

Zadatak = ScheduledTasks.FindByUniqueIdentifier(UID);