Diferența dintre sarcini și funcții. Sarcini de rutină și de fundal (1Cv8)

Sarcinile programate în 1C sunt concepute pentru a efectua anumite proceduri într-un program, cu o anumită frecvență.

Sarcinile de rutină sunt stocate în baza de informații și au un program de lansare. Pornirea în sine este complet automată dacă modul de operare este baza de informatii client server. Dacă baza de date este bazată pe fișiere, atunci trebuie să efectuați următorii pași:

  • alocați un utilizator special pentru a efectua sarcini de rutină;
  • sub acest utilizator trebuie deschisă o bază de date, în care funcția trebuie executată periodic ExecuteTaskProcessing().

Crearea unei sarcini de rutină

Sarcinile programate sunt un obiect de metadate de configurare 1C. Situat în grupul General. Să luăm în considerare parametrii și proprietățile sarcinilor de rutină.

Numele metodei— calea către procedura de export în modulul general, care va fi executată conform unui program dat. Procedura trebuie executată pe server. În acest sens, sarcinile de rutină sunt oarecum asemănătoare cu un obiect Abonați-vă la eveniment.

Cheie— vă permite să creați mai multe sarcini de rutină de același tip. De exemplu, sincronizarea datelor între mai multe baze de informații poate fi implementată folosind un singur obiect de metadate Sarcină de rutină, în timp ce mai multe sarcini de rutină în sine vor fi create (în funcție de numărul de baze de date pentru schimb). Aceste sarcini de rutină vor fi diferențiate folosind proprietatea Cheie. Numai un job cu aceeași cheie poate fi executat la un moment dat.

Utilizare— un indicator care indică dacă sarcina programată este activată.

Predeterminat— aici putem face o analogie cu elemente de director predefinite. Elementele predefinite sunt create în configurator și utilizate de utilizatori în munca lor. Utilizatorul creează el însuși elemente obișnuite. La fel este și cu sarcinile de rutină: dacă este predefinit, atunci există și poate fi executat conform unui program imediat după creare în configurator. Dacă steagul Predeterminat nu este instalat, atunci utilizatorul trebuie să creeze el însuși una sau mai multe sarcini de rutină de acest tip(de exemplu, prin Job Console).

Numărul de reîncercări când un job se încheie anormal— determină de câte ori va fi repornită o lucrare de fundal dacă a fost finalizată cu o eroare.

Interval de reîncercare când jobul se încheie anormal— determină cât de des va fi repornită lucrarea de fundal dacă a fost finalizată cu o eroare.

Programează lucrul cu sarcini de rutină

În aceste exemple, vom lua în considerare lucrul cu sarcini obișnuite, nepredefinite, de rutină.

Crearea programatică a unei sarcini de rutină

//Creează o sarcină
„RegularTaskName”) ;

//Setați cheia pentru sarcina programată (opțional)
Exercițiu. Cheie = "TaskKey" ;

//Activați sarcina de rutină
Exercițiu. Utilizare = Adevărat;

//Scrie o sarcină de rutină
Exercițiu. Scrie() ;

Primirea programatică a unei sarcini programate pentru modificarea parametrilor

În acest exemplu, presupuneți că există o singură sarcină de rutină de un anumit tip. Dacă există mai multe sarcini, atunci, știind , nu este dificil să faceți modificările corespunzătoare la cod.


„Nume sarcină de rutină”] ) ) ;


Dacă Sarcini. Cantitate() > 0 Atunci
Job= Jobs[ 0 ] ;


In caz contrar
Task = RegularTasks. Creați sarcină de rutină( „Nume sarcină de rutină”) ;

EndIf ;

// Sarcina de rutină este în variabila Atribuire. Puteți modifica parametrii acestuia.

Apelarea casetei de dialog pentru modificarea programului unei sarcini de rutină

Există un tip special de dialog pentru lucrul cu programul unei sarcini de rutină. Încă presupunem că avem o singură sarcină de rutină de acest tip.

//Obțineți o matrice cu sarcini de rutină de tipul necesar
Sarcini = Sarcini obișnuite. Obține Sarcini de rutină(structură nouă ("Metadate", Metadate. Sarcini de rutină[ „Nume sarcină de rutină”] ) ) ;

//Dacă sarcina există, atunci prin condiție este una
Dacă Sarcini. Cantitate() > 0 Atunci
Job= Jobs[ 0 ] ;

