Casa / Lavora su Internet / 1s attività di routine del server. Compito normativo universale. Lavori in background in modalità file

1s attività di routine del server. Compito normativo universale. Lavori in background in modalità file

1 Motore di lavoro
2 Lavori in background
3 Compiti pianificati
4 Peculiarità dell'esecuzione di attività in background nelle versioni file e client-server
5 Creazione di metadati del lavoro pianificato
6 Console di lavoro
7 Lavorare con le attività pianificate
7.1 Oggetti lavoro
7.2 Ottenere un elenco di lavori
7.3 Creazione
7.4 Cancellazione
7.5 Ottenere un oggetto lavoro

Meccanismo di lavoro

Il meccanismo del lavoro è progettato per eseguire qualsiasi applicazione o funzionalità in base a una pianificazione o in modo asincrono.

Il meccanismo del lavoro esegue le seguenti attività:

  • Capacità di determinare le procedure di routine nella fase di configurazione del sistema;
  • Esecuzione di azioni specificate secondo la pianificazione;
  • L'esecuzione di una chiamata a una determinata procedura o funzione è asincrona, cioè senza attendere il suo completamento;
  • Tracciare lo stato di avanzamento di un lavoro specifico e ottenerne lo stato di completamento (un valore che indica il successo o il fallimento della sua esecuzione);
  • Ottenere un elenco delle attività correnti;
  • Capacità di attendere il completamento di una o più attività;
  • Gestione dei lavori (possibilità di cancellazione, blocco dell'esecuzione, ecc.).

Il motore di lavoro è costituito dai seguenti componenti:

  • Metadati di attività pianificate;
  • Incarichi programmati;
  • Lavori in background;
  • Agenda.

Lavori in background: progettati per eseguire attività dell'applicazione in modo asincrono. I lavori in background vengono implementati utilizzando il linguaggio integrato.

Attività pianificate: progettate per eseguire attività dell'applicazione in base a una pianificazione. Le attività pianificate vengono archiviate nell'infobase e vengono create in base ai metadati definiti nella configurazione. I metadati del lavoro pianificato contengono informazioni come nome, metodo, utilizzo e così via.

Un lavoro pianificato ha una pianificazione che determina a che ora deve essere eseguito il metodo associato al lavoro pianificato. La pianificazione, di norma, è impostata nell'infobase, ma può essere impostata anche in fase di configurazione (ad esempio, per attività pianificate predefinite).

L'utilità di pianificazione delle attività viene utilizzata per pianificare l'esecuzione delle attività pianificate. Per ogni lavoro pianificato, lo scheduler verifica periodicamente se la data e l'ora correnti corrispondono alla pianificazione del lavoro pianificato. Se corrisponde, lo scheduler pianifica l'esecuzione del lavoro. A tale scopo, in base a questa attività pianificata, l'utilità di pianificazione crea un'attività in background che esegue l'elaborazione effettiva.

Lavori in background

I lavori in background sono utili per eseguire calcoli complessi, quando il risultato del calcolo può essere ottenuto dopo molto tempo. Il motore di lavoro dispone dei mezzi per eseguire tali calcoli in modo asincrono.

Un lavoro in background ha un metodo associato che viene chiamato quando viene eseguito il lavoro in background. Qualsiasi procedura o funzione non globale può fungere da metodo di lavoro in background. modulo comune, che può essere richiamato sul server. I parametri del lavoro in background possono essere qualsiasi valore che può essere passato al server. I parametri di un lavoro in background devono corrispondere esattamente ai parametri della procedura o della funzione che chiama. Se il metodo del lavoro in background è una funzione, il suo valore restituito viene ignorato.

Un lavoro in background può avere una chiave, qualsiasi valore dell'applicazione. La chiave introduce una restrizione all'avvio di lavori in background: è possibile eseguire un solo lavoro in background per unità di tempo con un valore chiave specifico e un nome specificato del metodo del lavoro in background (il nome del metodo è costituito dal nome del modulo e dal nome di la procedura o la funzione). La chiave consente di raggruppare i lavori in background che hanno gli stessi metodi in base a un determinato attributo dell'applicazione in modo che non venga eseguito più di un lavoro in background all'interno di un gruppo.

I lavori in background vengono creati e gestiti a livello di codice da qualsiasi connessione. Qualsiasi utente può creare un lavoro in background. Allo stesso tempo, viene eseguito per conto dell'utente che lo ha creato. Un utente con diritti amministrativi, o l'utente che ha creato queste attività in background, può ricevere attività, nonché attendere il loro completamento, da qualsiasi connessione.

Il lavoro in background è puramente un oggetto sessione, ma non appartiene a nessuna sessione utente. Per ogni lavoro viene creata una sessione di sistema speciale, in esecuzione per conto dell'utente che ha effettuato la chiamata. I lavori in background non hanno uno stato persistente.

Un lavoro in background può generare altri lavori in background. Nella versione client-server, ciò consente di parallelizzare calcoli complessi tra processi di lavoro in cluster, il che può accelerare notevolmente il processo di calcolo nel suo insieme. La parallelizzazione viene implementata generando diversi lavori in background figlio, aspettando che ciascuno di essi venga completato nel lavoro in background principale.

I processi in background riusciti o non riusciti vengono archiviati per 24 ore e quindi eliminati. Se il numero di lavori in background in esecuzione supera 1000, vengono eliminati anche i lavori in background meno recenti.

Compiti programmati

Le attività pianificate vengono utilizzate quando è necessario eseguire determinate azioni periodiche o una tantum in base alla pianificazione.

Le attività pianificate vengono archiviate nell'infobase e vengono create in base ai metadati dell'attività pianificata definita nella configurazione. I metadati definiscono parametri di un'attività pianificata come: metodo chiamato, nome, chiave, capacità di utilizzo, segno di predeterminazione, ecc. da eseguire compito di routine, e così via.

La creazione e la gestione delle attività pianificate viene eseguita in modo programmatico da qualsiasi connessione ed è consentita solo agli utenti con diritti amministrativi.

Nota. Quando si lavora nella versione file, è possibile creare e modificare attività pianificate senza avviare l'utilità di pianificazione.

Un'attività pianificata è associata a un metodo che viene chiamato quando viene eseguita l'attività pianificata. Un metodo di lavoro pianificato può essere qualsiasi procedura o funzione di un modulo condiviso non globale che può essere chiamato sul server. I parametri del lavoro pianificato possono essere qualsiasi valore che può essere passato al server. I parametri di un lavoro pianificato devono corrispondere esattamente ai parametri della procedura o della funzione che chiama. Se il metodo del lavoro pianificato è una funzione, il suo valore restituito viene ignorato.

Un'attività pianificata può avere una chiave, qualsiasi valore applicato. La chiave introduce una restrizione all'avvio delle attività pianificate, poiché per unità di tempo, tra le attività pianificate associate allo stesso oggetto di metadati, può essere eseguita una sola attività pianificata con un determinato valore chiave. La chiave consente di raggruppare le attività pianificate associate allo stesso oggetto di metadati in base a un determinato attributo dell'applicazione in modo che non venga eseguita più di un'attività pianificata all'interno di un gruppo.

Durante la configurazione, è possibile definire lavori pianificati predefiniti. I lavori programmati predefiniti non sono diversi dai normali lavori programmati, tranne per il fatto che non possono essere creati o eliminati esplicitamente. Se i metadati dell'attività pianificata sono impostati su segno di un'attività pianificata predefinita, quindi durante l'aggiornamento della configurazione, verrà creata automaticamente un'attività pianificata predefinita nell'infobase. Se la casella di controllo predefinita è deselezionata, l'attività pianificata predefinita verrà automaticamente eliminata nell'infobase quando la configurazione viene aggiornata. I valori iniziali delle proprietà di un'attività pianificata predefinita (ad esempio pianificazione) sono impostati nei metadati. In futuro, quando l'applicazione è in esecuzione, possono essere modificati. I lavori pianificati predefiniti non hanno parametri.

La pianificazione del lavoro pianificato determina in quali momenti deve essere avviato il lavoro pianificato. La pianificazione consente di impostare: la data e l'ora di inizio e fine dell'attività, il periodo di esecuzione, i giorni della settimana e i mesi in cui deve essere eseguita l'attività pianificata, ecc. (vedere la descrizione della in lingua).

Esempi di pianificazioni delle attività pianificate:

Ogni ora, solo un giorno

Riprova PeriodDays = 0, Riprova PeriodDuringDay = 3600

Ogni giorno una volta al giorno

Riprova PeriodDays = 1, Riprova PeriodDuringDay = 0

Un giorno, una volta

Giorni periodo tentativi = 0

A giorni alterni una volta al giorno

Giorni del periodo di tentativi = 2

Ogni ora dalle 01:00 alle 07:00 tutti i giorni

Giorni del periodo di tentativi = 1
Periodo di tentativi durante il giorno = 3600
Ora di inizio = 01:00
Ora di fine = 07:00

Ogni sabato e domenica alle 09:00

Giorni del periodo di tentativi = 1
Giorni della settimana = 6, 7
Ora di inizio = 09:00

Tutti i giorni una settimana, pass settimanale

Giorni del periodo di tentativi = 1
PeriodoSettimane = 2

Alle 01:00 una volta

Ora di inizio = 01:00

Ultimo giorno di ogni mese alle 9:00.

Giorni del periodo di tentativi = 1
GiornoInMese = -1
Ora di inizio = 09:00

Quinto di ogni mese alle 9:00

Giorni del periodo di tentativi = 1
GiornoInMese = 5
Ora di inizio = 09:00

Secondo mercoledì di ogni mese alle 9:00

Giorni del periodo di tentativi = 1
Giorno della settimana nel mese = 2
Giorni della settimana = 3
Ora di inizio = 09:00

È possibile verificare se il lavoro è in esecuzione data data(metodo RequiredExecution dell'oggetto ScheduleRegularTasks). Le attività pianificate vengono sempre eseguite sul nome di un utente specifico. Se l'utente del lavoro pianificato non è specificato, l'esecuzione avviene per conto dell'utente predefinito con diritti amministrativi.

I lavori pianificati vengono eseguiti utilizzando i lavori in background. Quando l'utilità di pianificazione determina che un'attività pianificata deve essere avviata, viene creata automaticamente un'attività in background basata su questa attività pianificata, che esegue tutte le ulteriori elaborazioni. Se questa attività pianificata è già in esecuzione, non verrà eseguita di nuovo, indipendentemente dalla pianificazione.

I lavori pianificati possono essere riavviati. Ciò è particolarmente vero quando è necessario garantire l'esecuzione del metodo dell'attività pianificata. Un'attività pianificata viene riavviata quando è terminata in modo anomalo o quando il processo di lavoro (nella versione client-server) o il processo client (nella versione file) su cui era in esecuzione l'attività pianificata è terminato in modo anomalo. In un'attività pianificata, puoi specificare quante volte deve essere riavviata, nonché l'intervallo tra i riavvii. Quando si implementa il metodo di un processo pianificato riavviabile, è necessario tenere presente che al riavvio, la sua esecuzione inizierà dall'inizio e non continuerà dal momento in cui si è arrestato in modo anomalo.

È importante ricordarlo Tempo scaduto non completerà necessariamente il lavoro in background all'ora specificata. Alcune affermazioni:
* Un lavoro in background può ignorare la sua cancellazione automatica se non è bloccato ma continua a essere eseguito per il motivo
che non tutte le operazioni della piattaforma possono essere annullate. Se eseguita codice ciclico lingua incorporata, quindi annullare il lavoro
altrimenti no. Tutto dipende da cosa sta facendo il lavoro.
* Ora di fine - il limite entro il quale un'attività può iniziare e non terminare?
* Forzare la terminazione job annulla le modifiche apportate al momento in cui è iniziata la transazione?

Peculiarità dell'esecuzione di attività in background nelle versioni file e client-server

I meccanismi per l'esecuzione dei lavori in background nelle versioni file e client-server sono diversi.

  • Nella versione del file, è necessario creare un processo client dedicato che eseguirà attività in background. A tale scopo, la funzione di contesto globale ExecuteJobProcessing deve essere chiamata periodicamente nel processo client. Solo un processo client per infobase dovrebbe elaborare i lavori in background (e quindi chiamare questa funzione). Se non è stato creato alcun processo client per elaborare i processi in background, quando si accede a livello di codice al motore dei processi, verrà generato l'errore "Gestione lavori non attivo". Non è consigliabile utilizzare il processo client che elabora i lavori in background per altre funzioni.

Dopo che il processo client che gestisce i processi in background è in esecuzione, viene data l'opportunità ad altri processi client accesso al programma al meccanismo del lavoro in background, ad es. può eseguire e gestire lavori in background.

Nella versione client-server, l'utilità di pianificazione viene utilizzata per eseguire lavori in background, che si trova fisicamente nel gestore cluster. Lo scheduler per tutti i lavori in background in coda ottiene il processo di lavoro meno caricato e lo utilizza per eseguire il lavoro in background corrispondente. Il processo di lavoro esegue il lavoro e notifica allo scheduler i risultati dell'esecuzione.

Nella versione client-server è possibile bloccare l'esecuzione delle attività pianificate. Il blocco dell'esecuzione delle attività pianificate si verifica nei seguenti casi:

  • Nell'infobase è stato impostato un blocco esplicito delle attività pianificate. Il blocco può essere impostato tramite la console del cluster;
  • È stato impostato un blocco di connessione nell'infobase. Il blocco può essere impostato tramite la console del cluster;
  • Il metodo SetExclusiveMode() è stato chiamato dal linguaggio integrato con il parametro True;
  • In alcuni altri casi (ad esempio, durante l'aggiornamento della configurazione del database).

Creazione di metadati del lavoro pianificato

Prima di creare a livello di codice un'attività pianificata nell'infobase, è necessario creare un oggetto di metadati per essa.

Per creare un oggetto metadati del lavoro pianificato nell'albero di configurazione nel ramo Generale per il ramo Lavori pianificati, eseguire il comando Aggiungi e compilare le seguenti proprietà del lavoro pianificato nella tavolozza delle proprietà:

Nome metodo: specificare il nome del metodo del lavoro pianificato.

Chiave: specifica un valore di stringa arbitrario che verrà utilizzato come chiave dell'attività pianificata.

Pianificazione: specifica la pianificazione dell'attività pianificata. Per generare una pianificazione, fai clic sul collegamento "Apri" e imposta i valori richiesti nel modulo della pianificazione che si apre.

La scheda Generale specifica la data di inizio e di fine dell'attività e la modalità di ripetizione.

La scheda "Giornaliera" specifica la pianificazione giornaliera per l'attività.

Specificare il programma:

  • ora di inizio e ora di fine dell'attività;
  • l'ora di fine dell'attività, dopo la quale sarà completata forzatamente;
  • periodo di ripetizione dell'attività;
  • la durata della pausa tra le ripetizioni;
  • durata dell'esecuzione.

È consentita una combinazione arbitraria di condizioni.

La pianificazione settimanale dell'attività è specificata nella scheda Settimanale.

Seleziona le caselle di controllo per i giorni della settimana in cui verrà eseguita l'attività. Se si desidera ripetere il lavoro, specificare l'intervallo di tentativi in ​​settimane. Ad esempio, l'attività viene eseguita in 2 settimane, il valore di ripetizione è 2.

Nella scheda "Mensile" è indicata la pianificazione mensile dell'attività.

Seleziona le caselle di controllo per i mesi in cui verrà eseguita l'attività. Se necessario, è possibile specificare un giorno specifico (mese o settimana) di esecuzione a partire dall'inizio del mese/settimana o fine.

Utilizzo: se impostato, l'attività verrà eseguita in base alla pianificazione.

Predefinito: se impostato, il lavoro è un lavoro predefinito.

Conteggio tentativi in ​​caso di arresto anomalo: specifica il numero di tentativi in ​​caso di arresto anomalo.

Intervallo tra tentativi in ​​caso di arresto anomalo: specifica l'intervallo tra tentativi in ​​caso di arresto anomalo. Esempi

Creazione di un lavoro in background "Aggiornamento dell'indice di ricerca full-text":

BackgroundJobs.Run("AggiornamentoFullTextSearchIndex");

Creazione di un'attività pianificata "Ripristino sequenze":

Pianificazione = Nuova attività di regolazione della pianificazione;
Schedule.RepeatPeriodDays = 1;
Schedule.RepeatPeriodDuringDay = 0;

Compito = ScheduledTasks.Create ScheduledTask ("RestoringSequences");
Task.Schedule = Programma;
Task.Write();

Console di lavoro

Elaborazione con ITS, gestisce attività pianificate: Task Console.epf

Lavora con le attività pianificate

Oggetti di lavoro

Gli oggetti lavoro non sono referenziati, ma sono archiviati nel database in una memoria speciale.

Se il flag "Predefinito" è abilitato nei metadati, un tale oggetto viene creato automaticamente all'avvio di 1C:Enterprise ed esiste sempre esattamente in un'istanza. Un tale oggetto non può essere cancellato.

Se il flag "Predefinito" non è impostato, gli oggetti di tale attività vengono creati ed eliminati a livello di codice, specificando la pianificazione e i parametri.

Ottenere un elenco di attività

L'elenco delle attività può essere ottenuto con il metodo GetRegularAssignments responsabile del lavoro globale Attività pianificate

Responsabile lavori programmati

GetScheduledJobs (GetScheduledJobs)

Sintassi:

Ottieni attività regolari(<Отбор>)

Opzioni:

<Отбор>(opzionale)

Tipo: struttura. La struttura che definisce la selezione. I valori della struttura possono essere: UniqueIdentifier, Key, Metadata, Predefined, Usage, Name. Se la selezione non è impostata, vengono ottenute tutte le attività pianificate.

Se si filtra in base ai metadati, è possibile specificare l'oggetto metadati del processo pianificato o il relativo nome come valore dei metadati.

Valore di ritorno:

Tipo: Matrice.

Descrizione:

Ottiene una matrice di attività pianificate per la selezione specificata. La ricezione di attività pianificate è possibile solo per l'amministratore.

Disponibilità:

Per ogni Regolamentazione del Ciclo Regolatorio
NewLine = ListRegulationTasks.Add();
NewString.Metadata = Scheduled.Metadata.View();
NewLine.Name = Scheduled.Name;
NuovaStringa.Chiave = Programmata.Chiave;
NewString.Schedule = Programmato.Schedule;
NewString.User = Regular.UserName;
NewString.Predefined = Programmato.Predefinito;
NewString.Usage = Uso normativo;
NewString.Identifier = Scheduled.UniqueIdentifier;

LastTask = Scheduled.LastTask;
Se LastJob non è definito, allora
NewString.Running = LastTask.Start;
NewString.Status = LastJob.Status;
Finisci se;
ciclo finale;

Creazione

Creato dal metodo CreateRegularTask del task manager pianificato:

ScheduledJob = ScheduledJobs.Create ScheduledJob(MetadataChoice);

Nome attività pianificata = Nome;
ScheduledTask.Key = Chiave;
ScheduledTask.Use = Usa;
ScheduledTask.UserName = UsersChoice;
ScheduledTask.Numero di ripetizioni in caso di arresto anomalo = Numero di tentativi in ​​caso di arresto anomalo;
ScheduledTask.RetryIntervalOnAccident = RetryIntervalOnAccident;
ScheduledTask.Schedule = Programma;
ScheduledTask.Write();

TaskObject = ScheduledTasks.Create ScheduledTask ("EseguiExchange");

TaskObject.Name = Nome;
JobObject.Use = vero;

L'oggetto lavoro dispone di un campo "Parametri" in cui vengono impostati i parametri del metodo:

Lavoro programmato

Parametri

Utilizzo:

Leggendo e scrivendo.

Descrizione:

Tipo: Matrice. Una matrice di parametri delle attività pianificate. Il numero e la composizione dei parametri devono corrispondere ai parametri del metodo dell'attività pianificata.

Disponibilità:

Server, client grasso, unione esterna.

Nota:

La capacità di leggere e scrivere è disponibile solo per l'amministratore.

Rimozione

Eliminato dal metodo Delete() dell'oggetto lavoro:

ScheduledTask.Delete();

Ottenere un oggetto di lavoro

  • elenco tramite il metodo GetRegularTasks:
    Programmato = ScheduledTasks.Get ScheduledTasks (selezione);
  • tramite il metodo FindByUniqueID del job manager:
    Compito = ScheduledTasks.FindBy UniqueIdentifier (UID);

[è necessario registrarsi per visualizzare il link]

Crea un'attività pianificata

Creiamo un'attività pianificata "Esecuzione dell'elaborazione".

Disabilitare l'utilizzo di un'attività pianificata in modo che non si avvii automaticamente quando la configurazione viene aggiornata.

Assegna una procedura che verrà attivata all'avvio di un'attività pianificata:Modulo attività pianificate.Attività pianificataEsecuzione dell'elaborazione.

La procedura stessa è simile a:

Esportazione della procedura ScheduledTaskPerformanceProcessing(Key).

Parametri delle attività pianificate. Esegui elaborazione con parametri (chiave);

EndProcedura

Creiamo una directory per le attività di routine

Il nostro lavoro pianificato può generare molti processi in background, uno per ogni elaborazione. Ogni attività nella piattaforma 1C8 ha una chiave. Ma il metodo del lavoro pianificato non conosce la chiave del lavoro in background, quindi è necessario utilizzare i parametri del lavoro in background. Di conseguenza, possiamo vedere l'attività in background nella console delle attività, ma non possiamo creare manualmente un'attività in background da questa console, perché i lavori con parametri manuali non vengono creati.

Directory "Parametri delle attività pianificate" :

Requisiti :

· Codice prima del lancio- stringa illimitata - codice in linguaggio 1C, che deve essere eseguito prima di iniziare.

· Elaborazione da configurazione - stringa (100) - ID dell'elaborazione da configurazione

· Elaborazione dalla directory - riga (100) - collegamento all'elemento della directory "Elaborazione esterna", se presente nella configurazione

· Esegui tramite l'applicazione 1C - booleana - verrà creata applicazione separata 1C e un'attività pianificata verrà avviata al suo interno. Creato per 8.1 in cui non tutti i metodi dell'applicazione sono disponibili sul server in cui è in esecuzione il lavoro pianificato.

· LaunchCode- - stringa illimitata - codice in linguaggio 1C, che verrà eseguito all'avvio dell'attività pianificata.

Crea una forma di elemento :

Cliccando su "Crea Reg. task" crea a livello di codice un'attività pianificata con un codice chiave:

Procedura MainActionsFormsCreateReglTask(Button)

Riferimento variabile;

Tasto = ShortLP(Codice);

Attività = ScheduledTasks.Create ScheduledTask ("Esecuzione dell'elaborazione");

Task.Name = Chiave;

Job.Key = Chiave;

Parametri = Nuova matrice();

Opzioni.Aggiungi(Chiave);

Task.Parameters = Parametri;

Task.Write();

EndProcedura

Avvio di un lavoro pianificato

Ogni attività pianificata da noi creata ha una chiave:

Questa chiave corrisponde al codice della directory "Parametri delle attività pianificate", viene cercata all'avvio dell'attività. Se l'elemento del dizionario non viene trovato, l'attività non viene eseguita.

Inoltre, se viene fornito il codiceCodice prima del lancio quindi questo codice verrà eseguito. Inoltre, se la variabile Esaudire restituisce false, l'attività non verrà eseguita. Variabile disponibile in analisi Opzioni, dove è memorizzato un collegamento all'elemento trovato della directory "Parametri delle attività pianificate".

A seconda dei valori selezionati dei dettagli, verrà avviato il codice nella lingua 1C, oppure l'elaborazione inizierà dalla configurazione, oppure l'elaborazione inizierà dal libro di riferimento standard "Elaborazione esterna".

Per 1C81, l'esecuzione viene fornita in una nuova applicazione, in modo da poter utilizzare il codice disponibile solo sul client, incluso l'uso dell'elaborazione esterna. Per fare ciò, seleziona la casella "Esegui l'applicazione 1C". In caso contrario, l'attività pianificata verrà eseguita sul server.

Raccomando di impostare l'utente nel campo "Utente" dell'attività pianificata appena creata in modo che l'attività venga eseguita con determinati diritti. Raccomando di concedere a questo utente tutti i diritti. ho utente"robot».

La pianificazione dell'attività pianificata viene creata dal collegamento ipertestuale "Pianificazione" dal modulo dell'attività pianificata. È possibile utilizzare l'elaborazione "Console delle attività pianificate".

Pulizia periodica dei registri (ad esempio, il registro delle informazioni "Versioni dell'oggetto" nella configurazione SCP), l'esecuzione di calcoli in base a una pianificazione, la pubblicazione di documenti a una certa ora: questo è tutt'altro che lista completa azioni che possono essere implementate utilizzando attività di routine 1C.

Crea un'attività

Non miriamo a descrivere il codice del modulo eseguibile, lo mostreremo principi generali funzionamento e creazione di un compito procedurale.

Il compito di regolazione è indispensabile:

  1. Se nel task impostato come una delle condizioni è necessario eseguire periodicamente un determinato algoritmo;
  2. Se il codice deve essere eseguito indipendentemente dalle azioni degli operatori e degli utenti del database;
  3. Se l'avvio della procedura eseguibile non dipende da eventi esterni che si verificano con gli oggetti base informativa.

Per crearlo, devi andare nell'infobase in modalità "Configuratore". Successivamente, troviamo il ramo "Attività regolari" nell'albero di configurazione, si trovano nella scheda "Generale" e fai clic sul pulsante "Aggiungi" (Fig. 1)

Diamo un'occhiata più da vicino alla sua finestra delle proprietà (Fig. 2):
Fig.2

  1. Nome, sinonimo e commento: le regole ei principi per la compilazione di questi campi sono simili per tutti gli oggetti di configurazione e non è necessario descriverli nuovamente;
  2. Nome metodo è una procedura di un modulo generale che descrive l'algoritmo richiesto nel modo più accurato possibile (premendo il pulsante di selezione si aprono le procedure disponibili, la cui rappresentazione è costituita dal nome del modulo generale e dal nome della procedura in varie colonne di la tavola);
  3. Chiave: determina non tanto l'unicità del compito procedurale, ma l'unicità processo in background, avviato sulla base di un lavoro, ha un limite di lunghezza;
  4. Programma: dedicheremo un paragrafo separato del nostro articolo alla descrizione di questo elemento;
  5. Utilizzo: selezionando questa casella si determina l'attività dell'attività, TRUE significa che l'attività verrà avviata ed eseguita in base alla pianificazione;
  6. Predefinito – se l'elemento ha questa casella di controllo, queste attività non possono essere eliminate, vengono create automaticamente quando la configurazione viene salvata nel database;
  7. Numero di ripetizioni - se si verifica un'eccezione durante l'esecuzione, verrà riavviata in modo che non si verifichi un ciclo infinito, il programma limita il numero di riavvii;
  8. Intervallo tra tentativi: tempo in secondi tra i riavvii dei processi arrestati in modo anomalo.

Diamo un'occhiata più da vicino al palinsesto.

Pianificazione dell'attività pianificata

Fig.3

Prima di tutto, dovresti prestare attenzione alla parte inferiore della finestra, è lì che il informazioni dettagliate con una ripartizione di quanto spesso e a che ora verrà eseguita l'attività.

Scheda Generale:

  • Data di inizio dell'attività;
  • Data di fine elaborazione;
  • Frequenza di ripetizione del compito.

Se non vengono specificate date in questa scheda, non verrà impostato alcun limite di tempo per l'attività.

Segnalibro "Giornaliero" (Fig. 4)
Fig.4

Oltre ai campi di input per l'ora di inizio e di fine dell'attività e la frequenza del suo avvio durante il giorno, contiene parte tabellare per impostazioni dettagliate frequenza di esecuzione.

Le schede "Giornaliera" e "Settimanale" contengono informazioni per i rispettivi periodi.

Caratteristiche di funzionamento

Nella versione dell'operazione client-server, l'esecuzione delle attività pianificate è determinata dagli strumenti del server. Dalla console di amministrazione è possibile abilitare e disabilitare la possibilità di eseguire lavori per un determinato database.

La situazione è molto più complicata con la versione file di lavoro. Prima di un determinato rilascio della piattaforma, l'esecuzione delle procedure in background e pianificate veniva eseguita solo se il metodo ExecuteJobProcessing() era attivato all'avvio del sistema sotto un determinato utente. In questo caso, gli algoritmi venivano lanciati periodicamente fintanto che l'utente che aveva avviato il metodo era nel programma.

Attualmente, il lavoro dei lavori in background nella versione file del lavoro è distribuito uniformemente tra gli utenti autorizzati nel database, se il programma è stato avviato con parametro aggiuntivo AllowExecuteSheduledJobs, è questo processo che sarà responsabile della manutenzione ordinaria.

È possibile disabilitare completamente l'esecuzione dei lavori in background e di manutenzione in un database che opera in modalità file eliminando o rinominando il file DoNotCopy.txt nella cartella con il database. La presenza di questo file indica alla piattaforma che il lavoro viene svolto nell'originale e non in una copia del database.

Inoltre, nelle consegne standard 1C, è stato possibile gestire il lavoro programmato direttamente dal programma senza passare al "Configuratore". Nella configurazione “ZUP”, versione 3.1.3.223, è possibile aprire il modulo di controllo dal menu Amministrazione->Manutenzione->Operazioni programmate->Attività programmate e in background (Fig. 5)
Fig.5

Il modulo aperto ha un'interfaccia intuitiva e consente di:


Puoi anche avviare l'esecuzione dell'attività direttamente dal modulo.

La domanda che abbiamo sollevato nel titolo dell'articolo è rilevante per molti amministratori di sistema che lavorano con questo prodotto. Per quanto possibile, proviamo a parlare dei parametri che influenzano le prestazioni di 1C e sfatare miti popolari. Oggi, usando l'esempio di un caso recente, vogliamo parlarvi di un altro aspetto che può influire seriamente sulle prestazioni: le attività pianificate.

Cominciamo con un caso reale. Non molto tempo fa, uno dei nostri clienti ci ha contattato con un reclamo sui "freni" 1C da parte di uno dei suoi dipendenti. I sintomi si esprimevano nel fatto che dopo un certo periodo di tempo la configurazione di Trade Management 10 iniziava a rallentare molto, o, in altre parole, si bloccava per un po'.

Con un'analisi più dettagliata della situazione, si è scoperto che ciò accade solo per un dipendente e, in qualsiasi luogo di lavoro, accade per molto tempo, ma se prima i "freni" duravano circa un secondo, ora, dopo l'aggiornamento, possono durare fino a 15-20 secondi, il che rende il lavoro estremamente scomodo.

In linea di principio, i dati iniziali sono già sufficienti per trarre le prime conclusioni. Riprendiamoli:

  • I "freni" si verificano costantemente, con una certa frequenza
  • "Rallenta" solo per un utente
  • "Rallenta" in qualsiasi luogo di lavoro

Per confermare le nostre ipotesi, diamo un'occhiata Impostazioni contabili:

In effetti, l'utente "problematico" è elencato come utente per eseguire attività di routine. Come si è scoperto, una volta per conto di questo utente, l'attività di scambio automatico RIB funzionava. Resta da vedere quale sia stata esattamente la causa della "frenata" episodica. Anche questo è facile da fare:

Ed ecco l '"eroe dell'occasione": il compito di aggiornare l'indice di ricerca full-text, che veniva lanciato una volta ogni 2,5 minuti. In questo caso, il problema è stato completamente risolto disabilitando l'esecuzione delle attività pianificate sotto questo utente, ma ciò non è sempre possibile o consigliabile, quindi di seguito considereremo come gestire le attività pianificate e come garantire che non abbiano un impatto negativo sulle prestazioni.

Applicazione generale

In configurazioni basate applicazione regolare non esiste un unico toolkit per la gestione delle attività di routine. Ciò è in gran parte dovuto al fatto che al momento del loro sviluppo iniziale, il concetto stesso di compiti procedurali era sviluppato piuttosto male.

Molte attività pianificate vengono gestite attraverso la configurazione dei sottosistemi ad esse associati. Ad esempio, le impostazioni per le attività di routine relative allo scambio di dati dovrebbero essere cercate nelle impostazioni di scambio relative al Sistema di informazione automatizzato dello stato unificato nelle impostazioni del commercio di alcolici, ecc.

A prima vista, tutto è abbastanza logico, ma la mancanza di un unico strumento rende difficile controllare le attività programmate configurate e l'ottimalità delle loro impostazioni. Bene, se ci sono una o due attività e se ce ne sono più o, come nel nostro caso, c'è il sospetto di una qualsiasi delle attività pianificate, ma non hai idea di chi e cosa sia impostato in questo database.

In questo caso, dovresti usare elaborazione esterna ConsoleQuest (JobsConsole), che è incluso nell'insieme delle elaborazioni standard sul disco ITS. L'elaborazione fornisce un'unica interfaccia per tutti i lavori e consente di configurarli centralmente, oltre a controllare i lavori attualmente in esecuzione.

Questa lista dovrebbero essere studiati attentamente, tutte le attività non necessarie dovrebbero essere disattivate e quelle necessarie dovrebbero essere programmate in base alle esigenze urgenti e al buon senso. Ad esempio, nel nostro caso, non è necessario elaborare le risposte EGAIS una volta ogni 30 secondi (questa impostazione è fatta per il test) e in modalità operativa sarà sufficiente farlo, diciamo, una volta ogni mezz'ora.

Applicazione gestita

Nelle configurazioni basate su un'applicazione gestita, le attività pianificate svolgono un ruolo più significativo, possono essere utilizzate per eseguire varie attività per mantenere l'infobase e mantenerla aggiornata, ma allo stesso tempo sono le attività pianificate che più spesso causano " Freni".

Per gestire le attività di routine, nel menu è presente una voce dell'hotel Amministrazione - Supporto e Manutenzione.

Si può immediatamente notare che le attività sono aumentate in modo significativo (ad esempio, abbiamo preso la stessa configurazione - Vendita al dettaglio) e la loro configurazione competente può migliorare significativamente le prestazioni dell'infobase. Le impostazioni di default sono fatte da 1C in base alle esigenze di un'impresa sferica media nel vuoto e non sono nemmeno vicine all'ottimale.

Prima di tutto, disabilitiamo ciò che è chiaramente non necessario, con il quale non lavori. Quindi ottimizziamo la pianificazione delle funzioni utilizzate raramente, ad esempio l'aggiornamento del classificatore banca in Retail, oltre al controllo delle controparti, può essere effettuato una volta alla settimana durante l'orario non lavorativo o alla fine (inizio) della giornata lavorativa.

Particolare attenzione dovrebbe essere prestata a tutto ciò che riguarda indice di ricerca. Ricerca a tutto testo certamente una cosa conveniente, ma lavorare con il suo indice è un compito molto, molto dispendioso in termini di risorse. Pertanto, non dovresti andare agli estremi e abbandonarlo, ma dovresti seriamente rivedere e regolare i suoi parametri.

Iniziamo con estrazione del testo, questa operazione ti permette di cercare il contenuto dei file allegati, quindi se non li usi, non cercarli, o hai solo immagini lì, allora questa operazione può essere disabilitato, in ogni caso, per eseguirlo una volta ogni 85 secondi - un'enumerazione ovvia.

Aggiornamento dell'indice PPA- una delle operazioni più dispendiose in termini di risorse, per impostazione predefinita viene eseguita una volta al minuto.

Ora pensiamo a quanto spesso le informazioni vengono aggiunte o aggiornate nel database che cerchi più spesso? Ovviamente non ogni minuto, quindi basterà aggiornare l'indice molto meno spesso: una volta ogni ora, una volta al giorno, o anche una volta alla settimana.

Lo stesso vale per fusione dell'indice PPD, se aggiorni l'indice una volta al giorno, dovresti impostare l'unione in modo che venga eseguita una volta alla settimana, scegliendo l'ora meno problematica come inizio del lavoro.

Queste semplici operazioni ti permetteranno, senza troppi danni alla funzionalità della configurazione, di aumentare il comfort di lavorare con essa nuovo livello rifiutandosi di eseguire frequentemente operazioni piuttosto dispendiose in termini di risorse. Basta non andare agli estremi, giudicare correttamente quanto hai bisogno di determinate funzionalità e con quale frequenza dovresti completare le attività ad esse associate.

  • tag:

Si prega di abilitare JavaScript per visualizzare il

Spesso gli utenti si lamentano del fatto che "1C 8.3 rallenta": i moduli dei documenti si aprono lentamente, i documenti vengono pubblicati per molto tempo, il programma si avvia, i rapporti vengono generati per molto tempo e così via.

Inoltre, tali "problemi" possono verificarsi in diversi programmi:

I motivi potrebbero essere diversi. Non è stato ripristinato tenendo documenti, computer debole o il server, il server 1C è configurato in modo errato.

In questo articolo, voglio considerare uno dei motivi più semplici e comuni lavoro lento programmi - . Questa istruzione sarà rilevante per gli utenti di database di file per 1-2 utenti, dove non c'è competizione per le risorse.

Se sei interessato ad una più seria ottimizzazione delle opzioni client-server per il sistema, visita la sezione del sito.

Dove sono le attività pianificate in 1C 8.3

Prima che avessi il tempo di caricare il programma, molte attività in background sono state completate in 1C. Puoi visualizzarli andando nel menu "Amministrazione", quindi - "Supporto e manutenzione":

Ricevi gratuitamente 267 videolezioni 1C:

Ecco come appare la finestra con le attività completate:

Ed ecco un elenco completo di tutte le attività pianificate che vengono eseguite:

Tra queste attività sono visibili come "", caricamento di vari classificatori, verifica della pertinenza della versione del programma e così via. Ad esempio, non ho bisogno di quasi tutti questi compiti. Non conservo i record di valuta, controllo personalmente le versioni, carico i classificatori secondo necessità.

Di conseguenza, è nel mio (e nella maggior parte dei casi nel tuo) interesse disabilitare le attività non necessarie.

Disabilitazione delle attività pianificate e in background in 1C 8.3