A 8.3-as háttérmunkafolyamat összeomlott. Ütemezett és háttérmunkák (1Cv8)

A 8.3-as háttérmunkafolyamat összeomlott.  Ütemezett és háttérmunkák (1Cv8)
A 8.3-as háttérmunkafolyamat összeomlott. Ütemezett és háttérmunkák (1Cv8)

Lehetővé teszi, hogy a felhasználó által észrevétlenül, azaz a háttérben végezzünk bármilyen számítást a rendszerben. Ezenkívül ez a mechanizmus lehetővé teszi a számítási folyamat párhuzamosítását. Akár párhuzamosíthatjuk is a végrehajtandó eljárást. Ehhez a háttérmunkánknak még néhány háttérfeladatot kell futtatnia. Ebben az esetben a folyamatok párhuzamosak, és ha többprocesszoros, többmagos rendszerünk van, akkor az algoritmusunk hatékonyan fog működni. Több folyamat elindítása után elmondhatjuk a rendszernek, hogy meg kell várnunk ezeknek a folyamatoknak a végrehajtását, hogy valahogyan konszolidáljuk az eredményt.

Például tipikus konfigurációkban, miközben a felhasználó dolgozik, különféle háttérszolgáltatási feladatokat hajtanak végre. Ezt bizonyítják a naplóban szereplő bejegyzések, amelyek rögzítik az ilyen műveletek végrehajtásának tényét. Ráadásul ez semmilyen módon nem befolyásolja a felhasználó munkáját, egyszerűen nem veszi észre őket.

Ideális esetben egy háttérfeladatot kliens-szerver változatban valósítanak meg, ebben az esetben a teljes terhelés átkerül a szerverre. Ami a fájl verzióját illeti, a munka háttérmunka lehetséges, de van néhány sajátossága.

Ezt adja a rendszer, ha nem veszi figyelembe ezeket a funkciókat, és lefuttat egy háttérfeladatot az infobázis fájlverziójában.


Az 1C háttérfeladatnak vannak bizonyos korlátai. Mivel a szerver oldalon történik, nincs lehetőség interaktív munkavégzésre a felhasználóval. Például nem jeleníthet meg egy üzenetet, nos, általában bizonyos információkat. Mindezeket az adatokat az infobázison belül kell tárolni, és valamilyen módon tovább kell dolgozni.
Ha felveszi a kapcsolatot a szintaxis asszisztenssel, részletesebb információkat kaphat az 1C háttérfeladatokról. Itt meg kell jegyezni, hogy ez az objektum tisztán programozott, és semmilyen módon nem tárolódik az adatbázisban. Azaz létrehozunk egy példányt az osztályból, inicializáljuk a tulajdonságokat és futtatjuk a végrehajtáshoz.

Milyen eszközeink vannak a háttérmunkák kezeléséhez? Ez az eszköz egy metaadat objektum "BackgroundQuest Manager". Ennek az objektumnak van egy metódusa "Fuss", ezzel a módszerrel a háttérfeladat éppen elindul.

A következő lehetőségek állnak rendelkezésre:
"Módszernév"- a végrehajtandó eljárás vagy függvény neve, és ennek a szerverkörnyezet egyik eljárásának vagy függvényének kell lennie;

"Lehetőségek"- paraméterek tömbje, melynek elemeinek számának meg kell egyeznie az eljárásunk/függvényünk paraméterben megadott számával "Módszernév";

"Kulcs"- egy bizonyos egyediségi kulcs, amely egy sor, amelyen keresztül a rendszer megérti, hogy háttérfeladatot kell-e elindítani, vagy ilyen feladatot már elindítottak;

"Név"- itt megadhatja a módszerünk tetszőleges leírását.

A visszatérési érték egy objektum "Háttérküldetés" A, amely tartalmazza az aktuális metódusnevet, az aktuális kulcsot és néhány további tulajdonságot és metódust. Az egyik ilyen módszer a módszer "Várd be a befejezést". Célja, hogy meg tudjuk mondani a rendszernek, hogy ne csináljon semmit, amíg a háttérfeladat be nem fejeződik.

Háttérfeladat 1C 8.2, 8.3 - Használati példa

Nézzünk egy példát az 1C háttérfeladatokkal való munkavégzésre. Először is létrehozunk egy egyszerű algoritmust, amely rövid időre betölti az 1C rendszert oly módon, hogy jelenleg nem tudunk semmit tenni.

Ezért:

1. Hozzunk létre egy közös modult "Háttérkezelők", amely a szerver oldalon lesz lefordítva;


2. Ismertesse benne a kiviteli eljárást! "Háttérszámítás (paraméter) előállítása", amely egyetlen karakterlánc típusú paramétert vesz fel;

Eljárás PerformBackgroundComputation(Parameter) Export StartTime = CurrentDate() ; Míg CurrentDate() - Kezdőidő< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление("Valamilyen paraméter") ; Vége eljárás
Kész. Most, amikor elindul a feldolgozás és megnyomja a gombot, a rendszer néhány másodpercre lefagy, ezalatt semmit sem lehet tenni. Pontosan ezt kellett tennünk.

