1C:ssä työskennellessä on monia rutiinitoimintoja, jotka on käynnistettävä tai ajoitettava yhden tai toisen toiminnon suorittamiseksi, esimerkiksi: asiakirjojen lähettäminen tai tietojen lataaminen 1C:hen verkkosivustolta.

Julkaisin äskettäin artikkelin: On aika automatisoida tämä:

Rutiini- ja taustatehtävät

Työkone on suunniteltu suorittamaan mitä tahansa sovelluksia tai toimintoja aikataulussa tai asynkronisesti.

Tehtävämekanismi ratkaisee seuraavat ongelmat:

  • Kyky määritellä sääntelymenettelyjä järjestelmän konfigurointivaiheessa;
  • Määrättyjen toimien suorittaminen aikataulun mukaisesti;
  • Kutsun soittaminen tiettyyn proseduuriin tai toimintoon asynkronisesti, ts. odottamatta sen valmistumista;
  • Tietyn tehtävän edistymisen seuraaminen ja sen valmistumistilan saaminen (arvo, joka osoittaa, onnistuiko se vai ei);
  • Nykyisten tehtävien luettelon saaminen;
  • Kyky odottaa yhden tai useamman tehtävän valmistumista;
  • Työnhallinta (peruutusmahdollisuus, suorituksen estäminen jne.).

Työmekanismi koostuu seuraavista osista:

  • Rutiinitehtävien metatiedot;
  • Säännölliset tehtävät;
  • Taustatyöt;
  • Tehtävien ajoitus.

Taustatyöt & on suunniteltu suorittamaan sovellustehtäviä asynkronisesti. Taustatehtävät toteutetaan sisäänrakennetulla kielellä.

Ajoitetut tehtävät ja ne on suunniteltu suorittamaan sovellustehtävät aikataulussa. Rutiinitehtävät tallennetaan tietokantaan ja luodaan konfiguraatiossa määritettyjen metatietojen perusteella. Sääntelytehtävän metatiedot sisältävät tietoja, kuten nimi, menetelmä, käyttö jne.

Rutiinitehtävällä on aikataulu, joka määrittää, milloin rutiinitehtävään liittyvä menetelmä on suoritettava. Aikataulu on pääsääntöisesti määritetty tietokannassa, mutta se voidaan määrittää myös konfigurointivaiheessa (esimerkiksi ennalta määritetyille rutiinitehtäville).

Tehtävien ajoitinta käytetään rutiinitehtävien suorittamisen ajoittamiseen. Jokaisen ajoitetun työn osalta ajoittaja tarkistaa säännöllisesti, vastaavatko nykyinen päivämäärä ja aika ajoitetun työn aikataulua. Jos se täsmää, ajoittaja määrittää tämän tehtävän suoritukseen. Tätä varten ajastin luo tälle ajoitetulle tehtävälle taustatehtävän, joka suorittaa varsinaisen käsittelyn.

Mielestäni tämä riittää kuvauksesta - siirrytään toteutukseen:

Rutiinitehtävän luominen

Menetelmän nimi– polku prosessiin, joka suoritetaan taustatyössä tietyn aikataulun mukaisesti. Menettelyn on oltava yhteisessä moduulissa. On suositeltavaa olla käyttämättä tavallisia yleisiä moduuleja, vaan luoda omia. Älä unohda, että taustatyöt suoritetaan palvelimella!

Käyttö– merkki rutiinitehtävän käytöstä.

Ennalta määrätty– osoittaa, onko rutiinitehtävä ennalta määritetty.

Jos haluat rutiinitehtävän toimivan heti tietokantaan sijoittamisen jälkeen, määritä määrite Ennalta määrätty. Muussa tapauksessa sinun on käytettävä "Job Console" -käsittelyä tai käynnistettävä tehtävä ohjelmallisesti.

Uudelleenyritysten määrä, kun työ päättyy epänormaalisti– kuinka monta kertaa taustatyö käynnistettiin uudelleen, jos se suoritettiin virheellisesti.

Uudelleenyritysten aikaväli, kun työ päättyy epänormaalisti– kuinka usein taustatyö käynnistetään uudelleen, jos se valmistui virheellisesti.

Aikataulun laatiminen

Ajoittaa tehtävän suorittaminen:

Joka tunti, vain yksi päiväRepeatDays Period = 0, RepeatDays Period = 3600
Joka päivä kerran päivässäRepeatDays Period = 1, RepeatDays Period = 0
Yksi päivä, yksi kertaPeriodRepeatDays = 0
Joka toinen päivä kerran päivässäPeriodRepeatDays = 2
Joka tunti 01.00-07.00 joka päiväPeriodRepeatDays = 1RepeatPeriodDuringDay = 3600Aloitusaika = 01.00

Päättymisaika = 07.00

Joka lauantai ja sunnuntai klo 09.00RepeatDays Period = 1 viikonpäivät = 6, 7 aloitusaika = 09.00
Joka päivä viikon ajan, ohita viikkoPeriodRepeatDays = 1 Jaksoviikko = 2
Klo 01.00 kerranAloitusaika = 01.00
Joka kuukauden viimeinen päivä klo 9.00.PeriodRepeatDays = 1DayInMonth = -1Aloitusaika = 09.00
Joka kuukauden viides päivä klo 9.00PeriodRepeatDays = 1 päivä kuukaudessa = 5 aloitusaika = 09.00
Joka kuukauden toinen keskiviikko klo 9.00JaksoToistopäivät = 1 päivä ViikkoKuukausi = 2 päivää Viikko = 3

Aloitusaika = 09.00

Taustatöiden suorittamisen ominaisuudet tiedosto- ja asiakaspalvelinversioissa

Taustatöiden suorittamisen mekanismit tiedosto- ja asiakaspalvelinversioissa ovat erilaisia.

