Detyrat rutinë dhe në sfond 1s 8.2. Detyrat rutinë dhe në sfond. Përfshini të gjitha ose disa detyra


1C Enterprise ka detyra rutinë dhe në sfond në konfigurimet e saj. Këto punë ekzekutohen sipas planifikuesit, duke marrë parasysh orarin për çdo punë. Disa nga detyrat fillimisht ekzekutohen në një kohëmatës pas një numri të caktuar sekondash, gjë që mund të ndikojë negativisht në performancën dhe të ndërhyjë qartë në punën në bazën e informacionit.

Për të modifikuar detyrat rutinë dhe në sfond, në skedën e administrimit, zgjidhni "detyrat rutinë dhe sfond" në të majtë. Do të shfaqet një listë e detyrave ekzistuese, statusi i tyre, orari dhe informacione të tjera.

Duke klikuar disa herë në ndonjë nga detyrat, do të hapet një dritare me vetitë e kësaj detyre. Këtu mund të ndryshoni shumë cilësime sipas shijes tuaj, duke përfshirë orarin për këtë detyrë. Për të çaktivizuar një detyrë, kutia e kontrollit "Enabled" duhet të pastrohet. Por nëse një detyrë duhet të ekzekutohet sipas një plani, është jashtëzakonisht e rëndësishme të përdorni një përdorues të veçantë me të drejta të plota për të gjitha detyrat e sfondit.

Parametrat për planifikimin e detyrave janë shumë fleksibël, por gjithsesi këshillohet që të gjitha detyrat të vendosen në atë mënyrë që vetëm 1 detyrë të ekzekutohet në të njëjtën kohë dhe mundësisht gjatë orëve jo pune. Përjashtimi i vetëm mund të jetë sinkronizimi i disa bazave të të dhënave të lidhura me informacionin, për shembull, kontabiliteti i ndërmarrjes + lista e pagave dhe menaxhimi i personelit.

Ngarkimi i klasifikuesit të bankës - E diel, ora 4:30
Ngarkimi i normave të monedhës - çdo ditë; 7:00
Nxjerrja e tekstit - çdo ditë; 6:00.
Shkëmbimi i mesazheve nëpër llogaritë e menaxhimit të dokumenteve - çdo ditë; çdo 10800 sek.
Njësitë përditësohen çdo ditë; nga ora 5:00 një herë në ditë
Përditëso Detyrat e Kontabilistit - çdo ditë; nga ora 6:30:00 një herë në ditë
Përditësimi i indeksit PPD (kërkimi i tekstit të plotë) - çdo ditë; çdo 10800 sek.
Rindërtimi i njësive - çdo ditë, në ditë të javës [e shtunë]; nga 3:00:00 një herë në ditë
Rillogaritja e vlerave aktuale të datave relative të ndalimit të ndryshimeve - çdo ditë; nga ora 7:00 një herë në ditë
Bashkimi i indeksit PPD (kërkimi i tekstit të plotë) - çdo ditë; nga 4:00:00 një herë në ditë
Heqja e informacionit të parëndësishëm të sinkronizimit - çdo ditë; nga ora 3:30:00 një herë në ditë
Vendosja e periudhës për totalet e llogaritura - çdo ditë, në datën 5 të muajit; nga ora 1:00:00 një herë në ditë

Kur punoni në 1C, ka shumë operacione rutinë që duhet të nisen ose planifikohen për të kryer një ose një veprim tjetër, për shembull: postimi i dokumenteve ose ngarkimi i të dhënave në 1C nga një faqe interneti.

Kohët e fundit kam postuar një artikull: Është koha për ta automatizuar këtë:

Detyrat rutinë dhe në sfond

Motori i punës është projektuar për të kryer çdo aplikacion ose funksionalitet në një orar ose në mënyrë asinkrone.

Mekanizmi i detyrës zgjidh problemet e mëposhtme:

  • Aftësia për të përcaktuar procedurat rregullatore në fazën e konfigurimit të sistemit;
  • Ekzekutimi i veprimeve të specifikuara sipas planit;
  • Bërja e një thirrjeje në një procedurë ose funksion të caktuar në mënyrë asinkrone, d.m.th. pa pritur përfundimin e tij;
  • Ndjekja e ecurisë së një detyre specifike dhe marrja e statusit të saj të përfundimit (një vlerë që tregon nëse ishte e suksesshme apo jo);
  • Marrja e një liste të detyrave aktuale;
  • Aftësia për të pritur për të përfunduar një ose më shumë detyra;
  • Menaxhimi i punës (mundësia e anulimit, bllokimi i ekzekutimit, etj.).

Mekanizmi i punës përbëhet nga komponentët e mëposhtëm:

  • Meta të dhënat e detyrave rutinë;
  • Detyrat e rregullta;
  • Punë në sfond;
  • Programuesi i detyrave.

Punët në sfond dhe janë krijuar për të kryer detyrat e aplikacionit në mënyrë asinkrone. Detyrat e sfondit zbatohen duke përdorur gjuhën e integruar.

Detyrat e planifikuara dhe janë krijuar për të kryer detyrat e aplikimit sipas një orari. Detyrat rutinë ruhen në bazën e informacionit dhe krijohen në bazë të meta të dhënave të përcaktuara në konfigurim. Meta të dhënat e një detyre rregullatore përmbajnë informacione të tilla si emri, metoda, përdorimi, etj.

Një detyrë rutinë ka një plan që përcakton se në cilat kohë duhet të ekzekutohet metoda e lidhur me detyrën rutinë. Orari, si rregull, specifikohet në bazën e informacionit, por gjithashtu mund të specifikohet në fazën e konfigurimit (për shembull, për detyrat rutinë të paracaktuara).

