1c ce fac joburile de fundal în mod implicit. Sarcini de fundal: caracteristici, capabilități, setări. Caracteristici de lucru în modul client-server

Gestionarea sarcinilor de rutină ale bazelor de date 1C din programul de actualizare

20-11-2018T15:18:30+00:00

În această notă, vom trece peste capabilitățile actualizatorului pentru gestionarea sarcinilor de rutină în bazele de date.

În primul rând, în elementul „Mai multe” -> „Gestionați sarcinile de rutină...”:

În meniul contextual al bazei de date selectate (sau al grupului de baze de date):

Și, în sfârșit, în șabloane pentru scripturi batch (acest lucru vă permite să efectuați operațiuni pe sarcini de rutină dintr-un script conform unui program):

Iată cum arată dialogul pentru gestionarea sarcinilor de rutină în baze de date:

Ce sarcini permite rezolvarea în grupul necesar de baze de date (sau o singură bază de date)?

Selectarea sarcinilor de rutină

Vă rugăm să rețineți că puteți selecta o listă de sarcini de rutină în multe operațiuni de mai jos:

Dar în dialogul de selecție este posibil să nu existe sarcini de rutină specifice pentru baza de date:

În acest caz, puteți indica numele sarcinilor programate de care aveți nevoie în secțiunea „Sarcinile dvs....”, de exemplu, astfel:

Numele pentru astfel de sarcini de rutină pot fi luate direct din raportul despre toate sarcinile de rutină (acesta este discutată).

Afișează starea curentă a sarcinilor

Pentru a face acest lucru, accesați fila „Retragere” și faceți clic pe butonul „Retragere...”:

În rezultate putem observa:

  1. Lansarea de noi sarcini programate pe serverul 1C este activată sau dezactivată.
  2. Lista sarcinilor de rutină din baza de date.
  3. Programul lor.
  4. Lucrările sunt activate sau dezactivate.
  5. Dacă ultima rulare a unei sarcini a avut o eroare, această eroare este afișată cu roșu lângă sarcină.

Dacă este necesar, în setările caracteristicilor, putem restrânge lista de sarcini programate și, de asemenea, putem afișa numai sarcinile activate:

Opriți toate sau unele sarcini

Pentru a face acest lucru, accesați fila „Opriți”:

Pentru toate sarcinile programate sau pentru cele selectate, caseta de selectare „Utilizați” va fi debifată.

Iată rezultatul pentru o bază (click pentru a extinde)

Includeți toate sau unele sarcini

Pentru a face acest lucru, accesați fila „Activare”:

Pentru toate sarcinile programate sau pentru cele selectate, caseta de selectare „Utilizați” va fi bifată.

Vă rugăm să rețineți că în această filă este disponibil indicatorul „Copia de rezervă a bazei de date” în colțul din stânga jos.

Iată rezultatul pentru o bază (click pentru a extinde)

Gestionăm lansarea sarcinilor programate pe serverul 1C

Pentru a face acest lucru, accesați fila „1C Server”:

Selectați „blocare” sau „deblocare” și faceți clic pe butonul „Run”.

Stabilirea unui program de sarcini

Dar dacă trebuie să stabilim un program pentru lansarea unei sarcini (sau a unui grup de sarcini) în mai multe baze de date simultan?

Pentru a face acest lucru, accesați fila „Configurați programul”:

Configuram programul (dialogul și capacitățile sale coincid complet cu cel standard din 1C însuși) și facem clic pe „Personalizați...”.

Lansăm sarcini pentru execuție

Pentru a face acest lucru, accesați fila „Run”:

Selectați sarcinile necesare și faceți clic pe butonul „Run”:

Salvarea setărilor sarcinii într-un fișier extern

Să presupunem că am configurat ideal sarcinile de rutină într-una dintre bazele de date și dorim să transferăm aceste setări în toate celelalte baze de date.

Pentru a face acest lucru, încărcăm mai întâi toate setările sarcinilor din baza de date ideală într-un fișier extern:

Restaurarea setărilor sarcinii dintr-un fișier extern

Și apoi încărcăm acest fișier cu setările sarcinilor în toate celelalte baze de date:

Doar rețineți că pentru această sarcină (transferarea setărilor jobului de la o bază de date la alta), am ales metoda de potrivire după numele jobului, și nu după identificatorul intern.

Cuvinte de despărțire

În general, asta este tot ce am vrut să vă spun. Eu însumi văd multe scenarii pentru utilizarea noilor funcții, dar aici am trecut pe scurt la punctele principale.

1 Mecanism de lucru
2 Lucrări de fundal
3 Sarcini programate
4 Caracteristici de realizare a lucrărilor de fundal în versiuni de fișiere și client-server
5 Crearea de metadate pentru o sarcină de rutină
6 Job Console
7 Lucrul cu sarcini de rutină
7.1 Obiecte de muncă
7.2 Obținerea unei liste de sarcini
7.3 Creație
7.4 Dezinstalare
7.5 Obținerea unui obiect de lucru

