Computer finestre Internet

1c modalità provvisoria di elaborazione esterna. La modalità provvisoria è impostata. L'operazione è vietata. Esecuzione dell'elaborazione esterna in modalità applicazione normale

L'apertura programmatica dell'elaborazione esterna viene eseguita utilizzando l'oggetto di contesto globale ExternalProcessing, che ha il tipo Responsabile elaborazione esterna. Per ciascuna modalità operativa della piattaforma 1C (modalità di applicazione normale e modalità di applicazione gestita), vengono utilizzati diversi metodi oggetto per lavorare con l'elaborazione esterna.

Esecuzione dell'elaborazione esterna in modalità applicazione normale

In un'applicazione tipica, è necessario utilizzare il metodo Create() dell'oggetto ExternalProcessing, a cui viene passato il nome completo del file di elaborazione esterno. Il metodo restituisce un oggetto di tipo Elaborazione esterna, questo oggetto è l'elaborazione esterna che viene aperta. Se è necessario aprire un modulo di elaborazione esterno, chiamare il metodo GetForm() sull'oggetto ricevuto, che restituirà il modulo principale, quindi chiamare il metodo Open() per aprirlo.


Elaborazione = ExternalProcessing.Create(FullFileName);
Processing.GetForm().Open();

Nell'elaborazione esterna, il modulo principale deve sempre essere regolare e il modulo controllato deve essere sempre aggiuntivo, altrimenti il ​​metodo GetForm() non funzionerà nella normale modalità di applicazione.

Esecuzione dell'elaborazione esterna in modalità applicazione gestita

Nella modalità moduli gestiti, l'algoritmo è diviso per contesto di esecuzione. Sul client riceviamo dati binari utilizzando il nome completo del file di elaborazione esterno. Trasferiamo i dati binari ricevuti al server e li inseriamo nella memoria temporanea. Successivamente è necessario chiamare il metodo Connect() dell'oggetto ExternalProcessing, al quale viene passato l'indirizzo per l'archiviazione temporanea. Il metodo restituisce il nome dell'elaborazione esterna connessa. Restituiamo il nome dell'elaborazione esterna al client, creiamo un percorso di stringa al modulo di elaborazione e utilizziamo il metodo OpenForm() per aprire il modulo di elaborazione esterna.

&Sul server
Funzione GetExternalProcessingName(BinaryData)
IndirizzoInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Restituisce ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&SuClient
FullFileName = ""; // Nome completo del file di elaborazione esterno.
FileData = nuovo BinaryData(FullFileName);
NomeProcessingEsterno = GetNomeProcessingEsterno(FileData);
OpenForm("ExternalProcessing." + NomeProcessingEsterno + ".Form");

Modalità provvisoria per l'elaborazione esterna

I metodi Create() e Connect() dell'oggetto ExternalProcessing hanno un parametro in entrata SafeMode, un segno di connessione dell'elaborazione esterna in modalità provvisoria. Se il parametro non viene specificato la connessione verrà effettuata in modalità protetta.
La modalità provvisoria è progettata per proteggere il sistema dall'esecuzione di codice di programma "non attendibile" sul server. Il potenziale pericolo deriva dall'elaborazione esterna o dal codice di programma immesso dall'utente per l'utilizzo nei metodi Run() e Calculate().
La modalità provvisoria impone le seguenti restrizioni:
  • la modalità privilegiata viene annullata se era installata;
  • i tentativi di accedere alla modalità privilegiata vengono ignorati;
  • le operazioni con oggetti COM sono vietate;
  • è vietato caricare e collegare componenti esterni;
  • è vietato l'accesso al file system (ad eccezione dei file temporanei);
  • L'accesso a Internet è vietato.