Planifikuesi i detyrave përdoret për të planifikuar ekzekutimin e detyrave rutinë. Për çdo punë të planifikuar, planifikuesi kontrollon periodikisht nëse data dhe ora aktuale përputhen me orarin e punës së planifikuar. Nëse përputhet, planifikuesi e cakton atë detyrë për ekzekutim. Për ta bërë këtë, për këtë detyrë të planifikuar, planifikuesi krijon një detyrë sfondi, e cila kryen përpunimin aktual.

Unë mendoj se kjo është e mjaftueshme me përshkrimin - le të zbresim në zbatimin:

Krijimi i një detyre rutinë

Emri i metodës– rruga drejt procedurës që do të ekzekutohet në një punë në sfond sipas një plani të caktuar. Procedura duhet të jetë në një modul të përbashkët. Rekomandohet të mos përdorni module standarde të zakonshme, por të krijoni tuajat. Mos harroni se punët në sfond funksionojnë në server!

Përdorimi– shenjë e përdorimit të një detyre rutinë.

E paracaktuar– tregon nëse detyra rutinë është e paracaktuar.

Nëse dëshironi që detyra rutinë të funksionojë menjëherë pasi të vendoset në bazën e të dhënave, specifikoni atributin E paracaktuar. Përndryshe, do t'ju duhet të përdorni përpunimin "Job Console" ose të aktivizoni detyrën që të ekzekutohet në mënyrë programore.

Numri i riprovave kur një punë përfundon në mënyrë jonormale– sa herë është rifilluar puna në sfond nëse është ekzekutuar me një gabim.

Riprovoni intervalin kur puna përfundon në mënyrë jonormale– sa shpesh do të riniset puna në sfond nëse është përfunduar me një gabim.

Vendosja e një orari

Orari duke përfunduar detyrën:

Çdo orë, vetëm një ditëPeriudha e ditëve të përsëritura = 0, periudha e ditëve të përsëritura = 3600
Çdo ditë një herë në ditëPeriudha e ditëve të përsëritura = 1, periudha e ditëve të përsëritura = 0
Një ditë, një herëPeriudha Ditë të Përsëritjes = 0
Çdo ditë të tjera një herë në ditëPeriudha Ditë të Përsëritjes = 2
Çdo orë nga ora 01:00 deri në 07:00 çdo ditëPeriodDitët e Përsëritjes = 1PërsëritjePeriudhaGjatë Ditës = 3600Koha e Fillimit = 01.00

Koha e Fundit = 07.00

Çdo të shtunë dhe të diel në orën 09.00Periudha e ditëve të përsëritura = 1 javë Ditë = 6, 7 Koha e fillimit = 09.00
Çdo ditë për një javë, kaloni një javëDitët e përsëritjes së periudhës = 1Periudhajavë = 2
Në orën 01.00 një herëOra e fillimit = 01.00
Dita e fundit e çdo muaji në orën 9:00.PeriodDitët e Përsëritjes = 1DitëNë Muaj = -1Koha e Fillimit = 09.00
Dita e pestë e çdo muaji në orën 9:00PeriodDitët e Përsëritjes = 1DitëNë Muaj = 5Koha e Fillimit = 09.00
E mërkura e dytë e çdo muaji në orën 9:00PeriodDitët e Përsëritjes = 1DitëjavëMuaji = 2Ditëjavë = 3

Ora e fillimit = 09.00

Karakteristikat e ekzekutimit të punëve në sfond në variantet e skedarëve dhe klient-server

Mekanizmat për ekzekutimin e punëve në sfond në versionet e skedarit dhe klient-server janë të ndryshëm.

Në versionin e skedarit ju duhet të krijoni një proces të dedikuar klienti që do të kryejë punë në sfond. Për ta bërë këtë, procesi i klientit duhet të thërrasë periodikisht funksionin e kontekstit global ExecuteJobProcessing. Vetëm një proces klienti për infobazë duhet të përpunojë punët e sfondit (dhe, në përputhje me rrethanat, të thërrasë këtë funksion). Nëse një proces klienti nuk është krijuar për të përpunuar punët në sfond, atëherë kur qaseni në mënyrë programore në motorin e punës, do të shfaqet gabimi "Menaxheri i punës nuk është aktiv". Nuk rekomandohet përdorimi i një procesi klienti që përpunon punët e sfondit për funksione të tjera.

Pasi të fillojë punët e sfondit të përpunimit të procesit të klientit, proceset e tjera të klientit janë në gjendje të hyjnë në mënyrë programore në motorin e punës së sfondit, d.m.th. mund të ekzekutojë dhe menaxhojë punët në sfond.

Në versionin klient-server Për të ekzekutuar punët në sfond, përdoret një programues detyrash, i cili ndodhet fizikisht në menaxherin e grupit. Për të gjitha punët e sfondit në radhë, planifikuesi merr procesin e punës më pak të ngarkuar dhe e përdor atë për të ekzekutuar punën përkatëse të sfondit. Procesi i punëtorit ekzekuton punën dhe njofton planifikuesin për rezultatet e ekzekutimit.

Në versionin klient-server, është e mundur të bllokohet ekzekutimi i detyrave rutinë. Ekzekutimi i detyrave rutinë bllokohet në rastet e mëposhtme:

  • Një bllokim i qartë i detyrave rutinë është instaluar në bazën e informacionit. Kyçja mund të vendoset nëpërmjet tastierës së grupit;
  • Ekziston një bllok lidhjesh në bazën e informacionit. Kyçja mund të vendoset nëpërmjet tastierës së grupit;
  • Metoda SetExclusiveMode() me parametrin True u thirr nga gjuha e integruar;
  • Në disa raste të tjera (për shembull, kur përditësoni konfigurimin e bazës së të dhënave).