Mecanismul locului de muncă

Motorul de job este proiectat pentru a executa orice aplicație sau funcționalitate conform unui program sau asincron.

Mecanismul sarcinii rezolvă următoarele probleme:

  • Capacitatea de a defini proceduri de reglementare în etapa de configurare a sistemului;
  • Executarea actiunilor specificate conform programului;
  • Efectuarea unui apel la o anumită procedură sau funcție în mod asincron, de ex. fără a aștepta finalizarea acestuia;
  • Urmărirea progresului unei sarcini specifice și obținerea stării de finalizare a acesteia (o valoare care indică dacă a avut succes sau nu);
  • Obținerea unei liste de sarcini curente;
  • Abilitatea de a aștepta finalizarea uneia sau mai multor sarcini;
  • Managementul jobului (posibilitate de anulare, blocare a executiei etc.).

Mecanismul de lucru este format din următoarele componente:

  • Metadatele sarcinilor de rutină;
  • Sarcini regulate;
  • Locuri de muncă de fundal;
  • Planificator de sarcini.

Lucrările de fundal sunt concepute pentru a îndeplini sarcinile aplicației în mod asincron. Sarcinile de fundal sunt implementate folosind limbajul încorporat.

Sarcini programate - concepute pentru a efectua sarcini aplicate conform unui program. Sarcinile de rutină sunt stocate în baza de informații și sunt create pe baza metadatelor definite în configurație. Metadatele unei sarcini de reglementare conțin informații precum numele, metoda, utilizarea etc.

O sarcină de rutină are un program care determină la ce momente trebuie executată metoda asociată sarcinii de rutină. Programul, de regulă, este specificat în baza de informații, dar poate fi specificat și în etapa de configurare (de exemplu, pentru sarcini de rutină predefinite).

Programatorul de sarcini este utilizat pentru a programa execuția sarcinilor de rutină. Pentru fiecare job programat, planificatorul verifică periodic dacă data și ora curente se potrivesc cu programarea jobului programat. Dacă se potrivește, planificatorul atribuie acea sarcină execuției. Pentru a face acest lucru, pentru această sarcină programată, planificatorul creează o sarcină de fundal, care realizează procesarea efectivă.

Lucrări de fundal

Lucrările de fundal sunt convenabile de utilizat pentru a efectua calcule complexe atunci când rezultatul calculului poate dura mult timp. Motorul de job are mijloacele pentru a efectua astfel de calcule în mod asincron.

Asociată cu un job de fundal este o metodă care este apelată când rulează jobul de fundal. O metodă de job de fundal poate fi orice procedură sau funcție a unui modul comun non-global care poate fi apelat pe server. Parametrii jobului de fundal pot fi orice valoare care poate fi transmisă serverului. Parametrii unui job de fundal trebuie să se potrivească exact cu parametrii procedurii sau funcției pe care o apelează. Dacă metoda jobului de fundal este o funcție, valoarea returnată a acesteia este ignorată.

Un job de fundal poate avea o cheie - orice valoare de aplicație. Cheia introduce o restricție privind lansarea joburilor de fundal - doar un job de fundal poate fi executat pe unitatea de timp cu o anumită valoare a cheii și un anumit nume de metodă de job de fundal (numele metodei constă din numele modulului și numele procedurii sau funcție). Tasta vă permite să grupați joburi de fundal care au aceleași metode în conformitate cu o caracteristică specifică a aplicației, astfel încât să nu fie executată mai mult de un job de fundal într-un grup.

Lucrările de fundal sunt create și gestionate programatic din orice conexiune. Orice utilizator are voie să creeze un job de fundal. Mai mult, este executat în numele utilizatorului care l-a creat. Recepția sarcinilor, precum și așteptarea finalizării lor, este permisă de la orice conexiune către un utilizator cu drepturi administrative sau către utilizatorul care a creat aceste joburi de fundal.

Un job de fundal este un obiect pur sesiune și nu aparține nici unei sesiuni de utilizator. Pentru fiecare sarcină, este creată o sesiune specială de sistem, care rulează în numele utilizatorului care a efectuat apelul. Lucrările de fundal nu au stare persistentă.

Un job de fundal poate genera alte joburi de fundal. În versiunea client-server, acest lucru vă permite să paralelizați calcule complexe între procesele de lucru ale clusterului, ceea ce poate accelera semnificativ procesul de calcul în ansamblu. Paralelizarea este implementată prin generarea mai multor joburi de fundal copil și așteptarea ca fiecare dintre ele să se finalizeze în jobul principal de fundal.

Lucrările de fundal care se finalizează cu succes sau eșuează sunt stocate timp de 24 de ore și apoi șterse. Dacă numărul de lucrări de fundal finalizate depășește 1000, cele mai vechi lucrări de fundal sunt, de asemenea, șterse.

Sarcini programate

Sarcinile programate sunt folosite atunci când este necesar să se efectueze anumite acțiuni periodice sau unice conform unui program.