Most gondoskodunk arról, hogy ezek a számítások a háttérben történjenek, vagyis az 1C 8.2, 8.3 háttérfeladat végrehajtása megtörténjen, de ez nem zavar bennünket.

Ezért:

1. A feldolgozás során a gombkattintás eseményébe írja be a következő kódot.

Eljárás KnPress() Paraméterek = Új tömb; Lehetőségek. Add( "Valamilyen paraméter") ; HáttérJob. Végrehajtás ( "BackgroundJobHandlers.PerformBackgroundComputation", Paraméterek, Új egyedi azonosító, "Teszt") ; Vége eljárás

Itt első paraméterként az általános modul eljárásának nevét, másodikként a paramétertömböt adjuk át. A harmadik paraméter egy egyedi kulcs átadása, a negyedik paraméter pedig az eljárásunk leírása.

Valószínűleg az 1C 8.3 vagy 8.2 egyetlen komoly konfigurációja sem nélkülözheti az ütemezett és háttérfeladatokat. Nagyon kényelmesek, mivel egy világosan meghatározott ütemterv szerint kerülnek végrehajtásra, felhasználó és programozói beavatkozás nélkül.

Például naponta egyszer kell adatot cserélnie egy másik programmal. A rutin és a háttérfeladatok segítségével az 1C képes lesz önállóan végrehajtani ezeket a műveleteket, például munkaidőn kívül. Ez a módszer semmilyen módon nem befolyásolja a felhasználók munkáját, és időt takarít meg.

Először is nézzük meg, mit jelentenek, és miben különböznek egymástól:

  • Ütemezett feladat lehetővé teszi bármely konkrét művelet futtatását egy előre konfigurált ütemezés szerint.
  • Háttér munka egy objektum, amely tartalmazza a végrehajtandó műveleteket.

Tegyük fel, hogy cégünk árul valamit, és van saját weboldala árakkal. Naponta egyszer szeretnénk kirakni őket a relevancia megőrzése érdekében.

Nyissa meg a konfigurációt, és adjon hozzá egy ütemezett feladatot.

Tulajdonságok beállítása

Fontolja meg a legfontosabb paramétereket, amelyeket ki kell tölteni a tulajdonságaiban.

  • mezőben " A módszer neve» valamilyen konkrét általános modul eljárása kerül kiválasztásra, amely közvetlenül végrehajtásra kerül. Jelzi az árak weboldalunkra történő feltöltéséhez szükséges összes műveletet. Vegye figyelembe, hogy a végrehajtás a szerveren fog megtörténni. Ez logikus, mert a rutinműveleteket felhasználói beavatkozás nélkül hajtják végre.
  • Az ütemezett feladat szükség szerint letiltható vagy engedélyezhető. Nem kell minden alkalommal változtatni az ütemtervén. Ehhez a tulajdonságok palettán jelölje be vagy törölje a jelet a " Használat».
  • Egy másik fontos beállítás, hogy ez az ütemezett feladat megtörténik-e előre meghatározott, vagy nem. Az előre meghatározott ütemezett feladatok automatikusan futnak. Ha ez a jelző nincs beállítva, akkor programozottan kell futtatnia őket, vagy a "Job Console" feldolgozást kell használnia az ITS-sel.
  • Meg is adhatja az ismétlések számát és a köztük lévő intervallumotütközéskor. A rendellenes befejezés azokra a helyzetekre vonatkozik, amikor a feladatok hiba miatt nem fejeződtek be.

Ütemezés beállítása

Utolsó lépésként beállítjuk a webhelyre való feltöltés ütemezését a tulajdonságok palettán található megfelelő hiperhivatkozás segítségével.

Egy tipikus ütemezési beállítást láthat az 1C 8.3-ban. Nincs itt semmi bonyolult. Részeként ezt a példát beállítottuk az oldalra történő árfeltöltés elindítását naponta reggel öttől hétig. Abban az esetben, ha az ütemezett feladat 7:00 előtt nincs ideje kidolgozni, az másnap elkészül.

Ütemezett feladatok blokkolása

Futtassa a szabványos 1C Enterprise Server Administration segédprogramot, és nyissa meg annak az információs bázisnak a tulajdonságait, ahol az ütemezett feladatot létrehozta (1C kliens-szerver verziók esetén).

A megnyíló ablakban (az IB eléréséhez szükséges bejelentkezési név és jelszó megadása után) ellenőrizze, hogy az "Ütemezett feladatok blokkolása engedélyezve van" elemnél nincs-e beállítva a jelző. Ha olyan helyzetbe ütközik, amikor a feladat nem működik, először ellenőrizze ezt a beállítást.

Ugyanígy teljesen letilthatja az ütemezett feladatokat az 1C 8.3-ban. Bizonyos háttérfeladatok letiltásához használhatja a legutóbbi kiadásokba beépített "Háttérfeladat-konzol" feldolgozást.

Háttérben és ütemezett munkák fájl módban

