1c quali sono le attività di routine. Attività di routine e in background

La domanda che abbiamo posto 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 1C e sfatare i miti popolari. Oggi, utilizzando l'esempio di un caso recente, vogliamo parlarvi di un altro aspetto che può influire seriamente sulla produttività: le attività di routine.

Cominciamo con caso reale. Non molto tempo fa, uno dei nostri clienti ci ha contattato con un reclamo relativo ai "freni" 1C di uno dei suoi dipendenti. I sintomi erano che dopo un certo periodo di tempo la configurazione di Trade Management 10 cominciava a rallentare notevolmente, o, più semplicemente, a bloccarsi per qualche tempo.

Con di più analisi dettagliata situazione, si è scoperto che ciò accade solo a un dipendente e, in qualsiasi luogo di lavoro, accade da 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. Elenchiamoli nuovamente:

  • 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 dei parametri contabili:

In effetti, l'utente "problematico" viene elencato come utente per l'esecuzione di attività di routine. Come si è scoperto, una volta un'attività di scambio automatico RIB veniva eseguita per conto di questo utente. 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à di routine sotto questo utente, tuttavia, ciò non è sempre possibile o consigliabile, quindi di seguito vedremo come gestire le attività di routine e come assicurarsi che vengano eseguite. non influenzare influenza negativa per le prestazioni.

Applicazione regolare

Nelle configurazioni basate su un'applicazione regolare, non esiste un unico strumento 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 di routine era piuttosto poco sviluppato.

Molte attività di routine vengono gestite attraverso la configurazione dei sottosistemi associati. Ad esempio, le impostazioni per i compiti normativi relativi allo scambio di dati dovrebbero essere cercate nelle impostazioni di scambio, relative al sistema informativo automatizzato statale unificato nelle impostazioni di commercio di alcolici, ecc.

A prima vista, tutto è abbastanza logico, ma la mancanza di un unico strumento rende difficile il controllo delle attività di routine configurate e dell'ottimalità delle loro impostazioni. Va bene se ci sono una o due attività, ma se ce ne sono più o, come nel nostro caso, si sospetta una delle attività pianificate, ma non hai idea di chi ha configurato cosa in questo database.

In questo caso, dovresti utilizzare l'elaborazione esterna ConsoleTask (JobConsole), che è incluso nel set di elaborazione 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.