Sarcinile programate sunt stocate în baza de informații și sunt create pe baza metadatelor sarcinii de rutină definite în configurație. Metadatele specifică astfel de parametri ai unei sarcini de rutină, cum ar fi: metoda numită, nume, cheie, posibilitate de utilizare, semn de predeterminare etc. Atunci când creați o sarcină de rutină, puteți specifica în plus programul (poate fi specificat în metadate), valori ​a parametrilor metodei, numele utilizatorului în numele căruia efectuează sarcini de rutină etc.

Crearea și gestionarea sarcinilor programate se realizează programatic de la orice conexiune și este permisă numai utilizatorilor cu drepturi administrative.

Notă. Când lucrați în versiunea de fișier, este posibil să creați și să editați sarcini de rutină fără a lansa programatorul de activități.

Asociată cu o sarcină de rutină este o metodă care este apelată atunci când sarcina de rutină este executată. Metoda sarcinii de rutină poate fi orice procedură sau funcție a unui modul comun non-global care poate fi apelat pe server. Parametrii unei sarcini de rutină pot fi orice valoare care poate fi transmisă serverului. Parametrii unei sarcini de rutină trebuie să se potrivească exact cu parametrii procedurii sau funcției pe care o apelează. Dacă metoda sarcinii de rutină este o funcție, atunci valoarea sa returnată este ignorată.

O sarcină de rutină poate avea o cheie - orice valoare de aplicație. Cheia introduce o restricție privind lansarea sarcinilor programate, deoarece pe unitatea de timp, dintre sarcinile de rutină asociate cu același obiect de metadate, poate fi executată doar o sarcină de rutină cu o anumită valoare cheie. Tasta vă permite să grupați sarcini de rutină asociate cu același obiect de metadate în funcție de o caracteristică specifică a aplicației, astfel încât să nu fie efectuată mai mult de o sarcină de rutină într-un grup.

În timpul configurării, puteți defini sarcini de rutină predefinite. Sarcinile de rutină predefinite nu sunt diferite de sarcinile de rutină obișnuite, cu excepția faptului că nu pot fi create sau șterse în mod explicit. Dacă în metadatele sarcinii programate este setat semnul unei sarcini de rutină prestabilite, apoi la actualizarea configurației în baza de informații, va fi creată automat o sarcină de rutină predefinită. Dacă marcajul predeterminat este șters, atunci când actualizați configurația în baza de informații, sarcina de rutină predefinită va fi ștearsă automat. Valorile inițiale ale proprietăților unei sarcini programate predefinite (de exemplu, un program) sunt setate în metadate. În viitor, atunci când aplicația rulează, acestea pot fi modificate. Sarcinile de rutină predefinite nu au parametri.

Programul sarcinilor de rutină determină la ce oră trebuie executată sarcina de rutină. Programul vă permite să setați: data și ora începerii și sfârșitului sarcinii, perioada de execuție, zilele săptămânii și lunile în care trebuie efectuată sarcina programată etc. (vezi descrierea în limbaj).

Exemple de programe de rutină a sarcinilor:

În fiecare oră, doar o zi

Perioada RepeatDays = 0, Perioada RepeatDays = 3600

În fiecare zi, o dată pe zi

Perioada RepeatDays = 1, Perioada RepeatDays = 0

O zi, o dată

PeriodRepeatDays = 0

Din două în două zile, o dată pe zi

PeriodRepeatDays = 2

În fiecare oră de la 01.00 la 07.00 în fiecare zi

PeriodRepeatDays = 1
Repetați perioada în timpul zilei = 3600
Ora de începere = 01.00
Ora de încheiere = 07.00

În fiecare sâmbătă și duminică la ora 09.00

PeriodRepeatDays = 1
Zilele săptămânii = 6, 7
Ora de începere = 09.00

În fiecare zi timp de o săptămână, săriți peste o săptămână

PeriodRepeatDays = 1
PeriodWeeks = 2

La ora 01.00 o dată

Ora de începere = 01.00

Ultima zi a fiecărei luni la ora 9:00.

PeriodRepeatDays = 1
DayInMonth = -1
Ora de începere = 09.00

A cincea zi a fiecărei luni la ora 9:00

PeriodRepeatDays = 1
DayInMonth = 5
Ora de începere = 09.00

A doua zi de miercuri a fiecărei luni la ora 9:00

PeriodRepeatDays = 1
DayWeekInMonth = 2
Zilele săptămânii = 3
Ora de începere = 09.00

Puteți verifica dacă o sarcină rulează pentru o dată dată (metoda RequiredExecution a obiectului ScheduleTasks). Sarcinile programate sunt întotdeauna efectuate sub numele unui anumit utilizator. Dacă utilizatorul sarcinii programate nu este specificat, atunci execuția are loc în numele utilizatorului implicit care are drepturi administrative.

Sarcinile de rutină sunt executate folosind sarcini de fundal. Când planificatorul stabilește că o sarcină programată trebuie lansată, este creată automat un job de fundal pe baza acestei sarcini programate, care efectuează toate procesările ulterioare. Dacă această sarcină de rutină rulează deja, nu va mai fi rulată, indiferent de programul său.