Përpunimi i nisjes dhe shikimit të detyrave të planifikuara mund ta shkarkoni këtu.

Pastrimi periodik i regjistrave (për shembull, regjistri i informacionit "Versionet e objekteve" në konfigurimin SCP), kryerja e llogaritjeve në një orar, plotësimi i dokumenteve në një kohë të caktuar - kjo nuk është një listë e plotë e veprimeve që mund të zbatohen duke përdorur detyra rutinë 1C.

Krijo një detyrë

Qëllimi ynë nuk është të përshkruajmë kodin e modulit të ekzekutueshëm; ne do të tregojmë parimet e përgjithshme të funksionimit dhe krijimin e një detyre rutinë.

Detyra rutinë është e pazëvendësueshme:

  1. Nëse detyra në fjalë përfshin, si një nga kushtet, nevojën për të ekzekutuar në mënyrë periodike një algoritëm të caktuar;
  2. Nëse kodi duhet të ekzekutohet pavarësisht nga veprimet e operatorëve dhe përdoruesve të bazës së të dhënave;
  3. Nëse nisja e një procedure të ekzekutueshme nuk varet nga ngjarjet e jashtme që ndodhin me objektet e infobazës.

Për ta krijuar atë, duhet të shkoni në bazën e informacionit në modalitetin "Konfigurator". Më pas, gjeni degën “Rutine Detys” në pemën e konfigurimit, ato ndodhen në skedën “General” dhe klikoni butonin “Add” (Fig. 1).

Le të hedhim një vështrim më të afërt në dritaren e vetive të tij (Fig. 2):
Fig.2

  1. Emri, sinonimi dhe komenti - rregullat dhe parimet për plotësimin e këtyre fushave janë të ngjashme për të gjitha objektet e konfigurimit dhe nuk ka nevojë t'i përshkruani ato përsëri;
  2. Emri i metodës - një procedurë e modulit të përgjithshëm që përshkruan algoritmin e kërkuar sa më saktë që të jetë e mundur (duke klikuar në butonin e zgjedhjes hapen procedurat e disponueshme, paraqitja e të cilave përbëhet nga emri i modulit të përgjithshëm dhe emri i procedurës në kolona të ndryshme i tabelës);
  3. Çelësi – përcakton jo aq veçantinë e detyrës së planifikuar, por më tepër uniken e procesit të sfondit të nisur në bazë të detyrës; ai ka një kufi gjatësie;
  4. Orari - ne do t'i kushtojmë një paragraf të veçantë të artikullit tonë për përshkrimin e këtij elementi;
  5. Përdorimi – zgjedhja e kësaj kutie përcakton aktivitetin e detyrës, E VËRTETË do të thotë që detyra do të nisë dhe ekzekutohet sipas orarit;
  6. E paracaktuar – nëse një element e ka këtë kuti, këto detyra nuk mund të fshihen; ato krijohen automatikisht kur konfigurimi ruhet në bazën e të dhënave;
  7. Numri i përsëritjeve - nëse ndodh një përjashtim gjatë ekzekutimit, ai do të riniset, në mënyrë që të mos ndodhë një lak i pafund, programi kufizon numrin e rinisjeve;
  8. Intervali i riprovës – koha në sekonda ndërmjet rinisjeve të detyrave të kryera anormalisht.

Le të hedhim një vështrim më të afërt në orar.

Orari i detyrave rutinë

Fig.3

Para së gjithash, duhet t'i kushtoni vëmendje pjesës së poshtme të dritares, këtu shfaqet informacioni i detajuar me një ndarje se sa shpesh dhe në cilën orë do të kryhet detyra.

Skeda "Të përgjithshme":

  • Data e fillimit të detyrës;
  • Data e përfundimit të përpunimit;
  • Frekuenca e përsëritjes së detyrës.

Nëse nuk specifikohen data në këtë skedë, atëherë nuk do të caktohet asnjë afat për detyrën.

Skeda "Ditore" (Fig. 4)
Fig.4

Përveç fushave të hyrjes për kohën e fillimit dhe përfundimit të detyrës dhe shpeshtësisë së nisjes së saj gjatë ditës, ai përmban një seksion tabelor për konfigurimin e detajuar të frekuencës së ekzekutimit.

Skedat "Ditore" dhe "Javore" përmbajnë informacione për periudhat përkatëse.

Karakteristikat e funksionimit

Në versionin klient-server të punës, ekzekutimi i detyrave rutinë përcaktohet nga mjetet e serverit. Nga tastiera e administrimit, mund të aktivizoni ose çaktivizoni aftësinë për të ekzekutuar detyrat për një bazë të dhënash specifike.

Situata është shumë më e ndërlikuar me versionin e skedarit të punës. Përpara një lëshimi të caktuar të platformës, sfondi dhe procedurat rutinë ekzekutoheshin vetëm nëse metoda ExecuteTaskProcessing() aktivizohej kur sistemi filloi nën një përdorues të caktuar. Në këtë rast, algoritmet lansoheshin periodikisht për sa kohë që përdoruesi që inicioi metodën ishte në program.

Aktualisht, puna e punëve në sfond në versionin e skedarit të punës shpërndahet në mënyrë të barabartë midis përdoruesve të autorizuar në bazën e të dhënave; nëse programi është nisur me parametrin shtesë AllowExecuteSheduledJobs, është ky proces që do të jetë përgjegjës për mirëmbajtjen rutinë.

