Elaborazione di operazioni lunghe 1s 8.3. Visualizzazione dello stato di avanzamento delle operazioni di lunga durata in BSP ed esecuzione del debug nella sessione corrente

Elaborazione di operazioni lunghe 1s 8.3.  Visualizzazione dello stato di avanzamento delle operazioni di lunga durata in BSP ed esecuzione del debug nella sessione corrente

L'articolo è destinato a programmatori e amministratori che lavorano con grandi quantità di dati. Allo stesso tempo, nell'elaborazione stessa si comprende la quantità di dati elaborati e, di conseguenza, è possibile visualizzare lo stato di avanzamento e l'avanzamento dell'elaborazione.

Si presuppone che esistano idee generali sull'uso delle operazioni lunghe nel BSP. Altrimenti, ti consiglio di familiarizzare con.

È stata utilizzata la versione 2.3 di BSP. Nelle versioni precedenti questo non funziona, non esiste un'interfaccia di programmazione di questo tipo.

Avanzamento dell'esecuzione

Se, durante l'esecuzione di lunghe operazioni in background, tu (o gli utenti) non volete semplicemente guardare il cerchio rotante, ma volete sapere quanti dati sono stati elaborati e cosa è attualmente in fase di elaborazione, allora BSP dispone di un meccanismo di visualizzazione dell'avanzamento .

Una procedura che gestisce un comando visualizzato su un modulo.

Trasferisce l'esecuzione al server in una procedura che avvia l'avvio di un'operazione di lunga durata. Successivamente, inizia l'attesa del completamento di una lunga operazione.

Ora, nel modulo, non è necessario descrivere i gestori dell'attesa e ricordare gli identificatori delle attività. È sufficiente passare una descrizione della notifica che verrà richiamata al termine del lavoro in background.

Se l'attività non viene completata entro 2 secondi, verrà richiamato un modulo di attesa in cui verrà visualizzato lo stato di avanzamento dell'operazione e una descrizione dell'azione corrente.

&AtClient Procedura RunProcedureBackground(Command) Long-runningOperation = RunBackgroundJobOnServer(); WaitParameters = DurevoleOperationsClient.WaitParameters(ThisObject); // indica la necessità di visualizzare in output lo stato di avanzamento ParametriWaiting.OutputProgressProgress = True; // specifica l'intervallo di aggiornamento dello stato in secondi, se non specificato, // l'intervallo aumenterà con ogni iterazione di 1,4 volte. WaitParameters.Interval = 2; Long-runningOperationsClient.WaitCompletion(Long-runningOperation, New AlertDescription("Run ProcedureBackgroundCompleted", ThisObject), WaitParameters); FineProcedura

Procedura server che attiva un'operazione a lunga esecuzione

In questa procedura vengono formati i parametri di avvio e l'avvio di un'operazione a lunga esecuzione viene avviato dal metodo RunIn Background.