Sarcinile programate pot fi repornite. Acest lucru este valabil mai ales atunci când metoda sarcinii de rutină trebuie să fie garantată pentru a fi executată. O sarcină de rutină este repornită atunci când se termină anormal sau când procesul de lucru (în versiunea client-server) sau procesul client (în versiunea de fișier) pe care a fost executată sarcina de rutină este terminat anormal. În sarcina programată, puteți specifica de câte ori trebuie repornită, precum și intervalul dintre reporniri. La implementarea metodei sarcinii de rutină repornibilă, trebuie să țineți cont de faptul că, la repornire, execuția acesteia va începe de la început și nu va continua din momentul încheierii anormale.

Este important să ne amintim asta Sfârșitul timpului nu va finaliza neapărat lucrarea de fundal la ora specificată. Cateva afirmatii:
* O lucrare de fundal poate ignora anularea sa automată dacă nu este blocată, dar continuă să ruleze dintr-un motiv oarecare
că nu toate operațiunile platformei pot fi inversate. Dacă se execută codul ciclic al limbajului încorporat, anulați lucrarea
poate altfel nu. Totul depinde de ceea ce face treaba.
* Ora de încheiere - limita în care o sarcină poate începe mai degrabă decât să se termine?
* Încetarea forțată a unei sarcini determină înapoi modificările făcute la începutul tranzacției?

Caracteristici de execuție a joburilor de fundal în variante de fișier și client-server

Mecanismele de executare a joburilor de fundal în versiunile fișier și client-server sunt diferite.

  • În versiunea de fișier, trebuie să creați un proces client dedicat care va efectua lucrări de fundal. Pentru a face acest lucru, procesul client trebuie să apeleze periodic funcția context global ExecuteJobProcessing. Doar un proces client pe bază de informații ar trebui să proceseze joburi de fundal (și, în consecință, să apeleze această funcție). Dacă nu a fost creat un proces client pentru a procesa joburi de fundal, atunci când accesați programatic motorul de job, va fi afișată eroarea „Job Manager is not active”. Nu este recomandat să utilizați un proces client care procesează joburi de fundal pentru alte funcții.

Odată ce procesul client care procesează joburile de fundal este pornit, alte procese client pot accesa programatic motorul jobului de fundal, de exemplu. poate rula și gestiona joburi de fundal.

În versiunea client-server, un planificator de sarcini este utilizat pentru a executa joburi de fundal, care este localizat fizic în managerul de cluster. Pentru toate joburile de fundal aflate în coadă, planificatorul primește procesul de lucru cel mai puțin încărcat și îl folosește pentru a rula jobul de fundal corespunzător. Procesul de lucru execută jobul și notifică planificatorul despre rezultatele execuției.

În versiunea client-server, este posibilă blocarea execuției sarcinilor de rutină. Executarea sarcinilor de rutină este blocată în următoarele cazuri:

  • Pe baza de informații a fost instalată o blocare explicită a sarcinilor de rutină. Blocarea poate fi setata prin consola cluster;
  • Există un bloc de conexiune în baza de informații. Blocarea poate fi setata prin consola cluster;
  • Metoda SetExclusiveMode() cu parametrul True a fost apelată din limbajul încorporat;
  • În alte cazuri (de exemplu, la actualizarea configurației bazei de date).

Crearea de metadate pentru o sarcină de rutină

Înainte de a crea în mod programatic o sarcină de rutină în baza de informații, trebuie să creați un obiect de metadate pentru aceasta.

Pentru a crea un obiect de metadate pentru o activitate de rutină în arborele de configurare din ramura „General” pentru ramura „Activități de rutină”, executați comanda „Adăugați” și completați următoarele proprietăți ale sarcinii de rutină în paleta de proprietăți:

Nume metodă - indică numele metodei sarcinii de rutină.

Cheie - specificați o valoare șir arbitrară care va fi folosită ca cheie a sarcinii programate.

Program - indică programul sarcinii de rutină. Pentru a crea un program, faceți clic pe linkul „Deschide” și, în formularul de programare care se deschide, setați valorile necesare.

În fila „General”, sunt indicate datele de început și de sfârșit ale sarcinii și modul de repetare.

În fila „Zilnic”, este indicat programul zilnic al sarcinii.

Specificați programul:

  • ora de începere și ora de încheiere a sarcinii;
  • timpul de finalizare a sarcinii, după care va fi încetat forțat;
  • perioada de repetare a sarcinii;
  • durata pauzei între repetări;
  • durata de executie.

Este permisă specificarea unei combinații arbitrare de condiții.

În fila „Săptămânal”, este indicat programul săptămânal al sarcinii.

Bifați casetele de selectare pentru zilele săptămânii în care va fi executată sarcina. Dacă doriți să repetați sarcina, specificați intervalul de repetare în săptămâni. De exemplu, sarcina este executată în 2 săptămâni, valoarea repetată este 2.

