Hur man felsöker en bakgrundsuppgift 1s 8.3. Felsökning av bakgrundsjobb. Visa värde när du håller muspekaren

Förmodligen kan inte en enda seriös konfiguration på 1C 8.3 eller 8.2 klara sig utan användningen av schemalagda uppgifter och bakgrundsuppgifter. De är mycket bekväma, eftersom de kommer att utföras enligt ett tydligt definierat schema utan inblandning av användare och programmerare.

Till exempel behöver du utbyta data med ett annat program en gång om dagen. Med hjälp av rutin- och bakgrundsuppgifter kommer 1C att kunna utföra dessa åtgärder på egen hand, till exempel under icke-arbetstid. Denna metod kommer inte att påverka användarnas arbete på något sätt och kommer att spara tid.

Låt oss först ta reda på vad de betyder och hur de skiljer sig:

  • Schemalagd uppgift låter dig köra specifika åtgärder enligt ett förkonfigurerat schema.
  • Bakgrundsjobbär ett objekt som innehåller de åtgärder som ska utföras.

Anta att vårt företag säljer något och har en egen hemsida med priser. En gång om dagen vill vi lasta av dem för att behålla relevansen.

Öppna konfigurationen och lägg till en schemalagd uppgift.

Ställa in egenskaper

Tänk på de viktigaste parametrarna som måste fyllas i dess egenskaper.

  • I fältet " Metodnamn» proceduren för någon specifik allmän modul väljs, som kommer att köras direkt. Det kommer att indikera alla åtgärder för att ladda upp priser till vår webbplats. Observera att exekveringen kommer att ske på servern. Detta är logiskt, eftersom rutinoperationer utförs utan användaringripande.
  • Schemalagd uppgift kan inaktiveras eller aktiveras efter behov. Du behöver inte ändra hans schema varje gång. För att göra detta, i egenskapspaletten, markera eller avmarkera " Användande».
  • En annan viktig inställning är om denna schemalagda uppgift kommer att vara förbestämd, eller inte. Fördefinierade schemalagda jobb körs automatiskt. Om denna flagga inte är inställd måste du köra dem programmatiskt, eller använda "Job Console"-bearbetningen med ITS.
  • Du kan också ange antalet repetitioner och intervallet mellan dem vid krasch. Onormalt slutförande hänvisar till de situationer då uppgifter inte slutfördes på grund av ett fel.

Schemainställning

Det sista steget är att sätta upp ett schema för vår uppladdning till webbplatsen med hjälp av lämplig hyperlänk i egenskapspaletten.

Du kommer att se en typisk schemainställning i 1C 8.3. Det är inget komplicerat här. I det här exemplet satte vi upp lanseringen av vår uppladdning av priser till webbplatsen dagligen från fem till sju på morgonen. I händelse av att den schemalagda uppgiften inte hinner träna innan 07:00 kommer den att slutföras nästa dag.

Blockera schemalagda uppgifter

Kör standardverktyget 1C Enterprise Server Administration och öppna egenskaperna för infobasen där du skapade den schemalagda uppgiften (för 1C klient-serverversioner).

I fönstret som öppnas (efter att ha angett inloggning och lösenord för åtkomst till IB), kontrollera att flaggan på objektet "Blockering av schemalagda uppgifter är aktiverad" inte är inställd. Om du stöter på en situation där uppgiften inte fungerar, kontrollera den här inställningen först.

På samma sätt kan du helt inaktivera schemalagda uppgifter i 1C 8.3. För att inaktivera specifika bakgrundsjobb kan du använda "Background Jobs Console"-bearbetningen som är inbyggd i de senaste utgåvorna.

Bakgrund och schemalagda jobb i filläge

I det här läget är det mycket svårare att organisera och köra dessa jobb. Oftast ett tillägg konto, vars session alltid kommer att vara öppen.

Aktivering av schemalagda uppgifter i detta fall utförs med metoden "PerformProcessingTasks()".

