Računalniki Windows Internet

Kako prenesti rezultat iz opravila v ozadju 1c. Opravila v ozadju: funkcije, zmožnosti, nastavitve. Blokiranje načrtovanih opravil

1 Mehanizem dela
2 opravila v ozadju
3 Načrtovana opravila
4 Značilnosti izvajanja opravil v ozadju v različicah datotek in odjemalec-strežnik
5 Ustvarjanje metapodatkov za rutinsko opravilo
6 Job Console
7 Delo z rutinskimi opravili
7.1 Delovni predmeti
7.2 Pridobivanje seznama opravil
7.3 Ustvarjanje
7.4 Odstranitev
7.5 Pridobivanje delovnega predmeta

Mehanizem dela

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

Mehanizem nalog rešuje naslednje naloge:

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

Delovni mehanizem je sestavljen iz naslednjih komponent:

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

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

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

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

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

Dela v ozadju

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

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

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

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

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

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

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

Načrtovana opravila

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

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

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

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

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

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

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

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

Primeri urnikov rutinskih opravil:

Vsako uro, samo en dan

Obdobje ponavljanja dni = 0, obdobje ponavljanja dni = 3600

Vsak dan enkrat na dan

Obdobje ponavljanja dni = 1, obdobje ponavljanja dni = 0

En dan, enkrat

PeriodRepeatDays = 0

Vsak drugi dan enkrat na dan

PeriodRepeatDays = 2

Vsak dan od 01.00 do 07.00 vsako uro

PeriodRepeatDays = 1
Obdobje ponavljanja med dnevom = 3600
Začetek = 01.00
Končni čas = 07.00

Vsako soboto in nedeljo ob 09.00

PeriodRepeatDays = 1
Dnevi v tednu = 6, 7
Začetek = 09.00

Vsak dan en teden, en teden preskočite

PeriodRepeatDays = 1
Obdobje tedni = 2

Enkrat ob 01.00

Začetek = 01.00

Zadnji dan v mesecu ob 9.00.

PeriodRepeatDays = 1
Dan v mesecu = -1
Začetek = 09.00

Peti dan v mesecu ob 9.00

PeriodRepeatDays = 1
Dan v mesecu = 5
Začetek = 09.00

Vsako drugo sredo v mesecu ob 9.00

PeriodRepeatDays = 1
DanTedenVMesecu = 2
Dnevi v tednu = 3
Začetek = 09.00

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

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

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

Pomembno si je to zapomniti Končni čas ne bo nujno dokončal opravila v ozadju ob določenem času. Nekaj ​​izjav:
* Opravilo v ozadju lahko prezre svojo samodejno preklic, če ni zataknjeno, ampak iz nekega razloga še naprej teče
da vseh operacij platforme ni mogoče razveljaviti. Če se izvede ciklična koda vgrajenega jezika, prekličite opravilo
mogoče drugače ne. Vse je odvisno od tega, kaj delo opravlja.
* Končni čas – meja, znotraj katere se lahko opravilo začne in ne konča?
* Ali prisilna prekinitev opravila povrne spremembe, narejene na začetku transakcije?

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

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

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

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

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

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

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

Ustvarjanje metapodatkov za rutinsko opravilo

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

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

Ime metode - navedite ime metode rutinskega opravila.

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

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

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

Na zavihku "Dnevno" je prikazan dnevni urnik opravila.

Določite urnik:

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

Dovoljeno je določiti poljubno kombinacijo pogojev.

Na zavihku “Tedensko” je prikazan tedenski urnik opravila.

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

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

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

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

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

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

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

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

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

Ustvarjanje rutinske naloge "Obnovitev sekvenc":

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

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

Job Console

Obdelava z ITS, upravljanje rutinskih opravil: ConsoleTasks.epf

Delo z rutinskimi opravili

Job Objects

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

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

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

Pridobivanje seznama nalog

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

ScheduledJobsManager

Pridobite načrtovana opravila (GetScheduledJobs)

Sintaksa:

Get RoutineTasks(<Отбор>)

Opcije:

<Отбор>(neobvezno)

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

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

Vrnjena vrednost:

Vrsta: niz.

Opis:

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

Razpoložljivost:

Za vsako redno obdobje regulativnega cikla
NewLine = Seznam ScheduledTasks.Add();
NewRow.Metadata = Regular.Metadata.View();
NewLine.Name = Regular.Name;
NewString.Key = Regular.Key;
NewLine.Schedule = Razpored.Urnik;
NewLine.User = Regular.UserName;
NewString.Predefined = Regular.Predefined;
NewString.Use = Regular.Use;
NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask;
Če je LastTask nedefinirano, potem
NewLine.Running = LastTask.Start;
NewRow.State = LastTask.State;
endIf;
EndCycle;