În fila „Lunar”, este indicat programul lunar al sarcinii.

Bifați casetele de selectare pentru lunile în care sarcina va fi executată. Dacă este necesar, puteți specifica o anumită zi (lună sau săptămână) de execuție de la începutul lunii/săptămânii sau de la sfârșit.

Utilizare - dacă este setată, sarcina va fi executată conform programului.

Predefinit - dacă este setat, sarcina este o sarcină predefinită.

Număr de reîncercări în caz de terminare anormală - indică numărul de reîncercări în caz de terminare anormală.

Interval de reîncercare la terminarea anormală - specifică intervalul de reîncercare la terminarea anormală. Exemple

Crearea unui job de fundal „Actualizare index de căutare cu text integral”:

BackgroundTasks.Run("ActualizareaIndexuluiCăutareText");

Crearea unei sarcini de rutină „Recuperarea secvențelor”:

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

Sarcină = RoutineTasks.CreateRoutineTask("Restaurarea secvențelor");
Job.Schedule = Program;
Task.Write();

Job Console

Prelucrare cu ITS, gestionează sarcinile de rutină: ConsoleTasks.epf

Lucrul cu sarcini de rutină

Obiecte de locuri de muncă

Obiectele job nu sunt referite, dar sunt stocate în baza de date într-un spațiu de stocare special.

Dacă indicatorul „Predefinit” este activat în metadate, atunci un astfel de obiect este creat automat când este lansat 1C:Enterprise și există întotdeauna într-o singură instanță. Un astfel de obiect nu poate fi șters.

Dacă flag „Predefinit” nu este setat, atunci obiectele unei astfel de sarcini sunt create și șterse programatic, specificând programul și parametrii.

Obținerea unei liste de sarcini

Lista sarcinilor poate fi obținută folosind metoda Obțineți sarcini de rutină manager global de locuri de muncă Sarcini de rutină

ScheduledJobsManager

Obțineți joburi programate (GetScheduledJobs)

Sintaxă:

Obțineți sarcini de rutină(<Отбор>)

Opțiuni:

<Отбор>(optional)

Tip: Structură. Selecția care definește structura. Valorile structurii pot fi: UniqueIdentifier, Cheie, Metadate, Predefinite, Utilizare, Nume. Dacă nu este specificată selecția, se obțin toate sarcinile de rutină.

Dacă filtrați după metadate, atunci ca valoare Metadate puteți specifica fie obiectul de metadate al sarcinii de rutină, fie numele acestuia.

Valoare returnată:

Tip: matrice.

Descriere:

Primește o serie de sarcini de rutină pentru o anumită selecție. Primirea sarcinilor programate este posibilă numai pentru administrator.

Disponibilitate:

Pentru fiecare obișnuit al ciclului de reglementare
NewLine = Lista de sarcini programate.Add();
NewRow.Metadata = Regular.Metadata.View();
NewLine.Name = Regular.Name;
NewString.Key = Regular.Key;
NewLine.Schedule = Schedule.Schedule;
NewLine.User = Regular.UserName;
NewString.Predefined = Regular.Predefined;
NewString.Use = Regular.Use;
NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask;
Dacă LastTask este nedefinit, atunci
NewLine.Running = LastTask.Start;
NewRow.State = LastTask.State;
endIf;
EndCycle;

Creare

Creat prin metoda Create RoutineTask pentru managerul sarcinilor de rutină:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Name = Nume;
RegularTask.Key = Cheie;
RegularTask.Use = Utilizare;
RoutineTask.UserName = UsersChoice;
RoutineTask.Number ofRepetitionsAtEmergencyCompletion =NumberofRepetitionsAtEmergencyCompletion;
ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion;
ScheduleTask.Schedule = Program;
RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Name = Nume;
JobObject.Use = Adevărat;

Obiectul de activitate are un câmp „Parametri” în care sunt specificați parametrii metodei:

Job programat

Parametrii

Utilizare:

Citeste si scrie.

Descriere:

Tip: matrice. O serie de parametri pentru o sarcină programată. Numărul și compoziția parametrilor trebuie să corespundă parametrilor metodei sarcinii de rutină.

Disponibilitate:

Server, client gros, conexiune externă.

Notă:

Capacitățile de citire și scriere sunt disponibile numai pentru administrator.

Îndepărtarea

S-a șters folosind metoda Delete() a obiectului task:

ScheduledTask.Delete();

Obținerea unui obiect de muncă

  • listă prin metoda GetRoutineTasks:
    Rutina = RoutineTasks.GetRoutineTasks(Selection);
  • prin FindByUniqueIdentifier al metodei managerului de activități:
    Sarcină = ScheduledTasks.FindByUniqueIdentifier(UID);

[trebuie să vă înregistrați pentru a vedea linkul]

Probabil că fiecare programator 1C 8.3 mai devreme sau mai târziu a trebuit să configureze execuția anumitor sarcini într-un program. Mai jos voi oferi o descriere detaliată a acestor mecanisme, sper că acestea vor fi informații utile pentru programatorii începători 1C. Acest lucru este foarte convenabil, deoarece nu necesită acțiune umană, sarcina de rutină este configurată o singură dată și funcționează conform programului dvs.