Ebben az üzemmódban ezeknek a feladatoknak a beállítása és futtatása sokkal nehezebben szervezhető. Leggyakrabban egy további fiók, amelynek munkamenete mindig nyitva lesz.

Az ütemezett feladatok aktiválása ebben az esetben a "PerformProcessingTasks()" metódussal történik.

Használhatja a következő konstrukciót is:

Az eljárásnévnek a végrehajtandó ügyféleljárás nevének kell lennie. Az intervallum azt mutatja, hogy a végrehajtás hány másodpercig tart. Az "Egyszer" paraméter nem kötelező. Azt tükrözi, hogy az adott eljárást egyszer vagy többször hajtják végre.

Követési hibák a háttérmunkákban

Tekintse meg a háttérmunkák előrehaladását, valamint a rendelkezésre állást lehetséges hibákat szerepelhet a nyilvántartásban. A szűrőben állítsa be a "Háttérfeladat" alkalmazást, és ha szükséges, válassza ki az érdeklődés fontosságát, például csak a "Hibák".

A napló megjeleníti az összes olyan bejegyzést, amely megfelel a választásának, egy megjegyzéssel, amely segítségével megértheti a hiba okát.

Munka mechanizmus

A feladatmechanizmust úgy tervezték, hogy bármely alkalmazást vagy funkciót ütemezett vagy aszinkron módon hajtson végre.

A munkamechanizmus a következő feladatokat hajtja végre:

  • Képes rutin eljárások meghatározására a rendszerkonfiguráció szakaszában;
  • Meghatározott műveletek végrehajtása ütemterv szerint;
  • Egy adott eljárás vagy függvény hívásának végrehajtása aszinkron, azaz. anélkül, hogy megvárná annak befejezését;
  • Egy adott munka előrehaladásának nyomon követése és annak befejezettségi állapotának megállapítása (a végrehajtás sikerességét vagy kudarcát jelző érték);
  • Az aktuális feladatok listájának beszerzése;
  • Képes kivárni egy vagy több feladat elvégzését;
  • Jobkezelés (lemondási lehetőség, végrehajtás letiltása stb.).

A munkamotor a következő alkatrészekből áll:

  • Ütemezett feladatok metaadatai;
  • Ütemezett feladatok;
  • Háttérmunkák;
  • Feladat ütemező.

Háttérfeladatok – az alkalmazási feladatok aszinkron végrehajtására tervezték. A háttérfeladatokat a beépített nyelv segítségével valósítják meg.

Ütemezett feladatok – az alkalmazási feladatok ütemezett végrehajtására tervezték. Az ütemezett feladatokat a rendszer tárolja információs bázisés a konfigurációban meghatározott metaadatok alapján jönnek létre. Az ütemezett feladat metaadatai olyan információkat tartalmaznak, mint a név, a módszer, a használat stb.

Az ütemezett jobok ütemezése meghatározza, hogy az ütemezett jobhoz tartozó metódust mikor kell végrehajtani. Az ütemezés általában az infobázisban van beállítva, de beállítható a konfigurációs szakaszban is (például előre meghatározott ütemezett feladatokhoz).

A feladatütemező az ütemezett feladatok végrehajtásának ütemezésére szolgál. Az ütemező minden ütemezett feladatnál rendszeresen ellenőrzi, hogy a Az aktuális dátumés az ütemezett feladat időbeosztása. Ha egyezik, az ütemező ütemezi a feladat futtatását. Ehhez ennek az ütemezett feladatnak megfelelően az ütemező létrehoz egy háttérfeladatot, amely elvégzi a tényleges feldolgozást.

Háttérmunkák

A háttérmunkák hasznosak összetett számítások elvégzéséhez, amikor a számítás eredménye hosszú idő után megkapható. A munkamotor rendelkezik eszközökkel az ilyen számítások aszinkron végrehajtására.

A háttérfeladathoz van egy társított metódus, amely a háttérfeladat futtatásakor kerül meghívásra. A háttérfeladat módszer bármely nem globális megosztott modul eljárás vagy függvény lehet, amely meghívható a kiszolgálón. A háttérfeladat paraméterei tetszőleges értékek lehetnek, amelyek átadhatók a szervernek. A háttérfeladat paramétereinek pontosan meg kell egyeznie az általa meghívott eljárás vagy függvény paramétereivel. Ha a háttérfeladat metódusa egy függvény, akkor a visszatérési értékét a rendszer figyelmen kívül hagyja.

Egy háttérfeladatnak lehet kulcsa – bármilyen alkalmazásérték. A kulcs korlátozza a háttérfeladatok indítását - időegységenként csak egy háttérfeladat futhat le egy adott kulcsértékkel és a háttérfeladat metódusának megadott nevével (a metódus neve a modul nevéből és a az eljárás vagy funkció). A kulcs lehetővé teszi az azonos metódusokkal rendelkező háttérjobok csoportosítását egy bizonyos alkalmazásattribútum szerint, így egy csoporton belül legfeljebb egy háttérfeladat kerül végrehajtásra.

