1c hvad er rutineopgaver. Rutine- og baggrundsopgaver

Spørgsmålet, vi stiller i artiklens titel, er relevant for mange systemadministratorer, der arbejder med dette produkt. Så vidt muligt forsøger vi at tale om de parametre, der påvirker 1C-ydeevnen og aflive populære myter. I dag vil vi, ved at bruge eksemplet fra en nylig sag, fortælle dig om et andet aspekt, der alvorligt kan påvirke produktiviteten - rutineopgaver.

Lad os starte med reelle tilfælde. For kort tid siden kontaktede en af ​​vores kunder os med en klage over 1C "bremserne" hos en af ​​hans medarbejdere. Symptomerne var, at Trade Management 10-konfigurationen efter et vist tidsrum begyndte at blive meget langsommere, eller mere enkelt frøs i nogen tid.

Med mere detaljeret analyse situation, viste det sig, at dette kun sker for én medarbejder, og på enhver arbejdsplads har det foregået i lang tid, men hvis tidligere "bremserne" varede omkring et sekund, kan de nu efter opdateringen vare op til 15-20 sekunder, hvilket gør arbejdet yderst ubehageligt.

I princippet er de indledende data allerede tilstrækkelige til at drage de første konklusioner. Lad os liste dem igen:

  • "Bremser" forekommer konstant, med en vis frekvens
  • Sænkes kun for én bruger
  • "Sænker farten" på enhver arbejdsplads

For at bekræfte vores gæt, lad os se på Regnskabsindstillinger:

Faktisk er "problembrugeren" angivet som en bruger til at udføre rutineopgaver. Det viste sig, at der engang kørte en RIB auto-udvekslingsopgave på vegne af denne bruger. Det er stadig at se, hvad der præcist var årsagen til den episodiske "bremsning". Dette er også nemt at gøre:

Og her er "begivenhedens helt" - opgaven med at opdatere fuldtekstsøgeindekset, som blev lanceret en gang hvert 2,5 minut. I dette tilfælde blev problemet fuldstændigt løst ved at deaktivere udførelsen af ​​rutineopgaver under denne bruger, men dette er ikke altid muligt eller tilrådeligt, så nedenfor vil vi se på, hvordan du kan administrere rutineopgaver, og hvordan du sikrer, at de gør det. ikke påvirke negativ indflydelse for ydeevne.

Regelmæssig anvendelse

I konfigurationer baseret på en almindelig applikation er der ikke et enkelt værktøj til at styre rutineopgaver. Dette skyldes i høj grad, at selve konceptet med rutineopgaver på tidspunktet for deres indledende udvikling var ret dårligt udviklet.

Mange rutineopgaver styres gennem opsætning af de tilknyttede delsystemer. For eksempel skal indstillingerne for regulatoriske opgaver relateret til dataudveksling søges i udvekslingsindstillingerne forbundet med Unified State Automated Information System i alkoholhandelsindstillingerne osv.

Ved første øjekast er alt ret logisk, men manglen på et enkelt værktøj gør det vanskeligt at kontrollere de konfigurerede rutineopgaver og optimaliteten af ​​deres indstillinger. Det er godt, hvis der er en eller to opgaver, men hvis der er flere af dem, eller som i vores tilfælde, er der mistanke om en af ​​de planlagte opgaver, men du aner ikke, hvem der har konfigureret hvad i denne database.

I dette tilfælde skal du bruge ekstern behandling KonsolTasks (Jobkonsol), som er inkluderet i sættet af standardbehandling på ITS-disken. Behandling giver en enkelt grænseflade til alle job og gør det muligt at konfigurere dem centralt samt styre de job, der kører i øjeblikket.

Denne liste skal studeres omhyggeligt, alle unødvendige opgaver skal slås fra, og de, der er nødvendige, skal have deres tidsplan tilpasset til at imødekomme umiddelbare behov og sund fornuft. For eksempel er det i vores tilfælde ikke nødvendigt at behandle EGAIS-svar en gang hvert 30. sekund (denne indstilling blev lavet til test), og i driftstilstand vil det være ganske nok at gøre dette, f.eks. en gang hver halve time.

Administreret applikation

I konfigurationer baseret på en administreret applikation tildeles rutineopgaver en mere væsentlig rolle med deres hjælp, forskellige opgaver kan udføres for at vedligeholde informationsgrundlaget og holde det opdateret, men samtidig er det rutineopgaver, som de fleste; bliver ofte årsagen til "bremser".

Der er et separat punkt i menuen til at styre rutineopgaver Administration - Support og vedligeholdelse.