Funzione &OnServer ExecuteBackgroundJobOnServer() StrutturaParametro = Nuova struttura; ExecutionParameters = Long-runningOperations.ExecutionParametersInBackground(UniqueIdentifier); ExecutionParameters.Name del BackgroundJob = ÍStr("ru = "Nome dell'attività in background""); LongOperation = LongOperations.ExecuteInBackground("ModuleName.ExportProcedureName",ParameterStructure,ExecutionParameters); Ritorno operazione lunga; EndFunctions

Messaggio di avanzamento

Nella procedura stessa di una lunga operazione " NomeModulo.NomeProceduraEsporta" è necessario riportare lo stato di avanzamento dell'esecuzione e una descrizione dell'azione in corso.

I dati del messaggio vengono raccolti dalla sessione principale e visualizzati in un modulo di attesa.

Procedura ExportProcedureName(StructureParameters, ResultAddress) Export //... Long-runningOperations.ReportProgress(End(Percentage Completed, 0), Description); //... FineProcedura

procedura di elaborazione dei risultati

Questa procedura viene avviata dopo il completamento di una lunga operazione. Quando un'operazione si completa con errori, è possibile elaborarli.

In caso di completamento positivo di un'operazione di lunga durata, il risultato sarà archiviato in un archivio temporaneo situato in " Risultato.AddressResult".

&AtClient Procedura ExecuteProcedureBackgroundExecuted(Risultato, Parametri Aggiuntivi) Esporta Se Risultato = Non definito Quindi Ritorna; ElseIf Result.Status = "Errore" Then GeneralClientServer.NotifyUser(Result.DetailErrorRepresentation); ElseIf Result.Status = "Done" Quindi // elabora il risultato //ProcessResult(Result.ResultAddress); Finisci se; FineProcedura

Questa è la forma che verrà chiamata dal tipico codice BSP:

Lavorare sull'usabilità

Nell'attuale finestra di attesa per il completamento di un'operazione lunga, a mio avviso, ci sono i seguenti svantaggi:

  1. Non vi è alcuna indicazione visiva del progresso. Viene visualizzato solo il testo, sebbene sia possibile visualizzare un indicatore.
  2. Non esiste una stima del tempo rimanente per completare l’operazione.
  3. Facendo clic su "Annulla" non si annulla il lavoro in background, ma si chiude semplicemente il modulo.

Pertanto, è possibile utilizzare una forma leggermente modificata:

Per sostituire il richiamo del modulo standard con questo è necessario:

  1. Spostare il form "LongOperationNew" dalle elaborazioni allegate all'articolo ai form di configurazione generale.
  2. Modificare il nome del modulo di attesa richiamabile nella procedura "LongOperationsClient.WaitToComplete" da "GeneralForm.LongOperation" a "GeneralForm. Operazione lunga Novità".

Debug di operazioni a lunga esecuzione

E un piccolo bonus (forse sarà utile a qualcuno): per eseguire il debug di operazioni di lunga durata nella sessione corrente, è sufficiente avviare 1C:Enterprise con il parametro di avvio "Debug Mode". Ciò è brevemente menzionato in documentazione . In questo caso, l'attività in background non verrà avviata e il sistema avvierà la funzione passata nella sessione corrente. Questo è molto più semplice da eseguire il debug.

La versione PROF edizione 3.0 è sviluppata sulla piattaforma tecnologica 1C: Impresa 8.2 e sfrutta appieno le sue capacità, inclusa la possibilità di utilizzarlo via Internet utilizzando un servizio cloud. In questo caso, il programma non viene avviato dal disco rigido del computer, ma tramite un browser da un sito che fornisce . Utente che utilizza il programma 1C: Contabilità 8 PROF tramite Internet, riceve garanzie di completa riservatezza e sicurezza delle informazioni. Allo stesso tempo, gli utenti 1C: Contabilità 8 PROF ed. 3.0 può utilizzare il programma sia attraverso il servizio cloud che localmente trasportando le credenziali. Tuttavia, gran parte del programma è rimasta dell'edizione 2.0, compresa la metodologia di contabilità e contabilità fiscale.

Ancora più opzioni di servizio

  • Il passaggio da una sezione all'altra viene effettuato utilizzando schede con nomi di sezioni e icone informative, il che semplifica notevolmente la navigazione.
  • L'aspetto dei moduli di documenti o directory può essere facilmente modificato dall'utente in base alle specificità delle attività dell'azienda, vale a dire:
    • cambiare l'ordine dei campi,
    • rimuovere i segnalibri non utilizzati.
    In questo caso tutte le modifiche apportate dall'utente possono essere trasferite ad altri utenti.
  • È presente un pulsante "Cronologia" attraverso il quale è possibile visualizzare un elenco di documenti creati e modificati di recente.
  • Per accedere a qualsiasi rivista, libro di consultazione o documento, è possibile ottenere un collegamento interno, tramite il quale un altro utente collegato alla stessa infobase con i diritti necessari può trovarlo rapidamente.
  • Il programma ha una sezione "Preferiti", dove puoi inserire documenti, rapporti, ecc., che forniranno un rapido accesso ad essi se necessario.
  • Inoltre, il programma implementa la possibilità di accedere all'infobase solo con il diritto di visualizzare i dati.

Nuova funzionalità buste paga e contabilità del personale

Nell'edizione 3.0 del programma 1C: Contabilità 8 PROFè stata modificata la procedura per l'inserimento della posizione e della retribuzione di un dipendente. Ora queste informazioni vengono inserite direttamente nella sua carta e non in documenti separati, come nell'edizione 2.0 del programma.

Anche gli ordini del personale vengono formati dalla carta del dipendente.

Le buste paga, l'imposta sul reddito personale e i premi assicurativi vengono calcolati automaticamente e visualizzati in un unico documento.

Anche la contabilità delle buste paga è cambiata, ora viene mantenuta nel programma sul posto di lavoro, quindi le buste paga possono essere compilate per dipartimento. Allo stesso tempo, i pagamenti degli stipendi possono essere effettuati anche dai dipartimenti.

Modalità in background per operazioni di lunga durata

Nell'edizione 3.0 del programma 1C: Contabilità 8 PROF il lavoro è diventato ancora più conveniente. Ora non è più necessario attendere il completamento di una lunga operazione, ad esempio la chiusura di un mese o la generazione di qualche tipo di report, poiché tutte sono implementate in background, quindi l'utente può continuare a lavorare durante l'esecuzione.

In conclusione, vorrei sottolineare che l'utente può passare da solo alla versione 3.0 utilizzando il configuratore di aggiornamento. Allo stesso tempo, gli utenti dell'edizione 2.0 del programma 1C: Contabilità 8 PROF, abbonati al supporto informatico (), hanno la possibilità di aggiornare gratuitamente la configurazione all'edizione 3.0.

L'articolo è destinato a programmatori e amministratori che lavorano con grandi quantità di dati. Allo stesso tempo, nell'elaborazione stessa si comprende la quantità di dati elaborati e, di conseguenza, è possibile visualizzare lo stato di avanzamento e l'avanzamento dell'elaborazione.

Si presuppone che esistano idee generali sull'uso delle operazioni lunghe nel BSP. Altrimenti, ti consiglio di familiarizzare con.

È stata utilizzata la versione 2.3 di BSP. Nelle versioni precedenti questo non funziona, non esiste un'interfaccia di programmazione di questo tipo.

Avanzamento dell'esecuzione

Se, durante l'esecuzione di lunghe operazioni in background, tu (o gli utenti) non volete semplicemente guardare il cerchio rotante, ma volete sapere quanti dati sono stati elaborati e cosa è attualmente in fase di elaborazione, allora BSP dispone di un meccanismo di visualizzazione dell'avanzamento .

Una procedura che gestisce un comando visualizzato su un modulo.

Trasferisce l'esecuzione al server in una procedura che avvia l'avvio di un'operazione di lunga durata. Successivamente, inizia l'attesa del completamento di una lunga operazione.

Ora, nel modulo, non è necessario descrivere i gestori dell'attesa e ricordare gli identificatori delle attività. È sufficiente passare una descrizione della notifica che verrà richiamata al termine del lavoro in background.

Se l'attività non viene completata entro 2 secondi, verrà richiamato un modulo di attesa in cui verrà visualizzato lo stato di avanzamento dell'operazione e una descrizione dell'azione corrente.

&AtClient Procedura RunProcedureBackground(Command) Long-runningOperation = RunBackgroundJobOnServer(); WaitParameters = DurevoleOperationsClient.WaitParameters(ThisObject); // indica la necessità di visualizzare in output lo stato di avanzamento ParametriWaiting.OutputProgressProgress = True; // specifica l'intervallo di aggiornamento dello stato in secondi, se non specificato, // l'intervallo aumenterà con ogni iterazione di 1,4 volte. WaitParameters.Interval = 2; Long-runningOperationsClient.WaitCompletion(Long-runningOperation, New AlertDescription("Run ProcedureBackgroundCompleted", ThisObject), WaitParameters); FineProcedura

Procedura server che attiva un'operazione a lunga esecuzione

In questa procedura vengono formati i parametri di avvio e l'avvio di un'operazione a lunga esecuzione viene avviato dal metodo RunIn Background.

Funzione &OnServer ExecuteBackgroundJobOnServer() StrutturaParametro = Nuova struttura; ExecutionParameters = Long-runningOperations.ExecutionParametersInBackground(UniqueIdentifier); ExecutionParameters.Name del BackgroundJob = ÍStr("ru = "Nome dell'attività in background""); LongOperation = LongOperations.ExecuteInBackground("ModuleName.ExportProcedureName",ParameterStructure,ExecutionParameters); Ritorno operazione lunga; EndFunctions

Messaggio di avanzamento

Nella procedura stessa di una lunga operazione " NomeModulo.NomeProceduraEsporta" è necessario riportare lo stato di avanzamento dell'esecuzione e una descrizione dell'azione in corso.

I dati del messaggio vengono raccolti dalla sessione principale e visualizzati in un modulo di attesa.

Procedura ExportProcedureName(StructureParameters, ResultAddress) Export //... Long-runningOperations.ReportProgress(End(Percentage Completed, 0), Description); //... FineProcedura

procedura di elaborazione dei risultati

Questa procedura viene avviata dopo il completamento di una lunga operazione. Quando un'operazione si completa con errori, è possibile elaborarli.

In caso di completamento positivo di un'operazione di lunga durata, il risultato sarà archiviato in un archivio temporaneo situato in " Risultato.AddressResult".

&AtClient Procedura ExecuteProcedureBackgroundExecuted(Risultato, Parametri Aggiuntivi) Esporta Se Risultato = Non definito Quindi Ritorna; ElseIf Result.Status = "Errore" Then GeneralClientServer.NotifyUser(Result.DetailErrorRepresentation); ElseIf Result.Status = "Done" Quindi // elabora il risultato //ProcessResult(Result.ResultAddress); Finisci se; FineProcedura

Questa è la forma che verrà chiamata dal tipico codice BSP:

Lavorare sull'usabilità

Nell'attuale finestra di attesa per il completamento di un'operazione lunga, a mio avviso, ci sono i seguenti svantaggi:

  1. Non vi è alcuna indicazione visiva del progresso. Viene visualizzato solo il testo, sebbene sia possibile visualizzare un indicatore.
  2. Non esiste una stima del tempo rimanente per completare l’operazione.
  3. Facendo clic su "Annulla" non si annulla il lavoro in background, ma si chiude semplicemente il modulo.

Pertanto, è possibile utilizzare una forma leggermente modificata:

Per sostituire il richiamo del modulo standard con questo è necessario:

  1. Spostare il form "LongOperationNew" dalle elaborazioni allegate all'articolo ai form di configurazione generale.
  2. Modificare il nome del modulo di attesa richiamabile nella procedura "LongOperationsClient.WaitToComplete" da "GeneralForm.LongOperation" a "GeneralForm. Operazione lunga Novità".

Debug di operazioni a lunga esecuzione

E un piccolo bonus (forse sarà utile a qualcuno): per eseguire il debug di operazioni di lunga durata nella sessione corrente, è sufficiente avviare 1C:Enterprise con il parametro di avvio "Debug Mode". Ciò è brevemente menzionato in documentazione . In questo caso, l'attività in background non verrà avviata e il sistema avvierà la funzione passata nella sessione corrente. Questo è molto più semplice da eseguire il debug.

L'articolo è destinato a programmatori e amministratori che lavorano con grandi quantità di dati. Allo stesso tempo, nell'elaborazione stessa si comprende la quantità di dati elaborati e, di conseguenza, è possibile visualizzare lo stato di avanzamento e l'avanzamento dell'elaborazione.

Si presuppone che esistano idee generali sull'uso delle operazioni lunghe nel BSP. Altrimenti, ti consiglio di familiarizzare con.

È stata utilizzata la versione 2.3 di BSP. Nelle versioni precedenti questo non funziona, non esiste un'interfaccia di programmazione di questo tipo.

Avanzamento dell'esecuzione

Se, durante l'esecuzione di lunghe operazioni in background, tu (o gli utenti) non volete semplicemente guardare il cerchio rotante, ma volete sapere quanti dati sono stati elaborati e cosa è attualmente in fase di elaborazione, allora BSP dispone di un meccanismo di visualizzazione dell'avanzamento .

Una procedura che gestisce un comando visualizzato su un modulo.

Trasferisce l'esecuzione al server in una procedura che avvia l'avvio di un'operazione di lunga durata. Successivamente, inizia l'attesa del completamento di una lunga operazione.

Ora, nel modulo, non è necessario descrivere i gestori dell'attesa e ricordare gli identificatori delle attività. È sufficiente passare una descrizione della notifica che verrà richiamata al termine del lavoro in background.

Se l'attività non viene completata entro 2 secondi, verrà richiamato un modulo di attesa in cui verrà visualizzato lo stato di avanzamento dell'operazione e una descrizione dell'azione corrente.

&AtClient Procedura RunProcedureBackground(Command) Long-runningOperation = RunBackgroundJobOnServer(); WaitParameters = DurevoleOperationsClient.WaitParameters(ThisObject); // indica la necessità di visualizzare in output lo stato di avanzamento ParametriWaiting.OutputProgressProgress = True; // specifica l'intervallo di aggiornamento dello stato in secondi, se non specificato, // l'intervallo aumenterà con ogni iterazione di 1,4 volte. WaitParameters.Interval = 2; Long-runningOperationsClient.WaitCompletion(Long-runningOperation, New AlertDescription("Run ProcedureBackgroundCompleted", ThisObject), WaitParameters); FineProcedura

Procedura server che attiva un'operazione a lunga esecuzione

In questa procedura vengono formati i parametri di avvio e l'avvio di un'operazione a lunga esecuzione viene avviato dal metodo RunIn Background.

Funzione &OnServer ExecuteBackgroundJobOnServer() StrutturaParametro = Nuova struttura; ExecutionParameters = Long-runningOperations.ExecutionParametersInBackground(UniqueIdentifier); ExecutionParameters.Name del BackgroundJob = ÍStr("ru = "Nome dell'attività in background""); LongOperation = LongOperations.ExecuteInBackground("ModuleName.ExportProcedureName",ParameterStructure,ExecutionParameters); Ritorno operazione lunga; EndFunctions

Messaggio di avanzamento

Nella procedura stessa di una lunga operazione " NomeModulo.NomeProceduraEsporta" è necessario riportare lo stato di avanzamento dell'esecuzione e una descrizione dell'azione in corso.

I dati del messaggio vengono raccolti dalla sessione principale e visualizzati in un modulo di attesa.

Procedura ExportProcedureName(StructureParameters, ResultAddress) Export //... Long-runningOperations.ReportProgress(End(Percentage Completed, 0), Description); //... FineProcedura

procedura di elaborazione dei risultati

Questa procedura viene avviata dopo il completamento di una lunga operazione. Quando un'operazione si completa con errori, è possibile elaborarli.

In caso di completamento positivo di un'operazione di lunga durata, il risultato sarà archiviato in un archivio temporaneo situato in " Risultato.AddressResult".

&AtClient Procedura ExecuteProcedureBackgroundExecuted(Risultato, Parametri Aggiuntivi) Esporta Se Risultato = Non definito Quindi Ritorna; ElseIf Result.Status = "Errore" Then GeneralClientServer.NotifyUser(Result.DetailErrorRepresentation); ElseIf Result.Status = "Done" Quindi // elabora il risultato //ProcessResult(Result.ResultAddress); Finisci se; FineProcedura

Questa è la forma che verrà chiamata dal tipico codice BSP:

Lavorare sull'usabilità

Nell'attuale finestra di attesa per il completamento di un'operazione lunga, a mio avviso, ci sono i seguenti svantaggi:

  1. Non vi è alcuna indicazione visiva del progresso. Viene visualizzato solo il testo, sebbene sia possibile visualizzare un indicatore.
  2. Non esiste una stima del tempo rimanente per completare l’operazione.
  3. Facendo clic su "Annulla" non si annulla il lavoro in background, ma si chiude semplicemente il modulo.

Pertanto, è possibile utilizzare una forma leggermente modificata:

Per sostituire il richiamo del modulo standard con questo è necessario:

  1. Spostare il form "LongOperationNew" dalle elaborazioni allegate all'articolo ai form di configurazione generale.
  2. Modificare il nome del modulo di attesa richiamabile nella procedura "LongOperationsClient.WaitToComplete" da "GeneralForm.LongOperation" a "GeneralForm. Operazione lunga Novità".

Debug di operazioni a lunga esecuzione

E un piccolo bonus (forse sarà utile a qualcuno): per eseguire il debug di operazioni di lunga durata nella sessione corrente, è sufficiente avviare 1C:Enterprise con il parametro di avvio "Debug Mode". Ciò è brevemente menzionato in documentazione . In questo caso, l'attività in background non verrà avviata e il sistema avvierà la funzione passata nella sessione corrente. Questo è molto più semplice da eseguire il debug.





superiore