Come eseguire il debug di un processo in background 1s 8.3. Debug dei lavori in background. Visualizza il valore al passaggio del mouse

Probabilmente, nessuna configurazione seria su 1C 8.3 o 8.2 può fare a meno dell'uso di attività di routine e in background. Sono molto convenienti poiché verranno eseguiti secondo un programma chiaramente definito senza l'intervento dell'utente o del programmatore.

Ad esempio, è necessario scambiare dati con un altro programma una volta al giorno. Utilizzando attività di routine e in background, 1C sarà in grado di eseguire queste azioni in modo indipendente, ad esempio durante le ore non lavorative. Questo metodo non influenzerà in alcun modo l'esperienza dell'utente e aiuterà a risparmiare tempo.

Per prima cosa, scopriamo cosa significano e qual è la loro differenza:

  • Operazione pianificata consente di avviare azioni specifiche secondo una pianificazione preconfigurata.
  • Lavoro in backgroundè un oggetto che contiene le azioni da eseguire.

Supponiamo che la nostra azienda venda qualcosa e abbia un proprio sito web su cui si trovano i prezzi. Vogliamo caricarli una volta al giorno per mantenere la pertinenza.

Apri la configurazione e aggiungi un'attività pianificata.

Impostazione delle proprietà

Diamo un'occhiata ai parametri più importanti che devono essere compilati nelle sue proprietà.

  • Nel campo" Nome del metodo» seleziona la procedura di uno specifico modulo generale che verrà eseguita direttamente. Ti indicherà tutti i passaggi per caricare i prezzi sul nostro sito web. Tieni presente che l'esecuzione avverrà sul server. Ciò è logico, poiché le operazioni di routine vengono eseguite senza la partecipazione dell'utente.
  • L'attività pianificata può essere disabilitata o abilitata secondo necessità. Non è necessario modificare il suo programma ogni volta. Per fare ciò, nella tavolozza delle proprietà, imposta o deseleziona il flag " Utilizzo».
  • Un'altra cosa importante è impostare se questa attività di routine sarà predeterminato, o no. Le attività pianificate predefinite vengono avviate automaticamente. Se questa funzionalità non è installata, sarà necessario avviarli a livello di programmazione o utilizzare l'elaborazione "Task Console" con ITS.
  • Puoi anche specificare numero di ripetizioni e intervallo tra di esse in caso di risoluzione anomala. La conclusione anomala si riferisce a quelle situazioni in cui i lavori non sono stati completati a causa di un errore.

Impostazione di un programma

Il passaggio finale consiste nell'impostare una pianificazione per il caricamento sul sito utilizzando il collegamento ipertestuale corrispondente nella tavolozza delle proprietà.

Vedrai un'impostazione di pianificazione tipica in 1C 8.3. Non c'è niente di complicato qui. In questo esempio, impostiamo l'avvio del caricamento dei prezzi sul sito ogni giorno dalle cinque alle sette del mattino. Nel caso in cui l'attività pianificata non abbia il tempo di essere completata prima delle 7:00, verrà completata il giorno successivo.

Blocco delle attività pianificate

Esegui l'utilità standard "Amministrazione dei server aziendali 1C" e apri le proprietà dell'infobase in cui hai creato l'attività di routine (per le versioni client-server di 1C).

Nella finestra che si apre (dopo aver inserito login e password per accedere alla sicurezza delle informazioni), controlla che la casella di controllo "Il blocco delle attività di routine è abilitato" non sia selezionata. Se ti trovi in ​​una situazione in cui l'attività non funziona, controlla prima questa impostazione.

Allo stesso modo, puoi disabilitare completamente le attività di routine in 1C 8.3. Per disabilitare specifici processi in background, è possibile utilizzare l'elaborazione "Background Job Console" integrata nelle versioni più recenti.

Attività in background e pianificate in modalità file

In questa modalità, l'impostazione e l'avvio di queste attività è molto più difficile da organizzare. Molto spesso, aggiuntivo Account, la cui sessione sarà sempre aperta.

In questo caso, le attività di routine vengono attivate utilizzando il metodo “RunTaskProcessing()”.