A háttérfeladatok létrehozása és kezelése programozottan történik bármilyen kapcsolatról. Bármely felhasználó létrehozhat háttérfeladatot. Ezzel egyidejűleg az azt létrehozó felhasználó nevében is végrehajtódik. Az adminisztrátori jogokkal rendelkező felhasználó, illetve az ezeket a háttérfeladatokat létrehozó felhasználó bármely kapcsolatról fogadhat feladatokat, és várhatja azok befejezését.

A háttérfeladat pusztán egy munkamenet objektum, de nem tartozik egyetlen felhasználói munkamenethez sem. Minden feladathoz létrejön egy speciális rendszermunkamenet, amely a hívást kezdeményező felhasználó nevében fut. A háttérmunkáknak nincs állandó állapota.

Egy háttérmunka más háttérmunkákat is létrehozhat. A kliens-szerver verzióban ez lehetővé teszi a komplex számítások párhuzamosítását a fürt munkafolyamatai között, ami jelentősen felgyorsíthatja a számítási folyamat egészét. A párhuzamosítás több gyermek háttérmunka létrehozásával valósul meg, és megvárja, amíg mindegyik befejeződik a fő háttérfeladatban.

A sikeres vagy sikertelen háttérfeladatokat a rendszer 24 óráig tárolja, majd törli. Ha a futó háttérfeladatok száma meghaladja az 1000-et, akkor a legrégebbi háttérfeladatok is törlődnek.

Ütemezett feladatok

Az ütemezett feladatok akkor használatosak, ha bizonyos időszakos vagy egyszeri műveleteket kell végrehajtania az ütemezésnek megfelelően.

Az ütemezett feladatok az információs bázisban tárolódnak, és a konfigurációban meghatározott ütemezett feladat metaadatai alapján jönnek létre. A metaadatok egy ütemezett feladat olyan paramétereit határozzák meg, mint: hívott metódus, név, kulcs, használati képesség, előre meghatározás jele stb. ütemezett feladat végrehajtásához stb.

Alkotás és irányítás rutinfeladatokat bármely kapcsolatról programozottan végrehajtódik, és csak rendszergazdai jogokkal rendelkező felhasználók számára engedélyezett.

Jegyzet. A fájlverzióban végzett munka során lehetőség van ütemezett feladatok létrehozására és szerkesztésére a feladatütemező elindítása nélkül.

Az ütemezett feladat egy metódushoz van társítva, amelyet az ütemezett feladat végrehajtásakor hív meg. Az ütemezett job módszer lehet egy nem globális megosztott modul bármely olyan eljárása vagy funkciója, amely meghívható a kiszolgálón. Az ütemezett feladat paraméterei bármilyen értéket megadhatnak, amelyet át lehet adni a szervernek. Az ütemezett job paramétereinek pontosan meg kell egyeznie az általa meghívott eljárás vagy függvény paramétereivel. Ha az ütemezett feladat metódusa egy függvény, akkor a visszatérési értékét a rendszer figyelmen kívül hagyja.

Az ütemezett feladatnak lehet kulcsa – bármilyen alkalmazott érték. A kulcs korlátozást vezet be az ütemezett feladatok elindítására, mivel időegységenként az azonos metaadat-objektumhoz tartozó ütemezett feladatok közül csak egy ütemezett feladat hajtható végre egy bizonyos kulcsértékkel. A kulcs lehetővé teszi az ugyanazon metaadat-objektumhoz társított ütemezett feladatok csoportosítását egy bizonyos alkalmazásattribútum szerint, így egy csoporton belül legfeljebb egy ütemezett feladatot hajthat végre.

A konfigurálás során előre meghatározott ütemezett munkákat adhat meg. Az előre meghatározott ütemezett jobok nem különböznek a szokásos ütemezett joboktól, kivéve, hogy kifejezetten nem hozhatók létre vagy nem törölhetők. Ha az ütemezett feladat metaadatai a következőre vannak állítva előre meghatározott ütemezett feladat jele, akkor a konfiguráció frissítésekor automatikusan létrejön egy előre meghatározott ütemezett feladat az infobázisban. Ha az előre meghatározott jelölőnégyzet nincs bejelölve, akkor a konfiguráció frissítésekor az előre meghatározott ütemezett feladat automatikusan törlődik az információs bázisból. Egy előre meghatározott ütemezett feladat tulajdonságainak kezdeti értékei (például ütemezés) a metaadatokban vannak beállítva. A jövőben, amikor az alkalmazás fut, ezek módosíthatók. Az előre meghatározott ütemezett feladatoknak nincsenek paraméterei.

Az ütemezett job ütemezése határozza meg, hogy az ütemezett job mely időpontokban induljon el. Az ütemezés lehetővé teszi a következők beállítását: a feladat kezdésének és befejezésének dátuma és időpontja, a végrehajtás időtartama, a hét napjai és hónapjai, amikor az ütemezett feladatot végre kell hajtani stb. (lásd a beépített feladat leírását). nyelven).