Mund ta çaktivizoni plotësisht sfondin dhe punën rutinë në një bazë të dhënash që funksionon në modalitetin e skedarit duke fshirë ose riemëruar skedarin DoNotCopy.txt në dosjen me bazën e të dhënave. Prania e këtij skedari i tregon platformës se puna po kryhet në origjinal dhe jo në një kopje të bazës së të dhënave.

Për më tepër, në dërgesat standarde 1C, u bë e mundur të menaxhohej puna e planifikuar direkt nga programi, pa hyrë në "Konfigurator". Në konfigurimin "ZUP", versioni 3.1.3.223, mund të hapni formularin e menaxhimit nga menyja Administrim->Mirëmbajtja->Veprimet rutinë->Detyrat rutinë dhe në sfond (Fig. 5)
Fig.5

Formulari që hapet ka një ndërfaqe intuitive dhe ju lejon të:


Ju gjithashtu mund të filloni një detyrë direkt nga formulari.

Ndoshta çdo programues 1C 8.3 herët a vonë duhej të vendoste ekzekutimin e detyrave të caktuara në një orar. Më poshtë do të jap një përshkrim të hollësishëm të këtyre mekanizmave, shpresoj se ky do të jetë informacion i dobishëm për programuesit fillestarë 1C. Kjo është shumë e përshtatshme, sepse nuk kërkon veprim njerëzor, detyra rutinë konfigurohet një herë dhe funksionon sipas orarit tuaj.

Ju do të gjeni udhëzime të hollësishme duke përdorur një shembull më poshtë.

Cilat janë detyrat rutinë dhe në sfond në 1C

  • Detyrat e planifikuaraështë një mekanizëm i veçantë 1C Enterprise 8.3 i krijuar për të kryer një veprim specifik sipas një orari të caktuar.
  • Punë në sfond- objekte të krijuara nga një detyrë rutinë që kryejnë drejtpërdrejt veprimin e synuar pa pjesëmarrjen e përdoruesit ose programuesit 1C 8.2.

Mekanizmi i punëve të planifikuara dhe në sfond funksionon në modalitetin klient-server (SQL), falë funksionalitetit të DBMS. Nëse keni një bazë të dhënash skedari, atëherë detyra mund të konfigurohet gjithashtu, por sipas një parimi paksa të ndryshëm.

Vendosja e punëve në sfond në modalitetin klient-server 1C

Së pari, le të krijojmë një objekt të ri metadata - një detyrë rutinë. Unë do ta quaja detyrën time "Ngarkimi i normave të monedhës". Le të shohim paletën e vetive të këtij objekti të konfigurimit:

Merrni 267 mësime video në 1C falas:

  • Emri i metodës— rruga drejt procedurës që do të ekzekutohet në një punë në sfond sipas një plani të caktuar. Procedura duhet të jetë në një modul të përbashkët. Rekomandohet të mos përdorni ato standarde, por të krijoni tuajin. Mos harroni se punët në sfond funksionojnë në server!
  • Përdorimi- një shenjë e përdorimit të një detyre rutinë.
  • E paracaktuar— tregon nëse detyra rutinë është e paracaktuar. Nëse dëshironi që detyra rutinë të funksionojë menjëherë pasi të vendoset në bazën e të dhënave, specifikoni këtë flamur. Përndryshe, do t'ju duhet të përdorni përpunimin e konsolës së punës ose të bëni që puna të ekzekutohet në mënyrë programore.
  • Numri i riprovave kur një punë përfundon në mënyrë jonormale— sa herë është rifilluar puna e sfondit nëse është ekzekutuar me një gabim.
  • Riprovoni intervalin kur puna përfundon në mënyrë jonormale— sa shpesh do të riniset puna në sfond nëse është përfunduar me një gabim.

Dhe vendosja më interesante është Orari:

Këtu ju konfiguroni intervalin e nisjes së procedurës të specifikuar në fushën "Emri i metodës". Le të themi se kam konfiguruar

Kujdes! Mos harroni të çaktivizoni bllokimin e ekzekutimit të punëve rutinë dhe në sfond në nivelin DBMS!

Kjo mund të bëhet në programin e administrimit të versionit klient-server ose kur krijoni një bazë të dhënash të re:

Vendosja e detyrave rutinë në modalitetin e skedarit 1C

Në modalitetin e skedarëve, vendosja e punëve të tilla është disi më e vështirë. Për një detyrë të tillë, duhet të nisë një seancë e veçantë e programit 1C. Kjo shpesh zgjidhet duke krijuar një përdorues "teknik" sesioni i të cilit është gjithmonë në punë.

Në modalitetin e skedarit, një punë rutinë inicializohet kur niset metoda "RunTaskProcessing()".

Për një përdorues specifik, mund ta konfiguroni këtë metodë që të ekzekutohet duke përdorur një metodë tjetër −

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

  • Emri i procedurës— emri i procedurës së lidhur si mbajtës i pritjes. Emri i procedurës së eksportuar të një moduli aplikacioni të menaxhuar (një modul i rregullt aplikimi) ose i një moduli të përbashkët global. Procedura duhet të jetë e vendosur tek klienti.
  • Intervali— periudha ndërmjet ekzekutimeve të operacioneve në sekonda.
  • Një herë- si ta kryeni detyrën, një herë apo jo.

ConnectWaitHandler, 3600);

Një video dy minutëshe që tregon se si të vendosni një detyrë rutinë në konfiguruesin 1C:

Mekanizmi i punës

Motori i punës është projektuar për të kryer çdo aplikacion ose funksionalitet në një orar ose në mënyrë asinkrone.

