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


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

Za uređivanje rutinskih i pozadinskih zadataka, u kartici administracije odaberite "rutinski i pozadinski zadaci" na lijevoj strani. Pojavit će se popis postojećih zadataka, njihov status, raspored i druge informacije.

Klikom par puta na bilo koji od zadataka otvorit će se prozor sa svojstvima tog zadatka. Ovdje možete promijeniti mnoge postavke po svom ukusu, uključujući raspored za ovaj zadatak. Da biste onemogućili zadatak, potvrdni okvir "Omogućeno" mora biti poništen. Ali ako se zadatak mora izvoditi prema rasporedu, iznimno je važno koristiti zasebnog korisnika s punim pravima za sve pozadinske zadatke.

Parametri za raspoređivanje zadataka su vrlo fleksibilni, no ipak je preporučljivo sve zadatke postaviti na način da se u jednom trenutku izvršava samo 1 zadatak i to po mogućnosti u neradno vrijeme. Jedina iznimka može biti sinkronizacija nekoliko povezanih baza podataka, na primjer, računovodstvo poduzeća + obračun plaća i upravljanje osobljem.

Učitavanje bankovnog klasifikatora - nedjelja, 4:30
Učitavanje tečajeva - svaki dan; 7:00
Ekstrakcija teksta - svaki dan; 6:00.
Razmjena poruka preko računa za upravljanje dokumentima - svaki dan; svakih 10800 sek.
Jedinice se ažuriraju svaki dan; od 5:00:00 jednom dnevno
Ažurirajte zadatke računovođe - svaki dan; od 6:30:00 jednom dnevno
Ažuriranje PPD indeksa (pretraživanje cijelog teksta) - svaki dan; svakih 10800 sek.
Obnavljanje jedinica - svaki dan, po danu u tjednu [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 (pretraživanje cijelog teksta) - svaki dan; od 4:00:00 jednom dnevno
Uklanjanje nevažnih informacija o sinkronizaciji - svaki dan; od 3:30:00 jednom dnevno
Podešavanje razdoblja za obračunate zbrojeve - svaki dan, 5. u mjesecu; od 1:00:00 jednom dnevno

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

Nedavno sam objavio članak: Vrijeme je da ovo automatiziramo:

Rutinski i pozadinski zadaci

Motor poslova dizajniran je za izvođenje bilo koje aplikacije ili funkcije prema rasporedu ili asinkrono.

Mehanizam zadataka rješava sljedeće probleme:

  • Sposobnost definiranja regulatornih procedura u fazi konfiguracije sustava;
  • Izvršenje navedenih radnji prema rasporedu;
  • Pozivanje određene procedure ili funkcije asinkrono, tj. bez čekanja na njegov završetak;
  • Praćenje napretka određenog zadatka i dobivanje statusa njegovog završetka (vrijednost koja pokazuje je li bio uspješan ili ne);
  • Dobivanje popisa tekućih zadataka;
  • Sposobnost čekanja da se završi jedan ili više zadataka;
  • Vođenje poslova (mogućnost otkazivanja, blokada izvršenja i sl.).

Mehanizam posla sastoji se od sljedećih komponenti:

  • Metapodaci rutinskih zadataka;
  • Redovni zadaci;
  • Pozadinski poslovi;
  • Planer zadataka.

Pozadinski poslovi i dizajnirani su za asinkrono izvršavanje aplikacijskih zadataka. Pozadinski zadaci implementirani su pomoću ugrađenog jezika.

Planirani zadaci i dizajnirani su za izvršavanje aplikacijskih zadataka prema rasporedu. Rutinski zadaci pohranjeni su u informacijskoj bazi i kreirani na temelju 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 se mora izvršiti metoda povezana s rutinskim zadatkom. Raspored je u pravilu naveden u informacijskoj bazi, ali se također može navesti u fazi konfiguracije (na primjer, za unaprijed definirane rutinske zadatke).

Planer zadataka koristi se za planiranje izvršavanja rutinskih zadataka. Za svaki planirani posao, planer povremeno provjerava odgovaraju li trenutni datum i vrijeme rasporedu planiranog posla. Ako odgovara, planer dodjeljuje taj zadatak za izvršenje. Kako bi to učinio, za ovaj zakazani zadatak, planer stvara pozadinski zadatak, koji obavlja stvarnu obradu.

Mislim da je dosta s opisom - krenimo na implementaciju:

Stvaranje rutinskog zadatka

Naziv metode– put do procedure koja će se izvršiti u pozadinskom poslu prema zadanom rasporedu. Postupak mora biti u zajedničkom modulu. Preporuča se ne koristiti standardne zajedničke module, već izraditi vlastite. Ne zaboravite da se pozadinski poslovi izvode na poslužitelju!

Korištenje– znak korištenja rutinskog zadatka.

Unaprijed određeno– označava je li 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 programski pokrenuti zadatak.

Broj ponovnih pokušaja kada se posao prekine neuobičajeno– koliko je puta pozadinski posao ponovno pokrenut ako je izvršen s pogreškom.

Interval ponovnog pokušaja kada se posao nenormalno prekine– koliko često će se pozadinski posao ponovno pokrenuti ako je dovršen s pogreškom.

Postavljanje rasporeda

Raspored dovršavanje zadatka:

Svaki sat, samo jedan danRazdoblje ponavljanja dana = 0, Razdoblje ponavljanja dana = 3600
Svaki dan jednom dnevnoRazdoblje ponavljanja dana = 1, Razdoblje ponavljanja dana = 0
Jedan dan, jedan putPeriodRepeatDays = 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.00Razdoblje ponavljanja dana = 1 dana u tjednu = 6, 7 vremena početka = 09.00
Svaki dan jedan tjedan, preskočite tjedanPeriodRepeatDays = 1PeriodWeeks = 2
Jednom u 01.00Vrijeme 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
Druge srijede u mjesecu u 9:00PeriodRepeatDays = 1DayWeekMonth = 2DaysWeek = 3

Vrijeme početka = 09.00 sati

Značajke izvršavanja pozadinskih poslova u varijantama datoteka i klijent-poslužitelj

Mehanizmi za izvršavanje pozadinskih poslova u verziji datoteka i klijent-poslužitelj su različiti.

U verziji datoteke trebate stvoriti namjenski klijentski proces koji će obavljati pozadinske poslove. Da bi to učinio, klijentski proces mora povremeno pozivati ​​funkciju globalnog konteksta ExecuteJobProcessing. Samo jedan klijentski proces po informacijskoj bazi treba obrađivati ​​pozadinske poslove (i, sukladno tome, pozivati ​​ovu funkciju). Ako proces klijenta nije kreiran za obradu pozadinskih poslova, tada će se prilikom programskog pristupa mehanizmu poslova prikazati pogreška "Upravitelj poslova nije aktivan". Ne preporučuje se korištenje procesa klijenta koji obrađuje pozadinske poslove za druge funkcije.

Nakon što se pokrene klijentski proces koji obrađuje pozadinske poslove, drugi klijentski procesi mogu programski pristupiti mehanizmu za pozadinske poslove, tj. može pokrenuti i upravljati pozadinskim poslovima.

U verziji klijent-poslužitelj 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-poslužitelj moguće je blokirati izvršavanje rutinskih zadataka. Izvršenje rutinskih zadataka blokirano je u sljedećim slučajevima:

  • Na informacijskoj bazi instalirano je 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() s parametrom True pozvana je iz ugrađenog jezika;
  • U nekim drugim slučajevima (na primjer, prilikom ažuriranja konfiguracije baze podataka).

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

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

Napravite zadatak

Naš cilj nije opis koda izvršnog modula, pokazat ćemo opća načela rada i kreiranja rutinskog zadatka.

Rutinski zadatak je nezamjenjiv:

  1. Ako zadatak pri ruci uključuje, kao jedan od uvjeta, potrebu periodičkog izvršavanja 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 ovisi o vanjskim događajima koji se događaju s objektima infobaze.

Da biste ga stvorili, morate otići u informacijsku bazu u načinu rada "Konfigurator". Zatim pronađite granu "Rutinski zadaci" u konfiguracijskom stablu, nalaze se na kartici "Općenito" i kliknite gumb "Dodaj" (slika 1)

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

  1. Naziv, sinonim i komentar - pravila i principi popunjavanja ovih polja slični su za sve konfiguracijske objekte i nema potrebe ponovno ih opisivati;
  2. Naziv metode – procedura općeg modula koja što točnije opisuje traženi algoritam (klikom na gumb za odabir otvaraju se dostupne procedure čiji se prikaz sastoji od naziva općeg modula i naziva procedure u različitim stupcima) stola);
  3. Ključ – ne određuje toliko jedinstvenost planiranog zadatka, koliko jedinstvenost pozadinskog procesa pokrenutog na temelju zadatka; ima ograničenje duljine;
  4. Raspored - opisu ovog elementa posvetit ćemo poseban odlomak našeg članka;
  5. Upotreba – označavanje ovog okvira određuje aktivnost zadatka, TRUE znači da će zadatak biti pokrenut i izvršen prema rasporedu;
  6. Unaprijed definirano – ako element ima ovaj potvrdni okvir, ovi se zadaci ne mogu izbrisati; automatski se stvaraju kada se konfiguracija spremi u bazu podataka;
  7. Broj ponavljanja - ako se tijekom izvođenja dogodi iznimka, ponovno će se pokrenuti, kako ne bi došlo do beskonačne petlje, program ograničava broj ponovnih pokretanja;
  8. Interval ponovnog pokušaja – vrijeme u sekundama između ponovnog pokretanja nenormalno dovršenih zadataka.