Példák ütemezett feladatütemezésekre:

Minden órában, csak egy nap

Újrapróbálkozási periódusnapok = 0, újrapróbálkozási periódusDuringDay = 3600

Minden nap naponta egyszer

Retry PeriodDays = 1, Retry PeriodDuringDay = 0

Egy nap, egyszer

Újrapróbálkozási időszak Napok = 0

Minden második nap naponta egyszer

Újrapróbálkozási időszak napja = 2

Óránként 01:00 és 07:00 között minden nap

Újrapróbálkozási időszak napjai = 1

Újrapróbálkozási időszak a nap folyamán = 3600

Kezdési időpont = 01.00

Vége = 07.00

Minden szombaton és vasárnap 09.00 órakor

Újrapróbálkozási időszak napjai = 1

A hét napjai = 6, 7

Kezdési időpont = 09.00

Minden nap egy hét, elmúlik a hét

Újrapróbálkozási időszak napjai = 1

Időszak Hetek = 2

Egyszer 01:00-kor

Kezdési időpont = 01.00

Minden hónap utolsó napja 9:00.

Újrapróbálkozási időszak napjai = 1

NapHónapban = -1

Kezdési időpont = 09.00

Minden hónap ötödikén 9:00-kor

Újrapróbálkozási időszak napjai = 1

nap/hónap = 5

Kezdési időpont = 09.00

Minden hónap második szerdája 9:00 órakor

Újrapróbálkozási időszak napjai = 1

A hét napja a hónapban = 2

A hét napjai = 3

Kezdési időpont = 09.00

Ellenőrizheti, hogy egy feladat végrehajtásra kerül-e egy adott dátumon (a ScheduledTasks Schedule objektum RequiredExecution metódusa). Az ütemezett feladatokat mindig egy adott felhasználó nevén hajtják végre. Ha az ütemezett job felhasználója nincs megadva, akkor a végrehajtás a rendszergazdai jogosultságokkal rendelkező alapértelmezett felhasználó nevében történik.

Az ütemezett feladatok végrehajtása háttérfeladatok segítségével történik. Amikor az ütemező megállapítja, hogy egy ütemezett feladatot el kell indítani, az ütemezett feladat alapján automatikusan létrejön egy háttérfeladat, amely minden további feldolgozást végrehajt. Ha ez az ütemezett feladat már fut, akkor az ütemezésétől függetlenül nem fut újra.

Az ütemezett munkák újraindulhatnak. Ez különösen akkor igaz, ha az ütemezett feladatmódszer végrehajtását garantálni kell. Egy ütemezett feladat újraindul, ha rendellenesen leállt, vagy ha a munkavégzési folyamat (az ügyfél-kiszolgáló verzióban) vagy az ügyfélfolyamat (a fájlverzióban), amelyen az ütemezett feladat futott, rendellenesen leállt. Az ütemezett feladatnál megadhatja, hogy hányszor kell újraindítani, valamint megadhatja az újraindítások közötti intervallumot. Az újraindítható ütemezett job metódusának megvalósításánál figyelembe kell venni, hogy újraindításkor a végrehajtása elölről indul, és nem az összeomlás pillanatától folytatódik.

Ezt fontos megjegyezni idő vége nem feltétlenül fejezi be a háttérmunkát a megadott időpontban. Néhány kijelentés:

* Egy háttérfeladat figyelmen kívül hagyhatja a sajátját automatikus törlés, ha nem fagyott le, de tovább működik hogy az oka hogy nem lehet minden platformműveletet visszavonni. Ha végrehajtják ciklikus kód beépített nyelv, a munka törölhető, ellenkező esetben nem. Minden attól függ, hogy mit csinál a munka. * Befejezési idő – az a határ, amelyen belül egy feladat elkezdődhet és nem érhet véget? * A feladat kényszerített befejezése visszaállítja a módosításokat a tranzakció megkezdésének pillanatára?

A háttérfeladatok végrehajtásának sajátosságai fájl és kliens-szerver verziókban

A háttérfeladatok végrehajtásának mechanizmusa a fájl és a kliens-szerver verziókban eltérő.

  • A fájlverzióban létre kell hoznia egy dedikált ügyfélfolyamatot, amely háttérfeladatokat hajt végre. Ehhez az ExecuteJobProcessing globális kontextusfüggvényt rendszeresen meg kell hívni az ügyfélfolyamatban. Infobázisonként csak egy ügyfélfolyamat dolgozzon fel háttérfeladatokat (és ezért hívjon ezt a funkciót). Ha nem jött létre ügyfélfolyamat a háttérfeladatok feldolgozásához, akkor a jobmotor programozott elérésekor a „Job manager nem aktív” hibaüzenet jelenik meg. Nem ajánlott olyan ügyfélfolyamatot használni, amely más funkciók háttérfeladatait dolgozza fel.

Miután a háttérfeladatokat kezelő kliensfolyamat fut, a többi ügyfélfolyamat lehetőséget kap erre program hozzáférést a háttérmunka mechanizmushoz, azaz. háttérmunkákat futtathat és kezelhet.