Puoi anche utilizzare la seguente costruzione:

Come nome della procedura è necessario specificare il nome della procedura client che verrà eseguita. L'intervallo mostra quanti secondi dopo avrà luogo l'esecuzione. Il parametro “Una volta” non è obbligatorio. Riflette se sarà soddisfatto questa procedura una o più volte.

Monitoraggio degli errori nei processi in background

Visualizza lo stato di avanzamento delle attività in background, nonché la disponibilità possibili errori può essere trovato nel registro. Nel filtro, seleziona l'applicazione "Lavoro in background" e, se necessario, seleziona l'importanza di interesse, ad esempio solo "Errori".

Il registro mostrerà tutte le voci che corrispondono alla tua selezione, insieme a un commento che ti aiuterà a capire il motivo dell'errore.

A volte è necessario eseguire il debug di un lavoro in background (di routine). È proprio qui che spesso sorge il problema.

A volte è necessario eseguire il debug di un lavoro in background (di routine). È proprio qui che spesso sorge il problema. E questo problema è che il debugger non può connettersi al processo in esecuzione sul lato server.

Per risolvere questo problema dobbiamo risolvere due problemi:

1. Abilita il debug sul server 1C. Per impostazione predefinita, il debug sul server è disabilitato e per abilitarlo è necessario: Esegui Registro di sistema di Windows, scrivendo in " Eseguire"comando REGEDIT. Trova la linea

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

(tratto dai parametri di avvio del servizio 1C:Enterprise 8.1 Server Agent). (questo è per la versione della piattaforma 8.1)

Aggiungi la chiave alla fine -debug (Non dimenticare di mettere uno spazio prima della chiave -debug)

Esempio
. "PercorsoImmagine"= era "C:\Programmi\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Programmi\1cv81\server" Mettere "C:\Programmi\1cv81\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug-d "C:\Programmi\1cv81\server"

Riavviare l'agente server. Pronto. Ora possiamo eseguire il debug dei thread di esecuzione del server.

2. Le lettere del nome del server e del nome del database nella connessione client al server 1C devono corrispondere esattamente.

Collegamento corretto:
Lavoro in background Cliente - Srvr="NOME-SERVER";Rif="Nome_base";
Collegamento errato:
Lavoro in background - Srvr="NOME-SERVER";Rif="Nome_base"; Cliente - Srvr="Nome-server";Rif="Nome_base";

Come puoi scoprire con quali parametri il lavoro in background si connette al database? Puoi pensare a diversi modi, uno dei quali è registrare questi parametri mentre è in esecuzione un processo in background.

Il codice è il seguente:

Procedura WriteConnectionWithBase() Esportare
Registrazione della voce nel diario(,InformationBaseConnectionString());
Fine della procedura

Durante l'esecuzione di un processo in background, nel registro verrà scritta una riga con i parametri di connessione al database utilizzati dal processo in background.


Ora specifichiamo la connessione automatica ai lavori in background.

Dopo aver eseguito tali manipolazioni, è possibile eseguire il debug dei processi in background.


Non l'hai ancora letto? Potrebbe interessarti...