Veți găsi instrucțiuni detaliate folosind un exemplu de mai jos.

Care sunt sarcinile de rutină și de fundal în 1C

  • Sarcini programate este un mecanism special 1C Enterprise 8.3 conceput pentru a efectua o acțiune specifică conform unui program dat.
  • Lucru de fundal- obiecte generate de o sarcină de rutină care realizează direct acțiunea intenționată fără participarea utilizatorului sau a programatorului 1C 8.2.

Mecanismul joburilor programate și de fundal funcționează în modul client-server (SQL), datorită funcționalității DBMS. Dacă aveți o bază de date de fișiere, atunci și sarcina poate fi configurată, dar după un principiu puțin diferit.

Configurarea joburilor de fundal în modul client-server 1C

Mai întâi, să creăm un nou obiect de metadate - o sarcină de rutină. Îmi voi numi sarcina „Încărcare cursuri valutare”. Să ne uităm la paleta de proprietăți a acestui obiect de configurare:

Obțineți 267 de lecții video pe 1C gratuit:

  • Numele metodei— calea către procedura care va fi executată într-un job de fundal conform unui program dat. Procedura trebuie să fie într-un modul comun. Este recomandat să nu folosiți cele standard, ci să vă creați propriile. Nu uitați că joburile de fundal rulează pe server!
  • Utilizare— un semn de utilizare a unei sarcini de rutină.
  • Predeterminat— indică dacă sarcina de rutină este predeterminată. Dacă doriți ca sarcina de rutină să funcționeze imediat după ce a fost plasată în baza de date, specificați acest indicator. În caz contrar, va trebui să utilizați procesarea Job Console sau să faceți ca jobul să ruleze în mod programatic.
  • Numărul de reîncercări atunci când un job se încheie anormal— de câte ori a fost repornit jobul de fundal dacă a fost executat cu o eroare.
  • Interval de reîncercare când jobul se termină anormal— cât de des va fi repornită lucrarea de fundal dacă a fost finalizată cu o eroare.

Și cel mai interesant decor este Programa:

Aici configurați intervalul de lansare al procedurii specificate în câmpul „Numele metodei”. Să zicem că am configurat

Atenţie! Nu uitați să dezactivați blocarea execuției joburilor de rutină și de fundal la nivel DBMS!

Acest lucru se poate face în utilitarul de administrare al versiunii client-server sau la crearea unei noi baze de date:

Configurarea sarcinilor de rutină în modul fișier 1C

În modul fișier, configurarea unor astfel de lucrări este ceva mai dificilă. Pentru o astfel de sarcină, trebuie lansată o sesiune separată a programului 1C. Acest lucru este adesea rezolvat prin crearea unui utilizator „tehnic” a cărui sesiune rulează mereu.

În modul fișier, un job de rutină este inițializat atunci când este lansată metoda „RunTaskProcessing()”.

Pentru un anumit utilizator, puteți configura această metodă să ruleze folosind o altă metodă -

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

  • Numele procedurii— numele procedurii conectate ca operator de așteptare. Numele procedurii exportate a unui modul de aplicație gestionat (un modul de aplicație obișnuit) sau a unui modul partajat global. Procedura trebuie să fie localizată pe client.
  • Interval— perioada dintre execuțiile operațiunilor în secunde.
  • O dată- cum să finalizați sarcina, o dată sau nu.

ConnectWaitHandler, 3600);

Un videoclip de două minute care arată cum să configurați o sarcină de rutină în configuratorul 1C:

Platforme: 1C:Enterprise 8.3, 1C:Enterprise 8.2, 1C:Enterprise 8.1
Configurații: Toate configurațiile

2012-11-13
53989

În managementul documentelor, există sarcini care necesită execuție periodică - de exemplu, în a douăzecea, sau zilnic. De regulă, companiile creează anumite reguli special în acest scop, care indică când și cum trebuie îndeplinită sarcina necesară și cine ar trebui să controleze procesul. Astfel de sarcini sunt îndeplinite conform reglementărilor și se numesc reglementate.

Destul de des, reglementările de monitorizare sunt respectate în IT. Această metodă este foarte familiară administratorilor, deoarece în acest scop există programe speciale utilizate pentru a verifica periodic funcționalitatea infrastructurii de rețea și a serverelor. Aceștia anunță administratorul despre problemele detectate prin SMS sau e-mail.

Un sistem similar funcționează pentru webmasteri, iar disponibilitatea site-ului este verificată în 24 de ore. Folosind mecanismul „Sarcini de rutină” din 1C, sunt efectuate sarcini de monitorizare, precum și sarcini periodice care sunt efectuate conform unui program în modul automat în 1C. Să aruncăm o privire mai atentă la acest subiect.

Sarcini programate 1C