Tiedostoversiossa sinun on luotava oma asiakasprosessi, joka suorittaa taustatyöt. Tätä varten asiakasprosessin on ajoittain kutsuttava globaalia kontekstifunktiota ExecuteJobProcessing. Vain yksi asiakasprosessi tietokantaa kohden saa käsitellä taustatöitä (ja vastaavasti kutsua tätä toimintoa). Jos asiakasprosessia ei ole luotu taustatöiden käsittelemiseksi, kun työkonetta käytetään ohjelmallisesti, näyttöön tulee virheilmoitus "Työnhallinta ei ole aktiivinen". Ei ole suositeltavaa käyttää asiakasprosessia, joka käsittelee muiden toimintojen taustatöitä.

Kun asiakasprosessin taustatöitä käsittelevä prosessi on käynnistetty, muut asiakasprosessit pääsevät ohjelmallisesti käsiksi taustatyökoneeseen, ts. voi suorittaa ja hallita taustatöitä.

Asiakas-palvelin versiossa Taustatöiden suorittamiseen käytetään tehtävien ajoitinta, joka sijaitsee fyysisesti klusterinhallinnassa. Kaikille jonossa oleville taustatöille ajoittaja saa vähiten ladatun työntekijäprosessin ja käyttää sitä vastaavan taustatyön suorittamiseen. Työntekijäprosessi suorittaa työn ja ilmoittaa aikatauluttajalle suorituksen tuloksista.

Asiakas-palvelin-versiossa on mahdollista estää rutiinitehtävien suorittaminen. Rutiinitehtävien suorittaminen estetään seuraavissa tapauksissa:

  • Tietokantaan on asennettu selkeä rutiinitehtävien esto. Lukitus voidaan asettaa klusterikonsolin kautta;
  • Tietokannassa on yhteyslohko. Lukitus voidaan asettaa klusterikonsolin kautta;
  • SetExclusiveMode()-metodi, jossa on True-parametri, kutsuttiin sisäänrakennetusta kielestä;
  • Joissakin muissa tapauksissa (esimerkiksi tietokannan kokoonpanoa päivitettäessä).

Käynnistyksen käsittely ja ajoitettujen tehtävien katselu voit ladata täältä.

Alustat: 1C: Enterprise 8.3, 1C: Enterprise 8.2, 1C: Enterprise 8.1
Kokoonpanot: Kaikki kokoonpanot

2012-11-13
53853

Dokumenttien hallinnassa on tehtäviä, jotka vaativat säännöllistä suorittamista - esimerkiksi kahdentenakymmenentenä tai päivittäin. Pääsääntöisesti yritykset luovat nimenomaan tätä tarkoitusta varten tietyt säännöt, jotka osoittavat milloin ja miten tarvittava tehtävä tulee suorittaa ja kenen tulee ohjata prosessia. Tällaisia ​​tehtäviä suoritetaan määräysten mukaisesti ja niitä kutsutaan säännellyiksi.

IT:ssä noudatetaan melko usein valvontamääräyksiä. Tämä menetelmä on järjestelmänvalvojille hyvin tuttu, koska tätä tarkoitusta varten on olemassa erityisiä ohjelmia, joilla tarkistetaan säännöllisesti verkkoinfrastruktuurin ja palvelimien toimivuus. He ilmoittavat järjestelmänvalvojalle havaituista ongelmista tekstiviestillä tai sähköpostitse.

Samanlainen järjestelmä toimii verkkovastaaville, ja sivuston saatavuus tarkistetaan 24 tunnin sisällä. Käyttämällä "Rutiinitehtävät" -mekanismia 1C:ssä suoritetaan valvontatehtävät sekä säännölliset tehtävät, jotka suoritetaan aikataulun mukaan automaattisessa tilassa 1C:ssä. Tarkastellaanpa tätä aihetta tarkemmin.

Aikataulutetut tehtävät 1C

1C-objekti, jota kutsutaan "rutiinitehtäväksi", mahdollistaa tietojen käsittelyn ei ongelman jälkeen, vaan aikataulun mukaan. Konfiguraattorissa rutiinitehtävä on tapa asettaa asetuksia ja asettaa aikataulu. Lisäksi on mahdollista myöhemmin muuttaa aikataulua 1C Enterprise -tilassa.

Kun käytetään tiedostotietokantaa, töitä ei suoriteta automaattisesti. Prosessin aloittamiseksi sinun on aloitettava 1C-istunto 1C Enterprise -tilassa ja aloitettava rutiinitehtävän suorittaminen siinä.

Kaikissa vakiokokoonpanoissa on käyttäjäasetus, jonka avulla voit määrittää, että kun 1C on käynnissä, rutiinitehtävät suoritetaan automaattisesti.

1C:n asiakaspalvelinversion käyttäminen mahdollistaa tehtävien automaattisen suorittamisen palvelimella. Ajastettuna ajankohtana käynnistetään taustatyö, joka suorittaa tarvittavat toimenpiteet. Palvelimen rinnakkaislaskentaa varten taustatyö voidaan luoda ohjelmatekstistä 1C-kielellä ilman ajoitettua 1C-työtä. Ajastetun tehtävän toiminto voidaan tilapäisesti poistaa käytöstä 1C-palvelimen hallintakonsolin avulla.

Ajastetun tehtävän lisääminen

Rutiinitehtävät sijaitsevat kohdassa - Configurator - Yleiset - Rutiinitehtävät. Lisää uusi "tehtävä" ja anna nimi. Seuraavaksi sinun on siirryttävä "Tasks" -ominaisuuksiin. Ja valitse menetelmän nimi. Täällä sinun on määritettävä käsittelijätoiminto, aivan kuten se tapahtuu tapahtumatilauksessa. Tämä toiminto sijaitsee yleisessä moduulissa ja on merkitty "lintu"-palvelimella ominaisuuksissa. Tämä tarkoittaa, että tarvittava moduuli on lisättävä etukäteen.

Tehtävän nimen ajoitetun tehtävän ominaisuuksissa voit määrittää sen nimen, joka sitten näkyy tehtävänhallintatyökaluissa. Rutiinitehtävän ominaisuudet -toiminto on näppäin, jonka avulla voit ryhmitellä useita erilaisia ​​rutiinitehtäviä. Tässä tapauksessa vain yksi tehtävä, jolla on sama avainarvo, voidaan käynnistää kerrallaan. Tässä arvo voi olla mielivaltainen, mutta se on täytettävä, koska tyhjää arvoa ei oteta huomioon järjestelmässä.

Kirjanpito-versiossa 2.0, joka on vakiokokoonpano, rutiinitehtävät, kuten: "Summien uudelleenlaskenta" ja "Konfiguroinnin päivitys", ovat ennalta määritettyjä, mutta kuten esimerkiksi "Viiveelliset siirrot" ja "Tiedonvaihto" eivät ole ennalta määritettyjä.

Yritä uudelleen epänormaalilla lopettamisella - käynnistää nykyisen työn uudelleen. Suunniteltu suorittamaan laukaisu, joka ei onnistunut ensimmäisellä kerralla. Täällä ilmoitetaan, kuinka monta kertaa voit käynnistää uudelleen ja minkä ajan kuluttua on kulunut epänormaalin lopettamisen jälkeen.

Valvonta- ja hallintatyökalut rutiinitehtäviin 1C

Tavanomainen prosessointi “Task Console”, joka löytyy ITS-levyiltä, ​​vastaa rutiinitehtävän hallinnasta. Tämä käsittely on yleinen ulkoinen standardikäsittely 1C. Yleensä se ei sisälly kokoonpanoon, vaan se ostetaan erikseen.

Sen avulla voit suorittaa seuraavat toiminnot:

Laita ajoitettu tehtävä päälle ja pois päältä;

Määritä ja muuta aikatauluja;

Määritä käyttäjänimi, jolla rutiinitehtävä suoritetaan;

Katso suoritetut tehtävät (milloin ja millä tuloksella) sekä tehtävävirheet;

Rutiinitehtävä ja kopiot tietokannoista

Käytettäessä palvelinta 1C voi syntyä seuraava hetki:

Ohjelmoidaksesi sinun on tehtävä kopio toimivasta tietokannasta;

Tarve työskennellä tietokannan kopioiden parissa (testaus);

Jostain syystä ajoitettu tehtävä ei sisältynyt testitietokantaan.

Jos jokin näistä tilanteista syntyi rutiinitehtävän suorittaman tehtävien suorittamisen aikana, jotka liittyvät vain heidän tietokantaan, tällä ei ole kielteisiä seurauksia. Mutta usein rutiinitehtävä voi tallentaa tiedostoja tai muita tietoja, lähettää sähköposteja ja suorittaa vaihtoja. Tässä tapauksessa "työn" tulosten ja kopioiden välillä voi syntyä sekaannusta. Jotta tämä ei tapahdu, sinun on poistettava "tehtävät" käytöstä palvelimen hallintakonsolissa.

Tehdyt ja suorittamattomat sääntelytehtävät

Rutiinitehtäviä luotaessa on tärkeää tarkistaa, voidaanko tehtävä suorittaa rutiinitehtävänä. On tärkeää tietää, että palvelinmoduuli ei tee monia asioita, jotka ovat mahdollisia asiakkaalla. Lisäksi tehtävä, joka käsittelee jotain, joka on tietokannan ulkopuolella - tärkeä rooli tässä on Windows-käyttäjän oikeuksilla, joilla tehtävä suoritetaan.

Viimeinen tekijä on erityisen tärkeä, koska jos moduulia ei suoriteta palvelimella, tehtävää ei periaatteessa voida suorittaa loppuun. Tarkistaaksesi sinun on suoritettava yksi tehtävä ja arvioitava tulos.

Rutiinitehtävän luominen

Luodaan rutiinitehtävä "Suorita käsittely".

Poistetaan ajoitetun tehtävän käyttö, jotta se ei käynnisty automaattisesti konfiguraatiota päivitettäessä.

Määritetään menettely, joka käynnistyy, kun rutiinitehtävä käynnistetään:Moduuli RoutineTasks.RoutineTaskExecutionProcessing.

Itse menettely näyttää tältä:

Procedure RoutineTaskExecutionProcessing(Key) Export

Parametrit RoutineTasks.PerformProcessingWithParameters(Key);

Menettelyn loppu

Luomme hakuteoksen rutiinitehtäviin

Rutiinitehtävämme voi synnyttää monia taustaprosesseja - yksi jokaista käsittelyä kohden. Jokaisella 1C8-alustan tehtävällä on avain. Mutta ajoitetun työn menetelmä ei tunne taustatyön avainta, joten sinun on käytettävä taustatyön parametreja. Tämän seurauksena voimme nähdä taustatyön työkonsolissa, mutta emme voi luoda taustatyötä manuaalisesti tästä konsolista, koska parametreilla varustettuja töitä ei luoda manuaalisesti.

Viitekirja "Ajoitettujen tehtävien parametrit" :

Tarvikkeet :

· CodeBefore Launch- rajoittamaton merkkijono - koodi 1C-kielellä, joka on suoritettava ennen käynnistämistä.

· Käsittely konfiguraatiosta - rivi (100) - käsittelytunniste konfiguraatiosta

· Käsittely hakemistosta - rivi (100) - linkki hakemistoelementtiin "Ulkoinen käsittely", jos sellainen on asetuksissa

· Suorita 1C-sovelluksen kautta - Boolean - erillinen 1C-sovellus luodaan ja rutiinitehtävä käynnistetään siinä. Luotu 8.1:lle, jossa kaikki sovellustavat eivät ole käytettävissä palvelimella, jossa ajoitettu työ on käynnissä.

· Käynnistä koodi- - rajoittamaton rivi - koodi 1C-kielellä, joka suoritetaan, kun ajoitettu tehtävä käynnistetään.

Luodaan elementin muoto :

Napsauta "Luo rekisteri. tehtävä" rutiinitehtävä avainkoodilla luodaan ohjelmallisesti:

Toimenpide Basic ActionsFormCreateReglTask(Button)

Muuttuva työ;

Avain = AbbrLP(koodi);

Tehtävä = RoutineTasks.CreateRoutineTask("PerformProcessing");

Tehtävä.Nimi = Avain;

Job.Key = Avain;

Parametrit = Uusi array();

Parametrit.Add(Key);

Task.Parameters = Parametrit;

Tehtävä.Kirjoita();

Menettelyn loppu

Aloitetaan ajoitettu tehtävä

Jokaisella luomallamme rutiinitehtävällä on avain:

Tämä avain vastaa hakemiston "Rutiinitehtävien parametrit" koodia, jota käytetään tehtävän käynnistämiseen. Jos hakemistomerkintää ei löydy, tehtävää ei suoriteta.

Seuraavaksi, jos koodi annetaanCodeBefore Launch sitten tämä koodi suoritetaan. Seuraavaksi, jos muuttuja Täytä arvoksi epätosi, tehtävää ei suoriteta. Muuttuja käytettävissä analysoitavaksi Vaihtoehdot, johon on tallennettu linkki löydettyyn hakemistoelementtiin “Rutiinitehtävien parametrit”.

Yksityiskohtien valituista arvoista riippuen joko 1C-kielellä oleva koodi suoritetaan tai käsittely aloitetaan konfiguroinnista tai käsittely tavallisesta viitekirjasta "Ulkoinen käsittely".

1C81:lle suoritus tarjotaan uudessa sovelluksessa - jotta voit käyttää koodia, joka on saatavilla vain asiakkaalla, mukaan lukien ulkoisen käsittelyn käyttö. Tätä varten sinun on valittava "Suorita 1C-sovellus" -valintaruutu. Muussa tapauksessa ajoitettu tehtävä suoritetaan palvelimella.

Suosittelen asettamaan käyttäjän juuri luodun rutiinitehtävän "Käyttäjä"-kenttään, jotta tehtävä suoritetaan tietyillä oikeuksilla. Suosittelen antamaan tällaiselle käyttäjälle täydet oikeudet. käytän käyttäjää"robotti».

Rutiinitehtäväaikataulu luodaan rutiinitehtävälomakkeen "Aikataulu"-hyperlinkin avulla. Voit käyttää "Rutine Task Console" -käsittelyä.

1 Työmekanismi
2 taustatyötä
3 Aikataulutettuja tehtäviä
4 Taustatöiden suorittamisen ominaisuudet tiedosto- ja asiakaspalvelinversioissa
5 Metatietojen luominen rutiinitehtävää varten
6 Työkonsoli
7 Työskentely rutiinitehtävien kanssa
7.1 Työkohteet
7.2 Tehtäväluettelon saaminen
7.3 Luominen
7.4 Asennuksen poistaminen
7.5 Työkohteen saaminen

Työmekanismi

Työkone on suunniteltu suorittamaan mitä tahansa sovelluksia tai toimintoja aikataulussa tai asynkronisesti.

Tehtävämekanismi ratkaisee seuraavat ongelmat:

  • Kyky määritellä sääntelymenettelyjä järjestelmän konfigurointivaiheessa;
  • Määrättyjen toimien suorittaminen aikataulun mukaisesti;
  • Kutsun soittaminen tiettyyn proseduuriin tai toimintoon asynkronisesti, ts. odottamatta sen valmistumista;
  • Tietyn tehtävän edistymisen seuraaminen ja sen valmistumistilan saaminen (arvo, joka osoittaa, onnistuiko se vai ei);
  • Nykyisten tehtävien luettelon saaminen;
  • Kyky odottaa yhden tai useamman tehtävän valmistumista;
  • Työnhallinta (peruutusmahdollisuus, suorituksen estäminen jne.).

Työmekanismi koostuu seuraavista osista:

  • Rutiinitehtävien metatiedot;
  • Säännölliset tehtävät;
  • Taustatyöt;
  • Tehtävien ajoitus.

Taustatyöt on suunniteltu suorittamaan sovellustehtävät asynkronisesti. Taustatehtävät toteutetaan sisäänrakennetulla kielellä.

Ajoitetut tehtävät - suunniteltu suorittamaan sovellettavia tehtäviä aikataulussa. Rutiinitehtävät tallennetaan tietokantaan ja luodaan konfiguraatiossa määritettyjen metatietojen perusteella. Sääntelytehtävän metatiedot sisältävät tietoja, kuten nimi, menetelmä, käyttö jne.

Rutiinitehtävällä on aikataulu, joka määrittää, milloin rutiinitehtävään liittyvä menetelmä on suoritettava. Aikataulu on pääsääntöisesti määritetty tietokannassa, mutta se voidaan määrittää myös konfigurointivaiheessa (esimerkiksi ennalta määritetyille rutiinitehtäville).

Tehtävien ajoitinta käytetään rutiinitehtävien suorittamisen ajoittamiseen. Jokaisen ajoitetun työn osalta ajoittaja tarkistaa säännöllisesti, vastaavatko nykyinen päivämäärä ja aika ajoitetun työn aikataulua. Jos se täsmää, ajoittaja määrittää tämän tehtävän suoritukseen. Tätä varten ajastin luo tälle ajoitetulle tehtävälle taustatehtävän, joka suorittaa varsinaisen käsittelyn.

Taustatyöt

Taustatöitä on kätevä käyttää monimutkaisten laskelmien suorittamiseen, kun laskennan tuloksen saaminen voi kestää kauan. Työkoneella on keinot suorittaa tällaiset laskelmat asynkronisesti.

Taustatyöhön liittyy menetelmä, jota kutsutaan, kun taustatyö suoritetaan. Taustatyömenetelmä voi olla mikä tahansa ei-globaalin yhteisen moduulin toiminto tai toiminto, joka voidaan kutsua palvelimelta. Taustatyöparametrit voivat olla mitä tahansa arvoja, jotka sallitaan välittää palvelimelle. Taustatyön parametrien on vastattava tarkasti sen kutsuman proseduurin tai funktion parametreja. Jos taustatyön menetelmä on funktio, sen palautusarvo jätetään huomiotta.

Taustatyöllä voi olla avain – mikä tahansa sovellusarvo. Avain tuo rajoituksen taustatöiden käynnistämiseen - vain yksi taustatyö voidaan suorittaa aikayksikköä kohden tietyllä avainarvolla ja annetulla taustatyön menetelmän nimellä (metodin nimi koostuu moduulin nimestä ja toimenpiteen nimestä tai toiminto). Avaimen avulla voit ryhmitellä taustatyöt, joilla on samat menetelmät tietyn sovellusominaisuuden mukaan, jotta yhdessä ryhmässä ei suoriteta enempää kuin yksi taustatyö.

Taustatöitä luodaan ja hallitaan ohjelmallisesti mistä tahansa yhteydestä. Jokainen käyttäjä voi luoda taustatyön. Lisäksi se suoritetaan sen luoneen käyttäjän puolesta. Tehtävien vastaanottaminen ja niiden valmistumisen odottaminen on sallittua mistä tahansa yhteydestä käyttäjälle, jolla on järjestelmänvalvojan oikeudet, tai käyttäjälle, joka on luonut nämä taustatyöt.

Taustatyö on puhtaasti istuntoobjekti, eikä se kuulu mihinkään käyttäjän istuntoon. Jokaista tehtävää varten luodaan erityinen järjestelmäistunto, joka suoritetaan puhelun tehneen käyttäjän puolesta. Taustatöillä ei ole pysyvää tilaa.

Taustatyö voi synnyttää muita taustatöitä. Asiakas-palvelin-versiossa tämän avulla voit rinnastaa monimutkaisia ​​laskelmia klusterityöntekijöiden prosesseissa, mikä voi merkittävästi nopeuttaa laskentaprosessia kokonaisuutena. Rinnakkaisu toteutetaan synnyttämällä useita lapsitaustatöitä ja odottamalla kunkin valmistumista päätaustatyössä.

Taustatyöt, jotka valmistuvat onnistuneesti tai epäonnistuvat, säilytetään 24 tunnin ajan ja poistetaan sitten. Jos valmiiden taustatöiden määrä ylittää 1000, myös vanhimmat taustatyöt poistetaan.

Ajoitetut tehtävät

Aikataulutettuja tehtäviä käytetään, kun on tarpeen suorittaa tiettyjä säännöllisiä tai kertaluonteisia toimintoja aikataulun mukaisesti.

Ajoitetut tehtävät tallennetaan tietokantaan ja luodaan konfiguraatiossa määritellyn rutiinitehtävän metatietojen perusteella. Metadata määrittelee sellaiset rutiinitehtävän parametrit kuten: kutsuttu menetelmä, nimi, avain, käyttömahdollisuus, ennaltamääräyksen merkki jne. Rutiinitehtävää luotaessa voit lisäksi määrittää aikataulun (voidaan määrittää metatiedoissa), arvot ​menetelmäparametreista, sen käyttäjän nimi, jonka puolesta rutiinitehtävät suoritetaan jne.

Ajoitettujen tehtävien luominen ja hallinta suoritetaan ohjelmallisesti mistä tahansa yhteydestä, ja se on sallittu vain käyttäjille, joilla on järjestelmänvalvojan oikeudet.

Huomautus. Tiedostoversiossa työskennellessä on mahdollista luoda ja muokata rutiinitehtäviä käynnistämättä tehtävän ajastinta.

Rutiinitehtävään liittyy menetelmä, jota kutsutaan, kun rutiinitehtävä suoritetaan. Rutiinitehtävämenetelmä voi olla mikä tahansa ei-globaalin yhteisen moduulin toiminto tai toiminto, joka voidaan kutsua palvelimelta. Rutiinitehtävän parametrit voivat olla mitä tahansa arvoja, jotka sallitaan lähettää palvelimelle. Rutiinitehtävän parametrien on vastattava tarkasti sen kutsuman proseduurin tai funktion parametreja. Jos rutiinitehtävämenetelmä on funktio, sen palautusarvo jätetään huomiotta.

Rutiinitehtävällä voi olla avain - mikä tahansa sovellusarvo. Avain asettaa rajoituksen ajoitettujen tehtävien käynnistämiselle, koska aikayksikköä kohti samaan metatietoobjektiin liittyvistä rutiinitehtävistä voidaan suorittaa vain yksi rutiinitehtävä tietyllä avainarvolla. Avaimen avulla voit ryhmitellä samaan metatieto-objektiin liittyvät rutiinitehtävät tietyn sovellusominaisuuden mukaan siten, että yhdessä ryhmässä ei suoriteta enempää kuin yksi rutiinitehtävä.

Määrityksen aikana voit määrittää ennalta määritettyjä rutiinitehtäviä. Ennalta määritetyt rutiinitehtävät eivät eroa tavallisista rutiinitehtävistä, paitsi että niitä ei voi nimenomaisesti luoda tai poistaa. Jos ajoitetun tehtävän metatiedoissa se on asetettu merkki ennalta määrätystä rutiinitehtävästä, silloin kun päivität konfiguraatiota tietokannassa, ennalta määritetty rutiinitehtävä luodaan automaattisesti. Jos ennalta määritetty lippu tyhjennetään, ennalta määritetty rutiinitehtävä poistetaan automaattisesti tietokannan määritystä päivitettäessä. Ennalta määritetyn ajoitetun tehtävän (esimerkiksi aikataulun) ominaisuuksien alkuarvot asetetaan metatiedoissa. Jatkossa, kun sovellus on käynnissä, niitä voidaan muuttaa. Ennalta määritetyillä rutiinitehtävillä ei ole parametreja.

Rutiinitehtäväaikataulu määrittää, milloin rutiinitehtävä tulee suorittaa. Aikataulun avulla voit asettaa: tehtävän alkamis- ja päättymispäivämäärän ja -ajan, suoritusajan, viikonpäivät ja kuukaudet, joihin mennessä ajoitettu tehtävä on suoritettava jne. (katso rakennetun ohjelman kuvaus). kielellä).

Esimerkkejä rutiinitehtäväaikatauluista:

Joka tunti, vain yksi päivä

RepeatDays Period = 0, RepeatDays Period = 3600

Joka päivä kerran päivässä

RepeatDays Period = 1, RepeatDays Period = 0

Yksi päivä, yksi kerta

PeriodRepeatDays = 0

Joka toinen päivä kerran päivässä

PeriodRepeatDays = 2

Joka tunti 01.00-07.00 joka päivä

PeriodRepeatDays = 1
Toistojakso päivän aikana = 3600
Aloitusaika = 01.00
Päättymisaika = 07.00

Joka lauantai ja sunnuntai klo 09.00

PeriodRepeatDays = 1
Viikonpäivät = 6, 7
Aloitusaika = 09.00

Joka päivä viikon ajan, ohita viikko

PeriodRepeatDays = 1
Jakso Viikot = 2

Klo 01.00 kerran

Aloitusaika = 01.00

Joka kuukauden viimeinen päivä klo 9.00.

PeriodRepeatDays = 1
DayInMonth = -1
Aloitusaika = 09.00

Joka kuukauden viides päivä klo 9.00

PeriodRepeatDays = 1
Päivä kuukaudessa = 5
Aloitusaika = 09.00

Joka kuukauden toinen keskiviikko klo 9.00

PeriodRepeatDays = 1
DayWeekInMonth = 2
Viikonpäivät = 3
Aloitusaika = 09.00

Voit tarkistaa, onko tehtävä käynnissä tiettynä päivänä (ScheduleTasks-objektin RequiredExecution-menetelmä). Ajoitetut tehtävät suoritetaan aina tietyn käyttäjän nimellä. Jos ajoitetun tehtävän käyttäjää ei ole määritetty, suoritus tapahtuu oletuskäyttäjän puolesta, jolla on järjestelmänvalvojan oikeudet.

Rutiinitehtävät suoritetaan taustatehtävillä. Kun ajoittaja määrittää, että ajoitettu tehtävä pitäisi käynnistää, taustatyö luodaan automaattisesti tämän ajoitetun tehtävän perusteella, joka suorittaa kaiken jatkokäsittelyn. Jos tämä rutiinitehtävä on jo käynnissä, sitä ei suoriteta uudelleen sen aikataulusta riippumatta.

Ajoitetut tehtävät voidaan käynnistää uudelleen. Tämä pätee erityisesti silloin, kun rutiinitehtävämenetelmän suorittaminen on taattava. Rutiinitehtävä käynnistetään uudelleen, kun se päättyy epänormaalisti tai kun työntekijäprosessi (asiakas-palvelinversiossa) tai asiakasprosessi (tiedostoversiossa), jossa rutiinitehtävä suoritettiin, lopetetaan epänormaalisti. Ajastetussa tehtävässä voit määrittää, kuinka monta kertaa se on käynnistettävä uudelleen, sekä uudelleenkäynnistysten välisen aikavälin. Uudelleenkäynnistettävä rutiinitehtävämenetelmää toteutettaessa on otettava huomioon, että uudelleenkäynnistettynä sen suoritus alkaa alusta, eikä jatku epänormaalin lopettamisen hetkestä.

On tärkeää muistaa se Loppu aika ei välttämättä suorita taustatyötä määritettynä aikana. Muutama lausunto:
* Taustatyö voi jättää huomioimatta sen automaattisen peruutuksen, jos se ei ole jumissa vaan jatkaa jostain syystä
että kaikkia alustan toimintoja ei voida peruuttaa. Jos sisäänrakennetun kielen syklinen koodi suoritetaan, peruuta työ
ehkä muuten ei. Kaikki riippuu siitä, mitä työ tekee.
* Päättymisaika – raja, jonka sisällä tehtävä voi alkaa mieluummin kuin päättyy?
* Tehtävän pakotettu lopettaminen peruuttaa tapahtuman alkuun tehdyt muutokset?

Taustatöiden suorittamisen ominaisuudet tiedosto- ja asiakaspalvelinversioissa

Taustatöiden suorittamisen mekanismit tiedosto- ja asiakaspalvelinversioissa ovat erilaisia.

  • Tiedostoversiossa sinun on luotava oma asiakasprosessi, joka suorittaa taustatyöt. Tätä varten asiakasprosessin on ajoittain kutsuttava globaalia kontekstifunktiota ExecuteJobProcessing. Vain yksi asiakasprosessi tietokantaa kohden saa käsitellä taustatöitä (ja vastaavasti kutsua tätä toimintoa). Jos asiakasprosessia ei ole luotu taustatöiden käsittelemiseksi, kun työkonetta käytetään ohjelmallisesti, näyttöön tulee virheilmoitus "Työnhallinta ei ole aktiivinen". Ei ole suositeltavaa käyttää asiakasprosessia, joka käsittelee muiden toimintojen taustatöitä.

Kun asiakasprosessin taustatöitä käsittelevä prosessi on käynnistetty, muut asiakasprosessit pääsevät ohjelmallisesti käsiksi taustatyökoneeseen, ts. voi suorittaa ja hallita taustatöitä.

Asiakas-palvelin-versiossa taustatöiden suorittamiseen käytetään tehtävän ajastinta, joka sijaitsee fyysisesti klusterinhallinnassa. Kaikille jonossa oleville taustatöille ajoittaja saa vähiten ladatun työntekijäprosessin ja käyttää sitä vastaavan taustatyön suorittamiseen. Työntekijäprosessi suorittaa työn ja ilmoittaa aikatauluttajalle suorituksen tuloksista.

Asiakas-palvelin-versiossa on mahdollista estää rutiinitehtävien suorittaminen. Rutiinitehtävien suorittaminen estetään seuraavissa tapauksissa:

  • Tietokantaan on asennettu selkeä rutiinitehtävien esto. Lukitus voidaan asettaa klusterikonsolin kautta;
  • Tietokannassa on yhteyslohko. Lukitus voidaan asettaa klusterikonsolin kautta;
  • SetExclusiveMode()-metodi, jossa on True-parametri, kutsuttiin sisäänrakennetusta kielestä;
  • Joissakin muissa tapauksissa (esimerkiksi tietokannan kokoonpanoa päivitettäessä).

Luodaan metatietoja rutiinitehtävää varten

Ennen kuin luot ohjelmallisesti rutiinitehtävän tietokannassa, sinun on luotava sille metatietoobjekti.

Luodaksesi metatietoobjektin rutiinitehtävälle konfigurointipuussa ”Yleiset”-haaraan ”Rutiinitehtävät”-haaralle, suorita ”Lisää”-komento ja täytä seuraavat rutiinitehtävän ominaisuudet ominaisuuspaletissa:

Menetelmän nimi - ilmoita rutiinitehtävämenetelmän nimi.

Avain - määritä mielivaltainen merkkijonoarvo, jota käytetään ajoitetun tehtävän avaimena.

Aikataulu - osoittaa rutiinitehtävän aikataulun. Aikataulun luomiseksi napsauta "Avaa"-linkkiä ja aseta haluamasi arvot avautuvassa aikataululomakkeessa.

"Yleiset"-välilehdellä näkyvät tehtävän aloitus- ja lopetuspäivät sekä toistotila.

"Päivittäin"-välilehdellä näkyy tehtävän päivittäinen aikataulu.

Ilmoita aikataulusi:

  • tehtävän alkamis- ja päättymisaika;
  • tehtävän valmistumisaika, jonka jälkeen se lopetetaan väkisin;
  • tehtävän toistoaika;
  • tauon kesto toistojen välillä;
  • toteutuksen kesto.

On sallittua määrittää mielivaltainen ehtoyhdistelmä.

Viikoittain-välilehdellä näkyy tehtävän viikoittainen aikataulu.

Valitse niiden viikonpäivien valintaruudut, joina tehtävä suoritetaan. Jos haluat toistaa tehtävän, määritä toistoväli viikkoina. Esimerkiksi tehtävä suoritetaan 2 viikossa, toistoarvo on 2.

"Kuukausi"-välilehdellä näkyy tehtävän kuukausiaikataulu.

Valitse niiden kuukausien valintaruudut, jolloin tehtävä suoritetaan. Tarvittaessa voit määrittää tietyn toteutuspäivän (kuukausi tai viikko) kuukauden/viikon alusta tai lopusta.

Käyttö - jos asetettu, tehtävä suoritetaan aikataulun mukaisesti.

Ennalta määritetty - jos se on asetettu, tehtävä on ennalta määritetty tehtävä.

Uudelleenyritysten määrä epänormaalin lopettamisen tapauksessa - ilmaisee uudelleenyritysten määrän epänormaalin lopettamisen tapauksessa.

Uudelleenyritysväli epänormaalin lopettamisen yhteydessä – määrittää uudelleenyritysvälin epänormaalin lopettamisen yhteydessä. Esimerkkejä

Taustatyön "Täystekstihakuhakemistopäivitys" luominen:

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

Rutiinitehtävän "Sekvenssien palautus" luominen:

Aikataulu = Uusi aikataulutehtävä;
Schedule.PeriodRepeatDays = 1;
Schedule.RepeatPeriodDuringDay = 0;

Task = RoutineTasks.CreateRoutineTask("Sekvenssien palauttaminen");
Job.Schedule = Aikataulu;
Tehtävä.Kirjoita();

Työkonsoli

Käsittely ITS:llä, hoitaa rutiinitehtävät: ConsoleTasks.epf

Työskentely rutiinitehtävien kanssa

Työkohteet

Työobjekteihin ei viitata, vaan ne tallennetaan tietokantaan johonkin erityiseen tallennustilaan.

Jos "Predefined" -lippu on käytössä metatiedoissa, tällainen objekti luodaan automaattisesti, kun 1C:Enterprise käynnistetään, ja se on aina olemassa täsmälleen yhdessä esiintymässä. Tällaista objektia ei voi poistaa.

Jos "Predefined" -lippua ei ole asetettu, tällaisen tehtävän objektit luodaan ja poistetaan ohjelmallisesti määrittämällä aikataulu ja parametrit.

Tehtäväluettelon saaminen

Tehtäväluettelon saa menetelmällä Hanki RoutineTasks globaali työnjohtaja Rutiinitehtävät

ScheduledJobsManager

Hanki ScheduledJobs (GetScheduledJobs)

Syntaksi:

Hanki RoutineTasks(<Отбор>)

Vaihtoehdot:

<Отбор>(valinnainen)

Tyyppi: Rakenne. Valinnan määrittelevä rakenne. Rakennearvot voivat olla: Yksilöllinen tunniste, avain, metatiedot, ennalta määritetty, käyttö, nimi. Jos valintaa ei ole määritetty, kaikki rutiinitehtävät saadaan.

Jos suodatat metatietojen mukaan, voit määrittää metatieto-arvoksi joko rutiinitehtävän metatietoobjektin tai sen nimen.

Palautusarvo:

Tyyppi: Array.

Kuvaus:

Vastaanottaa joukon rutiinitehtäviä tietylle valinnalle. Ajoitettujen tehtävien vastaanottaminen on mahdollista vain järjestelmänvalvojalle.

Saatavuus:

Jokaiselle sääntelysyklin säännölliselle henkilölle
NewLine = Aikataulutettujen tehtävien luettelo.Add();
NewRow.Metadata = Regular.Metadata.View();
NewLine.Name = Säännöllinen.Nimi;
NewString.Key = Regular.Key;
NewLine.Schedule = Schedule.Schedule;
NewLine.User = Tavallinen.Käyttäjänimi;
NewString.Predefined = Säännöllinen.Ennalta määritetty;
NewString.Use = Regular.Use;
NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask;
Jos LastTask on määrittelemätön, silloin
NewLine.Running = LastTask.Start;
NewRow.State = LastTask.State;
loppu Jos;
EndCycle;

Luominen

Luotu Create RoutineTask -menetelmällä rutiinitehtävien johtajalle:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Name = Nimi;
RegularTask.Key = Avain;
RegularTask.Use = Käyttö;
RoutineTask.UserName = UsersSelection;
RoutineTask.Number ofRepetitionsAtEmergencyCompletion =Toistojen määräEmergencyCompletion;
ScheduledTask.RepeatIntervalAtEmergencyCompletion = RetryIntervalAtEmergencyCompletion;
ScheduleTask.Schedule = Aikataulu;
RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Name = Nimi;
JobObject.Use = tosi;

Tehtäväobjektissa on "Parameters"-kenttä, jossa menetelmäparametrit on määritetty:

Aikataulutettu työ

Parametrit

Käyttö:

Lue ja kirjoita.

Kuvaus:

Tyyppi: Array. Joukko parametreja ajoitetulle tehtävälle. Parametrien lukumäärän ja koostumuksen tulee vastata rutiinitehtävämenetelmän parametreja.

Saatavuus:

Palvelin, paksu asiakas, ulkoinen yhteys.

Huomautus:

Luku- ja kirjoitusominaisuudet ovat vain järjestelmänvalvojan käytettävissä.

Poistaminen

Poistettu tehtäväobjektin Delete()-menetelmällä:

ScheduledTask.Delete();

Työkohteen saaminen

  • lista GetRoutineTasks-menetelmällä:
    Rutiini = RutiiniTasks.GetRoutineTasks(Valinta);
  • tehtävänhallintamenetelmän FindByUniqueIdentifier-toiminnon kautta:
    Tehtävä = ScheduledTasks.FindByUniqueIdentifier(UID);

[sinun täytyy rekisteröityä nähdäksesi linkin]

Todennäköisesti yksikään vakava kokoonpano 1C 8.3:ssa tai 8.2:ssa ei pärjää ilman rutiini- ja taustatehtäviä. Ne ovat erittäin käteviä, koska ne suoritetaan selkeästi määritellyn aikataulun mukaan ilman käyttäjän tai ohjelmoijan väliintuloa.

Sinun on esimerkiksi vaihdettava tietoja toisen ohjelman kanssa kerran päivässä. Rutiini- ja taustatehtäviä käyttämällä 1C pystyy suorittamaan nämä toiminnot itsenäisesti esimerkiksi työajan ulkopuolella. Tämä menetelmä ei vaikuta käyttökokemukseen millään tavalla ja auttaa säästämään aikaa.

Selvitetään ensin, mitä ne tarkoittavat ja mikä on niiden ero:

  • Aikataulutettu tehtävä voit käynnistää mitä tahansa tiettyjä toimintoja ennalta määritetyn aikataulun mukaisesti.
  • Taustatyötä on objekti, joka sisältää suoritettavat toiminnot.

Oletetaan, että yrityksemme myy jotain ja sillä on omat nettisivut, joissa hinnat ovat. Haluamme ladata ne kerran päivässä asianmukaisuuden säilyttämiseksi.

Avaa kokoonpano ja lisää ajoitettu tehtävä.

Ominaisuuksien asettaminen

Katsotaanpa tärkeimpiä parametreja, jotka on täytettävä sen ominaisuuksissa.

  • Kentällä" Menetelmän nimi» valitsee tietyn yleisen moduulin menettelyn, joka suoritetaan suoraan. Se näyttää kaikki vaiheet hintojen lataamiseksi verkkosivustollemme. Huomaa, että suoritus tapahtuu palvelimella. Tämä on loogista, koska rutiinitoiminnot suoritetaan ilman käyttäjän osallistumista.
  • Ajastettu tehtävä voidaan poistaa käytöstä tai ottaa käyttöön tarpeen mukaan. Hänen aikatauluaan ei tarvitse muokata joka kerta. Aseta tai tyhjennä lippu "ominaisuuspaletissa". Käyttö».
  • Toinen tärkeä asia on määrittää, tuleeko tämä rutiinitehtävä ennalta määrätty, tai ei. Ennalta määritetyt rutiinitehtävät käynnistetään automaattisesti. Jos tätä lippua ei ole asennettu, sinun on käynnistettävä ne ohjelmallisesti tai käytettävä "Task Console" -käsittelyä ITS:n kanssa.
  • Voit myös määrittää toistojen määrä ja väli niiden välillä epänormaalin lopettamisen tapauksessa. Epänormaalilla lopettamisella tarkoitetaan niitä tilanteita, joissa töitä ei saatu valmiiksi virheen vuoksi.

Aikataulun laatiminen

Viimeinen vaihe on määrittää aikataulu sivustolle latauksellemme käyttämällä vastaavaa hyperlinkkiä ominaisuuspaletissa.

Näet tyypillisen aikatauluasetuksen kohdassa 1C 8.3. Tässä ei ole mitään monimutkaista. Tässä esimerkissä aloitimme hintojen lataamisen sivustolle joka päivä kello viidestä seitsemään aamulla. Mikäli suunniteltu tehtävä ei ehdi suorittaa ennen klo 7.00, se suoritetaan heti seuraavana päivänä.

Estä ajoitetut tehtävät

Suorita vakioapuohjelma "Administering 1C Enterprise Servers" ja avaa sen tietokannan ominaisuudet, jossa loit rutiinitehtävän (1C:n asiakaspalvelinversioille).

Tarkista avautuvassa ikkunassa (kun olet antanut käyttäjätunnuksesi ja salasanasi päästäksesi tietoturvaan), että valintaruutua "Rutiinitehtävien estäminen on käytössä" ei ole valittuna. Jos kohtaat tilanteen, jossa tehtävä ei toimi, tarkista ensin tämä asetus.

Samalla tavalla voit poistaa rutiinitehtävät kokonaan käytöstä kohdassa 1C 8.3. Voit poistaa tietyt taustatyöt käytöstä käyttämällä uusimpien julkaisujen taustatyökonsolia.

Tausta ja ajoitetut tehtävät tiedostotilassa

Tässä tilassa näiden tehtävien määrittäminen ja käynnistäminen on paljon vaikeampaa järjestää. Useimmiten luodaan lisätili, jonka istunto on aina auki.

Tässä tapauksessa rutiinitehtävät aktivoidaan "RunTaskProcessing()"-menetelmällä.

Voit myös käyttää seuraavaa rakennetta:

Proseduurin nimeksi sinun on määritettävä suoritettavan asiakasproseduurin nimi. Aikaväli näyttää kuinka monta sekuntia myöhemmin suoritus tapahtuu. "Kerran"-parametria ei vaadita. Se kertoo, suoritetaanko tämä toimenpide kerran vai useita kertoja.

Seurantavirheet taustatöissä

Voit tarkastella taustatöiden edistymistä sekä mahdollisten virheiden esiintymistä lokista. Aseta suodattimessa valinnaksi "Taustatyö"-sovellus ja valitse tarvittaessa kiinnostuksen tärkeys, esimerkiksi vain "Virheet".

Loki näyttää kaikki valintaasi vastaavat merkinnät sekä kommentin, joka auttaa sinua ymmärtämään virheen syyn.


kiinni