Casa / Tutorial Windows / 1s 8.2 non può installare la modalità provvisoria. La modalità provvisoria è impostata. L'operazione è vietata. Avvio dell'elaborazione esterna nella normale modalità dell'applicazione

1s 8.2 non può installare la modalità provvisoria. La modalità provvisoria è impostata. L'operazione è vietata. Avvio dell'elaborazione esterna nella normale modalità dell'applicazione

Quando si esegue il programma Scarica documenti come utente normale, si verifica un errore "La modalità provvisoria è impostata. L'operazione è vietata".

Questa difficoltà sorge perché non ci sono diritti sufficienti per avviare l'elaborazione esterna. Per impostare i diritti di accesso, vai 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.

Immettere il nome del gruppo e selezionare le caselle a disposizione degli utenti questo gruppo di ruolo -

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

Clic Scrivi e chiudi


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


Affinché gli utenti possano iniziare l'elaborazione, si consiglia di aggiungere Document Upload all'elenco di elaborazione esterna. Per fare questo, il menu Amministrazione / Stampa modulistica ed elaborazione / Reportistica aggiuntiva ed elaborazione creare una nuova lavorazione. Specificare il percorso del file "DocumentUpload.epf" e assegnargli un nome. Specificare la posizione dell'elaborazione nel menu, da dove l'utente può avviarla in futuro, ad esempio selezionare il menu Libri di riferimento

Facendo clic su un elemento Accesso rapido specifichi a quale utente è disponibile l'elaborazione:


Dopo l'impostazione, fare clic Scrivi e chiudi. Per avviare l'elaborazione, gli utenti dovranno solo rientrare nel database e aprirlo dal menu di accesso (nell'esempio - Directory) e fare clic su Correre.


aprire Menù - Tutte le funzioni... e trova l'opzione "Utilizzo dei profili di sicurezza" nell'elenco.


È sufficiente deselezionare l'opzione "Sono utilizzati i profili di sicurezza".


Successivamente, il programma verrà eseguito correttamente.

Scoperta del software l'elaborazione esterna viene eseguita utilizzando l'oggetto di contesto globale ExternalProcessing, che ha il tipo External Processing Manager. Per ogni modalità operativa della piattaforma 1C (mode regolare applicazione e la modalità di applicazione gestita). vari metodi oggetto per lavorare con l'elaborazione esterna.

Avvio dell'elaborazione esterna nella normale modalità dell'applicazione

In un'applicazione tipica, è necessario utilizzare il metodo Create() dell'oggetto ExternalProcessing, a cui viene passato il nome completo del file externalprocessing. 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() dell'oggetto ricevuto, che restituirà il modulo principale, quindi chiamare il metodo Open() per aprirlo.


Elaborazione = ExternalProcessings.Create(FullFileName);
Elaborazione.GetForm().Open();

Nell'elaborazione esterna, il modulo principale dovrebbe essere sempre regolare e quello gestito dovrebbe essere sempre aggiuntivo, altrimenti il ​​metodo GetForm() non funzionerà nella normale modalità dell'applicazione.

Avvia l'elaborazione esterna in modalità applicazione gestita

In modalità forme gestite c'è una divisione dell'algoritmo in base al contesto di esecuzione. Sul client, otteniamo dati binari dal nome completo del file di elaborazione esterno. Trasferiamo i dati binari ricevuti al server e li mettiamo in una memoria temporanea. Successivamente, è necessario chiamare il metodo Connect() dell'oggetto ExternalProcessing, a cui viene passato l'indirizzo della memoria temporanea. Il metodo restituisce il nome dell'elaborazione esterna connessa. Restituiamo il nome dell'elaborazione esterna sul client, formiamo un percorso di stringa al modulo di elaborazione e utilizziamo il metodo OpenForm() per aprire il modulo di elaborazione esterno.

&Sul server
Funzione GetExternalProcessName(BinaryData).
IndirizzoInTempStorage = LuogoInTempStorage(BinaryData);
Ritorno ExternalProcessing.Connect(AddressInTempStorage);
Funzioni finali

&AlCliente
FullFileName = ""; // Nome completo del file di elaborazione esterno.
FileData = Nuovo BinaryData(FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm("ElaborazioneEsterna." + NomeElaborazioneEsterna + ".Form");

Modalità provvisoria per l'elaborazione esterna

I metodi Create() e Connect() dell'oggetto ExternalProcessing hanno il parametro di input SafeMode, che indica che l'elaborazione esterna è connessa in modalità provvisoria. Se il parametro non è specificato, la connessione verrà effettuata in modalità sicura.
Modalità sicura operazione è progettata per proteggere il sistema dall'esecuzione di codice di programma "non attendibile" sul server. I potenziali pericoli sono l'elaborazione esterna o il codice di programma inserito dall'utente per l'utilizzo nei metodi Execute () e Calculate ().
La modalità provvisoria ha le seguenti restrizioni:
  • la modalità privilegiata viene annullata se era impostata;
  • i tentativi di accedere alla modalità privilegiata vengono ignorati;
  • le operazioni con oggetti COM sono proibite;
  • è vietato caricare e collegare componenti esterni;
  • negato l'accesso a sistema di file(tranne i file temporanei);
  • l'accesso a Internet è vietato.
I trattamenti aperti in modo interattivo non vengono eseguiti in modalità provvisoria, pertanto si consiglia di implementare il meccanismo di apertura di trattamenti esterni in modalità sicura, nonché di vietare all'utente l'apertura di trattamenti esterni in modo interattivo a livello di diritti.
Per inibire l'apertura interattiva dei trattamenti, in tutti i ruoli assegnati all'utente, è necessario rimuovere il diritto “Apertura interattiva dei trattamenti esterni” (vedi Figura 1).
Figura 1. Diritti per l'apertura interattiva di elaborazioni/report esterni
Il diritto "Apri elaborazione esterna in modo interattivo" non influisce in alcun modo sull'oggetto ExternalProcessing.

L'apertura di report esterni a livello di programmazione è simile all'elaborazione esterna, ma è necessario utilizzare l'oggetto di contesto globale ExternalReports, che è di tipo Gestore rapporti esterni.

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

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

Avviso di sicurezza

Apre "My External Processing" dal file "My_External_Processing.epf"

Si raccomanda di prestare attenzione alla fonte da cui ricevuto dato 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.

Consentire di aprire questo file?

Quindi 1C ha deciso di combattere il codice dannoso!

Da dove verrà questo? Codice malevolo» all'impresa è ancora un mistero)

Le attività potenzialmente pericolose includono:

  • Caricamento di un report esterno, elaborazione o estensione di configurazione.
  • Caricamento o aggiornamento di una configurazione/estensione.
  • Accesso da un rapporto esterno/elaborazione o estensione alle seguenti funzionalità:
  • Esecuzione di un comando del sistema operativo.
  • Gestione degli utenti (registrazione o eliminazione delle informazioni sugli utenti base informativa).
  • Chiamata al metodo Connect() del gestore dell'elaborazione esterna (report).
  • Chiamata al metodo ConfigurationExtension.Write().
  • Lavorare con oggetti COM.

Come si può spegnere questo "miracolo"?

Per fare ciò, è necessario eseguire 1C Enterprise nella modalità configuratore.
Selezionare il menu "Amministrazione" - "Utenti".
Nella finestra aperta dei nostri utenti, devi aprire la finestra delle impostazioni utente e nella scheda "Generale", rimuovere l'uccello "Protezione contro azioni pericolose"

Esistono altri modi per disattivarlo:

Implementata la possibilità di specificare un elenco di infobase, quando si lavora con cui verrà disabilitata la protezione contro azioni pericolose.
Per questa funzione Risponde il parametro DisableUnsafeActionProtection nel file conf.cfg che permette di disabilitare il meccanismo di protezione contro azioni pericolose per tutti gli utenti di determinate infobase le cui stringhe di connessione corrispondono alle maschere specificate nel parametro DisableUnsafeActionProtection.

A dato parametroÈ possibile specificare diverse maschere separate dal simbolo ";", ad esempio:

DisableUnsafeActionProtection=test_.*;stage_.*;

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

  • Il parametro ProtectionFromDangerousActions dei metodi Connect() dei responsabili esterni del trattamento (report)
  • La proprietà SafeActionProtection dell'oggetto ConfigurationExtension prima di chiamare il metodo Write() di questo oggetto.

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

1. Se la casella di controllo "Protezione contro azioni pericolose" è deselezionata per l'utente corrente, la protezione è considerata disabilitata.

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

3. Se la protezione è disabilitata in modo esplicito utilizzando il parametro Protezione da azioni pericolose di un'elaborazione o di un report esterno.

4. Se la protezione è disabilitata in modo esplicito utilizzando la proprietà dell'estensione ProtectionFromDangerousActions.

Utilizzando l'esempio di Trade Management 11.3, considereremo un semplice processo di connessione di un esterno modulo stampato. Considereremo anche le caratteristiche del nuovo sistema di sicurezza.

Passaggio veloce

Azioni preliminari

Per cominciare, dovresti abilitare la funzionalità oppure verifica la disponibilità

1. Andiamo con pieni diritti all'infobase.

2. Accedere al menu "INSI e amministrazione" / Blocco "Amministrazione" / Comando "Stampa moduli, report ed elaborazioni".

Addendum

Nella sezione aperta:

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

  • Selezionalo nell'elenco (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 noti (non dalla posta, solo da un sito con un certificato valido o fornito dai dipendenti dello sviluppatore, da lui confermato telefonicamente).

Se tutto è scritto nell'elaborazione dallo sviluppatore, verrà impostato "Posizionamento" - gli oggetti in cui sarà coinvolta l'elaborazione, appariranno i comandi.
Per funzionare, sarà sufficiente fare clic su "Registra e chiudi".

Visita medica

Subito dopo, a seconda del tipo di lavorazione:

  • Il modulo di stampa diventa disponibile all'apertura di un documento o dalla sua lista (per uno già aperto alla riapertura) cliccando sul pulsante "Stampa".
  • I trattamenti sono disponibili nelle sezioni " Elaborazione aggiuntiva» in ciascun sottosistema
  • Elaborazione compilazione tramite il pulsante "Riempi" della lista o il pannello di comando principale della maschera dell'oggetto.

Per l'elaborazione di cui sopra, il lancio sarà simile a questo:

Se il documento è nuovo, dovrebbe essere registrato, il meccanismo di elaborazione esterno ti avviserà di questo:

Ulteriori comportamenti dipendono dalla funzionalità inerente: è possibile aprire un form o semplice elaborazione dati.

Avvisi di sicurezza in 1C

Nelle nuove versioni della piattaforma e delle configurazioni è stata rafforzata la protezione contro il lancio di programmi dannosi.

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

In questo caso, il codice del gestore viene interrotto.

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

È possibile per un utente infobase disabilitare la protezione contro azioni pericolose tramite il Configuratore:

Dalla modalità "Enterprise" questo non è modificabile, forse è stato fatto apposta, potrebbe apparire dopo l'aggiornamento.

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

"Impossibile caricare MS EXCEL!!!" "La modalità provvisoria è impostata. Operazione vietata"

Nell'elaborazione esterna, ha questo aspetto:

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

ExternalProcessingDetails() ExportRegistrationParameters = Nuova struttura; RegistrationParameters.Insert("SafeMode", False);

Durante l'aggiornamento della configurazione, c'era anche un testo di avviso sulla fonte da cui è stato ottenuto il file di configurazione:

Stampa (Ctrl+P)

Oggetti di configurazione

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

In modalità provvisoria:

  • Modalità privilegiata annullato.
  • Passaggio alla modalità privilegiata ignorato.
  • Proibito operazioni che comportano l'utilizzo di strumenti esterni in relazione alla piattaforma 1C:Enterprise (compresi analoghi non bloccanti dei metodi di cui sopra):
  • Meccanismi COM:
    • COMOggetto();
    • GetCOMOggetto();
    • WrapperHTMLDocument.GetCOMObject().
  • Caricamento di componenti esterni:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • Accesso al file system:
    • valoreInFile();
    • Copia il file();
    • UnisciFile();
    • SpostaFile();
    • DividiFile();
    • CreaDirectory();
    • Cancella file();
    • Nuovo file;
    • Nuovo xBase;
    • ScriviHTML.OpenFile();
    • LetturaHTML.OpenFile();
    • LetturaXML.OpenFile();
    • ScriviXML.OpenFile();
    • ReadFastInfoset.OpenFile();
    • WriteFastInfoset.OpenFile();
    • CanonicalWriterXML.OpenFile();
    • Trasformazione XSL.LoadFromFile();
    • ScriviZipFile.Open();
    • ReadZipFile.Open();
    • NewTextReader() se il primo argomento è una stringa;
    • ReadText.Open() se il primo parametro è una stringa;
    • New TextWrite() se il primo parametro è una stringa;
    • WriteText.Open() se il primo parametro è una stringa;
    • Nuovo EstraiTesto();
    • modificare la proprietà ExtractText.FileName;
    • EstraiTesto.Scrivi();
    • New Image() se il primo parametro è una stringa;
    • Immagine.Record();
    • Nuovo BinaryData();
    • BinaryData.Write();
    • New DataWrite() se il primo parametro è una stringa;
    • New DataRead(), il primo parametro è una stringa;
    • tutti i metodi dell'oggetto FileStreamManager;
    • Nuovo FileStream();
    • FormattedDocument.Write();
    • Schema Geografico.Read();
    • Schema Geografico.Write();
    • Schema Geografico.Print();
    • SpreadsheetDocument.Read();
    • SpreadsheetDocument.Write();
    • Foglio di calcoloDocumento.Print(); SchemaGrafico.Read();
    • SchemaGrafico.Write();
    • SchemaGrafico.Print();
    • TextDocument.Read();
    • TextDocument.Write().
  • Accesso ad Internet:
    • Nuova connessione Internet,
    • Nuova posta Internet,
    • Nuovo proxy Internet,
    • Nuova connessione HTTP,
    • Nuova connessione FTP.

ATTENZIONE! Genera un'eccezione quando si eseguono operazioni vietate in fase di esecuzione.

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

Il numero di attivazioni in modalità provvisoria deve corrispondere al numero di arresti. Tuttavia, se all'interno di una procedura o funzione, la modalità provvisoria è stata abilitata (una o più volte), ma non è stata disabilitata, il sistema si spegnerà automaticamente tante volte quante erano le attivazioni in sospeso nella procedura o funzione che si sta abbandonando.

Se in una procedura o in una funzione il metodo chiama Imposta modalità sicura (falso) fatto più delle chiamate di metodo ImpostaModalitàSicurezza(True), verrà generata un'eccezione.

L'installazione programmatica della modalità provvisoria può essere richiesta quando lo sviluppatore della configurazione presuppone l'utilizzo di 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 Calculate() nei casi in cui il codice eseguibile è ricevuto dal mondo esterno. In questo caso, è buona norma impostare la modalità provvisoria prima di eseguire questi metodi:

// Il codice del programma viene generato per essere eseguito // È possibile che il codice venga caricato da fonti esterne// o inserito manualmente ExecutableCode = GetExecutableCodeFrom OutsideWorld(); // 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 con la proprietà Privileged mode on post impostata dal codice 1D in esecuzione in modalità provvisoria. In questo caso, la modalità privilegiata è disabilitata e i tentativi di abilitarla vengono ignorati. Di conseguenza, il codice 1C:Enterprise che "si basa" sulla modalità privilegiata abilitata "si scontra" con la sua assenza, il che porta a errori con motivi non ovvi per la visualizzazione. Per evitare tale situazione, 1C:Enterprise disabilita automaticamente la modalità provvisoria per i gestori di eventi disponibili in un modulo oggetto o in un modulo gestore, a condizione che il codice eseguibile nel linguaggio 1C:Enterprise non si trovi nell'estensione di configurazione. Tali gestori sono contrassegnati nell'assistente di sintassi in modo speciale.

Fornisce inoltre la possibilità di disabilitare la modalità provvisoria dall'interno della prima lingua (se il codice da cui si tenta la disabilitazione non è in un'estensione di configurazione). Metodo per disabilitare la modalità provvisoria SetDisableSafeMode(). Verifica che sia attiva la modalità provvisoria questo momento disabilitato (automaticamente o con una chiamata al metodo), è possibile utilizzare il metodo GetDisableSafeMode().

All'interno di un singolo metodo 1C:1, non può esistere più di un livello di nidificazione per l'impostazione della modalità provvisoria (chiamando il metodo SetSafeMode()) e l'impostazione della disabilitazione della modalità provvisoria (automaticamente al momento dell'esecuzione dei gestori di eventi dell'oggetto metadati o chiamando il metodo metodo SetSafeModeDisable()). Quando si tenta di aumentare l'annidamento, viene generata un'eccezione:

// Uso corretto Procedure ProcedureName() SetSafeModeDisable(True); SetSafeMode(True); SetSafeMode(False); SetSafeModeDisable(False); EndProcedure // Utilizzo errato Procedure ProcedureName() SetSafeModeDisable(True); SetSafeMode(True); SetSafeModeDisable(False); // Eccezione EndProcedure ProcedureProcedureName() SetSafeMode(True); SetSafeModeDisable(False); // Eccezione EndProcedure