Debug 1C- un meccanismo molto potente e funzionale della piattaforma 1C 8.3, che consente di trovare rapidamente errori nel codice del programma (in altri linguaggi di programmazione questo si chiama “debug”, dall'inglese “debug”).

Di seguito considereremo i principali metodi di utilizzo del meccanismo di debug sotto forma di istruzioni pratiche utilizzando un esempio specifico.

Attenzione! Se utilizzi la modalità client-server (sul server), è necessario.

Il modo più semplice per avviare il debug in 1C è aprire 1C in modalità e da lì avviare la modalità di debug nella modalità operativa desiderata (sottile/spesso, gestito/regolare):

Debug dei lavori in background 1C

Per poter eseguire il debug dei processi in background, è necessario accedere al menu "Debug - Connessione". Nella finestra che si apre, clicca sul pulsante “Connessione automatica”:

In questa finestra è possibile impostare il flag corrispondente.

Oltre ai lavori in background, in questa finestra è possibile abilitare il debug delle connessioni esterne, http e .

Impostazione di un punto di interruzione

Il secondo passo nel debug è l'impostazione di un punto di interruzione (in altri linguaggi di programmazione - punto di interruzione).

Ad esempio, ho selezionato il gestore "In modifica" nel modulo del documento per il debug:

Per impostare un punto di interruzione è necessario trovare il codice del programma desiderato e fare doppio clic sul campo a sinistra del campo di immissione del codice (o premere il pulsante F9):

Per vedere l'elenco di tutti quelli installati, devi andare al menu Debug - Elenco dei punti di interruzione (alt + F9):

Ottieni 267 lezioni video su 1C gratuitamente:

Punto di interruzione 1C con condizione (blu)

Oltre al solito punto di interruzione in 1C esiste un altro tipo di punto di interruzione: con una condizione. Graficamente tale punto viene visualizzato in blu. Questo punto di interruzione è molto utile quando è necessario acquisire un'iterazione specifica durante l'attraversamento di un ciclo. Il debug si attiverà quando viene soddisfatta una determinata condizione.

Ad esempio, interrompiamo il ciclo alla riga numero 25:

Punto di interruzione inattivo (grigio)

Un punto di interruzione grigio significa che non è attivo e il sistema non si fermerà a quel punto di interruzione. Puoi renderlo inattivo facendo clic sul pulsante speciale sul pannello "Disabilita punto di interruzione" (shift+ctrl+F9):

Punto di interruzione dell'errore

Il sistema può bloccarsi a causa di un errore; per fare ciò è necessario impostare il flag corrispondente nel menu Debug - Stop per errore:

Inoltre, un'interruzione dell'errore ha funzionalità simili a un punto di interruzione condizionale: consente di filtrare le eccezioni con un testo di errore specifico.

Movimento passo-passo attraverso il codice di programma 1C

Dopo aver impostato un punto di interruzione, è necessario avviare l'esecuzione del codice di programma desiderato in modo che il sistema entri nell'esecuzione del codice passo dopo passo. La visualizzazione di una freccia indica l'inizio della modalità di esecuzione del codice passo passo:

Per passare alla riga successiva è necessario premere il pulsante “F11″ (Passa a).

Se scorri le righe del codice del programma e sulla riga è presente una procedura o una funzione, "cadrai" all'interno di questa procedura (o funzione).

Per non “fallire” è sufficiente invece di F11 (Step into) saltare tra le righe con il pulsante F10 (Step through); questo pulsante permette di scorrere le procedure nel codice del programma.

Per spostarsi dalla posizione corrente del cursore a quella desiderata, bypassando le righe di codice intermedie, è necessario posizionare il cursore sulla riga desiderata e premere shift + F10 (Vai al cursore).

Analisi dei valori in modalità debug 1C

È possibile visualizzare il significato di determinati valori diversi modi:

Visualizza il valore al passaggio del mouse

Quando passi il mouse sopra una variabile, il sistema “evidenzia” i valori della variabile:

Utilizzando Valuta espressione o Tableau

  • Modulo Valutare l'espressione può essere chiamato usando menù contestuale o premendo i tasti di scelta rapida - (Maiusc + F9) o il menu (Debug - Valuta espressione).
  • Tabellone segnapunti richiamato utilizzando i tasti di scelta rapida Ctrl + Alt + W o dal menu (Debug - Tableau).

Questi due metodi di analisi sono molto simili, le differenze principali risiedono nell'interfaccia. È più conveniente utilizzare un quadro di valutazione per un gruppo di indicatori ed espressioni per i singoli indicatori.

Questi metodi sono molto facili da usare. È sufficiente inserire nella tabella il nome della variabile desiderata. Un grande vantaggio dei calcoli arbitrari è che puoi aggiungere i tuoi dati all'espressione.

Per esempio:

È molto utile utilizzare la valutazione delle espressioni ed eseguire una query, caricarla in una tabella di valori ed esaminarla.

Come scoprire da dove viene chiamata una procedura nel debug - Stack di chiamate

Molto spesso è necessario capire da dove è stata chiamata una determinata procedura o funzione e con quali parametri. A questo scopo, 1C fornisce funzione speciale- “Stack di chiamate”. Per avviare lo stack di chiamate, è necessario premere i tasti di scelta rapida - Ctrl + Alt + C o tramite il menu (Debug - Stack di chiamate).

Utilizzandolo è possibile scoprire nel dettaglio da dove è stata richiamata la procedura e con quali parametri:

Se sei interessato a valutare le prestazioni durante il debug - .

Guarda anche un video di panoramica sul debug in 1C:

Nelle moderne configurazioni 1C:Enterprise, i lavori in background sono ampiamente utilizzati.

In particolare, in tutte le configurazioni standard, vengono generati numerosi report sfondo, che consente di continuare a lavorare nella stessa sessione 1C durante la generazione del report senza attendere il completamento dell'esecuzione del report. E ovviamente ce n'è bisogno eseguire il debug del codice durante l'esecuzione dei processi in background. Per avviare correttamente il debug dei processi in background, è necessario soddisfare diverse condizioni.

Abilita la modalità di debug sul server 1C:Enterprise.

La prima cosa che devi fare è assicurarti che il server 1C:Enterprise sia in esecuzione in modalità debug. Se il debug non è abilitato sul server, è necessario arrestare il servizio raggente ed eseguirlo nuovamente con il parametro /debug

Configura la connessione automatica dei lavori in background nel configuratore

Poiché il lavoro in background non ha una parte client, il configuratore configura la connessione automatica ai lavori in background. Per fare ciò, seleziona la voce nel menu Debug -> Connessione

Nella finestra di dialogo che si apre, fare clic sul pulsante Connessione automatica e nella finestra successiva seleziona la casella Lavori in background

Inserisci correttamente la stringa di connessione al database 1C

In teoria, i due punti sopra elencati dovrebbero essere sufficienti per attivare i punti di interruzione durante l'esecuzione di un processo in background. Ma in pratica, molti si trovano ad affrontare il fatto che non avviene la connessione automatica ai lavori in background. Questo è correlato alla stringa di connessione all'infobase.

Il punto è che la stringa di connessione per avviare il configuratore deve corrispondere esattamente alla stringa di connessione del lavoro in background. Inoltre, la corrispondenza deve essere carattere per carattere. Anche il caso delle lettere viene preso in considerazione. Dopotutto, quando si aggiunge una base all'elenco basi informative possiamo registrare un cluster di server per lo stesso database in diversi modi: utilizzando un indirizzo IP, tramite il nome del server, con o senza specificare una porta. E tutte queste diverse stringhe di connessione possono funzionare ugualmente bene. Ma durante il debug dei processi in background, potrebbero sorgere problemi. Quindi, ad esempio, mi sono trovato di fronte al fatto che nell'elenco dei database avevo una stringa di connessione che utilizzava la porta

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

E per qualche motivo l'attività in background è stata avviata senza specificare la porta

Srvr="Server1C";Rif="Test";

Pertanto, ho dovuto modificare di conseguenza la stringa di connessione nell'elenco dei database.
Ma qui sorge subito una domanda. Come trovare la stringa di connessione di un lavoro in background? Qui è dove . Dopotutto, mentre è in esecuzione un processo in background, possiamo inserire voci nel registro a livello di codice. E utilizzando la procedura InformationBaseConnectionString() possiamo ottenere la stringa di connessione.

Quindi lo facciamo in un modulo generale adatto (per me sarà BackgroundTasksServer) ecco la procedura

Procedura LogConnectionString() ExportConnectionString = InformationBaseConnectionString() ; RegistroRegistrazione(StringaConnessione) ; Fine della procedura

Ora eseguiamo questa procedura eseguendo:

Procedura &OnServer WriteConnectionStringOnServer() BackgroundTasks. Correre ( "BackgroundTasksServer.WriteConnectionStringToLog") ; Fine della procedura

Apriamo il registro di registrazione, esaminiamo la voce con la stringa di connessione e registriamo le impostazioni per la connessione al database per analogia con il lavoro in background.




Superiore