I processi aperti in modo interattivo non vengono eseguiti in modalità provvisoria, pertanto si consiglia di implementare un meccanismo per l'apertura di processori esterni in modalità provvisoria, nonché a livello di autorizzazione per vietare all'utente di aprire in modo interattivo processori esterni.
Per vietare l'apertura interattiva del trattamento, in tutti i ruoli assegnati all'utente, è necessario rimuovere il diritto “Apertura interattiva del trattamento esterno” (vedi Figura 1).
Figura 1. Diritti per aprire in modo interattivo elaborazioni/report esterni
Il diritto di "Apertura interattiva del trattamento esterno" non pregiudica in alcun modo l'oggetto del trattamento esterno.

L'apertura programmatica dei report esterni è simile all'elaborazione esterna, ma è necessario utilizzare l'oggetto di contesto globale ExternalReports, che ha il tipo Gestore dei rapporti esterni.

Stampa (Ctrl+P)

Oggetti di configurazione

Se è necessario utilizzare un codice di programma "non attendibile" sul server: elaborazione esterna o codice di programma immesso dall'utente per l'utilizzo nei metodi Run() e Calculate(), è possibile utilizzare la modalità operativa sicura.

In modalità provvisoria:

  • Modalità privilegiata annullato.
  • Passaggio alla modalità privilegiata ignorato.
  • Vietato operazioni che comportano l'utilizzo di mezzi esterni in relazione alla piattaforma 1C:Enterprise (compresi analoghi non bloccanti dei metodi specificati):
  • Meccanismi COM:
    • COMOggetto();
    • GetCOMOggetto();
    • WrapperHTMLDocument.GetCOMObject().
  • Caricamento di componenti esterni:
    • CaricaComponenteEsterno();
    • ConnettiComponenteEsterno().
  • Accesso al file system:
    • ValoreInFile();
    • Copia il file();
    • UnisciFile();
    • SpostaFile();
    • DividiFile();
    • CreaDirectory();
    • Cancella file();
    • Nuovo file;
    • Nuovo xBase;
    • VoceHTML.OpenFile();
    • LeggiHTML.OpenFile();
    • LeggiXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TrasformaXSL.LoadFromFile();
    • WriteZipFile.Open();
    • LetturaZipFile.Open();
    • New ReadText(), se il primo parametro è una stringa;
    • ReadText.Open(), se il primo parametro è una stringa;
    • NewTextRecord(), se il primo parametro è una stringa;
    • WriteText.Open(), se il primo parametro è una stringa;
    • NewTextExtract();
    • modificando la proprietà ExtractText.FileName;
    • EstrattoTesto.Write();
    • New Picture(), se il primo parametro è una stringa;
    • Immagine.Scrivi();
    • nuovi dati binari();
    • BinaryData.Write();
    • NewDataRecord(), se il primo parametro è una stringa;
    • Nuovo ReadData(), c'è un primo parametro: una stringa;
    • tutti i metodi dell'oggetto FileStreamManager;
    • Nuovo FileStream();
    • FormattedDocument.Write();
    • GeographicScheme.Read();
    • Schema geografico.Write();
    • Schema geografico.Print();
    • TabularDocument.Read();
    • TabularDocument.Write();
    • TabularDocument.Print(); GraphicScheme.Read();
    • GraphicScheme.Write();
    • GraphicScheme.Print();
    • TextDocument.Read();
    • TextDocument.Write().
  • Accesso ad Internet:
    • Nuova connessione Internet,
    • Nuova posta Internet,
    • Nuovo proxy Internet,
    • Nuova connessione HTTP,
    • Nuova connessione FTP.

ATTENZIONE! Quando si eseguono operazioni vietate, viene generata un'eccezione in fase di esecuzione.

Nota. I report esterni e le elaborazioni aperti utilizzando il menu File - Apri vengono eseguiti in modalità provvisoria se l'utente non dispone dei diritti di accesso amministrativo.

Il numero di volte in cui la modalità provvisoria viene attivata deve corrispondere al numero di volte in cui viene disattivata. Tuttavia, se la modalità provvisoria è stata attivata all'interno di una procedura o funzione (una o più volte), ma non è stata disattivata, il sistema si spegnerà automaticamente tante volte quante sono state attivazioni incomplete nella procedura o funzione lasciata.