Pogledajmo pobliže raspored.

Raspored rutinskih zadataka

sl.3

Prije svega, trebali biste obratiti pozornost na donji dio prozora, tu se prikazuju detaljne informacije s analizom koliko često i u koje vrijeme će se zadatak izvršavati.

Kartica "Općenito":

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

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

Kartica "Dnevno" (Sl. 4)
sl.4

Osim polja za unos vremena početka i završetka zadatka te učestalosti njegovog pokretanja tijekom dana, sadrži tabelarnu dionicu za detaljnu konfiguraciju učestalosti izvršavanja.

Kartice "Dnevno" i "Tjedno" sadrže informacije za odgovarajuća razdoblja.

Značajke rada

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

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

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

Možete potpuno onemogućiti pozadinski i rutinski rad u bazi podataka koja radi u načinu rada datoteke brisanjem ili preimenovanjem datoteke DoNotCopy.txt u mapi s bazom podataka. Prisutnost ove datoteke govori platformi da se posao obavlja u izvorniku, a ne u kopiji baze podataka.

Osim toga, u standardnim isporukama 1C postalo je moguće upravljati planiranim radom izravno iz programa, bez odlaska u "Konfigurator". U konfiguraciji “ZUP” verzija 3.1.3.223 obrazac za upravljanje možete otvoriti iz izbornika Administracija->Održavanje->Rutinski poslovi->Rutinski i pozadinski zadaci (slika 5.)
sl.5