Du kan också använda följande konstruktion:

Procedurnamnet måste vara namnet på klientproceduren som ska utföras. Intervallet visar hur många sekunder exekveringen tar. Parametern "Once" är valfri. Det speglar om detta förfarande en eller flera gånger.

Spårningsfel i bakgrundsjobb

Du kan se förloppet för bakgrundsjobb, såväl som förekomsten av möjliga fel i registreringsloggen. I filtret ställer du in valet på applikationen "Bakgrundsuppgift" och väljer vid behov vikten av intresse, till exempel endast "Fel".

Loggen visar alla poster som matchar ditt val med en kommentar som du kan använda för att förstå orsaken till felet.

Ibland blir det nödvändigt att felsöka en (vanlig) bakgrundsuppgift. Det är här problemet ofta uppstår.

Ibland blir det nödvändigt att felsöka en (vanlig) bakgrundsuppgift. Det är här problemet ofta uppstår. Och detta problem ligger i det faktum att felsökaren inte kan ansluta till den körbara processen på serversidan.

För att lösa detta problem måste vi lösa två problem:

1. Aktivera felsökning på 1C-servern. Som standard är felsökning på servern inaktiverad och för att aktivera den måste du: Köra Windows-registret, skriver i " Springa"kommando REGEDIT. Hitta en linje

"C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent

(tagen från startparametrarna för tjänsten 1C:Enterprise 8.1 Server Agent). (detta är för plattformsversion 8.1)

Lägg till en nyckel till slutet -felsöka (glöm inte att sätta ett mellanslag före -debug-nyckeln)

Exempel
. "ImagePath"= var "C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv81\server" sätta "C:\Program Files\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -felsöka-d "C:\Program Files\1cv81\server"

Starta om serveragenten. Redo. Nu har vi tillgång till att felsöka servertrådar för körning.

2. Bokstäverna i servernamnet och basnamnet i klientanslutningen till 1C-servern måste matcha exakt.

Rätt anslutning:
Bakgrundsjobb Klient - Srvr="SERVER-NAME";Ref="Basnamn";
Fel anslutning:
Bakgrundsjobb - Srvr="SERVER-NAME";Ref="Basnamn"; Klient - Srvr="Servernamn";Ref="Basnamn";

Hur tar man reda på vilka parametrar bakgrundsuppgiften kopplar till databasen? Du kan komma på olika sätt, varav ett är att logga dessa parametrar under utförandet av ett bakgrundsjobb.

Koden är följande:

Procedur WriteConnectionWithBase() Exportera
Journalanteckning Registrera(,InfoBase Connection String());
Slutprocedur

Under körningen av ett bakgrundsjobb kommer en rad med databasanslutningsparametrarna som används av bakgrundsjobbet att skrivas till registreringsloggen.


Nu anger vi automatisk anslutning till bakgrundsuppgifter.

Efter att ha utfört sådana manipulationer kan du felsöka bakgrundsjobb.


Har du läst än? Du kommer att vara intresserad...

Felsökning 1C- en mycket kraftfull och funktionell mekanism för 1C 8.3-plattformen, som gör att du snabbt kan hitta fel i programkoden (på andra programmeringsspråk kallas detta "debug", från engelskan "debug").

Nedan kommer vi att överväga de viktigaste metoderna för att använda felsökningsmekanismen i form av en praktisk instruktion med ett specifikt exempel.

Uppmärksamhet! Om du använder ett klient-serverdriftläge (på en server), behöver du .

Det enklaste sättet att börja felsöka i 1C är att öppna 1C i läge och starta felsökningsläge från det i önskat läge (tunt/tjockt, hanterat/normalt):

Felsökning av bakgrundsjobb 1C

För att kunna felsöka bakgrundsjobb måste du gå till menyn "Debug - Connect". Klicka på knappen "Auto Connect" i fönstret som öppnas:

I det här fönstret kan du ställa in motsvarande flagga.