Det kan umiddelbart bemærkes, at antallet af opgaver er steget betydeligt (for eksempel tog vi den samme konfiguration - Detail), og deres korrekte konfiguration kan forbedre ydeevnen af ​​informationsbasen betydeligt. Standardindstillingerne er lavet af 1C baseret på behovene hos en gennemsnitlig sfærisk virksomhed i et vakuum og er ikke engang tæt på optimale.

Først og fremmest deaktiverer vi det, der tydeligvis er unødvendigt, det du ikke arbejder med. Derefter optimerer vi tidsplanen for sjældent brugte funktioner, f.eks. opdatering af bankklassifikator i Detail, samt kontrol af modparter, kan udføres en gang om ugen i ikke-arbejdstid eller i slutningen (begyndelsen af) arbejdsdagen.

Der skal lægges særlig vægt på alt relateret til søgeindekset. Fuldtekstsøgning er bestemt en praktisk ting, men at arbejde med dets indeks er en meget, meget ressourcekrævende opgave. Derfor bør du ikke gå til det ekstreme og opgive det, men du bør seriøst genoverveje og justere dets parametre.

Lad os starte med tekstudtræk, denne handling giver dig mulighed for at søge i indholdet af vedhæftede filer, så hvis du ikke bruger dem, ikke søger gennem dem, eller du kun har billeder der, så kan denne operation under alle omstændigheder deaktiveres ved at udføre den en gang hver 85 sekunder er klart overkill.

Opdatering PPD-indeks - en af ​​de mest ressourcekrævende operationer, udført en gang i minuttet som standard.

Lad os nu tænke på, hvor ofte den information, du oftest søger efter, tilføjes eller opdateres i databasen? Det er klart ikke hvert minut, så det vil være ganske nok at opdatere indekset meget sjældnere: en gang i timen, en gang om dagen eller endda en gang om ugen.

Det samme gælder for sammenlægning af PPD-indekset Hvis du opdaterer indekset en gang om dagen, bør du konfigurere fletningen til at køre en gang om ugen, og vælge det mindst forstyrrende tidspunkt for at starte jobbet.

Disse enkle handlinger giver dig mulighed for at øge komforten ved at arbejde med den uden stor skade på konfigurationens funktionalitet. nyt niveau ved at eliminere den hyppige udførelse af ret ressourcekrævende operationer. Bare gå ikke til yderligheder; bedøm klogt, hvor meget du har brug for bestemte evner, og hvor ofte du skal udføre opgaver relateret til dem.

  • Tags:

Aktiver venligst JavaScript for at se

" I den vil vi se på nye funktioner, der ikke relaterer til systemgrænsefladen, men udvider den leverede funktionalitet på 1C:Enterprise 8-platformen markant.

Anvendelighed

Artiklen diskuterer 1C:Enterprise-platformen version 8.3.4.437. Al funktionalitet beskrevet i artiklen er blevet opdateret til version 8.3.11.

Andre innovationer i 1C:Enterprise 8.3

Lad os fortsætte med at stifte bekendtskab med innovationerne i 1C:Enterprise 8.3-platformen.

Baggrunds- og rutineopgaver i filinfobasen

I mange typiske platformskonfigurationer 8.2 der var en konstant, der indikerede den bruger, under hvem opgaverne blev udført i filversionen.

Da systemet begyndte at køre under denne bruger, blev der tilsluttet en ventehandler, som kaldte den indbyggede sprogmetode med en vis periodicitet ExecuteTaskProcessing().

Denne tilgang skabte yderligere vanskeligheder og besvær ved at bruge rutineopgaver i fildatabasen.

Dette kan især være kritisk, når man arbejder med konfigurationer som f.eks "Omfattende automatisering" eller "Styring produktionsvirksomhed, hvor regulatoriske opgaver spiller en ret vigtig rolle.

Hvis dette er fil IB så
=
Constants.UserForExecutingRoutineTasksInFileVariant.Get();
Hvis chValueVariable("glCurrentUser") =
UserTo ExecuteTaskRegl Derefter
// med et interval på sekunder kalder vi proceduren for at arbejde med rutineopgaver
SupportRegularTaskForFileVersion();
IntervalFor Poll=
Constants.IntervalFor PollingRutineTasksInFileVariant.Get();
Hvis IntervalFor Poll= Udefineret
ELLER IntervalFor Poll= 0 Så
IntervalFor Poll= 60 ;
Afslut Hvis ;
ConnectWaitHandler("Support for RoutineTaskForFileVersion",
IntervalFor Poll);
Afslut Hvis ;
Afslut Hvis ;

På platformen 8.3 implementeret arbejdet med baggrunds- og rutineopgaver i filinfobasen uden at bruge det globale kontekst-metodekald ExecuteTaskProcessing().

Baggrunds- og rutineopgaver udføres direkte i en af ​​klientapplikationerne (tynd, tyk klient) eller af en webserverudvidelse.