Obrazac koji se otvara ima intuitivno sučelje i omogućuje vam da:


Također možete pokrenuti zadatak izravno iz obrasca.

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

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

Što su rutinski i pozadinski zadaci u 1C

  • Planirani zadaci je poseban mehanizam 1C Enterprise 8.3 dizajniran za izvođenje određene akcije prema zadanom rasporedu.
  • Pozadinski posao- objekti generirani rutinskim zadatkom koji izravno izvode predviđenu radnju bez sudjelovanja korisnika ili programera 1C 8.2.

Mehanizam planiranih i pozadinskih poslova radi u načinu rada klijent-poslužitelj (SQL), zahvaljujući funkcionalnosti DBMS-a. Ako imate bazu podataka datoteka, zadatak se također može konfigurirati, ali prema malo drugačijem principu.

Postavljanje pozadinskih poslova u načinu rada 1C klijent-poslužitelj

Prvo, stvorimo novi objekt metapodataka - rutinski zadatak. Svoj ću zadatak nazvati "Učitavanje tečajeva valuta". Pogledajmo paletu svojstava ovog konfiguracijskog objekta:

Besplatno nabavite 267 video lekcija o 1C:

  • Naziv metode— put do procedure koja će se izvršiti u pozadinskom poslu prema zadanom rasporedu. Postupak mora biti u zajedničkom modulu. Preporuča se ne koristiti standardne, već izraditi vlastite. Ne zaboravite da se pozadinski poslovi izvode na poslužitelju!
  • Korištenje— znak korištenja rutinskog zadatka.
  • Unaprijed određeno— označava je li rutinski zadatak unaprijed određen. Ako želite da rutinski zadatak radi odmah nakon postavljanja u bazu podataka, navedite ovu oznaku. Inače ćete morati koristiti obradu Job Console ili izazvati programsko izvođenje posla.
  • Broj ponovnih pokušaja kada se posao prekine neuobičajeno— koliko je puta pozadinski posao ponovno pokrenut ako je izvršen s pogreškom.
  • Interval ponovnog pokušaja kada se posao nenormalno prekine— koliko često će se pozadinski posao ponovno pokretati ako je dovršen s pogreškom.