Se in una procedura o una funzione chiama un metodo Imposta modalità provvisoria (falso) fatto più che chiamate di metodo Imposta modalità sicura (Vero), verrà generata un'eccezione.

L'installazione del software in modalità provvisoria potrebbe essere necessaria nel caso in cui lo sviluppatore della configurazione intenda utilizzare codice di programma di terze parti (in relazione alla configurazione), la cui affidabilità lo sviluppatore non può garantire. Un esempio di tale codice è l'esecuzione dei metodi Execute() e Compute() nei casi in cui il codice eseguibile viene ottenuto dal mondo esterno. In questo caso, una buona pratica sarebbe impostare la modalità provvisoria prima di eseguire questi metodi:

// Viene generato il codice del programma che deve essere eseguito // È possibile che il codice sia caricato da fonti esterne // o inserito manualmente ExecutableCode = GetExecutedCodeFromExternalWorld(); // Abilita la modalità provvisoria SetSafeMode(True); // Esegue codice potenzialmente pericoloso Execute(ExecutableCode); // Disattiva la modalità provvisoria SetSafeMode(False);

In alcuni casi, le impostazioni della modalità provvisoria potrebbero entrare in conflitto con le impostazioni della modalità privilegiata. Un esempio di tale conflitto è la pubblicazione di un documento per il quale è impostata la proprietà Modalità privilegiata durante la pubblicazione, dal codice nel linguaggio integrato eseguito in modalità provvisoria. In questo caso, la modalità privilegiata è disabilitata e i tentativi di abilitarla vengono ignorati. Di conseguenza, il codice nel linguaggio incorporato, che “conta” sulla modalità privilegiata abilitata, “incontra” la sua assenza, il che porta ad errori con ragioni non ovvie per la loro comparsa. Per evitare questa situazione, il sistema 1C:Enterprise disabilita automaticamente la modalità provvisoria per i gestori eventi disponibili nel modulo oggetto o nel modulo gestore, a condizione che il codice eseguibile nel linguaggio integrato non si trovi nell'estensione di configurazione. Tali gestori sono contrassegnati in modo speciale nell'assistente alla sintassi.

Fornisce inoltre la possibilità di disabilitare la modalità provvisoria dal linguaggio integrato (se il codice del programma che tenta di disabilitarla non è in un'estensione di configurazione). Per disabilitare la modalità provvisoria esiste un metodo SetDisableSafeMode(). Puoi verificare che la modalità provvisoria sia attualmente disabilitata (automaticamente o chiamando un metodo) utilizzando il metodo GetDisableSafeMode().

All'interno di un metodo nel linguaggio integrato, non può esserci più di un livello di nidificazione dell'impostazione della modalità sicura (chiamando il metodo SetSafeMode()) e dell'impostazione della disabilitazione della modalità sicura (automaticamente durante l'esecuzione dell'evento dell'oggetto metadati gestori o chiamando il metodo SetSafeModeDisable()). Quando si tenta di aumentare la nidificazione, viene generata un'eccezione:

// Utilizzo corretto di ProcedureProcedureName() SetDisableSafeMode(True); SetSafeMode(vero); Imposta modalità sicura (falso); SetDisableSafeMode(False); EndProcedure // Utilizzo non corretto di ProcedureProcedureName() SetDisableSafeMode(True); SetSafeMode(vero); SetDisableSafeMode(False); // Eccezione EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // Eccezione EndProcedure

L'apertura programmatica dell'elaborazione esterna viene eseguita utilizzando l'oggetto di contesto globale ExternalProcessing, che ha il tipo Responsabile elaborazione esterna. Per ciascuna modalità operativa della piattaforma 1C (modalità di applicazione normale e modalità di applicazione gestita), vengono utilizzati diversi metodi oggetto per lavorare con l'elaborazione esterna.