//Dacă nu există nicio sarcină, creați-o
In caz contrar
Task = RegularTasks. Creați sarcină de rutină( „Nume sarcină de rutină”) ;

EndIf ;

Schedule=Sarcina. Programa;

//Creează un dialog pentru modificarea programului unei sarcini de rutină
Dialog de editare = New ScheduleDialog al RoutineTask (Schedule) ;

//Afișează dialogul utilizatorului și procesează modificările programului
DacăEditDialog. OpenModal() Apoi
Exercițiu. Program = EditDialog. Programa;
Exercițiu. Scrie() ;
EndIf ;

De obicei locuri de muncă de fundal în 1C: Întreprinderile sunt lansate de sub reglementări.

Adică, la pornire, o sarcină de rutină generează una de fundal. Dar dacă este necesar
putem rula un job de fundal și în mod programatic.
În același timp, poate folosi orice metode și proprietăți disponibile pe server, deoarece si ruleaza pe server.
De fapt, munca de fundal în sine nu efectuează nicio acțiune. Tocmai se lansează
pentru a executa o procedură dintr-un modul comun. Dacă procedura utilizează parametri,
ele pot fi trimise și atunci când este începută o lucrare de fundal.

Sa luam in considerare cel mai simplu exemplu. Să creăm o procesare care va rula fundalul
sarcină, care la rândul său va face o înregistrare în jurnalul de bord.

Deoarece
pentru un job de fundal avem nevoie de o procedură comună de modul, haideți să creăm acest modul comun
cu capacitatea de a-și executa procedurile pe server.

Să creăm o procedură în acest modul general care va înregistra în jurnal
înregistrare

Procedura RecordInRegistrationLog(par_EventName, par_Comment) ExportRecordLog(par_EventName, , , , par_Comment) ; Sfârșitul procedurii

După cum puteți vedea, procedura are parametri. Aceasta înseamnă că sarcina de fundal va trebui să facă ceva de genul acesta
modalitate de transfer la procedură.

Acum vom crea o procesare cu care vom lansa o sarcină de fundal.

Să o facem într-o formă controlată, dar pentru forme regulate nu va exista nicio diferență fundamentală
se folosesc aceleasi metode. Noi creăm cea mai simpla forma cu o singură comandă:


În modulul formular scriem următorul cod:

&OnServer Procedura Scrieți JROnServer() Matrice de parametri = Matrice nouă; Matrice de parametri. Adăuga( „Eveniment. Lucrarea de fundal a fost finalizată cu succes”); Matrice de parametri. Adăuga( „Comentează. Se verifică lucrarea de fundal”); Sarcini de fundal. Alerga ( „site_RoutineTasks.RecordInRegistrationJournal”, Matrice de parametri) ; Sfârșitul procedurii &Pe client Procedura Scrieți JR (comandă) Scrieți JR pe server () ; Sfârșitul procedurii

Începeți o lucrare de fundal folosind metoda Alerga()
manager de post de fundal.

Primul parametru al acestei metode este
numele modulului comun și numele procedurii care va fi executată, tip - șir.
Al doilea parametru este o matrice cu valorile parametrilor pentru procedura apelată.
Ordinea elementelor din matrice trebuie să se potrivească cu ordinea parametrilor din
procedură.
Poate fi indicat și CheieȘi Nume job de fundal.

Acum să testăm procesarea. Să-l deschidem în 1C:mod Enterprise și
Să începem execuția. Apoi, deschideți jurnalul de înregistrare și vedeți că sarcina
a funcționat cu succes și a făcut o înregistrare corespunzătoare în jurnal.

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

2012-11-13
53136

Î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 există programe speciale, folosit pentru verificări periodice ale performanței infrastructura reteleiși servere. 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 mod 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ă - este lansată o lucrare de fundal, care funcționează acțiunile necesare. Pentru calcul paralel pe server, o sarcină de fundal poate fi creată din textul programului, folosind limbajul 1C, fără a utiliza o sarcină 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 valoare goală nu este luată în considerare de 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 lucrarea 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 de procesare universal pentru 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, trimite e-mailuri, efectuați un schimb. Î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. Mai mult, o sarcină care se ocupă de ceva care este în afara bazei - drepturile joacă un rol important în acest sens utilizator Windows, sub care se execută 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.

Crearea unei sarcini de rutină

Să creăm o sarcină de rutină „Efectuați procesarea”.

Să dezactivăm utilizarea sarcinii programate, astfel încât la actualizarea configurației aceasta să nu ruleze automat.

Să atribuim o procedură care va fi declanșată la lansarea unei sarcini de rutină:Modulul RoutineTasks.RoutineTaskExecutionProcessing.

Procedura în sine arată astfel:

Procedură RutinăTaskExecutionProcessing(Key) Export

Parametrii lui RoutineTasks.PerformProcessingWithParameters(Key);

Sfârșitul procedurii

Creăm o carte de referință pentru sarcinile de rutină

Sarcina noastră de reglementare poate genera multe procese de fundal- cate unul pentru fiecare tratament. Fiecare sarcină din platforma 1C8 are o cheie. Dar metoda jobului programat nu cunoaște cheia jobului de fundal, așa că trebuie să utilizați parametrii jobului de fundal. Ca rezultat, putem vedea jobul de fundal în consola de joburi, dar nu putem crea manual un job de fundal din această consolă, deoarece joburile cu parametri nu sunt create manual.

Cartea de referință „Parametrii sarcinilor programate” :

Rechizite :

· Cod înainte de lansare- șir nelimitat - cod în limbajul 1C care trebuie executat înainte de lansare.

· Procesare din configurație - linia (100) - identificator de procesare din configurație

· Procesare din director - linia (100) - link către elementul de director „Procesare externă”, dacă există unul în configurație

· Execut prin aplicația 1C - Boolean - va fi creată cerere separată 1C și o sarcină de rutină va fi lansată în el. Creat pentru 8.1, unde nu toate metodele de aplicare sunt disponibile pe serverul pe care rulează jobul programat.

· Cod de lansare- - linie nelimitată - cod în limbajul 1C care va fi executat la lansarea unei sarcini programate.

Să creăm forma elementului :

Făcând clic pe „Creare Reg. task" o sarcină de rutină cu un cod cheie este creată programatic:

Procedura BasicActionsFormCreateReglTask(Button)

Job variabil;

Cheie = AbbrLP(Cod);

Sarcină = RoutineTasks.CreateRoutineTask("PerformProcessing");

Task.Name = Cheie;

Task.Key = Cheie;

Parametri = Noua matrice();

Parametri.Add(Key);

Task.Parameters = Parametri;

Task.Write();

Sfârșitul procedurii

Pornirea unei sarcini programate

Fiecare sarcină de rutină pe care o creăm are o cheie:

Această cheie corespunde codului din directorul „Parametrii sarcinilor de rutină” este folosită pentru a căuta la pornirea unei sarcini. Dacă intrarea în director nu este găsită, sarcina nu este executată.

Apoi, dacă este dat codulCod înainte de lansare atunci acest cod va fi executat. În continuare, dacă variabila Îndeplini evaluează ca fals, sarcina nu va fi finalizată. Variabilă disponibilă pentru analiză Opțiuni, unde este stocată o legătură către elementul de director găsit „Parametrii sarcinilor de rutină”.

În funcție de valorile selectate ale detaliilor, fie va rula codul în limbajul 1C, fie va începe procesarea din configurație, fie va începe procesarea din cartea de referință standard „Procesare externă”.

Pentru 1C81, execuția este furnizată într-o aplicație nouă - astfel încât să puteți utiliza cod care este disponibil numai pe client, inclusiv utilizarea tratamente externe. Pentru a face acest lucru, trebuie să bifați caseta de selectare „Run through 1C application”. În caz contrar, sarcina programată va fi executată pe server.

Recomand să setați un utilizator în câmpul „Utilizator” pentru o sarcină de rutină nou creată, astfel încât sarcina să fie executată sub anumite drepturi. Recomand să dai unui astfel de utilizator drepturi depline. Folosesc utilizatorul "robot».

Programul sarcinilor de rutină este creat folosind hyperlinkul „Programare” din formularul de sarcini de rutină. Puteți utiliza procesarea „Consola de activități de rutină”.

Probabil, nici o singură configurație serioasă pe 1C 8.3 sau 8.2 nu poate face fără utilizarea sarcinilor de rutină și de fundal. Sunt foarte convenabile, deoarece vor fi executate conform unui program clar definit, fără intervenția utilizatorului sau programatorului.

De exemplu, trebuie să faceți schimb de date cu un alt program o dată pe zi. Folosind sarcini de rutină și de fundal, 1C va putea efectua aceste acțiuni în mod independent, de exemplu, în orele nelucrătoare. Această metodă nu va afecta în niciun fel experiența utilizatorului și va ajuta la economisirea de timp.

Mai întâi, să ne dăm seama ce înseamnă și care este diferența lor:

  • Activitate programata vă permite să lansați orice acțiuni specifice conform unui program preconfigurat.
  • Lucru de fundal este un obiect care conține acțiunile de efectuat.

Să presupunem că compania noastră vinde ceva și are propriul site pe care se află prețurile. Dorim să le încărcăm o dată pe zi pentru a menține relevanța.

Deschideți configurația și adăugați o sarcină programată.

Setarea proprietăților

Să luăm în considerare cel mai mult parametri importanti, care trebuie completat în proprietățile sale.

  • In camp " Numele metodei» selectează procedura unui modul general specific care va fi executat direct. Acesta va indica toți pașii pentru încărcarea prețurilor pe site-ul nostru. Vă rugăm să rețineți că execuția va avea loc pe server. Acest lucru este logic, deoarece operațiunile de rutină sunt efectuate fără participarea utilizatorului.
  • Sarcina programată poate fi dezactivată sau activată după cum este necesar. Nu este nevoie să-i editezi programul de fiecare dată. Pentru a face acest lucru, în paleta de proprietăți, setați sau ștergeți steagul " Utilizare».
  • Un alt lucru important este să stabiliți dacă această sarcină de rutină va fi predeterminat, sau nu. Activitățile programate predefinite sunt lansate automat. Dacă această caracteristică nu este instalată, atunci va trebui să le lansați în mod programatic sau să utilizați procesarea „Consola de activități” cu ITS.
  • De asemenea, puteți specifica numărul de repetări și intervalul dintre eleîn caz de încetare anormală. Încetarea anormală se referă la acele situații în care lucrările nu au fost finalizate din cauza unei erori.

Stabilirea unui program

Pasul final este să stabilim un program pentru încărcarea noastră pe site folosind hyperlinkul corespunzător din paleta de proprietăți.

Se va deschide înaintea ta setare tipică orare în 1C 8.3. Nu este nimic complicat aici. În acest exemplu Am stabilit lansarea încărcării noastre de prețuri pe site zilnic de la cinci la șapte dimineața. În cazul în care sarcina programată nu are timp să fie finalizată înainte de ora 7:00, aceasta va fi finalizată chiar a doua zi.

Blocarea sarcinilor programate

Alerga utilitate standard„Administrarea serverelor 1C Enterprise” și deschideți proprietățile bazei de informații în care ați creat sarcina de rutină (pentru versiunile client-server ale 1C).

În fereastra care se deschide (după ce ați introdus datele de conectare și parola pentru a accesa securitatea informațiilor), verificați dacă caseta de selectare „Blocarea sarcinilor de rutină este activată” nu este bifată. Dacă întâmpinați o situație în care sarcina nu funcționează, verificați mai întâi această setare.

În același mod, puteți dezactiva complet sarcinile de rutină în 1C 8.3. Pentru a dezactiva anumite lucrări de fundal, puteți utiliza procesarea „Background Job Console” încorporată în cele mai recente versiuni.

Activități de fundal și programate în modul fișier

ÎN acest mod Configurarea și rularea acestor joburi este mult mai dificil de organizat. Cel mai adesea, suplimentar Cont, a cărui sesiune va fi mereu deschisă.

În acest caz, sarcinile de rutină sunt activate folosind metoda „RunTaskProcessing()”.

De asemenea, puteți utiliza următoarea construcție:

Ca nume de procedură, trebuie să specificați numele procedurii client care va fi executată. Intervalul arată câte secunde mai târziu va avea loc execuția. Parametrul „O singură dată” nu este necesar. Ea reflectă dacă va fi îndeplinită această procedură o dată sau de mai multe ori.

Urmărirea erorilor în joburile de fundal

Vedeți progresul sarcinilor de fundal, precum și disponibilitatea posibile erori poate fi găsit în jurnalul de bord. În filtru, selectați aplicația „Lucră de fundal” și, dacă este necesar, selectați importanța interesului, de exemplu, doar „Erori”.

Jurnalul va afișa toate intrările care se potrivesc cu selecția dvs., împreună cu un comentariu care vă va ajuta să înțelegeți motivul erorii.