Et baggrundsjob, der startes af en session, udføres af det samme klientprogram, som startede det.

Baggrundsjob udføres sekventielt, dvs. På én klientapplikation kan kun én baggrundsopgave (inklusive rutineopgaver) udføres ad gangen.

Rutineopgaver udføres af kun én klientapplikation. For at kontrollere lanceringen af ​​planlagte opgaver bruges en kommandolinjetast /AllowExecuteScheduledJobs.

Rutineopgaver udføres af den første klientapplikation i startrækkefølgen, som ikke er forbudt at udføre rutineopgaver (for at forbyde sessionen skal sessionen startes med kommandolinjeparameteren /AllowExecuteScheduledJobs -Off).

Når denne session slutter, flyttes eksekveringen til en af ​​de resterende kørende sessioner.

Hvis startlinjen for klientapplikationen eksplicit angiver behovet for at køre rutineopgaver (i kommandolinje angivet /AllowExecuteScheduledJobs -Force), så begynder rutineopgaver at blive udført på den, uanset tilstedeværelsen af ​​andre sessioner.

Rutineopgaver behandles en gang hvert 60. sekund.

Bemærk, at rutineopgaverne for applikationsløsningen (i filversionen) begyndte at blive udført tidligst 1 minut efter, at klientapplikationen blev startet. Fra og med version 8.3.8 er denne tid blevet fordoblet, og derfor begynder rutineopgaver at blive udført maksimalt 2 minutter efter, at klienten er startet (i filversionen).

Denne afgørelse skyldes en reduktion af forsinkelsen ved start af ansøgningen. Desuden blev evnen tilføjet i udgivelse 8.3.7 hurtig definition at den aktuelle session er en baggrundsjobsession. Dette er implementeret ved hjælp af den nye globale kontekstmetode GetCurrentInfoBaseSession(), samt en ny metode til infobasesessionen GetBackgroundTask().

Nedenfor er kode, der illustrerer ovenstående:

Klik på billedet for at forstørre.

Beregning af kontrolsummer

Platformen indeholder nu mekanismer til beregning af datakontrolsummer.

Lad os huske det check sum(hash) er en værdi, der beregnes ud fra et sæt data ved at anvende en bestemt algoritme og bruges til at kontrollere integriteten af ​​data under transmission eller lagring.

Hashes kan bruges til at kontrollere identiteten af ​​data (du skal f.eks. sikre dig, at filen ikke blev beskadiget ved overførslen; tjek om der er foretaget ændringer i filen, og i så fald upload den til databasen igen) .

Til dette formål blev et objekt implementeret i platformen HashingData, tilgængelig på serveren, i den tykke klient, ekstern forbindelse og også på mobilapplikationsserveren.

Dette objekt har to metoder: Tilføje() Og Tilføj fil(), som opdaterer hash-summen under hensyntagen til de data, der sendes i parametrene.

Platform 8.3.4.437 understøtter beregning af følgende hash-funktioner: CRC32, MD5, SHA1, SHA256. Men funktionerne SHA1 Og SHA256 er ikke understøttet på den mobile platform.

Lad os se på et simpelt eksempel. Det antages, at der på serveren i programbiblioteket er en fil " ragent.exe" Skal beregne MD5-sum for denne fil.

For at gøre dette vil vi oprette en ekstern behandling, på hvilken form vi vil placere kommandoen Beregn. Behandleren indeholder følgende kode:

&OnClient
Procedure Beregn (kommando)
Resultat = CalculateOnServer();
Rapport(String(Resultat));
Slutprocedure
&På server
Fungere CalculateOnServer()
Hash = Ny HashingData(HashFunction.MD5);
Hash.AddFile(Katalogprogrammer() + "ragent.exe" );
Returner Hash.HashSum ;
EndFunction

I udgave platform 8.3.10+ i metoden Tilføje() objekt HashingData Det blev muligt at bruge en strøm af binære data, hvilket i høj grad forenklede deres brug til at løse forskellige anvendte problemer med at opdatere hash-summer.

Arbejde med beskyttede versioner af protokoller SMTP/POP3

På platformen 8.3 blev det muligt at bruge beskyttede versioner af protokoller SMTP/POP3(der er vilkår SMTPS/POP3S eller SSLSMTP/SSLPOP3).

Til objekt InternetMailProfile nye ejendomme implementeret:

  • Brug SSLSMTP;
  • Brug SSLPOP3;
  • Kun SecureAuthenticationSMTP;
  • Kun POP3 Secure Authentication.

Ejendomme AuthenticationSMTP Og POP3-godkendelse objekt InternetMailProfile, samt overførsler SMTPA-godkendelsesmetode Og POP3-godkendelsesmetode brug anbefales ikke - de understøttes af kompatibilitet.

