Computer finestre Internet

Come disabilitare la modalità provvisoria in 1s 8.3. Pavel è pulito. Modalità sicura per trattamenti esterni

Il fatto è che quando si utilizza la versione client-server dell'operazione 1C, l'elaborazione / i 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: la formazione di moduli stampati, vari controlli di servizio (registrazione di centrali), ecc. Di conseguenza, anche utilizzando un rapporto regolare sull'ACS senza un modulo (per impostazione predefinita, viene utilizzato il modulo generale "Modulo rapporto") e salvando le impostazioni del rapporto personalizzato (al riferimento corrispondente), riceverai un errore sull'accesso insufficiente diritti su varie costanti e parametri di sessione utilizzati per scopi di servizio dopo la linea SetPrivilegedMode (True);

La soluzione "corretta" sarebbe quella di collegare processori e report esterni attraverso i meccanismi del BSP "Report ed elaborazione aggiuntivi" con la disattivazione della modalità provvisoria o l'aggiunta di autorizzazioni (a mio avviso, dalla versione BSP 2.2.2.1). Ma se per qualche motivo è necessario usare esattamente file esterni report/elaborazione, è possibile configurare il profilo di sicurezza del cluster utilizzato come profilo di sicurezza in modalità provvisoria per uno specifico base di informazioni.

Vorrei notare subito che questa opzione non è preferibile, ma a causa di varie circostanze può essere utilizzata in una forma così semplificata. Ad esempio, ho diverse basi in diverse città, un locale comune con diritti strettamente limitati, USB chiuso, ecc., Da qualche parte uso Contabilità 2.0 e da qualche parte 3.0, faccio quasi tutti i rapporti utilizzando ACS senza moduli, in modo che aperto in entrambe le versioni. Servi tutti questi rapporti per diverse versioni e basi diverse è un affare laborioso e senza speranza, tk. i piani includono una transizione a un'unica configurazione e base ...