Mekanizmi i detyrës zgjidh problemet e mëposhtme:

  • Aftësia për të përcaktuar procedurat rregullatore në fazën e konfigurimit të sistemit;
  • Ekzekutimi i veprimeve të specifikuara sipas planit;
  • Bërja e një thirrjeje në një procedurë ose funksion të caktuar në mënyrë asinkrone, d.m.th. pa pritur përfundimin e tij;
  • Ndjekja e ecurisë së një detyre specifike dhe marrja e statusit të saj të përfundimit (një vlerë që tregon nëse ishte e suksesshme apo jo);
  • Marrja e një liste të detyrave aktuale;
  • Aftësia për të pritur për të përfunduar një ose më shumë detyra;
  • Menaxhimi i punës (mundësia e anulimit, bllokimi i ekzekutimit, etj.).

Mekanizmi i punës përbëhet nga komponentët e mëposhtëm:

  • Meta të dhënat e detyrave rutinë;
  • Detyrat e rregullta;
  • Punë në sfond;
  • Programuesi i detyrave.

Punët në sfond janë krijuar për të kryer detyrat e aplikacionit në mënyrë asinkrone. Detyrat e sfondit zbatohen duke përdorur gjuhën e integruar.

Detyrat e planifikuara - të dizajnuara për të kryer detyrat e aplikuara në një orar. Detyrat rutinë ruhen në bazën e informacionit dhe krijohen në bazë të meta të dhënave të përcaktuara në konfigurim. Meta të dhënat e një detyre rregullatore përmbajnë informacione të tilla si emri, metoda, përdorimi, etj.

Një detyrë rutinë ka një plan që përcakton se në cilat kohë duhet të ekzekutohet metoda e lidhur me detyrën rutinë. Orari, si rregull, specifikohet në bazën e informacionit, por gjithashtu mund të specifikohet në fazën e konfigurimit (për shembull, për detyrat rutinë të paracaktuara).

Planifikuesi i detyrave përdoret për të planifikuar ekzekutimin e detyrave rutinë. Për çdo punë të planifikuar, planifikuesi kontrollon periodikisht nëse data dhe ora aktuale përputhen me orarin e punës së planifikuar. Nëse përputhet, planifikuesi e cakton atë detyrë për ekzekutim. Për ta bërë këtë, për këtë detyrë të planifikuar, planifikuesi krijon një detyrë sfondi, e cila kryen përpunimin aktual.

Punë në sfond

Punët në sfond janë të përshtatshme për t'u përdorur për të kryer llogaritje komplekse kur rezultati i llogaritjes mund të marrë shumë kohë për t'u marrë. Motori i punës ka mjetet për të kryer llogaritje të tilla në mënyrë asinkrone.

E lidhur me një punë në sfond është një metodë që thirret kur ekzekutohet puna në sfond. Një metodë e punës në sfond mund të jetë çdo procedurë ose funksion i një moduli të përbashkët jo-global që mund të thirret në server. Parametrat e punës së sfondit mund të jenë çdo vlerë që lejohet të kalojë në server. Parametrat e një pune në sfond duhet të përputhen saktësisht me parametrat e procedurës ose funksionit që ajo thërret. Nëse metoda e punës së sfondit është një funksion, vlera e saj e kthyer shpërfillet.

Një punë në sfond mund të ketë një çelës - çdo vlerë aplikimi. Çelësi prezanton një kufizim në nisjen e punëve në sfond - vetëm një punë në sfond mund të ekzekutohet për njësi kohore me një vlerë të veçantë kyç dhe një emër të caktuar të metodës së punës në sfond (emri i metodës përbëhet nga emri i modulit dhe emri i procedurës ose funksion). Tasti ju lejon të gruponi punët e sfondit që kanë të njëjtat metoda sipas një karakteristike specifike të aplikacionit, në mënyrë që të mos ekzekutohet më shumë se një punë në sfond brenda një grupi.

Punët në sfond krijohen dhe menaxhohen në mënyrë programore nga çdo lidhje. Çdo përdorues lejohet të krijojë një punë në sfond. Për më tepër, ai ekzekutohet në emër të përdoruesit që e ka krijuar atë. Marrja e detyrave, si dhe pritja për përfundimin e tyre, lejohet nga çdo lidhje me një përdorues me të drejta administrative, ose me përdoruesin që ka krijuar këto punë në sfond.

Një punë në sfond është një objekt thjesht sesioni dhe nuk i përket asnjë sesioni të përdoruesit. Për çdo detyrë, krijohet një sesion i veçantë i sistemit, i cili funksionon në emër të përdoruesit që bëri thirrjen. Punët në sfond nuk kanë gjendje të vazhdueshme.

Një punë në sfond mund të krijojë punë të tjera në sfond. Në versionin klient-server, kjo ju lejon të paralelizoni llogaritjet komplekse në proceset e punonjësve të grupimeve, të cilat mund të përshpejtojnë ndjeshëm procesin e llogaritjes në tërësi. Paralelizimi zbatohet duke krijuar disa punë në sfond për fëmijë dhe duke pritur që secila prej tyre të përfundojë në punën kryesore të sfondit.

Punët në sfond që përfundojnë me sukses ose dështojnë ruhen për 24 orë dhe më pas fshihen. Nëse numri i punëve të përfunduara në sfond i kalon 1000, fshihen gjithashtu punët më të vjetra në sfond.

Detyrat e planifikuara

Detyrat e planifikuara përdoren kur është e nevojshme të kryhen veprime të caktuara periodike ose një herë sipas një plani.

Detyrat e planifikuara ruhen në bazën e informacionit dhe krijohen në bazë të meta të dhënave të detyrës rutinë të përcaktuar në konfigurim. Metadata specifikon parametra të tillë të një detyre rutinë si: metoda e quajtur, emri, çelësi, mundësia e përdorimit, shenja e paracaktimit, etj. Kur krijoni një detyrë rutinë, mund të specifikoni gjithashtu orarin (mund të specifikohet në metadata), vlerat . i parametrave të metodës, emri i përdoruesit në emër të të cilit kryhen detyrat rutinë, etj.