Brug af en sikker protokol SMTPS gør det muligt at sende mail fra 1C, ved brug af i postkassen Google.

Lad os se på et eksempel. På formularen vil vi placere felter til indtastning af emnet for brevet og modtagerens adresse, og til indtastning af brevets tekst - et formateret dokumentfelt.

Klik på billedet for at forstørre.

Når du trykker på knappen Sende Følgende kode vil blive udført:

&OnClient
Procedure Send (Kommando) Mail = Ny InternetMail; Profil = Ny InternetMailProfile;
Profile.SMTPServerAddress= "smtp.googlemail.com" ;
Profil.BrugerSMTP= “[e-mail beskyttet]” ;
Profil.PasswordSMTP= "PASSWORD" ;
Profil.BrugSSLSMTP= Sandt ;
Profile.SMTPPort = 465 ; Forsøg
Mail.Connect(Profil);
Undtagelse
Rapport(ErrorDescription());
Vend tilbage ;
Slutforsøg ; MailMessageText= “” ;
Vedhæftede filer = Ny struktur;
Tekst.GetHTML(MailMessageText, Vedhæftede filer ); MailBesked= Ny InternetMailMessage;
MailMessage.Recipients.Add(Til hvem );
MailMessage.Subject= Emne;
MailMessage.Texts.Add(MailMessageText,
MailMessageTextType.HTML); Mail.Send ( MailBesked); Mail.Afbryd forbindelsen();
Slutprocedure

Bemærk, at hvis SMTP-serveren i vores eksempel ikke var i stand til at sende en e-mail til modtageren(e), så Mail.Send(MailMessage) kastede en undtagelse. Dette medførte visse gener for udviklerne, fordi... Årsagen til at kaste undtagelsen var ikke indlysende.

I version 8.3.9 er denne adfærd ændret, og nu returnerer metoden Send() et match, hvis nøgle er modtageren, og hvis værdi er diagnosticeringen fra mailserveren. Dette giver dig mulighed for nøjagtigt at bestemme årsagerne til, at du ikke har sendt en e-mail til hver modtager. I kompatibilitetstilstand med version 8.3.8 er adfærden ikke ændret.

Tosidet tryk

På platformen 8.2 Selve platformen klarede ikke dupleksudskrivning. Denne funktion kunne kun styres ved hjælp af printerdriveren.

På platformen 8.3 det blev muligt at styre dupleksudskrivning for et regnearksdokument, et grafisk diagram (fra det indbyggede sprog og interaktivt) og et tekstdokument (kun interaktivt).

Systemopregninger dukkede op på det indbyggede sprog:

  • Duplex udskrivningstype(Ingen, FlipUp, FlipLeft);
  • (Auto, MirrorTop, MirrorLeft, Må ikke bruges).

Og til genstande Tabeldokument Og grafisk skema egenskaber dukkede op Tosidet tryk Og Skift af sidearrangementer, hvormed du kan ændre layoutet på udskrevne sider.

I platformversion 8.3.9 har DuplexPrintType-systemopregningen en ny værditilvækst Brug Printerindstillinger. Valg af denne værdi gav dig mulighed for at bruge printerindstillingerne, når du udskriver systemdokumenter. I 8.3.8-kompatibilitetstilstand er adfærden uændret, og de tilsvarende printerindstillinger ignoreres.

Dialogen til udgivelse af en informationsbase på en webserver er blevet mere funktionel. Nu udgivelse fra konfiguratoren giver dig mulighed for at indstille alle filparametre default.vrd.

For dialogen til udgivelse af en webklient og webtjenester gennem konfiguratoren er følgende implementeret:

  • mulighed for at kontrollere tilgængeligheden af ​​webtjenester som standard (attribut pointEnableCommon element ws);
  • mulighed for at kontrollere udførelsen af ​​baggrundsjob i filversionen (attribut tillade at udføre planlagte job element ws).

Hvis afkrydsningsfeltet "Udgiv webtjenester som standard" på bogmærket "Grundlæggende" er installeret, så udgives de valgte webtjenester automatisk ved opdatering af publikationen.

Ellers vil webtjenesterne blive markeret som ikke-publicerbare. Dette flag svarer til attributten pointEnableCommon element ws i fil default.vrd, beregnet til opsætning af en webklient og webtjenester.

Attribut pointEnableCommon ws element er ansvarlig for muligheden for i denne informationsbase at bruge webtjenester, der er udgivet uden eksplicit angivelse af tilladelse til brug (attribut aktivere element punkt).

Hvis attributten har en værdi rigtigt, derefter alle webtjenester, for hvilke attributværdien ikke er eksplicit angivet aktivere element punkt, vil være tilladt til brug.

Ellers vil brugen af ​​sådanne webtjenester være forbudt.