Ustvarjanje

Ustvarjeno z metodo Create RoutineTask za upravitelja rutinskih opravil:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

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

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

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

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

ScheduledJob

Parametri

Uporaba:

Beri in piši.

Opis:

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

Razpoložljivost:

Strežnik, debel odjemalec, zunanja povezava.

Opomba:

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

Odstranitev

Izbrisano z metodo Delete() predmeta opravila:

ScheduledTask.Delete();

Pridobivanje delovnega predmeta

  • seznam prek metode GetRoutineTasks:
    Routine = RoutineTasks.GetRoutineTasks(Izbor);
  • prek FindByUniqueIdentifier metode upravitelja opravil:
    Naloga = ScheduledTasks.FindByUniqueIdentifier(UID);

[za ogled povezave se morate registrirati]

Običajno opravila v ozadju v 1C:Podjetja se začnejo po predpisih.

To pomeni, da ob zagonu rutinsko opravilo ustvari opravilo v ozadju. Ampak če je treba
opravilo v ozadju lahko izvajamo tudi programsko.
Hkrati lahko uporablja vse metode in lastnosti, ki so na voljo na strežniku, ker in teče na strežniku.
Pravzaprav samo opravilo v ozadju ne izvaja nobenih dejanj. Samo zažene se
za izvedbo postopka iz skupnega modula. Če postopek uporablja parametre,
lahko se pošljejo tudi, ko se zažene opravilo v ozadju.

Poglejmo preprost primer. Ustvarimo obdelavo, ki bo izvajala ozadje
nalogo, ki bo nato vnesla v dnevnik.

Zaradi
za opravilo v ozadju potrebujemo skupno proceduro modula, ustvarimo ta skupni modul
z možnostjo izvajanja svojih postopkov na strežniku.

Ustvarimo postopek v tem splošnem modulu, ki bo zapisoval v dnevnik
registracija

Procedure RecordInRegistrationLog(par_EventName, par_Comment) ExportRecordLog(par_EventName, , , , par_Comment) ; Konec postopka

Kot lahko vidite, ima postopek parametre. To pomeni, da bo opravilo v ozadju moralo narediti nekaj takega
način prenosa v postopek.

Zdaj bomo ustvarili obdelavo, s katero bomo zagnali opravilo v ozadju.

Naredili ga bomo na kontroliranem obrazcu, pri navadnih obrazcih pa ne bo bistvene razlike,
uporabljajo se iste metode. Ustvarimo preprost obrazec z enim ukazom:


V modul obrazca zapišemo naslednjo kodo:

Postopek &OnServer Write JROnServer() Matrika parametrov = Nova matrika; Niz parametrov. Dodaj( "Dogodek. Opravilo v ozadju uspešno zaključeno") ; Niz parametrov. Dodaj( "Komentar. Preverjanje opravila v ozadju") ; BackgroundTasks. Zaženi ( "site_RoutineTasks.RecordInRegistrationJournal", Niz parametrov); Konec postopka &Na odjemalskem postopku Write JR (ukaz) Write JR On Server () ; Konec postopka

Zaženite opravilo v ozadju z metodo Zaženi()
vodja opravil v ozadju.

Prvi parameter te metode je
ime skupnega modula in ime procedure, ki se bo izvajala, tip - niz.
Drugi parameter je matrika z vrednostmi parametrov za klicano proceduro.
Vrstni red elementov v matriki se mora ujemati z vrstnim redom parametrov v
postopek.
Lahko tudi navedeno Ključ in Ime delo v ozadju.

Zdaj pa preizkusimo obdelavo. Odprimo ga v načinu 1C:Enterprise in
Začnimo z izvedbo. Nato odprite dnevnik registracije in si oglejte nalogo
uspešno deloval in naredil ustrezen vnos v dnevnik.

Pri vzdrževanju evidenc je pogosto treba občasno izvajati določena dejanja brez posredovanja uporabnika. Rutinska in ozadna opravila v 1C so tisti mehanizmi, ki so v ta namen predvideni v osmi različici programa in omogočajo:

  • Nastavite pravočasno dostavo dokumentov;
  • Izračunajte stanja in vsote;
  • Zagotovite pogostost pošiljanja;
  • Preverite in izbrišite nepomembne podatke.

Ozadje in načrtovano opravilo – kaj je to in kje je konfigurirano?

Rutinska naloga je mehanizem, vgrajen v 1C, ki vam omogoča, da konfigurirate in v skladu z določenim urnikom in pogostostjo izvedete določeno zaporedje dejanj.

Opravilo v ozadju je dejanje, ki ga ustvari rutinska operacija in ne zahteva neposredne udeležbe uporabnika.