A kliens-szerver verzióban a feladatütemezőt a háttérfeladatok végrehajtására használják, amely fizikailag a fürtkezelőben található. Az összes sorban álló háttérfeladat ütemezője a legkevésbé terhelt munkavégző folyamatot kapja, és azt használja a megfelelő háttérfeladat futtatására. A dolgozói folyamat végrehajtja a munkát, és értesíti az ütemezőt a végrehajtás eredményeiről.

A kliens-szerver verzióban lehetőség van az ütemezett feladatok végrehajtásának blokkolására. Az ütemezett feladatok végrehajtásának blokkolása a következő esetekben történik:

  • Az ütemezett feladatok kifejezett blokkolása van beállítva az információs bázison. A zár a fürtkonzolon keresztül állítható be;
  • Kapcsolódási blokk került beállításra az információs bázison. A zár a fürtkonzolon keresztül állítható be;
  • A SetExclusiveMode() metódus a beépített nyelvből lett meghívva a True paraméterrel;
  • Néhány más esetben (például az adatbázis-konfiguráció frissítésekor).

Ütemezett munka metaadatainak létrehozása

Mielőtt programozottan hozna létre egy ütemezett feladatot az információs bázisban, létre kell hoznia egy metaadat objektumot.

Ütemezett job metaadat objektum létrehozásához a konfigurációs fában az Ütemezett jobok ág Általános ágában, hajtsa végre a Hozzáadás parancsot, és töltse ki az ütemezett feladat alábbi tulajdonságait a tulajdonságok palettán:

Metódus neve – Adja meg az ütemezett munkamódszer nevét.

Kulcs – adjon meg egy tetszőleges karakterlánc értéket, amely az ütemezett feladat kulcsaként lesz használva.

Ütemezés – az ütemezett feladat ütemezését adja meg. Ütemezés létrehozásához kattintson a "Megnyitás" linkre, és állítsa be a szükséges értékeket a megnyíló ütemezési űrlapon.

Az Általános lap megadja a feladat kezdő és befejező dátumát, valamint az ismétlési módot.

A „Napi” lap meghatározza a feladat napi ütemezését.

Adja meg az ütemtervet:

  • a feladat kezdési és befejezési időpontja;
  • a feladat befejezési időpontja, amely után kényszeresen befejeződik;
  • feladatismétlési időszak;
  • az ismétlések közötti szünet időtartama;
  • végrehajtás időtartama.

A feltételek tetszőleges kombinációja megengedett.

A feladat heti ütemezése a Heti lapon van megadva.

Jelölje be a hét azon napjaihoz tartozó jelölőnégyzeteket, amelyeken a feladat futni fog. Ha meg szeretné ismételni a munkát, adja meg az újrapróbálkozási időközt hetekben. Például a feladat 2 hét alatt fut le, az ismétlés értéke 2.

A „Havi” lapon a feladat havi ütemezése látható.

Jelölje be azoknak a hónapoknak a jelölőnégyzeteit, amelyekben a feladat futni fog. Ha szükséges, megadhat egy konkrét végrehajtási napot (hónapot vagy hetet) a hónap / hét elejétől vagy a végétől.

Használat - ha be van állítva, a feladat az ütemezésnek megfelelően fog végrehajtódni.

Előre definiált – ha be van állítva, a feladat egy előre meghatározott feladat.

Újrapróbálkozások száma összeomláskor – Megadja az összeomláskor végrehajtott újrapróbálkozások számát.

Újrapróbálkozási időköz összeomláskor – Megadja az összeomláskor jelentkező újrapróbálkozási időközt. Példák

Háttérfeladat létrehozása "A teljes szöveges keresési index frissítése":

BackgroundJobs.Run("UpdatingFullTextSearchIndex");

Ütemezett feladat létrehozása "Szekvenciák visszaállítása":

Ütemezés = New ScheduleRegulationTask; Schedule.RepeatPeriodDays = 1; Schedule.RepeatPeriodDuringDay = 0;

Task = ScheduledTasks.Create ScheduledTask("RestoringSequences"); Task.Schedule = Ütemezés; Task.Write();

Munkakonzol

Feldolgozás ITS-sel, kezeli az ütemezett feladatokat:

Dolgozzon ütemezett feladatokkal

Munkaobjektumok

A jobobjektumokra nem hivatkoznak, hanem az adatbázisban tárolódnak valamilyen speciális tárolóban.

Ha az "Előre definiált" jelző engedélyezve van a metaadatokban, akkor egy ilyen objektum automatikusan létrejön az 1C:Enterprise indulásakor, és mindig pontosan egy példányban létezik. Egy ilyen objektum nem törölhető.

Ha az "Előre meghatározott" jelző nincs beállítva, akkor egy ilyen feladat objektumai programozottan jönnek létre és törlődnek, megadva az ütemezést és a paramétereket.

Feladatlista beszerzése

A feladatok listája a módszerrel szerezhető be GetRegularAssignments globális munkaügyi vezető Ütemezett feladatok

