Redovni zadaci ne rade. Univerzalni regulatorni zadatak

Neki zadaci u upravljanju dokumentima i računovodstvu možda će se morati obavljati povremeno. Na primjer, dvadesetog. Ili dnevno.

Tipično, tvrtka pokušava stvoriti pravila za obavljanje takvih zadataka - tko, kada i kako treba izvršiti zadatak, tko ga treba kontrolirati.

Takvi se poslovi nazivaju reguliranima, odnosno obavljaju se u skladu s propisima.

U IT-u se nadzor često provodi na reguliran način.

To je poznato administrator sustava- Postoji posebni programi, koji povremeno provjeravaju performanse poslužitelja i mrežne infrastrukture te javljaju SMS odn e-poštom administrator.

Slične stvari postoje za webmastere - za provjeru dostupnosti stranice tijekom dana.

U 1C, nadzorni zadaci i svi drugi periodični zadaci koji bi se trebali automatski izvršavati prema rasporedu izvode se pomoću mehanizma 1C Scheduled Tasks.

Razgovarajmo o njima danas.

Planirani zadaci 1C

Planirani zadaci 1C su oni koji vam omogućuju da ih obavljate kao i oni, ali prema rasporedu.

Sam rutinski zadatak 1C u konfiguratoru je način za određivanje postavki i postavljanje rasporeda. Usput, raspored se kasnije može dinamički mijenjati u načinu rada 1C Enterprise.

Pozadinski poslovi mogu se kreirati iz teksta programa u 1C jeziku proizvoljno bez planiranog 1C posla - za paralelno računanje na poslužitelju.

Izvršenje rutinski poslovi 1C se može privremeno onemogućiti - u .

Dodavanje 1C rutinskog zadatka

Rutinski 1C zadaci nalaze se u konfiguraciji u ogranku Opći/Rutinski 1C zadaci. Dodajmo novi regulatorni zadatak 1C i naznačimo njegov naziv.

U svojstvu rutinskog zadatka 1C naznačeno je ime metode, baš kao u. Funkcija će se nalaziti u zajedničkom modulu s potvrđenim okvirom Server u svojstvima, odnosno modul se mora dodati unaprijed.

Svojstvo planiranog zadatka 1C - Naziv zadatka - određuje naziv pod kojim će se zadatak pojaviti u alatima za upravljanje zadacima.

Svojstvo zadatka 1C rutine – Ključ – omogućuje grupiranje nekoliko različitih zadataka 1C rutine. Istovremeno se može pokrenuti samo jedan posao s istom vrijednošću ključa. Sama vrijednost može biti proizvoljna. Prazna vrijednost se ne uzima u obzir tijekom kontrole (odnosno, smatra se praznom).

Svojstvo 1C rutinskog zadatka - Predefinirano - određuje da će se, kada se pokrene 1C Enterprise, takav zadatak stvoriti u jedan primjerak prema rasporedu navedenom u konfiguratoru. Nepredefinirani zadaci pojavljuju se programski u vrijeme rasporeda.

U tipičnim konfiguracijama, na primjer Računovodstveno izdanje 2.0, takvi rutinski 1C zadaci kao što su Ažuriranje konfiguracije i Ponovno izračunavanje ukupnih iznosa su unaprijed definirani, ali kao što su Razmjena podataka ili Odgođeni pokreti nisu unaprijed definirani.

Upotreba – omogućuje zadatak (odnosno, izvršit će se samo ako je potvrdni okvir Upotreba označen).

Pokušaj ponovo nakon abnormalnog prekida - kao što možda pretpostavljate, znači ponovno pokretanje zadatka ako nije mogao uspješno završiti prvi put - možete odrediti koliko puta ponovno pokrenuti i koliko dugo nakon abnormalnog prekida.

1C rutinsko upravljanje i praćenje zadataka

Za upravljanje rutinskim zadacima 1C postoji posebna standardna Job Console za obradu. Može se naći i na.

Ova obrada pripada takozvanoj univerzalnoj vanjskoj standardnoj 1C obradi, koja često nije uključena u konfiguraciju, već se distribuira zasebno, na primjer, na ITS diskovima.

Korištenjem obrade konzole poslova možete:

  • Omogući/onemogući izvršavanje rutinskog 1C zadatka
  • Dodjela/promjena rasporeda planiranog 1C zadatka (i drugih parametara)
  • Navedite 1C korisnika u čije ime će se izvršiti rutinski 1C zadatak
  • Pogledajte koji su zadaci izvršeni kada i s kojim rezultatom, pogreške u ispunjavanju zadataka 1C
  • Dovršite zadatak.

Kopije baza podataka i 1C rutinskih zadataka

Ako koristite poslužitelj 1C, događa se sljedeća situacija:

  • Za vlastite potrebe (npr. za programiranje) izrađuje se kopija radne baze podataka
  • Rad, testiranje itd. u kopiji baze podataka
  • Zaboravljate isključiti rutinske 1C zadatke u takvoj testnoj bazi podataka.

Dok 1C rutinski zadaci obavljaju zadatke koji se odnose samo na njihovu informacijsku bazu, tada u njemu nema ničega.

Međutim, rutinski zadaci 1C često mogu spremati bilo koje datoteke, podatke u druge baze podataka, provoditi razmjene i slati e-poštu.

U ovom slučaju možete dobiti zanimljivu mješavinu rezultata obavljanja rutinskih 1C zadataka u radnoj bazi podataka i kopija.

Rutinski 1C zadaci za kopije radne baze podataka moraju biti onemogućeni u .

Ispunjavanje i neispunjavanje regulatornih zadataka 1C

Prilikom izrade rutinskih 1C zadataka morate zapamtiti:

  • Zadaci se obavljaju sami - potrebno ih je pratiti
  • Zadaci se izvršavaju u modulu na poslužitelju
  • Zadaci se izvode pod drugim Windows korisnikom, s različitim pravima.

Najprije morate provjeriti izvodi li se zadatak i može li se izvršiti kao rutinski 1C zadatak.

Drugo, serverski modul znači da mnoge stvari koje su dostupne na klijentu nisu dostupne. Na primjer, ponekad se svi dokumenti ne mogu objaviti samo na poslužitelju, budući da njihov algoritam može omogućiti da korisnik ručno pokrene knjiženje i mogu se koristiti funkcije koje nisu na poslužitelju, na primjer
Upozorenje ("Zdravo!")

Treće, ako se zadatak bavi nečim izvan baze podataka 1C, onda važno steći prava Windows korisnik, pod kojim se zadatak izvršava.

Treća točka je posebno važna pri razvoju. Ako se modul ne može izvršiti na poslužitelju, zadatak se uopće neće izvršiti. Da biste provjerili, trebate pokrenuti zadatak barem jednom i vidjeti rezultat "Zadatak dovršen" u obradi konzole zadataka.

Mehanizam posla

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

Mehanizam zadataka rješava sljedeće zadatke:

  • 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 pohranjuju se u informacijsku bazu i kreiraju 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 se rezultat izračuna može dobiti putem dugo vremena. 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 koji primijenjena vrijednost. 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. Korisniku s administratorskim pravima ili korisniku koji je stvorio ove pozadinske poslove dopušteno je primati zadatke, kao i čekati njihov završetak, s bilo koje veze.

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 paralelizaciju 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 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 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 mjeseci 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

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

Peti dan svakog mjeseca u 9:00

PeriodRepeatDays = 1

Dan u mjesecu = 5

Vrijeme početka = 09.00

Druge srijede u mjesecu u 9:00

PeriodRepeatDays = 1

DanTjedanUMjesecu = 2

Dani u tjednu = 3

Vrijeme početka = 09.00

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 zapeo, ali se nastavi 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?

  • 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 proces klijenta po informacijska baza moraju obraditi pozadinske poslove (i stoga nazvati 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 proces obrade klijenta započne pozadinske poslove, drugi procesi klijenta mogu pristup softveru na mehanizam pozadinskih poslova, 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 referencirani, 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(<Отбор>)

Parametri:

<Отбор>(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;

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:

Čitaj i piši.

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

Mehanizam zadataka jedan je od alata za administraciju 1C. Uključuje:

  • rutinski zadaci, kao opći konfiguracijski objekt neophodan za označavanje što točno raditi i s kojom učestalošću;
  • i pozadinske poslove, kao ugrađeni jezični objekt generiran rutinskim poslovima.
Pogledajmo relevantna ispitna pitanja.

Pitanje 09.59 ispita 1C: Platforma Professional. Kopija rutinskog zadatka:

  1. može se kreirati programski
  2. može se izraditi u obliku popisa, dostupnom preko naredbe glavnog izbornika programa ("Operacije/Rutinski zadaci")
  3. uvijek se kreira samo jedna instanca (kada se kreira odgovarajući konfiguracijski objekt)
  4. određuje se samo u načinu konfiguracije na kartici Ostalo pomoću gumba "Sastav".
  5. odgovori 1 i 2 su točni
Točan odgovor je prvi. Ako je planirani zadatak unaprijed definiran (Sl.), tada će zadatak biti izrađen u jednoj kopiji s rasporedom navedenim u konfiguratoru. Instance NE unaprijed definiranih poslova pojavljuju se prema rasporedu navedenom u načinu rada Enterprise, programski.
Pitanje 09.60 ispita 1C: Platforma Professional. Broj rutinskih zadataka koji se istovremeno izvode može biti:
  1. bilo tko bez ograničenja
  2. bilo koji broj, ali dva posla s istim ključem i nazivom metode neće biti izvršena
  3. bilo koja količina, ali dva zadatka s istim ključem i nazivom neće biti izvršena
  4. bilo koji broj, ali neće izvršiti dva posla s istim ključem i povezanim s istim objektom metapodataka
Točan odgovor je šest. Ključ je svojstvo rutinskog zadatka koje vam omogućuje grupiranje nekoliko zadataka iste vrste. Istovremeno se može pokrenuti samo jedan posao s jednom vrijednošću ključa (prazna vrijednost se ne računa). Također, samo jedan reg zadatak se izvršava na određenom objektu u isto vrijeme, kako bi se izbjegle kolizije.
Pitanje 09.62 ispita 1C: Platforma Professional. Kao metoda rutinskog dodjeljivanja može se koristiti postupak u kojem:
  1. ne bi trebalo biti parametara
  2. može postojati samo jedan parametar (popis vrijednosti)
  3. može postojati samo jedan parametar (struktura)
  4. može postojati samo jedan parametar (niz)
  5. može postojati bilo koji broj parametara
Točan odgovor je peti. Broj parametara metode rutinskog zadatka odgovara broju parametara samog rutinskog zadatka.
Pitanje 09.63 ispita 1C: Platforma Professional. Za izradu rutinskog zadatka, korisnik mora imati:
  1. administratorska prava
  2. prava za korištenje ovog konfiguracijskog objekta (može se konfigurirati u ulozi)
  3. prava za stvaranje novih instanci ovog konfiguracijskog objekta (podesivo u ulozi)
  4. bilo koja prava, metoda rutinskog zadatka izvršava se u povlaštenom načinu rada
Točan odgovor je prvi, pravo imaju samo administratori.
Pitanje 09.64 ispita 1C: Platforma Professional. Ako je rutinski zadatak definiran u konfiguratoru (u odgovarajućem konfiguracijskom objektu) kao predefiniran, tada je tipičan za njega (odaberite najpotpuniji odgovor):
  1. nemoguće je stvoriti nepredefiniranu instancu rutinskog zadatka s vezanjem na objekt metapodataka unaprijed definiranog rutinskog zadatka
  2. unaprijed definirana instanca planiranog zadatka ne može se označiti za brisanje i izbrisati
  3. samo unaprijed definirane instance rutinskih zadataka pohranjene su u informacijskoj bazi; nepredefinirane instance su objekti sesije i ne pohranjuju se u bazi podataka
  4. odgovori 1 i 2 su točni
  5. odgovori 2 i 3 su točni
  6. točni odgovori 1, 2, 3
Točan odgovor je drugi. Unaprijed definirane instance planiranih zadataka mogu se promijeniti, ali se ne mogu izbrisati. Oni će uvijek biti dostupni na popisu predložaka:
Pitanje 09.67 ispita 1C: Platforma Professional. Ako se funkcija koristi kao metoda rutinskog zadatka, tada:
  1. povratna vrijednost funkcije se zanemaruje
  2. dolazi do pogreške prilikom pokušaja izvršenja zadatka
  3. sustav će čekati izvršenje ovog zadatka (izvršenje se neće dogoditi asinkrono)
  4. vrijednost će biti vraćena u odgovarajući parametar planiranog zadatka
Točan odgovor je prvi.
Pitanje 09.61 ispita 1C: Platforma Professional. Kako se rutinski i pozadinski zadaci mogu međusobno povezati?
  1. Planirani posao može generirati pozadinski posao
  2. Rutinski zadatak nužno generira pozadinski zadatak
  3. Pozadinski posao nužno generira planirani posao
  4. Nema veze
Točan odgovor je drugi - pozadinski zadatak je objekt koji je generirao rutinski i mora se kreirati, inače sam rutinski zadatak gubi smisao.
Pitanje 09.65 ispita 1C: Platforma Professional. Kako biste osigurali rad rutinskih i pozadinskih poslova, morate:
  1. dostupnost pokretanja 1C:Enterprise s postavljenom zastavom "Scheduler" pri pokretanju
  2. dostupnost pokretanja 1C:Enterprise s povremenim izvršavanjem odgovarajuće metode sustava
  3. prisutnost pokretanja 1C: Enterprise s periodičkim izvršavanjem odgovarajuće metode sustava (ali samo u datotečnoj verziji operacije sustava)
  4. u obje verzije datoteka i klijent-poslužitelj nema potrebe za pokretanjem 1C:Enterprise instance
U praksi je točan odgovor treći. U verziji rada klijent-poslužitelj, raspoređene zadatke pokreće upravitelj klastera. Dakle, čak i ako nije uspostavljena veza klijenta s infobazom, rutinski zadaci će se izvršiti (pod uvjetom da nisu zabranjeni za određenu infobazu). U datotečnoj verziji rada, za automatsko pokretanje rutinskih zadataka, morate imati namjensku vezu klijenta koja se koristi kao planer zadataka. Ova veza mora pokrenuti proces čekanja koji povremeno poziva metodu ugrađenog jezika ExecuteJobProcessing().
Prema odgovorima, točan odgovor je četvrti.
Pitanje 09.57 ispita 1C: Platforma Professional. Pozadinski poslovi omogućuju vam da:
  1. provesti postupak prema rasporedu
  2. izvršite proceduru asinkrono
  3. ponovno pokretanje u slučaju nenormalnog prekida
  4. odgovori 1 i 2 su točni
  5. odgovori 2 i 3 su točni
  6. točni odgovori 1, 2, 3
Točan odgovor je drugi. Asinkrono znači bez čekanja da se procedura završi.
Pitanje 09.58 ispita 1C: Platforma Professional. Broj pozadinskih poslova koji se istovremeno izvode može biti:
  1. bilo tko bez ograničenja
  2. samo jedan zadatak po informacijskoj bazi
  3. samo jedan zadatak po korisničkoj sesiji
  4. bilo koji broj, ali ne možete pokrenuti dva posla s istim ključem i imenom metode
  5. bilo koja količina, ali ne možete pokrenuti dva zadatka s istim ključem i imenom
  6. bilo koji broj, ali ne možete pokrenuti dva posla s istim ključem i povezanim s istim objektom metapodataka
Točan odgovor je četvrti.
Pitanje 09.66 ispita 1C: Platforma Professional. Dovršeni pozadinski poslovi:
  1. spremljeno u infobazu
  2. su objekti sesije, pohranjeni neko vrijeme (nisu spremljeni u infobazu)
  3. nisu pohranjeni u bilo kojem obliku
Točan odgovor je broj šest - pozadinski posao je ugrađeni jezični objekt koji postoji samo tijekom trajanja sesije.

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 od ovih mehanizama, nadam se da će 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 rutinskih 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. U suprotnom, trebat ćete 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 rutinskih i pozadinskih zadataka 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 način datoteke Uspostavljanje 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 modula upravljane aplikacije (modul redovita primjena) ili globalni zajednički modul. 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:

Kada radite u 1C, postoje mnoge rutinske operacije koje se moraju pokrenuti ili formirati prema rasporedu 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 zadatke:

  • 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 pohranjuju se u informacijsku bazu i kreiraju 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 standard zajednički moduli, ali stvorite vlastitu. 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

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

* Prisilno prekidanje zadatka vraća promjene napravljene na početak transakcije?

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.