Krijimi dhe menaxhimi i detyrave të planifikuara kryhet në mënyrë programore nga çdo lidhje dhe lejohet vetëm për përdoruesit me të drejta administrative.

Shënim. Kur punoni në versionin e skedarit, është e mundur të krijoni dhe modifikoni detyra rutinë pa nisur programuesin e detyrave.

E lidhur me një detyrë rutinë është një metodë që thirret kur ekzekutohet detyra rutinë. Metoda rutinë e detyrës mund të jetë çdo procedurë ose funksion i një moduli të përbashkët jo-global që mund të thirret në server. Parametrat e një detyre rutinë mund të jenë çdo vlerë që lejohet të transmetohet në server. Parametrat e një detyre rutinë duhet të përputhen saktësisht me parametrat e procedurës ose funksionit që ajo thërret. Nëse metoda e detyrës rutinë është një funksion, atëherë vlera e saj e kthyer shpërfillet.

Një detyrë rutinë mund të ketë një çelës - çdo vlerë aplikacioni. Çelësi paraqet një kufizim në nisjen e detyrave të planifikuara, sepse për njësi kohore, midis detyrave rutinë të lidhura me të njëjtin objekt meta të dhënash, mund të ekzekutohet vetëm një detyrë rutinë me një vlerë të caktuar kyç. Tasti ju lejon të gruponi detyrat rutinë të lidhura me të njëjtin objekt të meta të dhënave sipas një karakteristike specifike të aplikacionit, në mënyrë që të mos kryhet më shumë se një detyrë rutinë brenda një grupi.

Gjatë konfigurimit, mund të përcaktoni detyra rutinë të paracaktuara. Detyrat rutinë të paracaktuara nuk ndryshojnë nga detyrat e zakonshme rutinë, përveç se ato nuk mund të krijohen ose fshihen në mënyrë të qartë. Nëse në meta të dhënat e detyrës së planifikuar është vendosur shenjë e një detyre rutinë të paracaktuar, atëherë kur përditësoni konfigurimin në bazën e informacionit, do të krijohet automatikisht një detyrë rutinë e paracaktuar. Nëse flamuri i paracaktuar pastrohet, atëherë kur përditësohet konfigurimi në bazën e informacionit, detyra rutinë e paracaktuar do të fshihet automatikisht. Vlerat fillestare të vetive të një detyre të planifikuar të paracaktuar (për shembull, një orar) vendosen në meta të dhënat. Në të ardhmen, kur aplikacioni të funksionojë, ato mund të ndryshohen. Detyrat rutinë të paracaktuara nuk kanë parametra.

Orari i detyrave rutinë përcakton se në cilat orë duhet të ekzekutohet detyra rutinë. Orari ju lejon të vendosni: datën dhe orën e fillimit dhe përfundimit të detyrës, periudhën e ekzekutimit, ditët e javës dhe muajt në të cilët duhet të kryhet detyra e planifikuar, etj. (shih përshkrimin e ndërtuar- në gjuhë).

Shembuj të planeve rutinë të detyrave:

Çdo orë, vetëm një ditë

Periudha e ditëve të përsëritura = 0, periudha e ditëve të përsëritura = 3600

Çdo ditë një herë në ditë

Periudha e ditëve të përsëritura = 1, periudha e ditëve të përsëritura = 0

Një ditë, një herë

Periudha Ditë të Përsëritjes = 0

Çdo ditë të tjera një herë në ditë

Periudha Ditë të Përsëritjes = 2

Çdo orë nga ora 01:00 deri në 07:00 çdo ditë

Ditët e përsëritjes së periudhës = 1

Përsëriteni PeriudhaGjatë ditës = 3600

Ora e fillimit = 01.00

Koha e Fundit = 07.00

Çdo të shtunë dhe të diel në orën 09.00

Ditët e përsëritjes së periudhës = 1

Ditët e javës = 6, 7

Ora e fillimit = 09.00

Çdo ditë për një javë, kaloni një javë

Ditët e përsëritjes së periudhës = 1

Periudha Javë = 2

Në orën 01.00 një herë

Ora e fillimit = 01.00

Dita e fundit e çdo muaji në orën 9:00.

Ditët e përsëritjes së periudhës = 1

DitaNë Muaj = -1

Ora e fillimit = 09.00

Dita e pestë e çdo muaji në orën 9:00

Ditët e përsëritjes së periudhës = 1

Dita Në Muaj = 5

Ora e fillimit = 09.00

E mërkura e dytë e çdo muaji në orën 9:00

Ditët e përsëritjes së periudhës = 1

Ditajavë në muaj = 2

Ditët e javës = 3

Ora e fillimit = 09.00

Mund të kontrolloni nëse një detyrë po ekzekutohet për një datë të caktuar (metoda RequiredExecution e objektit ScheduleTasks). Detyrat e planifikuara kryhen gjithmonë nën emrin e një përdoruesi specifik. Nëse përdoruesi i detyrës së planifikuar nuk është specifikuar, atëherë ekzekutimi ndodh në emër të përdoruesit të paracaktuar që ka të drejta administrative.

Detyrat rutinë ekzekutohen duke përdorur detyrat e sfondit. Kur planifikuesi përcakton që një detyrë e planifikuar duhet të nisë, krijohet automatikisht një punë në sfond bazuar në këtë detyrë të planifikuar, e cila kryen të gjithë përpunimin e mëtejshëm. Nëse kjo detyrë rutinë po ekzekutohet tashmë, ajo nuk do të ekzekutohet më, pavarësisht nga plani i saj.