Ütemezett Jobs Manager

GetScheduledJobs (GetScheduledJobs)

Szintaxis:

GetRegular Tasks(<Отбор>)

Lehetőségek:

<Отбор>(választható)

Típus: Szerkezet. A kijelölést meghatározó struktúra. A struktúra értékei a következők lehetnek: Egyedi azonosító, Kulcs, Metaadatok, Előre meghatározott, Használat, Név. Ha a kijelölés nincs beállítva, az összes ütemezett feladat megtörténik.

Ha metaadatok alapján szűr, megadhatja az ütemezett feladat metaadat-objektumát vagy annak nevét Metaadat értékként.

Visszatérési érték:

Típus: Tömb.

Leírás:

Ütemezett feladatok tömbjét kapja meg a megadott kijelöléshez. Az ütemezett feladatok fogadása csak a rendszergazda számára lehetséges.

Elérhetőség:

Ütemezett = ScheduledTasks.Get ScheduledTasks(Selection);

Minden ütemezett ciklusból ütemezetthez NewLine = ScheduledTasksList.Add(); NewString.Metadata = Scheduled.Metadata.View(); NewLine.Name = Ütemezett.Név; NewString.Key = Ütemezett.Kulcs; NewString.Schedule = Ütemezett.Ütemezés; NewString.User = Regular.UserName; NewString.Predefined = Ütemezett.Előre definiált; NewString.Usage = Regulatory.Usage; NewString.Identifier = Scheduled.UniqueIdentifier;

LastTask = Ütemezett.LastTask; Ha a LastQuest<>Undefined Akkor NewString.Running = LastTask.Start; NewString.Status = LastJob.Status; EndIf; EndCycle;

Teremtés

Az ütemezett feladatkezelő CreateRegularTask metódusával készült:

ScheduledJob = ScheduledJobs.Create ScheduledJob(MetadataChoice);

Ütemezett feladat.Name = Név; ScheduledTask.Key = Kulcs; ScheduledTask.Use = Használat; ScheduledTask.UserName = UsersChoice; ScheduledTask.Number of RepetitionsWhen Crashing = RetriesWhen Crashing; ScheduledTask.RetryIntervalOnAccident = RetryIntervalOnAccident; ScheduledTask.Schedule = Ütemezés; ScheduledTask.Write();

TaskObject = ScheduledTasks.Create ScheduledTask("ExecuteExchange");

TaskObject.Name = Név; JobObject.Use = igaz;

A jobobjektumnak van egy "Paraméterek" mezője, amelyben a metódus paraméterei be vannak állítva:

Ütemezett munka

Lehetőségek(Paraméterek)

Használat:

Olvasás és írás.

Leírás:

Típus: Tömb. Ütemezett feladatparaméterek tömbje. A paraméterek számának és összetételének meg kell felelnie az ütemezett feladatmódszer paramétereinek.

Elérhetőség:

Szerver, kövér kliens, külső csatlakozás.

Jegyzet:

Az olvasási és írási képesség csak a rendszergazda számára elérhető.

Eltávolítás

A munkaobjektum Delete() metódusával törölve:

ScheduledTask.Delete();

Állásobjektum beszerzése

  • lista a GetRegularTasks metódussal:

Ütemezett = ScheduledTasks.Get ScheduledTasks(Selection);

  • a feladatkezelő FindByUniqueID metódusán keresztül:

Feladat = ScheduledTasks.FindBy UniqueIdentifier(UID);

Ebben a cikkben az univerzális EnterpriseData formátumon keresztüli adatcsere megszervezésében szerzett, eddig csekély tapasztalatomat ismertetem.

Az én esetemben a központ a "Trade Management 11.2" (a továbbiakban: UT) és az "Enterprise Accounting 3.0.43" (a továbbiakban: BP) konfigurációk között van konfigurálva. A csere egyirányú, UT-tól BP-ig. A Trade Management 11.1-es verziójának 11.2-es verzióra történő frissítése előtt az adatcserét a Data Conversion 2.0 konfigurációjával konfigurálták. A „Trade Management” „11.2”-re való váltása után azonban hibák jelentek meg a felhasználók munkája során. A csereszabályzat frissítésére irányuló eljárást lefolytatták, de ez nem vezetett eredményre. A hibakereső megmutatta, hogy a probléma az adatcserében van. Úgy döntöttek, hogy mindkét konfigurációban eltávolítják és újra beállítják az adatcsere beállítást.

Mind a "Trade Management", mind a "Enterprise Accounting" ügyfél-szerver verzióban működik nálunk. Elkezdtem beállítani a szinkronizálást az UT-vel. Úgy végeztem el, hogy az adatok az UT-ból egy fájlba kerültek ki. Ez a szinkronizálás a hálózati címtáron keresztül. Az ÜT-ben úgy konfiguráltam a központot, hogy az ÜT-ről ne rakódjanak ki adatok.

