Numărul de parametri ai lucrării de fundal nu se potrivește. Sarcini de rutină și de fundal (1Cv8)

Ne permite să efectuăm orice calcule în sistem neobservate de utilizator, adică în fundal. Mai mult, acest mecanism ne permite să paralelizăm procesul de calcul. Putem chiar paraleliza procedura care va fi executată. Pentru a face acest lucru, jobul nostru de fundal trebuie să ruleze mai multe joburi de fundal. În acest caz, procesele sunt paralelizate și, dacă avem un sistem multiprocesor, multi-core, algoritmul nostru va funcționa eficient. După lansarea mai multor procese, putem spune sistemului că trebuie să aștepte finalizarea acestor procese pentru a combina cumva rezultatul.

De exemplu, în configurațiile tipice, în timp ce utilizatorul lucrează, sunt executate diferite tipuri de joburi de servicii de fundal. Acest lucru poate fi evidențiat de intrările de jurnal care înregistrează faptul că astfel de acțiuni au fost efectuate. Mai mult, acest lucru nu afectează în niciun fel munca utilizatorului, pur și simplu nu le observă.

În mod ideal, un job de fundal este implementat într-o versiune client-server, caz în care întreaga încărcare merge către server. În ceea ce privește versiunea fișierului, este posibilă o lucrare de fundal, dar are unele particularități.

Acesta este ceea ce va produce sistemul dacă nu luați în considerare aceste caracteristici și executați un job de fundal în versiunea de fișier a bazei de informații.


Lucrarea de fundal 1C are unele limitări. Deoarece rulează pe partea serverului, nu există posibilitatea de a lucra interactiv cu utilizatorul. De exemplu, nu puteți afișa un mesaj sau nicio informație. Toate aceste date trebuie stocate în baza de informații și procesate în continuare într-un fel.
Contactând asistentul de sintaxă, puteți obține informații mai detaliate despre joburile de fundal 1C. Trebuie remarcat aici că acest obiect este pur software și nu este în niciun fel stocat în baza de date. Adică, creăm o instanță a clasei, inițializam proprietățile și o lansăm pentru execuție.

Ce instrumente avem pentru a gestiona joburile de fundal? Această facilitate este un obiect de metadate „Manager de activități de fundal”. Acest obiect are o metodă "Alerga", folosind această metodă, se lansează jobul de fundal.

Are urmatorii parametri:
„NumeMetodă”- denumirea procedurii sau funcției de executat și trebuie să fie o procedură sau funcție a contextului serverului;

"Opțiuni"- o matrice de parametri, al căror număr de elemente trebuie să corespundă numărului de parametri ai procedurii/funcției noastre specificate în parametru „NumeMetodă”;

"Cheie"- o anumită cheie de unicitate, care este o linie prin care sistemul înțelege dacă o sarcină de fundal trebuie lansată sau dacă o astfel de sarcină rulează deja;

"Nume"- aici puteți specifica o descriere arbitrară a metodei noastre.

Valoarea returnată este un obiect „Sarcina de fundal”, care conține numele metodei curente, cheia curentă și alte câteva proprietăți și metode. O astfel de metodă este metoda „Așteptați finalizat”. Scopul său este că putem spune sistemului să nu facă nimic până la finalizarea lucrării de fundal.

Job de fundal 1C 8.2, 8.3 - Exemplu de utilizare

Să dăm un exemplu de lucru cu joburi de fundal 1C. În primul rând, vom crea un algoritm simplu care va încărca pentru scurt timp sistemul 1C în așa fel încât să nu putem face nimic în acest moment.

Pentru aceasta:

1. Să creăm un modul comun „Gestionari de sarcini de fundal”, care va fi compilat pe partea de server;


2. Vom descrie în el procedura de export „ProduceBackgroundCalculation(Parameter)”, care ia un parametru de tip șir;

Procedură PerformBackgroundCalculation(Parameter) ExportStartTime = CurrentDate() ; În timp ce CurrentDate() - Ora de începere< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление(„Ceva parametru”); Sfârșitul procedurii
Gata. Acum, când începeți procesarea și apăsați un buton, sistemul îngheață câteva secunde, timp în care nu se poate face nimic. Este exact ceea ce trebuia să facem.

Acum ne vom asigura că aceste calcule sunt efectuate în fundal, adică astfel încât sarcina de fundal 1C 8.2, 8.3 să fie executată, dar să nu interfereze cu noi.

Pentru aceasta:

1. În procesare, în evenimentul butonul click, scrieți următorul cod.

Procedura KnPress() Parametri = New Array; Opțiuni. Adăuga( „Ceva parametru”); Sarcină de fundal. Alerga ( „Gestionare de sarcini de fundal. Efectuați calculul de fundal”, Parametri, Nou UniqueIdentifier, "Test"); Sfârșitul procedurii

Aici trecem numele procedurii modulului comun ca prim parametru și o matrice de parametri ca al doilea. Al treilea parametru trebuie să primească o cheie unică, iar al patrulea parametru o descriere a procedurii noastre.

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 timpul orelor de lucru. 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 unde sunt situate 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ă ne uităm la cei mai importanți parametri care trebuie completați î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.

Veți vedea o setare tipică de program în 1C 8.3. Nu este nimic complicat aici. În acest exemplu, am configurat lansarea încărcării noastre de prețuri pe site în fiecare zi, 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

Rulați utilitarul 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 lansarea acestor sarcini este mult mai dificil de organizat. Cel mai adesea, se creează un cont suplimentar, a cărui sesiune va fi întotdeauna 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. Acesta reflectă dacă această procedură va fi efectuată o dată sau de mai multe ori.

Urmărirea erorilor în joburile de fundal

Puteți vedea progresul lucrărilor de fundal, precum și prezența unor posibile erori, în jurnal. În filtru, setați selecția la aplicația „Lucrări 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.

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 sarcini:

  • 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 înghețată, dar continuă să ruleze, deoarece nu toate operațiunile platformei pot fi anulate. Dacă se execută codul ciclic al limbajului încorporat, atunci jobul poate fi anulat, 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ă sarcini de rutină:

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:

Rutina = RoutineTasks.GetRoutineTasks(Selection);

Pentru fiecare rutină a ciclului de rutină NewLine = List of RoutineTasks.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<>Nedefinit Apoi NewRow.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

Opțiuni(Parametri)

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