Esecuzione dell'elaborazione esterna in modalità applicazione normale

In un'applicazione tipica, è necessario utilizzare il metodo Create() dell'oggetto ExternalProcessing, a cui viene passato il nome completo del file di elaborazione esterno. Il metodo restituisce un oggetto di tipo Elaborazione esterna, questo oggetto è l'elaborazione esterna che viene aperta. Se è necessario aprire un modulo di elaborazione esterno, chiamare il metodo GetForm() sull'oggetto ricevuto, che restituirà il modulo principale, quindi chiamare il metodo Open() per aprirlo.


Elaborazione = ExternalProcessing.Create(FullFileName);
Processing.GetForm().Open();

Nell'elaborazione esterna, il modulo principale deve sempre essere regolare e il modulo controllato deve essere sempre aggiuntivo, altrimenti il ​​metodo GetForm() non funzionerà nella normale modalità di applicazione.

Esecuzione dell'elaborazione esterna in modalità applicazione gestita

Nella modalità moduli gestiti, l'algoritmo è diviso per contesto di esecuzione. Sul client riceviamo dati binari utilizzando il nome completo del file di elaborazione esterno. Trasferiamo i dati binari ricevuti al server e li inseriamo nella memoria temporanea. Successivamente è necessario chiamare il metodo Connect() dell'oggetto ExternalProcessing, al quale viene passato l'indirizzo per l'archiviazione temporanea. Il metodo restituisce il nome dell'elaborazione esterna connessa. Restituiamo il nome dell'elaborazione esterna al client, creiamo un percorso di stringa al modulo di elaborazione e utilizziamo il metodo OpenForm() per aprire il modulo di elaborazione esterna.

&Sul server
Funzione GetExternalProcessingName(BinaryData)
IndirizzoInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Restituisce ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&SuClient
FullFileName = ""; // Nome completo del file di elaborazione esterno.
FileData = nuovo BinaryData(FullFileName);
NomeProcessingEsterno = GetNomeProcessingEsterno(FileData);
OpenForm("ExternalProcessing." + NomeProcessingEsterno + ".Form");

Modalità provvisoria per l'elaborazione esterna

I metodi Create() e Connect() dell'oggetto ExternalProcessing hanno un parametro in entrata SafeMode, un segno di connessione dell'elaborazione esterna in modalità provvisoria. Se il parametro non viene specificato la connessione verrà effettuata in modalità protetta.
La modalità provvisoria è progettata per proteggere il sistema dall'esecuzione di codice di programma "non attendibile" sul server. Il potenziale pericolo deriva dall'elaborazione esterna o dal codice di programma immesso dall'utente per l'utilizzo nei metodi Run() e Calculate().
La modalità provvisoria impone le seguenti restrizioni:
  • la modalità privilegiata viene annullata se era installata;
  • i tentativi di accedere alla modalità privilegiata vengono ignorati;
  • le operazioni con oggetti COM sono vietate;
  • è vietato caricare e collegare componenti esterni;
  • è vietato l'accesso al file system (ad eccezione dei file temporanei);
  • L'accesso a Internet è vietato.
I processi aperti in modo interattivo non vengono eseguiti in modalità provvisoria, pertanto si consiglia di implementare un meccanismo per l'apertura di processori esterni in modalità provvisoria, nonché a livello di autorizzazione per vietare all'utente di aprire in modo interattivo processori esterni.
Per vietare l'apertura interattiva del trattamento, in tutti i ruoli assegnati all'utente, è necessario rimuovere il diritto “Apertura interattiva del trattamento esterno” (vedi Figura 1).
Figura 1. Diritti per aprire in modo interattivo elaborazioni/report esterni
Il diritto di "Apertura interattiva del trattamento esterno" non pregiudica in alcun modo l'oggetto del trattamento esterno.

L'apertura programmatica dei report esterni è simile all'elaborazione esterna, ma è necessario utilizzare l'oggetto di contesto globale ExternalReports, che ha il tipo Gestore dei rapporti esterni.