Questo elenco devono essere studiati attentamente, tutte le attività non necessarie dovrebbero essere disabilitate e quelle necessarie dovrebbero avere il loro programma adattato per soddisfare le esigenze immediate e il buon senso. Ad esempio, nel nostro caso, non è necessario elaborare le risposte EGAIS una volta ogni 30 secondi (questa impostazione è stata effettuata 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, alle attività di routine viene assegnato un ruolo più significativo, con il loro aiuto è possibile eseguire varie attività per mantenere la base di informazioni e mantenerla aggiornata, ma allo stesso tempo sono le attività di routine quelle più importanti; spesso diventano la causa dei “freni”.

C'è una voce separata nel menu per gestire le attività di routine Amministrazione - Supporto e Manutenzione.

Si può subito notare che il numero di attività è aumentato in modo significativo (ad esempio, abbiamo adottato la stessa configurazione - Vendita al dettaglio) e la loro corretta configurazione può migliorare significativamente le prestazioni della base informativa. Le impostazioni predefinite vengono effettuate da 1C in base alle esigenze di un'azienda sferica media nel vuoto e non sono nemmeno vicine a quelle ottimali.

Prima di tutto, disabilitiamo ciò che è chiaramente non necessario, ciò con cui non lavori. Quindi ottimizziamo il programma delle funzioni utilizzate raramente, ad esempio l'aggiornamento del classificatore bancario in Retail, nonché il controllo delle controparti, possono essere eseguiti una volta alla settimana durante gli orari non lavorativi o alla fine (inizio) della giornata lavorativa.

Particolare attenzione dovrebbe essere prestata a tutto ciò che riguarda l'indice di ricerca. La ricerca full-text è 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 riconsiderarlo seriamente e adattarne i parametri.

Cominciamo con estrazione del testo, questa operazione ti permette di ricercare il contenuto dei file allegati, quindi se non li usi, non li cerchi, o ci sono solo immagini, allora puoi comunque disabilitare questa operazione, effettuandola una volta ogni 85 secondi è chiaramente eccessivo.

Aggiornamento Indice PPD - una delle operazioni più dispendiose in termini di risorse, eseguita una volta al minuto per impostazione predefinita.

Ora pensiamo a quanto spesso le informazioni che cerchi più spesso vengono aggiunte o aggiornate nel database? Ovviamente non ogni minuto, quindi sarà sufficiente aggiornare l'indice molto meno frequentemente: 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 configurare l'unione in modo che venga eseguita una volta alla settimana, scegliendo l'orario meno disturbante per avviare il lavoro.

Queste semplici operazioni ti permetteranno di aumentare la comodità di lavorare con esso senza troppi danni alla funzionalità della configurazione. nuovo livello eliminando l'esecuzione frequente di operazioni ad alta intensità di risorse. Basta non andare agli estremi; giudica saggiamente quanto hai bisogno di determinate capacità e quanto spesso dovresti svolgere attività ad esse correlate.

  • tag:

Abilita JavaScript per visualizzare il

" In esso esamineremo le nuove funzionalità che non riguardano l'interfaccia di sistema, ma espanderanno in modo significativo le funzionalità fornite dalla piattaforma 1C:Enterprise 8.

Applicabilità

L'articolo discute la versione 8.3.4.437 della piattaforma 1C:Enterprise. Tutte le funzionalità descritte nell'articolo sono state aggiornate alla versione 8.3.11.

Altre innovazioni in 1C:Enterprise 8.3

Continuiamo a conoscere le innovazioni della piattaforma 1C:Enterprise 8.3.

Attività in background e di routine nell'infobase dei file

In molte configurazioni tipiche della piattaforma 8.2 c'era una costante che indicava l'utente sotto il quale venivano eseguite le attività nella versione del file.

Quando il sistema ha iniziato a funzionare con questo utente, è stato connesso un gestore di attesa, che ha richiamato il metodo del linguaggio integrato con una certa periodicità EseguiTaskProcessing().

Questo approccio ha creato ulteriori difficoltà e inconvenienti per l'utilizzo delle attività di routine nel database dei file.

Ciò potrebbe essere particolarmente critico quando si lavora con configurazioni come “Automazione completa” O "Controllare impresa manifatturiera, in cui i compiti di regolamentazione svolgono un ruolo piuttosto importante.

Se questo è il file IB allora
=
Constants.UserForExecutingRoutineTasksInFileVariant.Get();
Se chValueVariabile(“glCurrentUser”) =
UserTo ExecuteTaskRegl Poi
// con un intervallo di secondi chiamiamo la procedura per lavorare con attività di routine
SupportRegularTaskForFileVersion();
IntervalloPerPoll=
Constants.IntervalForPollingRoutineTasksInFileVariant.Get();
Se IntervalloPerPoll= Indefinito
O IntervalloPerPoll= 0 Allora
IntervalloPerPoll= 60 ;
FineSe ;
ConnectWaitHandler("Supporto per RoutineTaskForFileVersion",
IntervalloPerPoll);
FineSe ;
FineSe ;

Sulla piattaforma 8.3 implementato il lavoro dei lavori in background e pianificati nell'infobase dei file senza utilizzare la chiamata al metodo del contesto globale EseguiTaskProcessing().

Le attività in background e di routine vengono eseguite direttamente in una delle applicazioni client (thin, Thick Client) o da un'estensione del server Web.

Un processo in background avviato da una sessione viene eseguito dalla stessa applicazione client che lo ha avviato.

I lavori in background vengono eseguiti in sequenza, ad es. Su un'applicazione client è possibile eseguire solo un'attività in background (incluse quelle di routine) alla volta.

Le attività di routine vengono eseguite da una sola applicazione client. Per controllare l'avvio delle attività pianificate, viene utilizzato un tasto della riga di comando /AllowExecuteScheduledJobs.

Le attività di routine vengono eseguite dalla prima applicazione client nell'ordine di avvio, a cui non è vietato eseguire attività di routine (per vietare la sessione, la sessione deve essere avviata con il parametro della riga di comando /AllowExecuteScheduledJobs -Off).

Al termine della sessione, l'esecuzione passa a una qualsiasi delle sessioni in esecuzione rimanenti.

Se la riga di avvio dell'applicazione client indica esplicitamente la necessità di eseguire attività di routine (in riga di comando indicato /AllowExecuteScheduledJobs -Force), quindi su di esso iniziano ad essere eseguite le attività di routine, indipendentemente dalla presenza di altre sessioni.

Le attività di routine vengono elaborate una volta ogni 60 secondi.

Si noti che le attività di routine della soluzione applicativa (nella versione file) hanno iniziato ad essere eseguite non prima di 1 minuto dopo l'avvio dell'applicazione client. A partire dalla versione 8.3.8, questo tempo è stato raddoppiato e quindi le attività di routine iniziano ad essere eseguite al massimo 2 minuti dopo l'avvio del client (nella versione file).

Questa decisione è dovuta ad una riduzione del ritardo nell'avvio dell'applicazione. Inoltre, nella versione 8.3.7 è stata aggiunta l'abilità definizione rapida che la sessione corrente è una sessione di lavoro in background. Questo viene implementato utilizzando il nuovo metodo di contesto globale GetCurrentInfoBaseSession(), nonché un nuovo metodo per la sessione dell'infobase OttieniAttivitàSfondo().

Di seguito è riportato il codice che illustra quanto sopra:

Per ingrandire cliccare sull'immagine.

Calcolo delle somme di controllo

La piattaforma ora include meccanismi per il calcolo dei checksum dei dati.

Ricordiamolo somma di controllo(hash) è un valore calcolato da un insieme di dati applicando un determinato algoritmo e utilizzato per verificare l'integrità dei dati durante la trasmissione o l'archiviazione.

Gli hash possono essere utilizzati per verificare l'identità dei dati (ad esempio, è necessario assicurarsi che durante il trasferimento un file non sia stato danneggiato; verificare se sono state apportate modifiche al file e, in tal caso, caricarlo nuovamente nel database) .

A questo scopo è stato implementato un oggetto nella piattaforma HashingData, disponibile sul server, nel Thick Client, nella connessione esterna e anche sul server delle applicazioni mobili.

Questo oggetto ha due metodi: Aggiungere() E AggiungiFile(), che aggiornano la somma hash tenendo conto dei dati passati nei parametri.

Piattaforma 8.3.4.437 supporta il calcolo delle seguenti funzioni hash: CRC32, MD5, SHA1, SHA256. Ma le funzioni SHA1 E SHA256 non sono supportati sulla piattaforma mobile.

Diamo un'occhiata a un semplice esempio. Si presuppone che sul server nella directory del programma sia presente un file “ ragent.exe" È necessario calcolare MD5-sum per questo file.

Per fare ciò creeremo un'elaborazione esterna, sul modulo sulla quale inseriremo il comando Calcolare. Il gestore contiene il seguente codice:

&SuClient
Procedura Calcola (comando)
Risultato = CalcolaSuServer();
Rapporto(Stringa(Risultato));
Fine della procedura
&SuServer
Funzione CalcolaSuServer()
Cancelletto = Nuovo HashingData(FunzioneHash.MD5);
Hash.AddFile(CatalogoProgrammi() + “ragent.exe”);
Restituisce Hash.HashSum ;
EndFunction

Nella piattaforma dell'edizione 8.3.10+ nel metodo Aggiungere() oggetto HashingDataÈ diventato possibile utilizzare un flusso di dati binari, che ne ha notevolmente semplificato l'utilizzo nella risoluzione di vari problemi applicati di aggiornamento delle somme hash.

Lavorare con versioni protette dei protocolli SMTP/POP3

Sulla piattaforma 8.3 è diventato possibile utilizzare versioni protette dei protocolli SMTP/POP3(ci sono termini SMTP/POP3S O SSLSMTP/SSLPOP3).

Per oggetto Profilo di posta Internet nuove proprietà implementate:

  • Utilizza SSLSMTP;
  • UtilizzareSSLPOP3;
  • Solo SecureAuthenticationSMTP;
  • Solo autenticazione sicura POP3.

Proprietà Autenticazione SMTP E Autenticazione POP3 oggetto Profilo di posta Internet, nonché i trasferimenti Metodo di autenticazione SMTP E Metodo di autenticazione POP3 Non è consigliabile utilizzarli: sono supportati per compatibilità.

Utilizzando un protocollo sicuro SMTPS rende possibile inviare posta da 1C, utilizzando tramite casella di posta Google.

Diamo un'occhiata a un esempio. Sul modulo inseriremo dei campi per inserire l'oggetto della lettera e l'indirizzo del destinatario e per inserire il testo della lettera - un campo del documento formattato.

Per ingrandire cliccare sull'immagine.

Quando premi il pulsante Inviare Verrà eseguito il seguente codice:

&SuClient
Procedura Invia posta (comando) = Nuova posta Internet; Profilo = Nuovo Profilo di posta Internet;
Profilo.IndirizzoServerSMTP= “smtp.googlemail.com”;
Profilo.UtenteSMTP= “[e-mail protetta]” ;
Profilo.PasswordSMTP= “PASSWORD” ;
Profilo.UtilizzaSSLSMTP= Vero;
Profilo.PortaSMTP = 465; Tentativo
Mail.Connetti(Profilo);
Eccezione
Rapporto(DescrizioneErrore());
Ritorno ;
Finetentativo; MailMessageText= “” ;
Allegati = Nuova struttura;
Text.GetHTML(MailMessageText, Allegati); MailMessage= Nuovo InternetMailMessage;
MailMessage.Recipients.Add(A cui );
MailMessage.Subject= Oggetto;
MailMessage.Texts.Add(MailMessageText,
MailMessageTextType.HTML); Mail.Invia ( MailMessage); Mail.Disconnect();
Fine della procedura

Tieni presente che nel nostro esempio, se il server SMTP non è stato in grado di inviare un'e-mail ai destinatari, allora il metodo Mail.Send(Messaggio di posta) ha lanciato un'eccezione. Ciò ha causato alcuni disagi agli sviluppatori, perché... Il motivo per cui è stata lanciata l'eccezione non era ovvio.

Nella versione 8.3.9, questo comportamento è cambiato e ora il metodo Send() restituisce una corrispondenza la cui chiave è il destinatario e il cui valore è la diagnostica del server di posta. Ciò consente di determinare con precisione i motivi del mancato invio di un messaggio email a ciascun destinatario. In modalità compatibilità con la versione 8.3.8, il comportamento non è cambiato.

Stampa fronte-retro

Sulla piattaforma 8.2 La piattaforma stessa non gestiva la stampa duplex; questa funzione poteva essere controllata solo tramite il driver della stampante.

Sulla piattaforma 8.3 è diventato possibile controllare la stampa fronte-retro per un foglio di calcolo, un diagramma grafico (dal linguaggio integrato e in modo interattivo) e un documento di testo (solo interattivo).

Le enumerazioni di sistema sono apparse nel linguaggio integrato:

  • Tipo di stampa fronte-retro(Nessuno, Capovolgi verso l'alto, Capovolgi verso sinistra);
  • (Auto, MirrorTop, MirrorLeft, Non utilizzare).

E per gli oggetti TabularDocument E Schema grafico sono apparse le proprietà Stampa fronte-retro E Alternanza delle disposizioni delle pagine, con il quale è possibile modificare il layout delle pagine stampate.

Nella versione 8.3.9 della piattaforma, all'enumerazione del sistema DuplexPrintType è stato aggiunto un nuovo valore Utilizzare Impostazioni stampante. La selezione di questo valore consentiva di utilizzare le impostazioni della stampante durante la stampa dei documenti di sistema. Nella modalità compatibilità 8.3.8, il comportamento è invariato e le impostazioni della stampante corrispondente vengono ignorate.

La finestra di dialogo per la pubblicazione di una base informativa su un server web è stata resa più funzionale. Ora la pubblicazione dal configuratore ti consente di impostare tutti i parametri del file default.vrd.

Per la finestra di dialogo per la pubblicazione di un client Web e di servizi Web tramite il configuratore viene implementato quanto segue:

  • capacità di controllare la disponibilità dei servizi Web per impostazione predefinita (attributo puntoAbilitaComune elemento w);
  • capacità di controllare l'esecuzione dei lavori in background nella versione del file (attributo consentire l'esecuzione di lavori pianificati elemento w).

Se la casella di controllo "Pubblica servizi Web per impostazione predefinita" sul segnalibro "Di base"è installato, durante l'aggiornamento della pubblicazione, i servizi Web selezionati verranno pubblicati automaticamente.

In caso contrario, i servizi Web verranno contrassegnati come non pubblicabili. Questo flag corrisponde all'attributo puntoAbilitaComune elemento w nel fascicolo default.vrd, destinato alla configurazione di un client Web e di servizi Web.

Attributo puntoAbilitaComune L'elemento ws è responsabile della possibilità di utilizzare in questa base di informazioni servizi Web pubblicati senza indicare esplicitamente il permesso per l'uso (attributo abilitare elemento punto).

Se l'attributo ha un valore VERO, quindi tutti i servizi Web per i quali il valore dell'attributo non è specificato esplicitamente abilitare elemento punto, sarà consentito l'uso.

In caso contrario, l'utilizzo di tali servizi Web sarà vietato.

Impostazioni “Lavori in background in modalità file” corrisponde all'attributo consentire l'esecuzione di lavori pianificati ws nel file default.vrd.

Attributo consentire l'esecuzione di lavori pianificati controlla la capacità di eseguire attività di routine tramite l'estensione del server Web per la versione file dell'infobase.

L'attributo può assumere i seguenti valori:

  • spento– in questo caso, l'estensione del server web non eseguirà attività di routine. Le attività di routine verranno eseguite da un'applicazione client (se ne esiste una), che si connette direttamente all'infobase, senza utilizzare un server web.
  • forza– in questo caso, l'estensione del server web eseguirà attività di routine.
    Se il valore di questo attributo non è specificato, le attività di routine verranno eseguite dall'applicazione con la quale verrà effettuata la prima connessione all'infobase.

La finestra di pubblicazione sul servizio web è diventata ancora più comoda ed ergonomica nell'attuale versione della piattaforma. Ora i parametri che descrivono l'autenticazione OpenID sono posizionati in una scheda separata.

Numerazione degli oggetti dell'infobase

Sulla piattaforma 8.3 Il meccanismo per la numerazione automatica degli oggetti della base informazioni è stato rielaborato. L'unicità di un numero o codice (compresi quelli ottenuti come risultato della generazione automatica di un numero o codice) viene sempre verificata durante la registrazione di un oggetto.

Al testo del messaggio relativo alla violazione dell'unicità di un numero o codice è stata aggiunta l'indicazione di quale numero o codice non è univoco.

L'uso di un numero o codice libero è cambiato. Nuovo numero oppure il codice viene assegnato senza utilizzare numeri o codici rilasciati, se sono già emessi numeri o codici con un prefisso grande (in ordine) del numero o del codice.

Funzioni aggregate del linguaggio di espressione del sistema di composizione dei dati

Nuove funzioni aggregate sono implementate nel linguaggio delle espressioni del sistema di composizione dei dati:

  • Ogni();
  • Qualunque();
  • DeviazioneStandarddellaPopolazione();
  • StandardSampleDeviation();
  • Campioni di varianza();
  • Varianzadellapopolazione();
  • CovariancePopulation();
  • Covarianza del campione();
  • Correlazione();
  • Pendenza di regressione();
  • Segmento di regressione();
  • Conteggio regressioni();
  • RegressionR2();
  • RegressionAverageX();
  • MediaRegressioneY();
  • RegressioneMediaSXX();
  • RegressionAverageSYY();
  • Media di regressioneSXY().

Come indicano i nomi, si tratta di funzioni statistiche, il che significa che gli sviluppatori hanno l'opportunità di creare report complessi senza dover sviluppare procedure per il calcolo dei dati statistici.

Per ingrandire cliccare sull'immagine.

Come puoi vedere dalla figura, non ci sono nuove funzioni nell'elenco a discesa, ma se le inserisci manualmente non ci sarà alcun messaggio di errore e verrà generato il report:

Anche di interesse nuova funzionalitàClassificazioneABC(). Il risultato della funzione sarà il numero della classe, partendo da 1 (1 corrisponde alla classe A, 2 alla classe B, 3 alla classe C, ecc.).

Dimostriamo come funziona questa funzione. Creiamo un nuovo report esterno “Classificazione delle merci” in base alla richiesta:

SCEGLIERE
Consumo di prodottoProdotti.Prodotto,
Consumo di prodottiProdotti.Quantità
DA
Documento.Consumo di beni.Beni COME Consumo di prodottiProdotti

Definiamo un nuovo campo calcolato Classe:

Per ingrandire cliccare sull'immagine.

Configuriamo le risorse come segue:

Per ingrandire cliccare sull'immagine.

In modalità utente, il report si presenta così:

In conclusione, notiamo che di edizione in edizione nella piattaforma 1C 8.3 il meccanismo ACS viene costantemente migliorato e perfezionato e nell'ambito del nostro articolo “per principianti” non è possibile presentare queste modifiche per intero. Sì, questo sembra superfluo, perché quando lavori sulla versione attuale della piattaforma puoi sempre utilizzare vari sistemi di aiuto per aiutarti ad analizzare questo o quell'aspetto del funzionamento di questo meccanismo.

Inoltre, non dimenticare il nostro corso separato Sviluppo professionale di report in 1C 8.3 sul sistema di composizione dei dati, che scompone all'atomo tutte le sottigliezze e le insidie ​​​​quando si lavora con questo meccanismo. Dai un'occhiata tu stesso alla demo.

Quindi, riassumiamo i risultati intermedi. Fino a questo punto abbiamo conosciuto le nuove funzionalità dell'interfaccia Taxi e dei moduli gestiti, nonché alcune funzionalità della piattaforma stessa precedentemente non fornite. Ora è il momento di vedere quali comode funzionalità sono diventate disponibili per lo sviluppatore nel configuratore.

Ci consente di eseguire qualsiasi calcolo nel sistema senza che l'utente se ne accorga, cioè in background. Inoltre, questo meccanismo ci consente di parallelizzare il processo di calcolo. Possiamo anche parallelizzare la procedura che verrà eseguita. Per fare ciò, il nostro lavoro in background deve eseguire diversi altri lavori in background. In questo caso i processi sono parallelizzati e, se disponiamo di un sistema multiprocessore e multi-core, il nostro algoritmo funzionerà in modo efficiente. Dopo aver avviato diversi processi, possiamo dire al sistema che deve attendere il completamento di questi processi per combinare in qualche modo il risultato.

Ad esempio, nelle configurazioni tipiche, mentre l'utente sta lavorando, il file vari tipi lavori in background di servizio. Ciò può essere evidenziato dalle voci di registro che registrano il fatto che tali azioni sono state eseguite. Inoltre, ciò non influisce in alcun modo sul lavoro dell'utente, semplicemente non se ne accorge.

Idealmente, un lavoro in background viene implementato in una versione client-server, nel qual caso l'intero carico va al server. Per quanto riguarda l'opzione file, è possibile un lavoro in background, ma presenta alcune peculiarità.

Questo è ciò che il sistema produrrà se non si prendono in considerazione queste funzionalità e si esegue un lavoro in background nella versione file dell'infobase.


Il lavoro in background 1C presenta alcune limitazioni. Poiché funziona lato server, non esiste alcuna possibilità di lavoro interattivo con l'utente. Ad esempio, non è possibile visualizzare un messaggio o alcuna informazione. Tutti questi dati devono essere archiviati nella base di informazioni e ulteriormente elaborati in qualche modo.
Contattando l'assistente alla sintassi è possibile ottenere informazioni più dettagliate sui processi in background 1C. Va notato qui che questo oggetto è puramente software e non è archiviato in alcun modo nel database. Cioè, creiamo un'istanza della classe, inizializziamo le proprietà e la lanciamo per l'esecuzione.

Quali strumenti abbiamo per gestire i lavori in background? Questa struttura è un oggetto di metadati "Gestore attività in background". Questo oggetto ha un metodo "Correre", utilizzando questo metodo, viene avviato il lavoro in background.

Ha i seguenti parametri:
"NomeMetodo"- il nome della procedura o funzione da eseguire, e deve essere una procedura o funzione del contesto server;

"Opzioni"- un array di parametri, il cui numero di elementi deve corrispondere al numero di parametri della nostra procedura/funzione specificati nel parametro "NomeMetodo";

"Chiave"- una certa chiave di unicità, che è una linea attraverso la quale il sistema capisce se un'attività in background deve essere avviata o se tale attività è già in esecuzione;

"Nome"- qui puoi specificare una descrizione arbitraria del nostro metodo.

Il valore restituito è un oggetto "Attività in background", contenente il nome del metodo corrente, la chiave corrente e molte altre proprietà e metodi. Uno di questi metodi è il metodo "Aspetta completamento". Il suo scopo è quello di poter dire al sistema di non fare nulla fino al completamento del lavoro in background.

Lavoro in background 1C 8.2, 8.3 - Esempio di utilizzo

Facciamo un esempio di lavoro con lavori in background 1C. Per prima cosa creeremo un semplice algoritmo che caricherà brevemente il sistema 1C in modo tale da non poter fare nulla in questo momento.

Per fare questo:

1. Creiamo un modulo comune "Gestori BackgroundTask", che verrà compilato lato server;


2. In esso descriveremo la procedura di esportazione "ProduciCalcoloSfondo(Parametro)", che accetta un parametro di tipo stringa;

Procedura PerformBackgroundCalculation(Parametro) ExportStartTime = CurrentDate() ;< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление(While CurrentDate() - Ora di inizio"Qualche parametro"
Pronto. Ora, quando si avvia l'elaborazione e si preme un pulsante, il sistema si blocca per diversi secondi, durante i quali non è possibile fare nulla. Questo è esattamente ciò che dovevamo fare.

Ora ci assicureremo che questi calcoli vengano eseguiti in background, cioè in modo che l'attività in background 1C 8.2, 8.3 venga eseguita, ma non interferisca con noi.

Per fare questo:

1. Durante l'elaborazione, nell'evento clic sul pulsante, scrivere il seguente codice.

Procedura KnPress() Parametri = Nuovo Array; While CurrentDate() - Ora di inizio Opzioni. Aggiungere( ) ; BackgroundTask. Correre ( "Gestori BackgroundTask. Esegui BackgroundComputation""Qualche parametro"

, parametri, nuovo identificatore univoco,

"Compito di prova"

  • Qui passiamo il nome della procedura del modulo comune come primo parametro e un array di parametri come secondo. Al terzo parametro deve essere passata una chiave univoca e al quarto parametro una descrizione della nostra procedura.
  • Spesso, quando si conservano i record, è necessario eseguire periodicamente determinate azioni senza l'intervento dell'utente. Le attività di routine e in background in 1C sono quei meccanismi forniti a tale scopo nell'ottava versione del programma e consentono:
  • Impostare la consegna tempestiva dei documenti; Calcolare saldi e totali;;
  • Fornire frequenza

lista di posta

Controlla ed elimina i dati non rilevanti. Attività in background e pianificate: cos'è e dove è configurata?

Attività pianificata

- un meccanismo integrato in 1C che consente di configurare e, secondo il programma e la frequenza stabiliti, eseguire una determinata sequenza di azioni.

  • Un lavoro in background è un'azione generata da un'operazione di routine e non richiede la partecipazione diretta dell'utente.
  • Un'attività di routine viene creata nella modalità configuratore:
  • Nella finestra dell'albero di configurazione troviamo il ramo corrispondente (Fig. 1);

Fare clic sul pulsante Aggiungi;

  • Nella finestra che si apre è necessario specificare un nome che permetta di identificare l'oggetto nella configurazione;

Fig.2

  • Di fronte alla scritta “Schedule” (Fig. 2) è presente la scritta “Open”, cliccando sulla quale si apre una finestra per l'impostazione dell'ora e della frequenza di esecuzione del gestore (Fig. 3);
  • Fig.3
  • È necessario inoltre compilare il “Nome metodo” (qui verrà inserito il nome della procedura richiamata dal modulo generale e che descrive l'algoritmo di comportamento del programma);
  • Dovrebbe essere impostato "Predefinito" se il gestore deve essere avviato immediatamente dopo essere stato aggiunto al database, altrimenti il ​​lancio può essere effettuato dall'elaborazione corrispondente (maggiori informazioni di seguito);
  • I parametri "Numero di tentativi" e "Intervallo tra tentativi" descrivono il comportamento del programma se si verifica un'eccezione durante l'esecuzione di un processo in background.

Pertanto, utilizzando il meccanismo delle operazioni di routine, è possibile impostare la pianificazione e le azioni principali dei lavori in background. Vediamo ora le loro caratteristiche.

Caratteristiche dei lavori in background

La caratteristica principale di questo meccanismo è che il processo in background viene eseguito in modo asincrono.

Cosa significa questo? Il fatto è che con un modello di lavoro sincrono, se viene eseguito un algoritmo, l'interfaccia utente viene bloccata. Nel nostro caso l'utente potrà continuare ad inserire e modificare i dati anche se la procedura è in esecuzione. Il modello di programmazione asincrona prevede la separazione dei thread computazionali.

Pertanto, i lavori in background in 1C possono generare i propri processi, distribuendo i calcoli su vari server inclusi nello stesso cluster.

Caratteristiche di lavorare in modalità client-server

  • La pianificazione e il controllo dell'esecuzione vengono effettuati da uno scheduler da un cluster di server;
  • Se viene visualizzata una richiesta di esecuzione, lo scheduler cerca i processi di lavoro del cluster con un carico minimo e distribuisce loro le attività per l'esecuzione;
  • Ogni processo può eseguire più calcoli paralleli;
  • Dopo l'arrivo di un'attività, il processo si connette al database ed esegue l'algoritmo in esso contenuto;
  • Il processo riporta i risultati allo scheduler.

Lavori in background in modalità file

Prima della versione della piattaforma 8.3.3.641, lavorare con i lavori in background nella versione file presentava alcune difficoltà:

  1. Era necessario avviare una sessione separata che funzionasse 24 ore su 24, sostituendo lo scheduler;
  2. Questa sessione dovrebbe aver eseguito periodicamente il metodo RunJobProcessing().

Dopo l'aggiornamento, ogni avvio dei Thick e Thin Client, se nelle impostazioni di avvio (Fig. 4) nel campo “Additional” è specificata la chiave EnableExecuteScheduledJobs, avvia un thread aggiuntivo per la connessione al database, che non influisce sulla il lavoro dell'utente in alcun modo, ma esegue solo operazioni in background.

Fig.4

Va tenuto presente che anche nella versione file del lavoro, i processi in background non consentono il lavoro interattivo con l'utente (i messaggi di servizio, gli avvisi e le domande non verranno visualizzati). Cioè, devono essere codificati come se dovessero essere eseguiti lato server.

Come disabilitare le attività pianificate

Le attività non utilizzate possono essere disabilitate semplicemente deselezionando la casella di controllo "Usa" nelle proprietà dell'oggetto.

Nel caso in cui l'amministratore debba vietare l'uso di operazioni di routine e in background per l'intero database nel suo insieme (ad esempio, sul server sono archiviati diversi database, di cui solo uno è quello principale, e il resto viene utilizzato solo per lo sviluppo), è necessario utilizzare l'utilità di amministrazione del database. Puoi anche selezionare la casella di controllo "Imposta il blocco delle attività di routine" nel database creato sul server.

Inoltre, i dischi ITS dispongono di una speciale "Task Console" di elaborazione, che consente di modificare la pianificazione processi in background e cambiare la loro attività.

Gestione delle attività di routine dei database 1C dal programma di aggiornamento

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

In questa nota, esamineremo le capacità del programma di aggiornamento per la gestione delle attività di routine nei database.

Innanzitutto nella voce “Altro” -> “Gestisci attività di routine...”:

IN menu contestuale database dedicato (o gruppo di database):

E infine, nei modelli per script batch (questo consente di eseguire operazioni su attività di routine da uno script in base a una pianificazione):

Ecco come appare la finestra di dialogo per la gestione delle attività di routine nei database:

Quali problemi consente di risolvere il gruppo giusto basi (o una base)?

Selezione dei compiti di routine

Tieni presente che puoi selezionare un elenco di attività di routine in molte operazioni di seguito:

Ma nella finestra di dialogo di selezione potrebbero non esserci attività di routine specifiche per il tuo database:

In questo caso, puoi indicare i nomi delle attività pianificate di cui hai bisogno nella sezione "Le tue attività...", ad esempio, in questo modo:

I nomi di tali attività di routine possono essere presi direttamente dal rapporto su tutte le attività di routine (questo verrà discusso).

Visualizza lo stato corrente delle attività

Per fare ciò, vai alla scheda "Prelievo" e fai clic sul pulsante "Prelievo...":

Nei risultati possiamo vedere:

  1. L'avvio di nuove attività pianificate sul server 1C è abilitato o disabilitato.
  2. Elenco delle attività di routine nel database.
  3. Il loro programma.
  4. I lavori sono abilitati o disabilitati.
  5. Se l'ultima esecuzione di un'attività ha presentato un errore, questo errore viene visualizzato in rosso accanto all'attività.

Se necessario, nelle impostazioni delle funzionalità, possiamo restringere l'elenco delle attività pianificate e visualizzare anche solo le attività abilitate:

Disattiva tutte o alcune attività

Per fare ciò, vai alla scheda “Disattiva”:

Per tutte le attività pianificate o per quelle selezionate, la casella di controllo "Usa" verrà deselezionata.

Ecco il risultato per una base (clicca per espandere)

Includere tutte o alcune attività

Per fare ciò, vai alla scheda “Abilita”:

Per tutte le attività pianificate o per quelle selezionate, verrà selezionata la casella di controllo "Utilizza".

Tieni presente che il flag "Crea" è disponibile in questa scheda. copia di backup base" nell'angolo in basso a sinistra.

Ecco il risultato per una base (clicca per espandere)

Gestiamo l'avvio delle attività pianificate sul server 1C

Per fare ciò, vai alla scheda “Server 1C”:

Selezionare "Blocca" o "Sblocca" e fare clic sul pulsante "Esegui".

Impostazione di una pianificazione delle attività

Ma cosa succede se dobbiamo impostare una pianificazione per l'avvio di un'attività (o di un gruppo di attività) in più database contemporaneamente?

Per fare ciò, vai alla scheda “Imposta pianificazione”:

Impostiamo il programma (il dialogo e le sue capacità coincidono completamente con quello standard in 1C stesso) e facciamo clic su "Personalizza...".

Lanciamo attività per l'esecuzione

Per fare ciò, vai alla scheda “Esegui”:

Selezionare le attività richieste e fare clic sul pulsante "Esegui":

Salvataggio delle impostazioni dell'attività in un file esterno

Supponiamo di aver configurato idealmente le attività di routine in uno dei database e di voler trasferire queste impostazioni a tutti gli altri database.

Per fare ciò, innanzitutto carichiamo tutte le impostazioni delle attività nel database ideale in un file esterno:

Ripristino delle impostazioni dell'attività da un file esterno

Quindi carichiamo questo file con le impostazioni dell'attività in tutti gli altri database:

Tieni presente che per questa attività (trasferimento delle impostazioni del lavoro da un database a un altro), ho scelto il metodo di corrispondenza in base al nome del lavoro e non all'identificatore interno.

Parole d'addio

In generale, questo è tutto ciò che volevo dirti. Io stesso vedo molti scenari per l'utilizzo di nuove funzionalità, ma qui ho solo brevemente sfiorato i punti principali.