Indstillinger "Baggrundsjob i filtilstand" matcher attribut tillade at udføre planlagte job ws element i filen default.vrd.

Attribut tillade at udføre planlagte job styrer muligheden for at udføre rutineopgaver af webserverudvidelsen for filversionen af ​​infobasen.

Attributten kan have følgende værdier:

  • af– i dette tilfælde vil webserverudvidelsen ikke udføre rutineopgaver. Rutineopgaver vil blive udført af en klientapplikation (hvis en sådan findes), som forbinder til infobasen direkte uden brug af en webserver.
  • kraft– i dette tilfælde vil webserverudvidelsen udføre rutineopgaver.
    Hvis værdien af ​​denne attribut ikke er angivet, vil rutineopgaver blive udført af den applikation, der vil blive brugt til at oprette den første forbindelse til infobasen.

Udgivelsesvinduet på webtjenesten er blevet endnu mere bekvemt og ergonomisk i den nuværende udgivelse af platformen. Nu er parametrene, der beskriver OpenID-godkendelse, placeret på en separat fane.

Nummerering af infobase objekter

På platformen 8.3 Mekanismen til automatisk nummerering af informationsbaseobjekter er blevet redesignet. Det unikke af et nummer eller en kode (inklusive dem, der opnås som et resultat af automatisk generering af et nummer eller kode) kontrolleres altid, når et objekt registreres.

En indikation af, hvilket nummer eller hvilken kode, der ikke er unik, er tilføjet teksten i meddelelsen om krænkelse af et nummers eller kodes unikke karakter.

Brugen af ​​et ledigt nummer eller kode er ændret. Nyt nummer eller koden tildeles uden brug af frigivne numre eller koder, hvis der allerede er udstedte numre eller koder med et stort (i rækkefølge) præfiks af nummeret eller koden.

Aggregerede funktioner i datasammensætningssystemets udtrykssprog

Nye aggregerede funktioner implementeres i datasammensætningssystemets udtrykssprog:

  • Hver();
  • Nogen();
  • StandardDeviationofPopulation();
  • StandardSampleDeviation();
  • VarianceSamples();
  • VarianceofPopulation();
  • CovariancePopulation();
  • SampleCovariance();
  • Korrelation();
  • RegressionSlope();
  • RegressionSegment();
  • RegressionCount();
  • RegressionR2();
  • RegressionAverageX();
  • RegressionAverageY();
  • RegressionAverageSXX();
  • RegressionAverageSYY();
  • RegressionAverageSXY().

Som navnene indikerer, er der tale om statistiske funktioner, hvilket betyder, at udviklere har mulighed for at lave komplekse rapporter uden at skulle udvikle procedurer til beregning af statistiske data.

Klik på billedet for at forstørre.

Som du kan se på figuren, er der ingen nye funktioner i rullelisten, men hvis du indtaster dem manuelt, kommer der ingen fejlmeddelelse, og rapporten genereres:

Også af interesse ny funktionKlassifikationABC(). Resultatet af funktionen vil være klassenummeret, startende fra 1 (1 svarer til klasse A, 2 til klasse B, 3 til klasse C osv.).

Lad os demonstrere, hvordan denne funktion fungerer. Lad os oprette en ny ekstern rapport "Klassificering af varer" baseret på anmodning:

VÆLGE
ProduktforbrugProdukter.Produkt,
ProduktforbrugProdukter.Mængde
FRA
Dokument.Forbrug af varer.Varer HVORDAN Produktforbrug Produkter

Lad os definere et nyt beregnet felt Klasse:

Klik på billedet for at forstørre.

Lad os konfigurere ressourcerne som følger:

Klik på billedet for at forstørre.

I brugertilstand ser rapporten sådan ud:

Afslutningsvis bemærker vi, at fra udgave til udgave i 1C 8.3-platformen bliver ACS-mekanismen konstant forbedret og forfinet, og inden for rammerne af vores "nybegynder"-artikel er det ikke muligt at præsentere disse ændringer fuldt ud. Ja, det virker unødvendigt, for når du arbejder på den aktuelle version af platformen, kan du altid bruge forskellige hjælpesystemer til at hjælpe dig med at analysere dette eller det aspekt af driften af ​​denne mekanisme.

Derudover skal du ikke glemme vores separate kursus Professionel udvikling af rapporter i 1C 8.3 om Data Composition System, som nedbryder alle finesser og faldgruber til atomet, når du arbejder med denne mekanisme. Tjek selv demoen ud.

Så lad os opsummere de mellemliggende resultater. Indtil nu har vi stiftet bekendtskab med de nye funktioner i Taxi-grænsefladen og administrerede formularer, samt nogle tidligere ikke-leverede funktioner på selve platformen. Nu er det tid til at se, hvilke praktiske funktioner der er blevet tilgængelige for udvikleren i konfiguratoren.