A najzanimljivija postavka je Raspored:

Ovdje konfigurirate interval pokretanja procedure navedene u polju "Naziv metode". Recimo da sam konfigurirao

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

To se može učiniti u uslužnom programu za administraciju verzije klijent-poslužitelj ili prilikom stvaranja nove baze podataka:

Postavljanje rutinskih zadataka u načinu rada datoteke 1C

U modu datoteke, postavljanje takvih poslova je nešto teže. Za takav zadatak potrebno je pokrenuti zasebnu sesiju programa 1C. To se često rješava stvaranjem "tehničkog" korisnika čija se sesija uvijek izvodi.

U datotečnom načinu, rutinski posao se inicijalizira kada se pokrene metoda "RunTaskProcessing()".

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

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

  • Naziv postupka— naziv procedure spojene kao rukovatelj čekanjem. Naziv izvezene procedure upravljanog aplikacijskog modula (običnog aplikacijskog modula) ili globalnog dijeljenog modula. Zahvat se mora nalaziti na klijentu.
  • Interval— razdoblje između izvrš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

Motor poslova dizajniran je za izvođenje bilo koje aplikacije ili funkcije prema rasporedu ili asinkrono.

Mehanizam zadataka rješava sljedeće probleme:

  • Sposobnost definiranja regulatornih procedura u fazi konfiguracije sustava;
  • Izvršenje navedenih radnji prema rasporedu;
  • Pozivanje određene procedure ili funkcije asinkrono, tj. bez čekanja na njegov završetak;
  • Praćenje napretka određenog zadatka i dobivanje statusa njegovog završetka (vrijednost koja pokazuje je li bio uspješan ili ne);
  • Dobivanje popisa tekućih zadataka;
  • Sposobnost čekanja da se završi jedan ili više zadataka;
  • Vođenje poslova (mogućnost otkazivanja, blokada izvršenja i sl.).

Mehanizam posla sastoji se od sljedećih komponenti:

  • Metapodaci rutinskih zadataka;
  • Redovni zadaci;
  • Pozadinski poslovi;
  • Planer zadataka.

Pozadinski poslovi dizajnirani su za asinkrono izvršavanje aplikacijskih zadataka. Pozadinski zadaci implementirani su pomoću ugrađenog jezika.