Detyrat e planifikuara mund të rifillojnë. Kjo është veçanërisht e vërtetë kur metoda e detyrës rutinë duhet të garantohet se do të ekzekutohet. Një detyrë rutinë riniset kur përfundon në mënyrë jonormale, ose kur procesi i punës (në versionin klient-server) ose procesi i klientit (në versionin e skedarit) në të cilin është ekzekutuar detyra rutinë përfundon në mënyrë jonormale. Në detyrën e planifikuar, mund të specifikoni sa herë duhet të riniset, si dhe intervalin midis rinisjeve. Kur zbatoni metodën e detyrave rutinë të rifillueshme, duhet të keni parasysh që kur të riniset, ekzekutimi i saj do të fillojë nga fillimi dhe nuk do të vazhdojë nga momenti i përfundimit jonormal.

Është e rëndësishme të mbani mend këtë Koha e përfundimit nuk do të përfundojë domosdoshmërisht punën e sfondit në kohën e caktuar. Disa deklarata:

* Një punë në sfond mund të injorojë anulimin e saj automatik nëse nuk është i ngrirë, por vazhdon të funksionojë sepse jo të gjitha operacionet e platformës mund të anulohen. Nëse kodi ciklik i gjuhës së integruar ekzekutohet, atëherë puna mund të anulohet, përndryshe jo. E gjitha varet nga ajo që bën puna. * Koha e përfundimit - kufiri brenda të cilit një detyrë mund të fillojë dhe jo të përfundojë? * Përfundimi i detyruar i një detyre i kthen ndryshimet e bëra në fillimin e transaksionit?

Karakteristikat e ekzekutimit të punëve në sfond në variantet e skedarëve dhe klient-server

Mekanizmat për ekzekutimin e punëve në sfond në versionet e skedarit dhe klient-server janë të ndryshëm.

  • Në versionin e skedarit, ju duhet të krijoni një proces të dedikuar klienti që do të kryejë punë në sfond. Për ta bërë këtë, procesi i klientit duhet të thërrasë periodikisht funksionin e kontekstit global ExecuteJobProcessing. Vetëm një proces klienti për infobazë duhet të përpunojë punët e sfondit (dhe, në përputhje me rrethanat, të thërrasë këtë funksion). Nëse një proces klienti nuk është krijuar për të përpunuar punët në sfond, atëherë kur qaseni në mënyrë programore në motorin e punës, do të shfaqet gabimi "Menaxheri i punës nuk është aktiv". Nuk rekomandohet përdorimi i një procesi klienti që përpunon punët e sfondit për funksione të tjera.

Pasi të fillojë punët e sfondit të përpunimit të procesit të klientit, proceset e tjera të klientit janë në gjendje të hyjnë në mënyrë programore në motorin e punës së sfondit, d.m.th. mund të ekzekutojë dhe menaxhojë punët në sfond.

Në versionin klient-server, një programues detyrash përdoret për të ekzekutuar punët në sfond, i cili ndodhet fizikisht në menaxherin e grupit. Për të gjitha punët e sfondit në radhë, planifikuesi merr procesin e punës më pak të ngarkuar dhe e përdor atë për të ekzekutuar punën përkatëse të sfondit. Procesi i punëtorit ekzekuton punën dhe njofton planifikuesin për rezultatet e ekzekutimit.

Në versionin klient-server, është e mundur të bllokohet ekzekutimi i detyrave rutinë. Ekzekutimi i detyrave rutinë bllokohet në rastet e mëposhtme:

  • Një bllokim i qartë i detyrave rutinë është instaluar në bazën e informacionit. Kyçja mund të vendoset nëpërmjet tastierës së grupit;
  • Ekziston një bllok lidhjesh në bazën e informacionit. Kyçja mund të vendoset nëpërmjet tastierës së grupit;
  • Metoda SetExclusiveMode() me parametrin True u thirr nga gjuha e integruar;
  • Në disa raste të tjera (për shembull, kur përditësoni konfigurimin e bazës së të dhënave).

Krijimi i meta të dhënave për një detyrë rutinë

Përpara se të krijoni në mënyrë programore një detyrë rutinë në bazën e informacionit, duhet të krijoni një objekt meta të dhënash për të.

Për të krijuar një objekt meta të dhënash për një detyrë rutinë në pemën e konfigurimit në degën "General" për degën "Detyrat rutinë", ekzekutoni komandën "Shto" dhe plotësoni vetitë e mëposhtme të detyrës rutinë në paletën e vetive:

Emri i metodës - tregoni emrin e metodës së detyrës rutinë.

Key - specifikoni një vlerë arbitrare të vargut që do të përdoret si çelësi i detyrës së planifikuar.

Orari - tregon orarin e detyrës rutinë. Për të krijuar një orar, klikoni lidhjen “Open” dhe në formularin e orarit që hapet, vendosni vlerat e kërkuara.

Në skedën "Të përgjithshme", tregohen datat e fillimit dhe mbarimit të detyrës dhe mënyra e përsëritjes.

Në skedën "Ditore", tregohet orari ditor i detyrës.

Specifikoni orarin:

  • koha e fillimit dhe koha e përfundimit të detyrës;
  • koha e përfundimit të detyrës, pas së cilës do të ndërpritet me forcë;
  • periudha e përsëritjes së detyrës;
  • kohëzgjatja e pauzës midis përsëritjeve;
  • kohëzgjatja e ekzekutimit.

Lejohet të specifikohet një kombinim arbitrar i kushteve.

Në skedën "Javore", tregohet orari javor i detyrës.