Obiectul 1C, numit „sarcini de rutină”, face posibilă procesarea informațiilor nu după ce apare o problemă, ci conform unui program. În configurator, o sarcină de rutină este o modalitate de a seta setări și de a stabili un program. În plus, este posibilă modificarea ulterioară a programului în modul 1C Enterprise.

Când utilizați o bază de date de fișiere, lucrările nu sunt executate automat. Pentru a începe procesul, trebuie să începeți o sesiune 1C în modul 1C Enterprise și să începeți să executați o sarcină de rutină în ea.

Toate configurațiile standard au o setare de utilizator care vă permite să specificați că atunci când rulează 1C, sarcinile de rutină vor fi efectuate automat.

Utilizarea versiunii client-server a 1C face posibilă efectuarea automată a sarcinilor pe server. La ora programată, se lansează un job de fundal, care efectuează acțiunile necesare. Pentru calculul paralel pe server, un job de fundal poate fi creat din textul programului folosind limbajul 1C, fără a utiliza un job 1C programat. Acțiunea unei sarcini programate poate fi dezactivată temporar utilizând consola de gestionare a serverului 1C.

Adăugarea unei sarcini programate

Sarcinile de rutină se află în - Configurator - General - Sarcini de rutină. Adăugați o nouă „sarcină” și furnizați un nume. Apoi, trebuie să accesați proprietățile „Sarcini”. Și selectați Numele metodei. Aici, trebuie să specificați o funcție de gestionare, așa cum se întâmplă într-un abonament de eveniment. Această funcție va fi localizată în modulul general și marcată cu un Server „pasăre” în proprietăți. Aceasta înseamnă că modulul necesar trebuie adăugat în prealabil.

Numele sarcinii din Proprietățile unei sarcini programate vă permite să determinați numele acesteia, care va apărea apoi în instrumentele de gestionare a sarcinilor. Funcția Proprietăți activități de rutină este o cheie care vă permite să grupați mai multe sarcini de rutină diferite. În acest caz, o singură activitate cu aceeași valoare a cheii poate fi lansată la un moment dat. Aici, valoarea poate fi arbitrară, dar trebuie completată, deoarece o valoare goală nu este luată în considerare de către sistem.

În ediția de contabilitate 2.0, care este o configurație standard, sarcinile de rutină precum: „Recalcularea totalurilor” și „Actualizarea configurației” sunt predefinite, dar precum, de exemplu, „Mișcări amânate” și „Schimb de date” nu sunt predefinite.

Reîncercați la terminarea anormală - repornește jobul curent. Conceput pentru a realiza o lansare care nu a avut succes prima dată. Aici, este indicat de câte ori puteți reporni și după ce timp a trecut după o întrerupere anormală.

Instrumente de monitorizare și management pentru sarcinile de rutină 1C

Procesarea standard „Consola de sarcini”, care poate fi găsită pe discurile ITS, este responsabilă pentru gestionarea unei sarcini de rutină. Această prelucrare este un standard extern universal de prelucrare 1C. De regulă, nu este inclus în configurație, dar este achiziționat separat.

Cu ajutorul acestuia puteți efectua următoarele acțiuni:

Porniți și dezactivați o sarcină programată;

Atribuiți și modificați orarele;

Desemnați numele de utilizator cu care va fi efectuată sarcina de rutină;

Vedeți sarcinile finalizate (când și cu ce rezultat), precum și erorile de sarcină;

Sarcini de rutină și copii ale bazelor de date

Când utilizați serverul 1C, poate apărea următorul moment:

Pentru a programa, trebuie să faceți o copie a bazei de date de lucru;

Necesitatea de a lucra în copii ale bazei de date (testare);

Din anumite motive, sarcina programată nu a fost inclusă în baza de date de testare.

Dacă una dintre aceste situații a apărut în timpul executării sarcinilor de către o sarcină de rutină care sunt asociate numai cu baza lor de date, atunci aceasta nu are consecințe negative. Dar, adesea, o sarcină de rutină poate salva fișiere sau alte date, poate trimite e-mailuri și poate efectua schimburi. În acest caz, poate apărea confuzie între rezultatele „lucrării” și copii. Pentru a preveni acest lucru, trebuie să dezactivați „sarcinile” din consola de gestionare a serverului.

Sarcini de reglementare finalizate și neterminate

Când creați sarcini de rutină, este important să verificați dacă sarcina poate fi executată ca o sarcină de rutină. Este important de știut că modulul server nu face multe lucruri posibile pe client. În plus, o sarcină care se ocupă de ceva care se află în afara bazei de date - un rol important în aceasta este jucat de drepturile utilizatorului Windows sub care este executată sarcina.

Ultimul factor este deosebit de important, deoarece dacă modulul nu este executat pe server, atunci sarcina nu poate fi finalizată în principiu. Pentru a verifica, trebuie să rulați o sarcină și să evaluați rezultatul.

Ștergerea periodică a registrelor (de exemplu, registrul de informații „Versiuni obiect” în configurația SCP), efectuarea de calcule conform unui program, completarea documentelor la un anumit moment - aceasta nu este o listă completă de acțiuni care pot fi implementate folosind sarcini de rutină 1C.

Creați o sarcină

Scopul nostru nu este să descriem codul modulului executabil; vom arăta principiile generale de funcționare și crearea unei sarcini de rutină.

Sarcina de rutină este de neînlocuit:

  1. Dacă sarcina la îndemână include, ca una dintre condiții, necesitatea executării periodice a unui anumit algoritm;
  2. Dacă codul trebuie executat indiferent de acțiunile operatorilor și utilizatorilor bazei de date;
  3. Dacă lansarea unei proceduri executabile nu depinde de evenimentele externe care au loc cu obiectele infobase.

Pentru ao crea, trebuie să mergeți la baza de informații în modul „Configurator”. Apoi, găsiți ramura „Activități de rutină” în arborele de configurare, acestea se află în fila „General” și faceți clic pe butonul „Adăugați” (Fig. 1).

Să aruncăm o privire mai atentă la fereastra de proprietăți (Fig. 2):
Fig.2

  1. Nume, sinonim și comentariu - regulile și principiile pentru completarea acestor câmpuri sunt similare pentru toate obiectele de configurare și nu este nevoie să le descrieți din nou;
  2. Numele metodei – o procedură a modulului general care descrie cât mai exact algoritmul necesar (făcând clic pe butonul de selectare se deschide procedurile disponibile, a căror reprezentare constă în numele modulului general și numele procedurii în diferite coloane a tabelului);
  3. Cheie – determină nu atât unicitatea sarcinii programate, cât mai degrabă unicitatea procesului de fundal lansat pe baza sarcinii; are o limită de lungime;
  4. Program – vom dedica un paragraf separat al articolului nostru descrierii acestui element;
  5. Utilizare – bifarea acestei casete determină activitatea sarcinii, TRUE înseamnă că sarcina va fi lansată și executată conform programului;
  6. Predefinite – dacă un element are această casetă de selectare, aceste sarcini nu pot fi șterse; sunt create automat când configurația este salvată în baza de date;
  7. Număr de repetări - dacă apare o excepție în timpul execuției, aceasta va fi repornită, astfel încât să nu se producă o buclă nesfârșită, programul limitează numărul de reporniri;
  8. Interval de reîncercare – timp în secunde între repornirile sarcinilor finalizate anormal.

Să aruncăm o privire mai atentă asupra programului.

Programul sarcinii de rutină

Fig.3

În primul rând, ar trebui să acordați atenție părții inferioare a ferestrei, aici sunt afișate informații detaliate cu o defalcare a cât de des și la ce oră va fi efectuată sarcina.

"Filă generală:

  • Data începerii sarcinii;
  • Data de încheiere a procesării;
  • Frecvența repetării sarcinilor.

Dacă nu sunt specificate date în această filă, atunci nu va fi setat niciun termen limită pentru sarcină.

Fila „Daily” (Fig. 4)
Fig.4

Pe lângă câmpurile de intrare pentru ora de începere și de sfârșit a sarcinii și frecvența lansării acesteia în timpul zilei, conține o secțiune tabelară pentru configurarea detaliată a frecvenței de execuție.

Filele „Zilnic” și „Săptămânal” conțin informații pentru perioadele corespunzătoare.

Caracteristici de funcționare

În versiunea de lucru client-server, execuția sarcinilor de rutină este determinată de instrumentele serverului. Din consola de administrare, puteți activa sau dezactiva capacitatea de a rula sarcini pentru o anumită bază de date.

Situația este mult mai complicată cu versiunea fișierului de lucru. Înainte de o anumită lansare a platformei, procedurile de fundal și de rutină erau executate numai dacă metoda ExecuteTaskProcessing() a fost activată când sistemul a pornit sub un anumit utilizator. În acest caz, algoritmii erau lansați periodic atâta timp cât utilizatorul care a inițiat metoda se afla în program.

În prezent, munca joburilor de fundal în versiunea fișierului de lucru este distribuită uniform între utilizatorii autorizați în baza de date; dacă programul a fost lansat cu parametrul suplimentar AllowExecuteSheduledJobs, acest proces va fi responsabil pentru întreținerea de rutină.

Puteți dezactiva complet munca de fundal și de rutină într-o bază de date care rulează în modul fișier, ștergând sau redenumind fișierul DoNotCopy.txt din folderul cu baza de date. Prezența acestui fișier spune platformei că munca se desfășoară în original și nu într-o copie a bazei de date.

În plus, în livrările standard 1C, a devenit posibilă gestionarea lucrărilor programate direct din program, fără a intra în „Configurator”. În configurația „ZUP”, versiunea 3.1.3.223, puteți deschide formularul de management din meniul Administrare->Întreținere->Operațiuni de rutină->Taricuri de rutină și de fundal (Fig. 5)
Fig.5

Formularul care se deschide are o interfață intuitivă și vă permite să:


De asemenea, puteți începe o sarcină direct din formular.