Planirani zadaci - dizajnirani za izvršavanje primijenjenih zadataka prema rasporedu. Rutinski zadaci pohranjeni su u informacijskoj bazi i kreirani na temelju 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 se mora izvršiti metoda povezana s rutinskim zadatkom. Raspored je u pravilu naveden u informacijskoj bazi, ali se također može navesti u fazi konfiguracije (na primjer, za unaprijed definirane rutinske zadatke).

Planer zadataka koristi se za planiranje izvršavanja rutinskih zadataka. Za svaki planirani posao, planer povremeno provjerava odgovaraju li trenutni datum i vrijeme rasporedu planiranog posla. Ako odgovara, planer dodjeljuje taj zadatak za izvršenje. Kako bi to učinio, za ovaj zakazani zadatak, planer stvara pozadinski zadatak, koji obavlja stvarnu obradu.

Pozadinski poslovi

Pozadinski poslovi prikladni su za korištenje za izvođenje složenih izračuna kada rezultat izračuna može dugo trajati. Motor poslova ima sredstva za asinkrono izvođenje takvih izračuna.

Pozadinskom poslu pridružena 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 je dopušteno proslijediti poslužitelju. Parametri pozadinskog posla moraju točno odgovarati parametrima procedure ili funkcije koju poziva. Ako je metoda pozadinskog posla funkcija, njezina povratna vrijednost se zanemaruje.

Pozadinski posao može imati ključ - bilo koju vrijednost aplikacije. Ključ uvodi ograničenje pokretanja pozadinskih poslova - samo jedan pozadinski posao može se izvršiti po jedinici vremena s određenom vrijednošću ključa i zadanim nazivom metode pozadinskog posla (ime metode sastoji se od naziva modula i naziva procedure ili funkcija). Ključ vam omogućuje grupiranje pozadinskih poslova koji imaju iste metode prema specifičnim karakteristikama aplikacije tako da se unutar jedne grupe ne izvršava više od jednog pozadinskog posla.

Pozadinski poslovi se stvaraju i njima se upravlja programski s bilo koje veze. Svaki korisnik može stvoriti pozadinski posao. Štoviše, izvršava se u ime korisnika koji ga je stvorio. Primanje zadataka, kao i čekanje na njihov završetak, dopušteno je s bilo koje veze prema korisniku s administratorskim pravima ili korisniku koji je kreirao te pozadinske poslove.

Pozadinski posao je isključivo objekt sesije i ne pripada nijednoj korisničkoj sesiji. Za svaki zadatak kreira se posebna sesija sustava koja se izvodi u ime korisnika koji je uputio poziv. Pozadinski poslovi nemaju trajno stanje.

Pozadinski posao može proizvesti druge pozadinske poslove. U verziji klijent-poslužitelj to vam omogućuje paraleliziranje složenih izračuna u radničkim procesima klastera, što može značajno ubrzati proces izračuna u cjelini. Paralelizacija se provodi stvaranjem nekoliko podređenih pozadinskih poslova i čekanjem da svaki od njih završi u glavnom pozadinskom poslu.

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

Planirani zadaci

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

Planirani zadaci pohranjuju se u informacijsku bazu i kreiraju se na temelju metapodataka rutinskog zadatka definiranog u konfiguraciji. Metapodaci određuju takve parametre rutinskog zadatka kao što su: pozvana metoda, naziv, ključ, mogućnost korištenja, znak predodređenosti itd. Prilikom izrade rutinskog zadatka možete dodatno odrediti raspored (može se navesti u metapodacima), vrijednosti ​​parametara metode, ime korisnika u čije ime se izvršavaju rutinski zadaci itd.

Stvaranje i upravljanje planiranim zadacima izvodi se programski s bilo koje veze i dopušteno je samo korisnicima s administratorskim pravima.