Giver os mulighed for at udføre alle beregninger i systemet ubemærket af brugeren, det vil sige i baggrunden. Desuden giver denne mekanisme os mulighed for at parallelisere beregningsprocessen. Vi kan endda parallelisere den procedure, der vil blive udført. For at gøre dette skal vores baggrundsjob køre flere baggrundsjob. I dette tilfælde er processerne paralleliserede, og hvis vi har et multiprocessor, multi-core system, vil vores algoritme fungere effektivt. Efter at have startet flere processer, kan vi fortælle systemet, at det skal vente på afslutningen af ​​disse processer for på en eller anden måde at kombinere resultatet.

For eksempel, i typiske konfigurationer, mens brugeren arbejder forskellige slags servicebaggrundsjob. Dette kan bevises af logposter, der registrerer, at sådanne handlinger blev udført. Desuden påvirker dette ikke brugerens arbejde på nogen måde, han bemærker dem simpelthen ikke.

Ideelt set implementeres et baggrundsjob i en klient-server-version, i hvilket tilfælde hele belastningen går til serveren. Hvad angår filindstillingen, er et baggrundsjob muligt, men det har nogle ejendommeligheder.

Dette er, hvad systemet vil producere, hvis du ikke tager disse funktioner i betragtning og kører et baggrundsjob i filversionen af ​​infobasen.


1C-baggrundsjobbet har nogle begrænsninger. Da det kører på serversiden, er der ingen mulighed for interaktivt arbejde med brugeren. For eksempel kan du ikke vise en besked eller nogen information overhovedet. Alle disse data skal opbevares i informationsbasen og viderebehandles på en eller anden måde.
Ved at kontakte syntaksassistenten kan du få mere detaljeret information om 1C baggrundsjob. Det skal her bemærkes, at dette objekt udelukkende er software og ikke er gemt i databasen på nogen måde. Det vil sige, at vi opretter en instans af klassen, initialiserer egenskaberne og starter den til udførelse.

Hvilke værktøjer har vi til at håndtere baggrundsjob? Denne facilitet er et metadataobjekt "Baggrundsopgavehåndtering". Dette objekt har en metode "Løb", ved hjælp af denne metode startes baggrundsjobbet.

Den har følgende parametre:
"Metodenavn"- navnet på den procedure eller funktion, der skal udføres, og det skal være en procedure eller funktion i serverkonteksten;

"Muligheder"- en række parametre, hvis antal elementer skal svare til antallet af parametre for vores procedure/funktion, der er angivet i parameteren "Metodenavn";

"Nøgle"- en vis unikhedsnøgle, som er en linje, hvorved systemet forstår, om en baggrundsopgave skal startes, eller om en sådan opgave allerede kører;

"Navn"- her kan du angive en vilkårlig beskrivelse af vores metode.

Returværdien er et objekt "Baggrundsopgave", der indeholder det aktuelle metodenavn, den aktuelle nøgle og flere flere egenskaber og metoder. En sådan metode er metoden "Vent fuldført". Dens formål er, at vi kan fortælle systemet ikke at gøre noget, før baggrundsjobbet er afsluttet.

Baggrundsjob 1C 8.2, 8.3 - Eksempel på brug

Lad os give et eksempel på at arbejde med 1C baggrundsjob. Først vil vi oprette en simpel algoritme, der kortvarigt indlæser 1C-systemet på en sådan måde, at vi ikke kan gøre noget på nuværende tidspunkt.

For det:

1. Lad os oprette et fælles modul "Baggrundsopgavebehandlere", som vil blive kompileret på serversiden;


2. Vi vil beskrive eksportproceduren i den "ProduceBackgroundCalculation(Parameter)", som tager én parameter af strengtype;