Förutom bakgrundsjobb kan du i det här fönstret aktivera felsökning av externa anslutningar, http och .

Ställa in en brytpunkt (brytpunkt)

Det andra steget i felsökning är att sätta en brytpunkt (i andra programmeringsspråk, en brytpunkt).

Till exempel valde jag hanteraren "On Change" på dokumentformuläret för felsökning:

För att ställa in en brytpunkt måste du hitta önskad programkod och dubbelklicka på fältet till vänster om kodinmatningsfältet (eller tryck på F9-knappen):

För att se en lista över alla installerade måste du gå till menyn Debug - Lista brytpunkter (alt + F9):

Få 267 1C-videolektioner gratis:

Brytpunkt 1C med skick (blå)

Utöver den vanliga brytpunkten i 1C finns en annan typ av brytpunkt - med ett villkor. Grafiskt visas en sådan punkt i blått. En sådan brytpunkt är mycket användbar när du behöver fånga en viss iteration medan du korsar i en loop. Felsökning aktiveras när ett visst villkor är uppfyllt.

Låt oss till exempel stoppa slingan vid rad nummer 25:

Inaktiv brytpunkt (grå)

En grå brytpunkt betyder att den inte är aktiv, systemet kommer inte att stanna vid en sådan brytpunkt. Du kan göra den inaktiv genom att klicka på specialknappen på panelen Inaktivera brytpunkt (shift+ctrl+F9):

Brytpunkt felaktigt

Systemet kan sluta på grund av ett fel, för detta måste du ställa in motsvarande flagga i Debug-menyn - Stop by error:

Att stoppa genom fel har också funktionalitet som liknar en villkorlig brytpunkt - den låter dig filtrera undantag med en specifik feltext.

Steg-för-steg-rörelse genom 1C-programkoden

Efter att ha ställt in en brytpunkt måste du initiera exekveringen av den önskade programkoden så att systemet går in i steg-för-steg exekvering av koden. Visningen av en pil indikerar början av kodstegningsläget:

För att ta ett steg till nästa rad måste du trycka på "F11" (Steg till).

Om du går igenom raderna med programkod och det finns en procedur eller funktion på raden, kommer du att "falla igenom" i denna procedur (eller funktion).

För att inte "falla igenom" räcker det istället för F11 (Step In) att hoppa genom raderna med F10 (Step Through)-knappen, denna knapp låter dig stega igenom procedurerna i programkoden.

För att flytta från den aktuella markörpositionen till den önskade, förbi mellanliggande kodrader, måste du placera markören på önskad rad och trycka på skift + F10 (gå till markören).

Analys av värden i felsökningsläge 1C

Du kan se värdena för vissa värden olika sätt:

Visa värde när du håller muspekaren

När du håller muspekaren över en variabel "markerar" systemet variabelns värden:

Använda "Evaluate Expression" eller "Scoreboard"

  • form Utvärdera uttryck kan ringas med innehållsmeny eller trycka på kortkommandon - (Skift + F9), eller meny (Debug - Utvärdera uttryck).
  • resultattavlan anropas med kortkommandon Ctrl + Alt + W eller från menyn (Debug - Tableau).

Dessa två analysmetoder är väldigt lika, de största skillnaderna ligger i gränssnittet. Resultattavlan är mer bekväm att använda för en grupp av indikatorer, uttryck - för enstaka.

Att använda dessa metoder är mycket enkelt. Det räcker att ange namnet på den önskade variabeln i resultattavlan. Ett stort plus med godtyckliga beräkningar är att du kan lägga till din egen data till uttrycket.

Till exempel:

Det är mycket användbart att använda uttrycksutvärdering och köra en fråga, ladda upp till en värdetabell och titta på den.

Hur man tar reda på var en procedur anropas från vid felsökning - Call Stack