Bilješka. Kada radite u datotečnoj verziji, 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ši. 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 je dopušteno prenijeti na poslužitelj. Parametri rutinskog zadatka moraju točno odgovarati parametrima procedure ili funkcije koju poziva. Ako je metoda rutinskog zadatka funkcija, tada se njezina povratna vrijednost zanemaruje.

Rutinski zadatak može imati ključ - bilo koju vrijednost aplikacije. Ključ uvodi ograničenje pokretanja planiranih zadataka, jer po jedinici vremena, među rutinskim zadacima povezanim s istim objektom metapodataka, može se izvršiti samo jedan rutinski zadatak s određenom vrijednošću ključa. Ključ vam omogućuje grupiranje rutinskih zadataka povezanih s istim objektom metapodataka prema specifičnim karakteristikama aplikacije tako da se unutar jedne grupe ne izvodi više od jednog rutinskog zadatka.

Tijekom konfiguracije možete definirati unaprijed definirane rutinske zadatke. Unaprijed definirani rutinski zadaci ne razlikuju se od uobičajenih rutinskih zadataka, osim što se ne mogu izričito stvoriti ili izbrisati. Ako je u metapodacima planiranog zadatka postavljeno znak unaprijed određenog rutinskog zadatka, tada će se prilikom ažuriranja konfiguracije u infobazi automatski kreirati predefinirani rutinski zadatak. Ako se unaprijed određena zastavica poništi, tada će se prilikom ažuriranja konfiguracije u informacijskoj bazi unaprijed definirani rutinski zadatak automatski izbrisati. Početne vrijednosti svojstava unaprijed definiranog planiranog zadatka (na primjer, raspored) postavljene su u metapodacima. U budućnosti, kada je aplikacija pokrenuta, oni se mogu promijeniti. Unaprijed definirani rutinski zadaci nemaju parametre.

Raspored rutinskog zadatka određuje u koje vrijeme treba pokrenuti rutinski zadatak. Raspored omogućuje postavljanje: datuma i vremena početka i završetka zadatka, razdoblja izvršenja, dana u tjednu i mjesecima do kojih se planirani zadatak mora izvršiti itd. (pogledajte opis izgrađenog u jeziku).

Primjeri rasporeda rutinskih zadataka:

Svaki sat, samo jedan dan

Razdoblje ponavljanja dana = 0, Razdoblje ponavljanja dana = 3600

Svaki dan jednom dnevno

Razdoblje ponavljanja dana = 1, Razdoblje ponavljanja dana = 0

Jedan dan, jedan put

PeriodRepeatDays = 0

Svaki drugi dan jednom dnevno

PeriodRepeatDays = 2

Svaki sat od 01.00 do 07.00 svaki dan

PeriodRepeatDays = 1

Period ponavljanja tijekom dana = 3600

Vrijeme početka = 01.00

Vrijeme završetka = 07.00

Svake subote i nedjelje u 09.00

PeriodRepeatDays = 1

Dani u tjednu = 6, 7

Vrijeme početka = 09.00 sati

Svaki dan jedan tjedan, preskočite tjedan

PeriodRepeatDays = 1

Razdoblje Tjedni = 2

Jednom u 01.00

Vrijeme početka = 01.00

Zadnji dan svakog mjeseca u 9:00.

PeriodRepeatDays = 1

Dan u mjesecu = -1

Vrijeme početka = 09.00 sati

Peti dan svakog mjeseca u 9:00

PeriodRepeatDays = 1

Dan u mjesecu = 5

Vrijeme početka = 09.00 sati

Druge srijede u mjesecu u 9:00

PeriodRepeatDays = 1

DanTjedanUMjesecu = 2

Dani u tjednu = 3

Vrijeme početka = 09.00 sati

Možete provjeriti izvodi li se zadatak za određeni datum (metoda RequiredExecution objekta ScheduleTasks). Planirani zadaci uvijek se izvode pod imenom određenog korisnika. Ako korisnik planiranog zadatka nije naveden, izvršenje se događa u ime zadanog korisnika koji ima administratorska prava.

Rutinski zadaci se izvršavaju pomoću pozadinskih zadataka. Kada planer utvrdi da treba pokrenuti planirani zadatak, automatski se stvara pozadinski posao na temelju tog planiranog zadatka, koji obavlja svu daljnju obradu. Ako se ovaj rutinski zadatak već izvodi, neće se ponovno pokrenuti, bez obzira na njegov raspored.

Planirani zadaci mogu se ponovno pokrenuti. To je osobito istinito kada se mora zajamčiti izvršenje metode rutinskog zadatka. Rutinski zadatak ponovno se pokreće kada se nenormalno prekine ili kada se radni proces (u verziji klijent-poslužitelj) ili klijentski proces (u verziji datoteke) na kojem je rutinski zadatak izvršen nenormalno prekine. U planiranom zadatku možete odrediti koliko puta se mora ponovno pokrenuti, kao i interval između ponovnih pokretanja. Prilikom implementacije metode rutinskog zadatka koji se može ponovno pokrenuti, morate uzeti u obzir da će nakon ponovnog pokretanja njegovo izvršenje započeti od početka, a ne nastaviti od trenutka abnormalnog prekida.

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

* Pozadinski posao može zanemariti svoje automatsko otkazivanje ako nije zamrznut, ali se nastavlja izvoditi 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 ovisi o tome što posao radi. * Vrijeme završetka - granica unutar koje zadatak može započeti, a ne završiti? * Prisilno prekidanje zadatka vraća promjene napravljene na početak transakcije?

Značajke izvršavanja pozadinskih poslova u varijantama datoteka i klijent-poslužitelj

Mehanizmi za izvršavanje pozadinskih poslova u verziji datoteka i klijent-poslužitelj su različiti.

  • U datotečnoj verziji morate stvoriti namjenski klijentski proces koji će obavljati pozadinske poslove. Da bi to učinio, klijentski proces mora povremeno pozivati ​​funkciju globalnog konteksta ExecuteJobProcessing. Samo jedan klijentski proces po informacijskoj bazi treba obrađivati ​​pozadinske poslove (i, sukladno tome, pozivati ​​ovu funkciju). Ako proces klijenta nije kreiran za obradu pozadinskih poslova, tada će se prilikom programskog pristupa mehanizmu poslova prikazati pogreška "Upravitelj poslova nije aktivan". Ne preporučuje se korištenje procesa klijenta koji obrađuje pozadinske poslove za druge funkcije.

Nakon što se pokrene klijentski proces koji obrađuje pozadinske poslove, drugi klijentski procesi mogu programski pristupiti mehanizmu za pozadinske poslove, tj. može pokrenuti i upravljati pozadinskim poslovima.

U verziji klijent-poslužitelj 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-poslužitelj moguće je blokirati izvršavanje rutinskih zadataka. Izvršenje rutinskih zadataka blokirano je u sljedećim slučajevima:

  • Na informacijskoj bazi instalirano je 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() s parametrom True pozvana je iz ugrađenog jezika;
  • U nekim drugim slučajevima (na primjer, prilikom ažuriranja konfiguracije baze podataka).

Stvaranje metapodataka za rutinski zadatak

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

Za stvaranje objekta metapodataka za rutinski zadatak u stablu konfiguracije u grani "Općenito" za granu "Rutinski zadaci", izvršite naredbu "Dodaj" i ispunite sljedeća svojstva rutinskog zadatka u paleti svojstava:

Naziv metode - označite naziv metode rutinskog zadatka.

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

Raspored - označava raspored rutinskog zadatka. Za izradu rasporeda kliknite na poveznicu "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" prikazan je dnevni raspored zadatka.