Utilizzando “Trade Management 11.3” come esempio, considereremo il semplice processo di connessione di un modulo di stampa esterno. Considereremo anche le caratteristiche del nuovo sistema di sicurezza.

Passaggio veloce

Azioni preliminari

Prima dovresti abilitare la funzionalità oppure verificane la disponibilità

1. Accedere con tutti i diritti al database delle informazioni.

2. Accedere al menu “Anagrafica e amministrazione”/Blocco “Amministrazione”/Comando “Stampati, report ed elaborazioni”.

Aggiunta

Nella sezione che si apre:

Aggiungiamo l'elaborazione utilizzando il pulsante "Crea" (questo è importante) o "Aggiorna!" esistente:

  • Selezionatelo nella lista (se non selezionato o vuoto, il comando non funzionerà, ma non dirà nulla).
  • Fare clic sul pulsante "Carica da file".

Dopo la comparsa di 1C nell'elaborazione esterna, i controlli di sicurezza sono apparsi in nuove configurazioni.

Dovresti installare solo elaborazioni create in modo indipendente o ricevute tramite canali di comunicazione conosciuti (non dalla posta, solo da un sito Web con un certificato valido o fornito dai dipendenti dello sviluppatore, confermato da lui telefonicamente).

Se tutto nell'elaborazione è prescritto dallo sviluppatore, verrà impostato il "Posizionamento": verranno visualizzati i comandi sugli oggetti in cui sarà coinvolta l'elaborazione.
Per funzionare, basta fare clic su "Salva e chiudi".

Visita medica

Subito dopo, a seconda del tipo di trattamento:

  • Il modulo stampato diventa disponibile all'apertura di un documento o dal suo elenco (per uno già aperto quando lo si apre nuovamente) facendo clic sul pulsante “Stampa”.
  • L'elaborazione è disponibile nelle sezioni “Elaborazioni aggiuntive” di ciascun sottosistema
  • Elaborazione del riempimento tramite il pulsante “Compila” della lista o il pannello di comando principale della videata oggetto.

Per l'elaborazione di cui sopra, il lancio sarà simile al seguente:

Se il documento è nuovo, va trascritto; il meccanismo di elaborazione esterno ti avviserà di questo:

Ulteriore comportamento dipende dalla funzionalità integrata: è possibile aprire un modulo o semplicemente elaborare i dati.

Avvisi di sicurezza in 1C

Le nuove versioni e configurazioni della piattaforma hanno migliorato la protezione contro il lancio di programmi dannosi.

L'elaborazione potrebbe causare il caricamento di Excel, nel qual caso anche il nuovo sottosistema di sicurezza ti avviserà:

In questo caso, il codice del gestore viene interrotto.

Se fai clic su "Sì", il sistema ti chiederà di eseguire nuovamente il comando:

È possibile per un utente dell'infobase disabilitare la protezione da azioni pericolose tramite il “Configuratore”:

Questo non può essere modificato dalla modalità "Enterprise", forse è stato fatto apposta e potrebbe apparire dopo l'aggiornamento.

Va inoltre notato che se l'elaborazione utilizza Excel, deve essere eseguita in modalità non sicura (questo era il caso prima dell'introduzione del nuovo sistema, funziona in parallelo):

"Impossibile caricare MS EXCEL!!!" “La modalità provvisoria è stata impostata. L'operazione è vietata"

Nell'elaborazione esterna appare così:

Lo sviluppatore dovrebbe impostarlo su "False" nella descrizione dell'elaborazione interna, quindi tutto andrà bene:

Funzione InformationOnExternalProcessing() ExportRegistrationParameters = Nuova struttura; Parametri di registrazione.Insert("SafeMode", False);

Durante l'aggiornamento della configurazione appariva anche un testo di avviso relativo alla fonte da cui è stato ottenuto il file di configurazione: