Come configurare smartphone e PC. Portale informativo
  • Casa
  • Notizia
  • Apertura del software di elaborazione esterna. Modalità provvisoria

Apertura del software di elaborazione esterna. Modalità provvisoria

Con il rilascio della piattaforma 8.3.9.2033 è apparso un nuovo meccanismo "Protezione da azioni pericolose".

Grazie a questa innovazione, 1C ora comincia a giurare all'apertura della lavorazione (e non solo):

Avviso di sicurezza

Apre “La Mia Elaborazione Esterna” dal file “My_External_Processing.epf”

Si consiglia di prestare attenzione alla fonte da cui è stato ottenuto questo file. Se non c'è accordo con la fonte sullo sviluppo di moduli aggiuntivi o ci sono dubbi sul contenuto del file, non è consigliabile aprirlo, poiché ciò potrebbe danneggiare il computer e i dati.

Mi permetti di aprire questo file?

Quindi 1C ha deciso di combattere il codice dannoso!

Da dove arriverà questo "codice dannoso" in un'impresa è ancora un mistero)

Le azioni potenzialmente pericolose includevano:

  • Caricamento di un report esterno, elaborazione o estensione della configurazione.
  • Caricamento o aggiornamento della configurazione/estensione.
  • Accesso da un report/processore esterno o da un'estensione alle seguenti funzionalità:
  • Esecuzione di un comando del sistema operativo.
  • Gestione degli utenti (registrazione o eliminazione delle informazioni su un utente dell'infobase).
  • Chiamando il metodo Connect() del responsabile dell'elaborazione esterna (report).
  • Chiamando il metodo ExtendConfiguration.Write().
  • Lavorare con oggetti COM.

Come si può disattivare questo “miracolo”?

Per fare ciò, è necessario avviare 1C Enterprise in modalità configuratore.
Selezionare il menu “Amministrazione” - “Utenti”.
Nella finestra che si apre per i nostri utenti, devi aprire la finestra delle impostazioni utente e deselezionare la scheda "Base". "Protezione da azioni pericolose"

Esistono altri modi per disabilitarlo:

Ora è possibile specificare un elenco di infobase con le quali, quando si lavora, la protezione contro le azioni pericolose sarà disabilitata.
Questa funzione è responsabile del parametro DisableUnsafeActionProtection nel file conf.cfg, che consente di disabilitare il meccanismo di protezione contro azioni pericolose per tutti gli utenti di determinate infobase le cui stringhe di connessione soddisfano le maschere specificate nel parametro DisableUnsafeActionProtection.

In questo parametro è possibile specificare più maschere separate dal simbolo “;”, ad esempio:

DisableUnsafeActionProtection=test_.*;stage_.*;

Inoltre, la protezione contro azioni pericolose dell'utente può essere disabilitata a livello di codice, per la quale sono disponibili i seguenti parametri e proprietà:

  • Protezione dei parametri da azioni pericolose dei metodi Connect() dei gestori di elaborazione (report) esterni
  • La proprietà Protezione contro azioni pericolose dell'oggetto Estensione della configurazione prima di chiamare il metodo Write() di questo oggetto.

La verifica della necessità di utilizzare la protezione contro azioni pericolose viene eseguita nel seguente ordine:

1. Se la casella di controllo "Protezione contro attività pericolose" dell'utente corrente è deselezionata, la protezione è considerata disabilitata.

2. Se la stringa di connessione all'infobase corrisponde a uno dei modelli specificati nel parametro DisableUnsafeActionProtection del file conf.cfg, la protezione viene considerata disabilitata.

3. Se la protezione è esplicitamente disabilitata utilizzando il parametro Protezione contro azioni pericolose dell'elaborazione o del report esterno.

4. Se la protezione è esplicitamente disabilitata utilizzando la proprietà dell'estensione Protezione da azioni pericolose.

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.

Salto 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".

Esame

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:

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();
    • CopiaFile();
    • UnisciFile();
    • SpostaFile();
    • FileDiviso();
    • CreaDirectory();
    • EliminaFile();
    • Nuovo file;
    • Nuovo xBase;
    • VoceHTML.OpenFile();
    • LeggiHTML.OpenFile();
    • LeggiXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.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;
    • ExtractText.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 a 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 attivazioni della modalità provvisoria deve corrispondere al numero di disattivazioni. 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); Fine della procedura // Utilizzo errato della procedura ProcedureName() SetDisableSafeMode(True); SetSafeMode(vero); SetDisableSafeMode(False); // Eccezione EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // Eccezione EndProcedure Quando si esegue il programma Caricamento documenti come utente normale, viene visualizzato l'errore "La modalità provvisoria è impostata. L'operazione è vietata".

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


Crea 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 clic 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


. Per avviare l'elaborazione sarà sufficiente rientrare nel database ed aprirlo dal menu di accesso (nell'esempio - Directory) e cliccare su

Eseguire Aprire. 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.

&SuServer
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.

I migliori articoli sull'argomento