Zgjidhni kutitë e zgjedhjes për ditët e javës në të cilat do të ekzekutohet detyra. Nëse dëshironi të përsërisni detyrën, specifikoni intervalin e përsëritjes në javë. Për shembull, detyra ekzekutohet në 2 javë, vlera e përsëritjes është 2.

Në skedën "Mujore", tregohet orari mujor i detyrës.

Zgjidhni kutitë e zgjedhjes për muajt në të cilët do të ekzekutohet detyra. Nëse është e nevojshme, mund të specifikoni një ditë specifike (muaj ose javë) të ekzekutimit nga fillimi i muajit/javës ose në fund.

Përdorimi - nëse vendoset, detyra do të ekzekutohet sipas orarit.

E paracaktuar - nëse vendoset, detyra është një detyrë e paracaktuar.

Numri i riprovave në rast të përfundimit jonormal - tregon numrin e riprovave në rast të ndërprerjes jonormale.

Intervali i riprovës në përfundim jonormal - specifikon intervalin e riprovës pas përfundimit jonormal. Shembuj

Krijimi i një pune në sfond "Përditësimi i indeksit të kërkimit me tekst të plotë":

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

Krijimi i një detyre rutinë "Rikuperimi i sekuencave":

Schedule = New ScheduleTask; Orari.PeriudhaDitët e Përsëritjes = 1; Orari.Periudha e PërsëritjesGjatë Ditës = 0;

Task = RoutineTasks.CreateRoutineTask("Rivendosja e sekuencave"); Job.Schedule = Orari; Detyrë.Shkruaj();

Paneli i punës

Duke përpunuar me ITS, menaxhon detyrat rutinë:

Puna me detyra rutinë

Objektet e Punës

Objektet e punës nuk referohen, por ruhen në bazën e të dhënave në një ruajtje të veçantë.

Nëse flamuri "Parapërcaktuar" është i aktivizuar në metadata, atëherë një objekt i tillë krijohet automatikisht kur lansohet 1C:Enterprise dhe ekziston gjithmonë saktësisht në një shembull. Një objekt i tillë nuk mund të fshihet.

Nëse flamuri "Paracaktuar" nuk është vendosur, atëherë objektet e një detyre të tillë krijohen dhe fshihen në mënyrë programore, duke specifikuar orarin dhe parametrat.

Marrja e një liste detyrash

Lista e detyrave mund të merret duke përdorur metodën Merr RoutineTasks menaxher global i punës Detyrat rutinë

Menaxher i Punëve të Programuara

Merr punët e planifikuara (GetScheduledJobs)

Sintaksë:

Merr detyra rutinë (<Отбор>)

Opsione:

<Отбор>(opsionale)

Lloji: Struktura. Struktura që përcakton përzgjedhjen. Vlerat e strukturës mund të jenë: UniqueIdentifier, Key, Metadata, Paradefined, Usage, Emri. Nëse përzgjedhja nuk është e specifikuar, merren të gjitha detyrat rutinë.

Nëse jeni duke filtruar sipas meta të dhënave, atëherë si vlerë Metadata mund të specifikoni ose objektin e meta të dhënave të detyrës rutinë ose emrin e saj.

Vlera e kthimit:

Lloji: Array.

Përshkrim:

Merr një sërë detyrash rutinë për një përzgjedhje të caktuar. Marrja e detyrave të planifikuara është e mundur vetëm për administratorin.

Disponueshmëria:

Rutina = RoutineTasks.GetRoutineTasks(Zgjedhja);

Për çdo rutinë të ciklit rutinë NewLine = Lista e detyrave rutinë.Add(); NewRow.Metadata = Regular.Metadata.View(); NewLine.Name = Regular.Name; NewString.Key = Regular.Key; NewLine.Schedule = Schedule.Schedule; NewLine.User = Regular.UserName; NewString.Predefined = I rregullt.I paracaktuar; NewString.Use = Regular.Use; NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask; Nëse LastTask<>I padefinuar Pastaj NewRow.Running = LastTask.Start; NewRow.State = LastTask.State; fundNëse; Cikli i Fundit;

Krijim

Krijuar nga metoda Create RoutineTask për menaxherin e detyrave rutinë:

RoutineTask = RoutineTasks.CreateRoutineTask(Zgjedhja e Metadata);

RegularTask.Emri = Emri; RegularTask.Key = Çelësi; RegularTask.Use = Përdorimi; RoutineTask.UserName = UsersChoice; Detyra rutinë.Numri i PërsëritjeveAtEmergencyCompletion =Numri i PërsëritjeveAtEmergencyCompletion; ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion; ScheduleTask.Schedule = Orari; RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Emri = Emri; JobObject.Use = E vërtetë;

Objekti i detyrës ka një fushë "Parametrat" ​​në të cilën specifikohen parametrat e metodës:

Punë e planifikuar

Opsione(Parametrat)

Përdorimi:

Lexoni dhe shkruani.

Përshkrim:

Lloji: Array. Një grup parametrash për një detyrë të planifikuar. Numri dhe përbërja e parametrave duhet të korrespondojnë me parametrat e metodës së detyrës rutinë.

Disponueshmëria:

Server, klient i trashë, lidhje e jashtme.

Shënim:

Aftësitë e leximit dhe shkrimit janë të disponueshme vetëm për administratorin.

Largimi

Fshihet duke përdorur metodën Delete() të objektit të detyrës:

ScheduledTask.Delete();

Marrja e një objekti pune

  • lista nëpërmjet metodës GetRoutineTasks:

Rutina = RoutineTasks.GetRoutineTasks(Zgjedhja);

  • nëpërmjet FindByUniqueIdentifier të metodës së menaxherit të detyrave:

Detyra = ScheduledTasks.FindByUniqueIdentifier(UID);