Hiba a kontextus metódusának hívásakor (Érvényesítés): Hiba az XDTO adatok érvényesítése során:
A "/Counterparty's Bank Account/Bank" objektum szerkezete nem egyezik a következő típussal: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)KeyPropertiesBank
A "BIC" tulajdonság ellenőrzése:
forma: elem
név: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)BIC
típus:
Szükséges tulajdonság hiányzik
Tárgy: Megállapodás a partnerrel ...

A hiba elemzéséhez a „Küldendő adatok összetétele” ikonra kattintottam, és a szerződésküldésre regisztrált felek listájában megtaláltam azt a szerződést, amely alatt a hiba jelentkezett. Felbontotta a szerződést, memorizálta a szerződő fél szerződésben meghatározott bankszámláját. Aztán áttértem a szállításra regisztrált bankszámlákra. Kiderült, hogy a kívánt számla nem szerepel a regisztráltak listáján. Átvezettem a problémás bankszámlát és a szerződést. Ezt követően manuálisan regisztrálta a szükséges bankszámlát.

Megpróbáltam újra szinkronizálni az UT-ból származó adatokat. Ezúttal az adatok feltöltése sikeres volt. BAN BEN hálózati mappa alakított XML fájl, amely adatokat tartalmaz az UT-ról a BP-re történő átvitelhez.

A következő lépés az adatok feltöltése a fájlból a Vállalati Számviteli Osztályra. A "Vállalati könyvelés" konfigurációban a "Szinkronizálás" gombra kattintottam, a feldolgozási űrlap "Adatelemzés folyamatban" üzenettel nyílt meg. Kicsit később az üzenet a következőre változott: „Az adatok feltöltése folyamatban van”. A mutató és a számláló ugyanakkor azt mutatta, hogy több mint 80 ezer tárgyat raknak ki az ÜT-ről. Ez megzavart, mert a beállításoknál jeleztem, hogy a tápegységről semmit sem szabad kirakni. A feldolgozás sokáig tartott, és hibával ért véget:

Esemény: Kommunikáció
(CommonModule.LongOperations.Module(371)): A háttérmunkás folyamat összeomlott
ThrowException(ErrorText);

A hiba lokalizálásához megpróbáltam módosítani a szinkronizálási beállításokat és a BP alap működési lehetőségeit. Ennek eredményeként, amikor az adatbázist fájlverzióra konvertáltam, a rendszer megfelelően működött: megnyílt a két adatbázis összehasonlító űrlapja. Az objektumok egyeztetése után a kezdeti szinkronizálás sikeres volt. Ezután ismét átvittem az adatbázist a kliens-szerver verzióra.

A szinkronizálás további "futása" során szükség volt néhány változtatásra az objektumok konvertálására vonatkozó szabályokon. Ideje használni az „Adatkonverzió 3.0” konfigurációt. A beépített konfigurációs súgó leírja, hogyan kell dolgozni. Az ITS honlapján található cikkek is segítettek.

Ennek eredményeként a következő adatokat töltöttem be a "Data Conversion 3.0"-ba:

  • A "Data Exchange Manager Via UniversalFormat" általános modul szövegei két bázisról
  • Mindkét alap diagramja
  • Az EnterpriseData formátum leírása (bármely adatbázisból)
  • Konverziós szabályok

Letöltés után megnyitottam az adatok, objektumok, tulajdonságok konvertálására vonatkozó szabályokat a "Data Conversion 3.0"-ban. Elvégeztem a szükséges változtatásokat. Ezután a "Cserekezelő modul eltávolítása" gombot használtam. A modul szövegét a vágólapra másoltuk. Csak be kell helyezni a konfigurációba.

Miután kísérleteztem a szabályok beállításával a "Data Conversion 3.0" programban, arra a következtetésre jutottam, hogy abban az esetben, ha a változtatások csekélyek, egyszerűbb szabályokat beállítani közvetlenül az UT és a BP konfigurációkban, az "Adatcsere" általános modulban. Manager Via UniversalFormat". Ha a módosítások komolyak, például egy új objektum hozzáadása cserébe, akkor használja a konfigurációt " Adatkonverzió 3.0".

Elvégeztem azt a feladatot, hogy a "Megrendelés a szállítónak" dokumentumot hozzáadtam a cseretervhez a " Adatkonverzió 3.0". Az UT - BP szabványos verziójában ez a dokumentum nem szerepel a cseretervben.

Ne feledjük, hogy az objektumok kirakodáshoz történő regisztrálásának szabályai továbbra is az „Adatkonverzió 2.0” konfigurációban vannak konfigurálva.

Ezek az első benyomások az univerzális EnterpriseData formátumon keresztül történő adatszinkronizálásról.

P.S. Ha kérdései és saját észrevételei vannak az adatcserével kapcsolatban Univerzális formátumés konfig" Adatkonverzió 3.0", írd meg kommentben. Tapasztalatokat cserélünk.

  • Adatszinkronizálás
  • Univerzális EntepriseData formátum
  • Adatkonverzió 3.0
  • Adatkonverzió 2.0
  • Kereskedelmi menedzsment
  • Vállalati könyvelés