V načinu konfiguratorja se ustvari rutinsko opravilo:

  • V oknu konfiguracijskega drevesa najdemo ustrezno vejo (slika 1);
  • Kliknite gumb za dodajanje;
  • V oknu, ki se odpre, morate določiti ime, ki vam omogoča identifikacijo predmeta v konfiguraciji;

Slika 2

  • Nasproti napisa »Urnik« (slika 2) je napis »Odpri«, s klikom na katerega se odpre okno za nastavitev časa in pogostosti izvajanja obdelovalca (slika 3);

Slika 3

  • Prav tako je potrebno izpolniti "Ime metode" (tu bo vneseno ime procedure, ki se kliče iz splošnega modula in opisuje algoritem obnašanja programa);
  • Polji »Ime« in »Ključ« omogočata združevanje predmetov v skupine;
  • Odkljukano potrditveno polje »Uporabi« označuje aktivnost načrtovane operacije;
  • “Preddefined” je treba nastaviti, če naj se upravljalnik zažene takoj po dodajanju v bazo podatkov, sicer se zagon lahko izvede iz ustrezne obdelave (več o tem spodaj);
  • Parametra »Število ponovnih poskusov« in »Interval ponovnih poskusov« opisujeta vedenje programa, če med izvajanjem opravila v ozadju pride do izjeme.

Tako lahko z uporabo mehanizma rutinskih operacij nastavite urnik in glavna dejanja opravil v ozadju. Poglejmo zdaj njihove značilnosti.

Značilnosti opravil v ozadju

Glavna značilnost tega mehanizma je, da proces v ozadju teče asinhrono.

Kaj to pomeni? Dejstvo je, da je pri modelu sinhronega dela, če se izvede kakršen koli algoritem, uporabniški vmesnik blokiran. V našem primeru lahko uporabnik nadaljuje z vnosom in urejanjem podatkov, tudi če postopek teče. Model asinhronega programiranja vključuje ločevanje računalniških niti.

Tako lahko opravila v ozadju v 1C sprožijo svoje lastne procese in porazdelijo izračune po različnih strežnikih, vključenih v isto gručo.

Značilnosti dela v načinu odjemalec-strežnik

  • Načrtovanje in nadzor izvajanja izvaja planer iz strežniške gruče;
  • Če se pojavi zahteva za izvedbo, razporejevalnik poišče delovne procese gruče z minimalno obremenitvijo in jim razdeli naloge za izvedbo;
  • Vsak proces lahko izvede več vzporednih izračunov;
  • Ko naloga prispe, se proces poveže z bazo podatkov in v njej izvede algoritem;
  • Proces sporoči rezultate razporejevalniku.

Opravila v ozadju v datotečnem načinu

Pred različico platforme 8.3.3.641 je delo z opravili v ozadju v različici datoteke predstavljalo nekaj težav:

  1. Treba je bilo zagnati ločeno sejo, ki bi delovala 24 ur na dan in nadomestila razporejevalnik;
  2. Ta seja bi morala občasno izvajati metodo RunJobProcessing().

Po posodobitvi vsak zagon debelega in tankega odjemalca, če je v nastavitvah zagona (slika 4) v polju »Dodatno« naveden ključ AllowExecuteScheduledJobs, sproži dodatno nit, ki se povezuje z bazo podatkov, kar pa ne vpliva na uporabnikovo deluje na kakršen koli način, ampak izvaja le opravila v ozadju.

Slika 4

Upoštevati je treba, da tudi v datotečni različici dela procesi v ozadju ne omogočajo interaktivnega dela z uporabnikom (servisna sporočila, opozorila in vprašanja ne bodo prikazana). To pomeni, da morajo biti kodirani, kot da bi se izvajali na strani strežnika.

Kako onemogočiti načrtovana opravila

Neuporabljene naloge lahko onemogočite tako, da preprosto počistite potrditveno polje »Uporabi« v lastnostih objekta.

V primeru, ko mora skrbnik prepovedati uporabo rutinskih operacij in operacij v ozadju za celotno bazo podatkov kot celoto (na primer, na strežniku je shranjenih več baz podatkov, od katerih je samo ena glavna, ostale pa se uporabljajo le za razvoj), je potrebno uporabiti pripomoček za upravljanje baze podatkov. Prav tako lahko označite potrditveno polje »Nastavi blokiranje rutinskih opravil« v bazi podatkov, ustvarjeni na strežniku.

Poleg tega imajo diski ITS posebno obdelavo »Task Console«, ki vam omogoča urejanje urnika procesov v ozadju in spreminjanje njihove dejavnosti.

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

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

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

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

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