Creiamo un profilo.
Nella console del cluster, crea un profilo di sicurezza in cui impostiamo i flag "Può essere utilizzato come profilo di sicurezza in modalità provvisoria" e "sotto" Consentito accesso completo:" "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é è indicato nella documentazione (la possibilità di personalizzare i profili di sicurezza per file esterni specifici specificandone l'hash, ecc.).

P.S. Pensavo che i profili di sicurezza funzionino solo quando si utilizzano le licenze per la piattaforma e il server del livello CORP, ma questa funzionalità è soddisfatta anche sulla piattaforma 1C: Enterprise 8.3 (condizionatamente, puoi chiamare PROF per analogia con le configurazioni tipiche Basic / PROF / CORP )

Stampa (Ctrl + P)

Oggetti di configurazione

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

In modalità provvisoria:

  • Modalità privilegiata annullato.
  • Entrare in modalità privilegiata ignorato.
  • sono vietati operazioni che portano all'utilizzo di fondi esterni in relazione alla piattaforma 1C: Enterprise (compresi gli analoghi non bloccanti dei metodi di cui sopra):
  • Meccanismi COM:
    • Oggetto COM ();
    • GetCOMObject ();
    • Wrapper HTMLDocument.GetCOMObject ().
  • Caricamento componenti esterni:
    • Carica componente esterno ();
    • Connetti componente esterno ().
  • Accesso a file system:
    • ValoreInFile ();
    • Copia il file ();
    • CombinaFiles ();
    • MoveFile();
    • SplitFile ();
    • CreaDirectory ();
    • Cancella file ();
    • Nuovo file;
    • Nuovo xBase;
    • HTMLWrite.OpenFile ();
    • Lettura HTML.OpenFile ();
    • Leggi XML.OpenFile ();
    • XMLWrite.OpenFile();
    • ReadingFastInfoset.OpenFile ();
    • WriteFastInfoset.OpenFile ();
    • CanonicalXMLWriter.OpenFile ();
    • ConversionXSL.LoadFromFile ();
    • WriteZipFile.Open ();
    • Lettura di un ZipFile.Open ();
    • NewTextReader(), se il primo parametro è una stringa;
    • ReadText.Open() se il primo parametro è una stringa;
    • NewWriteText(), se il primo parametro è una stringa;
    • WriteText.Open(), se il primo parametro è una stringa;
    • NewExtractText ();
    • modifica della proprietà RetrieveText.FileName;
    • ExtractText.Write ();
    • New Picture(), se il primo parametro è una stringa;
    • Immagine.Scrivi ();
    • Nuovi dati binari ();
    • BinaryData.Write ();
    • NewDataWrite(), se il primo parametro è una stringa;
    • NewReaderData(), c'è il primo parametro - una stringa;
    • tutti i metodi dell'oggetto FileStreamManager;
    • Nuovo FileStream ();
    • FormattedDocument.Write ();
    • GeographicSchema.Read ();
    • GeographicSchema.Record ();
    • GeographicSchema.Print ();
    • TabularDocument.Read ();
    • TabularDocument.Write ();
    • TabularDocument.Print (); SchemaGrafico.Read ();
    • GraphicalScheme.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 durante l'esecuzione di operazioni vietate in fase di esecuzione.

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

Il numero di guasti deve essere uguale al numero di arresti. Tuttavia, se una modalità provvisoria è stata attivata (una o più) all'interno di una procedura o funzione, ma non è stata disattivata, il sistema si spegnerà automaticamente tante volte quante sono state le accensioni incomplete nella procedura o funzione da abbandonato.

Se una procedura o una funzione chiama un metodo Imposta modalità provvisoria (falsa) fatto più delle chiamate al metodo Imposta modalità provvisoria (vero) quindi verrà generata un'eccezione.

L'impostazione del software in 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 Compute() nei casi in cui il codice eseguibile è ottenuto dal mondo esterno. In questo caso, è buona norma impostare la modalità provvisoria prima di eseguire questi metodi:

// Viene generato un codice di programma che dovrebbe essere eseguito // È possibile che il codice venga caricato da fonti esterne // o immesso manualmente ExecutableCode = GetExecutiveCodeFrom the ExternalWorld (); // Abilita la modalità provvisoria Imposta la modalità provvisoria (True); // Esegue codice potenzialmente pericoloso Execute (Executable Code); // Disattiva la modalità provvisoria Imposta la modalità provvisoria (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 modalità Privilegiata sulla registrazione impostata dal codice incorporato che viene eseguito in modalità provvisoria. In questo caso, la modalità privilegiata è disabilitata ei tentativi di abilitarla vengono ignorati. Di conseguenza, il codice nel linguaggio embedded che "si affida" alla modalità privilegiata abilitata "si scontra" con la sua assenza, il che porta a errori con ragioni non ovvie. Per prevenire una situazione del genere, il sistema 1C: Enterprise disabilita automaticamente la modalità provvisoria per i gestori di eventi disponibili nel modulo oggetto o nel modulo manager, a condizione che il codice eseguibile nella lingua incorporata non si trovi nell'estensione di configurazione. Tali gestori sono contrassegnati in modo speciale nell'helper sintassi.

Fornisce inoltre l'opzione per disabilitare la modalità provvisoria dalla lingua incorporata (se il codice del programma da cui si tenta la disconnessione non si trova in un'estensione di configurazione). Per disabilitare la modalità provvisoria, usa il metodo Imposta modalità provvisoria disabilita ()... Verifica che la modalità provvisoria sia attiva questo momento disabilitato (automaticamente o chiamando un metodo), puoi usare il metodo GetDisableSafeMode().

All'interno di un singolo metodo di linguaggio incorporato, non può esistere più di un livello di nidificazione per l'impostazione della modalità provvisoria (chiamando il metodo SetSafeMode()) e l'impostazione per disabilitare la modalità provvisoria (automaticamente per la durata dei gestori eventi degli oggetti metadati o chiamando il metodo SetDisableSafeMode()). Quando si tenta di aumentare l'annidamento, viene generata un'eccezione:

// Uso corretto Procedure ProcedureName () SetSafeModeDisable (True); Imposta la modalità provvisoria (Vero); Imposta la modalità provvisoria (falsa); Imposta modalità provvisoria disabilita (falso); EndProcedure // Uso errato Procedure ProcedureName () SetSafeModeDisable (True); Imposta la modalità provvisoria (Vero); Imposta modalità provvisoria disabilita (falso); // Eccezione EndProcedure Procedure ProcedureName () SetSafeMode (True); Imposta modalità provvisoria disabilita (falso); // Eccezione EndProcedure

L'elaborazione esterna viene aperta a livello di codice utilizzando l'oggetto di contesto globale ExternalProcessing, che ha il tipo Responsabile elaborazione esterna... Per ogni modalità operativa della piattaforma 1C (modalità di applicazione normale e modalità di applicazione gestita), vengono utilizzati vari metodi dell'oggetto per lavorare con l'elaborazione esterna.

Avvia l'elaborazione esterna in modalità di 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 in fase di apertura. Se è necessario aprire un modulo di elaborazione esterno, chiamare il metodo GetForm() sull'oggetto risultante, che restituirà il modulo principale, quindi chiamare il metodo Open() per aprirlo.


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

Nei processori esterni, il form principale deve essere sempre un form regolare e il form gestito deve essere sempre uno aggiuntivo, altrimenti il ​​metodo GetForm() non funzionerà nella normale modalità di applicazione.

Avvio dell'elaborazione esterna in modalità applicazione gestita

In modalità moduli gestiti, viene visualizzata una suddivisione dell'algoritmo per contesto di esecuzione. Sul client, otteniamo i dati binari con il nome completo del file di elaborazione esterno. Trasferiamo i dati binari ricevuti sul 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 al client, formiamo 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)
AddressToTemporaryStorage = PutToTemporalStore (BinaryData);
Restituisce ExternalProcessing.Connect (AddressInTemporaryStorage);
EndFunction

& su client
FullFileName = ""; // Nome completo del file di elaborazione esterno.
FileData = New BinaryData (FullFileName);
ExternalProcessingName = GetExternalProcessingName (FileData);
OpenForm ("ExternalProcessing." + ExternalProcessingName + ".Form");

Modalità sicura per trattamenti esterni

I metodi Create() e Connect() dell'oggetto ExternalProcessing hanno un parametro di input SafeMode - un segno di connessione dell'elaborazione esterna in modalità provvisoria. Se il parametro non è specificato, la connessione verrà effettuata in modalità provvisoria.
Modalità sicura work è progettato per proteggere il sistema dall'esecuzione di codice di programma "inaffidabile" sul server. Il potenziale pericolo è l'elaborazione esterna o il codice di programma immesso dall'utente per l'utilizzo nei metodi Esegui () e Calcola ().
La modalità provvisoria ha le seguenti restrizioni:
  • la modalità privilegiata viene annullata se è stata impostata;
  • i tentativi di accesso alla modalità privilegiata vengono ignorati;
  • sono vietate le operazioni con oggetti COM;
  • è vietato caricare e collegare componenti esterni;
  • l'accesso al file system è negato (ad eccezione dei file temporanei);
  • L'accesso a Internet è negato.
I trattamenti 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é per impedire all'utente di aprire in modo interattivo processori esterni a livello di diritti.
Per vietare l'apertura interattiva del trattamento, in tutti i ruoli assegnati all'utente, è necessario rimuovere il diritto "Apri elaborazione esterna in modo interattivo" (vedi Figura 1).
Figura 1. Diritti di apertura interattiva di trattamenti/segnalazioni esterne
Il diritto interattivo Apri processori esterni non influisce in alcun modo sull'oggetto ExternalProcessing.

Aprendo i report esterni in modo programmatico, in modo simile ai processori esterni, è necessario utilizzare solo l'oggetto di contesto globale Report esterni, che ha il tipo ExternalReportManager.