Navedite raspored:

  • vrijeme početka i vrijeme završetka zadatka;
  • vrijeme završetka zadatka, nakon čega će se prisilno prekinuti;
  • period ponavljanja zadatka;
  • trajanje pauze između ponavljanja;
  • trajanje izvršenja.

Dopušteno je navesti proizvoljnu kombinaciju uvjeta.

Na kartici “Tjedno” prikazan je tjedni raspored zadatka.

Odaberite potvrdne okvire za dane u tjednu u kojima će se zadatak izvršiti. Ako želite ponoviti zadatak, odredite interval ponavljanja u tjednima. Na primjer, zadatak se izvrši za 2 tjedna, vrijednost ponavljanja je 2.

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

Odaberite potvrdne okvire za mjesece u kojima će zadatak biti izvršen. Ako je potrebno, možete odrediti određeni dan (mjesec ili tjedan) izvršenja od početka mjeseca/tjedna ili kraja.

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

Unaprijed definirano - ako je postavljeno, zadatak je unaprijed definiran zadatak.

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

Interval ponovnog pokušaja nakon abnormalnog prekida - navodi interval ponovnog pokušaja nakon abnormalnog prekida. Primjeri

Stvaranje pozadinskog posla “Ažuriranje indeksa pretraživanja cijelog teksta”:

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

Stvaranje rutinskog zadatka “Oporavak sekvenci”:

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

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

Konzola poslova

Obrada s ITS-om, upravlja rutinskim zadacima:

Rad s rutinskim zadacima

Objekti posla

Objekti posla nisu navedeni, ali su pohranjeni u bazi podataka u nekoj posebnoj pohrani.

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

Ako zastavica "Unaprijed" nije postavljena, tada se objekti takvog zadatka stvaraju i brišu programski, navodeći raspored i parametre.

Dobivanje popisa zadataka

Popis zadataka može se dobiti pomoću metode Nabavite RoutineTasks globalni menadžer poslova Rutinski zadaci

ScheduledJobsManager

Dobijte planirane poslove (GetScheduledJobs)

Sintaksa:

Nabavite RutineTasks(<Отбор>)

Mogućnosti:

<Отбор>(neobavezno)

Tip: Struktura. Odabir definiranja strukture. Vrijednosti strukture mogu biti: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Ako odabir nije naveden, dobivaju se svi rutinski zadaci.

Ako filtrirate prema metapodacima, tada kao vrijednost metapodataka možete navesti objekt metapodataka rutinskog zadatka ili njegov naziv.

Povratna vrijednost:

Vrsta: niz.

Opis:

Prima niz rutinskih zadataka za određeni odabir. Primanje planiranih zadataka moguće je samo za administratora.

Dostupnost:

Rutina = RoutineTasks.GetRoutineTasks(Selekcija);

Za svaku rutinu ciklusa rutine NewLine = List of RoutineTasks.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;

ZadnjiZadatak = Regular.LastTask; Ako je LastTask<>Nedefinirano Then NewRow.Running = LastTask.Start; NewRow.State = LastTask.State; završi ako; EndCycle;

Stvaranje

Kreirano 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 =Broj ponavljanjanakonEmergencyCompletion; ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion; ScheduleTask.Schedule = Raspored; RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

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

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

ScheduledJob

Mogućnosti(Parametri)

Upotreba:

Čitati i pisati.

Opis:

Vrsta: niz. Niz parametara za planirani zadatak. Broj i sastav parametara mora odgovarati parametrima metode rutinskog zadatka.

Dostupnost:

Server, debeli klijent, vanjska veza.

Bilješka:

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

Uklanjanje

Izbrisano pomoću metode Delete() objekta zadatka:

ScheduledTask.Delete();

Dobivanje objekta za posao

  • popis putem GetRoutineTasks metode:

Rutina = RoutineTasks.GetRoutineTasks(Selekcija);

  • putem FindByUniqueIdentifier metode upravitelja zadataka:

Zadatak = ScheduledTasks.FindByUniqueIdentifier(UID);