Verjetno nobena resna konfiguracija na 1C 8.3 ali 8.2 ne more brez uporabe rutinskih in ozadnih opravil. So zelo priročni, saj se bodo izvajali po jasno določenem urniku brez posredovanja uporabnika ali programerja.

Na primer, enkrat na dan morate izmenjati podatke z drugim programom. Z uporabo rutinskih in ozadnih nalog bo 1C ta dejanja lahko izvajal neodvisno, na primer v prostem času. Ta metoda na noben način ne bo vplivala na uporabniško izkušnjo in bo prihranila čas.

Najprej ugotovimo, kaj pomenijo in kakšna je njihova razlika:

  • Načrtovana naloga omogoča zagon kakršnih koli določenih dejanj v skladu z vnaprej nastavljenim urnikom.
  • Delo v ozadju je objekt, ki vsebuje dejanja, ki jih je treba izvesti.

Predpostavimo, da naše podjetje nekaj prodaja in ima svojo spletno stran, kjer so objavljene cene. Želimo jih naložiti enkrat na dan, da ohranimo ustreznost.

Odprite konfiguracijo in dodajte načrtovano nalogo.

Nastavitev lastnosti

Oglejmo si najpomembnejše parametre, ki jih je treba izpolniti v njegovih lastnostih.

  • Na polju " Ime metode» izbere postopek določenega splošnega modula, ki se bo neposredno izvajal. Prikazuje vse korake za nalaganje cen na našo spletno stran. Upoštevajte, da bo izvedba potekala na strežniku. To je logično, saj se rutinske operacije izvajajo brez sodelovanja uporabnika.
  • Načrtovano opravilo lahko po potrebi onemogočite ali omogočite. Ni mu treba vsakič urejati urnika. Če želite to narediti, v paleti lastnosti nastavite ali počistite zastavico " Uporaba».
  • Druga pomembna stvar je določiti, ali bo to rutinsko opravilo vnaprej določeno, ali ne. Vnaprej določena načrtovana opravila se zaženejo samodejno. Če ta funkcija ni nameščena, jih boste morali zagnati programsko ali uporabiti obdelavo »Opravilna konzola« z ITS.
  • Lahko tudi določite število ponovitev in interval med njimi v primeru nenormalne prekinitve. Nenormalna prekinitev se nanaša na situacije, ko opravila niso bila dokončana zaradi napake.

Nastavitev urnika

Zadnji korak je nastavitev razporeda za naše nalaganje na spletno mesto z uporabo ustrezne hiperpovezave v paleti lastnosti.

V 1C 8.3 boste videli tipično nastavitev urnika. Tukaj ni nič zapletenega. V tem primeru smo nastavili začetek nalaganja cen na spletno mesto vsak dan od petih do sedmih zjutraj. V primeru, da načrtovano opravilo nima časa za dokončanje do 7. ure, bo opravljeno že naslednji dan.

Blokiranje načrtovanih opravil

Zaženite standardni pripomoček »Upravljanje 1C Enterprise Servers« in odprite lastnosti informacijske baze, v kateri ste ustvarili rutinsko nalogo (za različice odjemalec-strežnik 1C).

V oknu, ki se odpre (po vnosu prijave in gesla za dostop do informacijske varnosti), preverite, ali potrditveno polje »Blokiranje rutinskih opravil je omogočeno« ni izbrano. Če naletite na situacijo, ko naloga ne deluje, najprej preverite to nastavitev.

Na enak način lahko popolnoma onemogočite rutinska opravila v 1C 8.3. Če želite onemogočiti določena opravila v ozadju, lahko uporabite obdelavo »Konzola za opravila v ozadju«, vgrajeno v najnovejše izdaje.

Ozadje in načrtovana opravila v datotečnem načinu

V tem načinu je nastavitev in zagon teh nalog veliko težje organizirati. Najpogosteje se ustvari dodaten račun, katerega seja bo vedno odprta.

V tem primeru se rutinska opravila aktivirajo z metodo »RunTaskProcessing()«.

Uporabite lahko tudi naslednjo konstrukcijo:

Kot ime procedure morate podati ime odjemalske procedure, ki se bo izvajala. Interval kaže, koliko sekund kasneje se bo izvršitev izvršila. Parameter »Enkrat« ni potreben. Odraža, ali bo ta postopek izveden enkrat ali večkrat.

Sledenje napakam v opravilih v ozadju

V dnevniku si lahko ogledate potek opravil v ozadju in prisotnost morebitnih napak. V filtru izberite aplikacijo »Opravilo v ozadju« in po potrebi izberite pomembnost zanimanja, na primer samo »Napake«.

V dnevniku bodo prikazani vsi vnosi, ki ustrezajo vaši izbiri, skupaj s komentarjem, ki vam bo pomagal razumeti razlog za napako.