Mycket ofta krävs det att man förstår var denna eller den procedur eller funktion anropades från och med vilka parametrar. För detta tillhandahåller 1C speciell funktion- "Call stack". För att starta samtalsstacken måste du trycka på snabbtangenterna - Ctrl + Alt + C eller genom menyn (Debug - Call Stack).

Med den kan du ta reda på i detalj var proceduren anropades från och med vilka parametrar:

Om du är intresserad av prestandautvärdering under felsökning - .

Se även en översiktsvideo om felsökning i 1C:

Bakgrundsuppgifter används ofta i moderna 1C:Enterprise-konfigurationer.

I synnerhet i alla typiska konfigurationer genereras många rapporter i bakgrund, vilket gör att du kan fortsätta arbeta i samma 1C-session under rapportgenereringen utan att vänta på att rapporten är klar. Och visst finns det ett behov felsöka kod medan du kör bakgrundsjobb. Det finns flera villkor som måste uppfyllas för att framgångsrikt börja felsöka bakgrundsjobb.

Aktivera felsökningsläge på 1C:Enterprise-servern.

Det första du ska göra är att se till att 1C:Enterprise-servern körs i felsökningsläge. Om felsökning inte är aktiverad på servern måste du stoppa tjänsten ombud och kör den igen med parametern /debug

Ställ in automatisk anslutning av bakgrundsjobb i konfiguratorn

Eftersom ett bakgrundsjobb inte har en klientdel, konfigurerar konfiguratorn automatisk anslutning till bakgrundsjobb. För att göra detta, välj menyalternativet Felsökning —> Anslut

Klicka på knappen i dialogrutan som öppnas Automatisk anslutning och markera rutan i nästa fönster Bakgrundsjobb

Registrera anslutningssträngen korrekt till 1C-databasen

Teoretiskt sett borde ovanstående två punkter vara tillräckligt för att börja arbeta med brytpunkter vid den tidpunkt då bakgrundsjobbet utförs. Men i praktiken ställs många inför att det inte finns någon automatisk koppling till bakgrundsuppgifter. Detta är relaterat till infobasanslutningssträngen.

Poängen är att anslutningssträngen för att starta konfiguratorn måste matcha anslutningssträngen för bakgrundsuppgiften. Dessutom måste matchningen vara karaktär för karaktär. Även fall beaktas. När allt kommer omkring när du lägger till en bas i listan informationsbaser vi kan registrera ett serverkluster för samma databas på flera olika sätt: med en IP-adress, genom ett servernamn, med och utan port. Och alla dessa olika anslutningssträngar kan fungera lika bra. Men när man felsöker bakgrundsjobb kan problem börja. Så, till exempel, stötte jag på det faktum att jag i listan över baser hade en anslutningssträng skriven med porten

Srvr="Server1C:1541";Ref="Test";

Och av någon anledning startade bakgrundsuppgiften utan att ange porten

Srvr="Server1C";Ref="Test";

Därför var jag tvungen att ändra anslutningssträngen i listan över databaser i enlighet med detta.
Men detta väcker omedelbart en fråga. Hur hittar man anslutningssträngen för ett bakgrundsjobb? Det är här vi kan hjälpa till. När allt kommer omkring, vid tidpunkten för bakgrundsjobbet, kan vi programmässigt göra poster i loggen. Och med proceduren InfobaseConnectionString() vi kan få anslutningssträngen.

Således gör vi i en lämplig allmän modul (för mig blir det BackgroundQuestsServer) ett sådant förfarande

Procedur WriteConnectionString() till LogExportConnectionString = InfobaseConnectionString() ; LogRecordEntry(ConnectionString) ; Slutprocedur

Låt oss nu köra denna procedur genom att köra:

&AtServer-procedur WriteConnectionStringAtServer() BackgroundJobs. Kör ( "BackgroundJobsServer.WriteToLogConnectionString"); Slutprocedur

Vi öppnar registreringsloggen, tittar på posten med anslutningssträngen och ställer in anslutningsinställningarna till databasen analogt med bakgrundsuppgiften.




Topp