La modalità provvisoria è impostata per eseguire l'operazione vietata sull'oggetto com. Come aggiungere cliché o lavorazioni esterne. Esecuzione dell'elaborazione esterna in modalità applicazione gestita

Quando si esegue il programma Caricamento documenti come utente normale, viene visualizzato l'errore "La modalità provvisoria è impostata. L'operazione non è consentita".

Questa difficoltà sorge perché Non ci sono diritti sufficienti per avviare l'elaborazione esterna. Per configurare i diritti di accesso, accedi al database in modalità 1C Enterprise per conto di Amministratore e vai alla sezione Impostazioni utente e diritti/Profili gruppo di accesso, clic Per creare un gruppo.

Inserisci il nome del gruppo e seleziona le caselle per i ruoli disponibili per gli utenti di questo gruppo -

  • Apertura interattiva di report ed elaborazioni esterne
  • Utilizzo di report ed elaborazioni aggiuntivi

Clic Salva e chiudi


Ritorna al menu Utenti e seleziona dall'elenco il dipendente che lavorerà con il programma Caricamento documenti. Fare clic su Autorizzazioni. Nell'elenco dei profili, seleziona il profilo creato in precedenza. Clic Scrivi.


Affinché gli utenti possano avviare l'elaborazione, si consiglia di aggiungere Caricamento documento all'elenco delle elaborazioni esterne. Per farlo nel menu Amministrazione / Stampati ed elaborazioni / Rapporti aggiuntivi ed elaborazioni creare una nuova elaborazione. Specificare il percorso del file "Download Documents.epf" e assegnargli un nome. Specificare la posizione dell'elaborazione nel menu, da dove l'utente può avviarla in seguito, ad esempio selezionando il menu Directory

Cliccando sulla voce Accesso rapido si indicano quali utenti hanno accesso al trattamento:


Dopo l'impostazione, fare clic su Salva e chiudi. Per avviare l'elaborazione sarà sufficiente rientrare nel database ed aprirlo dal menu di accesso (nell'esempio - Directory) e cliccare su Eseguire.


Aprire Menù - Tutte le funzioni.... e trova l'opzione "Vengono utilizzati profili di sicurezza" nell'elenco.


Basta deselezionare l'opzione "Profili di sicurezza utilizzati".


Successivamente, il programma verrà avviato correttamente.

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, dovrebbe essere 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:

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.

Avvio dell'elaborazione esterna nella normale modalità di applicazione

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.

Il fatto è che quando si utilizza la versione client-server di 1C, le elaborazioni/report esterni vengono aperti in modalità provvisoria, in cui è vietato l'uso della modalità privilegiata. E la modalità privilegiata viene utilizzata molto spesso in configurazioni tipiche: generazione di moduli stampati, vari controlli di servizio (registrazione degli scambi), ecc. Di conseguenza, anche utilizzando un rapporto regolare sul sistema di controllo degli accessi senza modulo (per impostazione predefinita, viene utilizzato il modulo generale "ReportForm") e salvando le impostazioni del rapporto personalizzato (nella directory corrispondente), riceverai un errore di accesso insufficiente diritti su varie costanti e parametri di sessione utilizzati per scopi ufficiali dopo la riga Imposta modalità privilegiata (Vero) ;

La soluzione “corretta” sarebbe quella di connettere elaborazioni e report esterni attraverso i meccanismi BSP “Report ed elaborazioni aggiuntive” disabilitando la modalità provvisoria o aggiungendo autorizzazioni (a mio avviso, dalla versione BSP 2.2.2.1). Ma se per qualche motivo è necessario utilizzare file di reporting/elaborazione esterni, è possibile configurare un profilo di sicurezza del cluster utilizzato come profilo di sicurezza in modalità provvisoria per una specifica infobase.

Vorrei subito notare che questa opzione non è preferibile, ma a causa di varie circostanze può essere utilizzata in una forma così semplificata. Ad esempio, ho diversi database in diverse città, uno locale comune con diritti strettamente limitati, USB chiuso, ecc., Da qualche parte utilizzo Contabilità 2.0 e da qualche parte 3.0, creo quasi tutti i report utilizzando strumenti ACS senza moduli, in modo che aperto in entrambe le versioni. Mantenere tutti questi report per versioni diverse e database diversi è laborioso e inutile, perché È previsto il passaggio a un'unica configurazione e base...

Creiamo un profilo.
Nella console del cluster creiamo un profilo di sicurezza in cui impostiamo i flag "Può essere utilizzato come profilo di sicurezza in modalità provvisoria" e " nella sezione "Accesso completo consentito:" "in modalità privilegiata".

In molti casi di utilizzo di report ed elaborazione semplice, questo metodo sarà applicabile. Per situazioni più complesse, non ha senso descrivere il processo, perché è delineato nella documentazione (la possibilità di configurare profili di sicurezza per file esterni specifici specificandone la quantità di hash, ecc.).

PS Pensavo che i profili di sicurezza funzionassero solo quando si utilizzano licenze di piattaforma e server a livello CORP, ma questa funzionalità funziona anche sulla piattaforma 1C:Enterprise 8.3 (può essere condizionatamente chiamata PROF, per analogia con le configurazioni standard Basic/PROF/CORP)

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.
  • Accesso 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();
    • FileDiviso();
    • 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 le 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