Procedure PerformBackgroundCalculation(Parameter) ExportStartTime = CurrentDate() ;< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление(Mens CurrentDate() - Starttid"Nogle parameter"
Parat. Når du nu begynder at behandle og trykker på en knap, fryser systemet i flere sekunder, hvor der ikke kan gøres noget. Det er præcis, hvad vi skulle gøre.

Nu vil vi sikre, at disse beregninger udføres i baggrunden, det vil sige, så baggrundsopgaven 1C 8.2, 8.3 udføres, men ikke forstyrrer os.

For det:

1. Under behandlingen skal du skrive følgende kode i knappen klik-hændelse.

Procedure KnPress() Parameters = New Array; Mens CurrentDate() - Starttid Muligheder. Tilføje( ); Baggrundsopgave. Løb ( "Background Task Handlers. Udfør baggrundsberegning""Nogle parameter"

, Parametre, New UniqueIdentifier,

"Prøve"

  • Her sender vi navnet på den fælles modulprocedure som den første parameter, og en række parametre som den anden. Den tredje parameter skal have en unik nøgle og den fjerde parameter en beskrivelse af vores procedure.
  • Når der vedligeholdes registreringer, er der ofte behov for periodisk at udføre visse handlinger uden brugerindblanding. Rutine- og baggrundsopgaver i 1C er de mekanismer, der er tilvejebragt til dette formål i den ottende version af programmet og tillader:
  • Opsætte rettidig levering af dokumenter; Beregn saldi og totaler;;
  • Angiv frekvens

postliste

Tjek og slet irrelevante data. Baggrund og planlagt opgave - hvad er det, og hvor er det konfigureret?

Planlagt opgave

- en mekanisme indbygget i 1C, der giver dig mulighed for at konfigurere og i overensstemmelse med den etablerede tidsplan og frekvens udføre en bestemt rækkefølge af handlinger.

  • Et baggrundsjob er en handling genereret af en rutineoperation og kræver ikke direkte brugerdeltagelse.
  • En rutineopgave oprettes i konfiguratortilstanden:
  • I konfigurationstrævinduet finder vi den tilsvarende gren (fig. 1);

Klik på knappen Tilføj;

  • I vinduet, der åbnes, skal du angive et navn, der giver dig mulighed for at identificere objektet i konfigurationen;

Fig.2

  • Overfor inskriptionen "Schedule" (fig. 2) er der en inskription "Åbn", ved at klikke på, hvilket åbner et vindue til indstilling af tidspunktet og hyppigheden af ​​udførelsen af ​​handleren (fig. 3);
  • Fig.3
  • Det er også nødvendigt at udfylde "Metodenavn" (navnet på proceduren kaldet fra det generelle modul og beskriver programmets adfærdsalgoritme vil blive indtastet her);
  • "Foruddefineret" skal indstilles, hvis handleren skal startes umiddelbart efter den er tilføjet til databasen, ellers kan lanceringen ske fra den tilsvarende behandling (mere om det nedenfor);
  • Parametrene "Antal genforsøg" og "Forsøgsinterval" beskriver programmets adfærd, hvis der opstår en undtagelse under udførelsen af ​​et baggrundsjob.

Så ved at bruge mekanismen for rutineoperationer kan du indstille tidsplanen og hovedhandlingerne for baggrundsjob. Lad os nu se på deres funktioner.

Funktioner af baggrundsjob

Hovedtræk ved denne mekanisme er, at baggrundsprocessen kører asynkront.

Hvad betyder det? Faktum er, at med en synkron arbejdsmodel, hvis en algoritme udføres, er brugergrænsefladen blokeret. I vores tilfælde kan brugeren fortsætte med at indtaste og redigere data, selvom proceduren kører. Den asynkrone programmeringsmodel involverer adskillelse af beregningstråde.

Således kan baggrundsjob i 1C skabe deres egne processer og distribuere beregninger på tværs af forskellige servere, der er inkluderet i den samme klynge.

Funktioner ved at arbejde i klient-server-tilstand

  • Udførelsesplanlægning og kontrol udføres af en planlægger fra en serverklynge;
  • Hvis der vises en anmodning om udførelse, leder planlæggeren efter klyngearbejdsprocesser med minimal belastning og distribuerer opgaver til dem til udførelse;
  • Hver proces kan udføre flere parallelle beregninger;
  • Efter en opgave ankommer, forbindes processen med databasen og udfører algoritmen i den;
  • Processen rapporterer resultaterne til planlæggeren.

Baggrundsjob i filtilstand

Før platformversion 8.3.3.641 var der nogle vanskeligheder at arbejde med baggrundsjob i filversionen:

  1. Det var nødvendigt at lancere en separat session, der ville arbejde døgnet rundt og erstatte skemalæggeren;
  2. Denne session skulle periodisk have udført RunJobProcessing()-metoden.

Efter opdateringen starter hver start af de tykke og tynde klienter, hvis AllowExecuteScheduledJobs-nøglen er angivet i startindstillingerne (fig. 4) i feltet "Yderligere", en ekstra tråd til tilslutning til databasen, som ikke påvirker brugerens arbejde på nogen måde, men udfører kun baggrundsopgaver.

Fig.4

Det skal tages i betragtning, at selv i filversionen af ​​arbejdet tillader baggrundsprocesser ikke interaktivt arbejde med brugeren (servicemeddelelser, advarsler og spørgsmål vil ikke blive vist). Det vil sige, at de skal kodes, som om de ville blive udført på serversiden.

Sådan deaktiveres planlagte opgaver

Ubrugte opgaver kan deaktiveres ved blot at fjerne markeringen i afkrydsningsfeltet "Brug" i objektegenskaberne.

I det tilfælde, hvor administratoren skal forbyde brugen af ​​rutine- og baggrundsoperationer for hele databasen som helhed (for eksempel lagres flere databaser på serveren, hvoraf kun én er den primære, og resten bruges kun til udvikling), er det nødvendigt at bruge databaseadministrationsværktøjet. Du kan også markere afkrydsningsfeltet "Indstil blokering af rutineopgaver" i databasen oprettet på serveren.

Derudover har ITS-diskene en speciel behandling "Task Console", som giver dig mulighed for at redigere tidsplanen baggrundsprocesser og ændre deres aktivitet.

Håndtering af rutineopgaver i 1C-databaser fra opdateringsprogrammet

2018-11-20T15:18:30+00:00

I denne note vil vi gennemgå opdateringsprogrammets muligheder til at styre rutineopgaver i databaser.

Først og fremmest i punktet "Mere" -> "Administrer rutineopgaver...":

I kontekstmenu dedikeret database (eller gruppe af databaser):

Og endelig, i skabeloner til batchscripts (dette giver dig mulighed for at udføre operationer på rutineopgaver fra et script i henhold til en tidsplan):

Sådan ser dialogen til styring af rutineopgaver i databaser ud:

Hvilke problemer giver det mulighed for at løse i den rigtige gruppe baser (eller én base)?

Udvælgelse af rutineopgaver

Bemærk venligst, at du kan vælge en liste over rutineopgaver i mange operationer nedenfor:

Men i valgdialogen er der muligvis ikke rutineopgaver specifikt til din database:

I dette tilfælde kan du angive navnene på de planlagte opgaver, du har brug for i afsnittet "Dine opgaver...", for eksempel sådan:

Navnene på sådanne rutineopgaver kan tages direkte fra rapporten om alle rutineopgaver (dette diskuteres).

Viser den aktuelle status for opgaver

For at gøre dette skal du gå til fanen "Tilbagetrækning" og klikke på knappen "Tilbagetrækning...":

I resultaterne kan vi se:

  1. Lanceringen af ​​nye planlagte opgaver på 1C-serveren er aktiveret eller deaktiveret.
  2. Liste over rutineopgaver i databasen.
  3. Deres tidsplan.
  4. Jobs er aktiveret eller deaktiveret.
  5. Hvis den sidste kørsel af en opgave havde en fejl, vises denne fejl med rødt ved siden af ​​opgaven.

Om nødvendigt kan vi i funktionsindstillingerne indsnævre listen over planlagte opgaver og også kun vise aktiverede opgaver:

Slå alle eller nogle opgaver fra

For at gøre dette skal du gå til fanen "Sluk":

For alle eller udvalgte planlagte opgaver vil afkrydsningsfeltet "Brug" blive fjernet.

Her er resultatet for én base (klik for at udvide)

Medtag alle eller nogle opgaver

For at gøre dette skal du gå til fanen "Aktiver":

For alle eller udvalgte planlagte opgaver vil afkrydsningsfeltet "Brug" være markeret.

Bemærk venligst, at flaget "Make" er tilgængeligt på denne fane. sikkerhedskopi base" i nederste venstre hjørne.

Her er resultatet for én base (klik for at udvide)

Vi styrer lanceringen af ​​planlagte opgaver på 1C-serveren

For at gøre dette skal du gå til fanen "1C Server":

Vælg "bloker" eller "fjern blokering", og klik på knappen "Kør".

Opsætning af en opgaveplan

Men hvad nu hvis vi skal opsætte en tidsplan for lancering af en opgave (eller gruppe af opgaver) i mange databaser på én gang?

For at gøre dette skal du gå til fanen "Opsæt tidsplan":

Vi sætter tidsplanen op (dialogen og dens muligheder falder fuldstændig sammen med standarden i selve 1C) og klikker på "Tilpas...".

Vi igangsætter opgaver til udførelse

For at gøre dette skal du gå til fanen "Kør":

Vælg de nødvendige opgaver, og klik på knappen "Kør":

Gemmer opgaveindstillinger til en ekstern fil

Lad os antage, at vi ideelt har konfigureret rutineopgaver i en af ​​databaserne og ønsker at overføre disse indstillinger til alle andre databaser.

For at gøre dette uploader vi først alle opgaveindstillinger i den ideelle database til en ekstern fil:

Gendannelse af opgaveindstillinger fra en ekstern fil

Og så indlæser vi denne fil med opgaveindstillinger i alle andre databaser:

Bemærk blot, at for denne opgave (overførsel af jobindstillinger fra en database til en anden), valgte jeg matchningsmetoden efter jobnavn og ikke efter intern identifikator.

Afskedsord

Generelt var det alt, jeg ville fortælle dig. Jeg ser selv mange scenarier for at bruge nye funktioner, men her har jeg lige skimmet over hovedpunkterne.