LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Parametri sessioni 1C 8.3- una variabile che memorizza il valore del parametro richiesto per la durata della sessione utente. In realtà, questo è un tipo di variabile globale legata alla sessione dell'utente corrente.

Utilizzo dei parametri di sessione in 1C

I parametri di sessione sono impostati solo a livello di programmazione, non esiste un'interfaccia universale per l'impostazione dei parametri di sessione nel sistema. Di solito sono impostati all'avvio del sistema, nel "Modulo di sessione". Se il parametro non è definito, verrà generato un errore durante l'accesso.

Esempio di impostazione del parametro della sessione 1C

Diamo un'occhiata a un tipico caso d'uso per i parametri della sessione: l'impostazione dell'utente corrente. Prenderò un esempio dalla preparazione per.

Nella struttura dei metadati, crea un nuovo parametro di sessione - CurrentUser, assegnagli un tipo - ReferenceLink.

Ottieni 267 tutorial video 1C gratis:

Nel modulo di sessione, creeremo una procedura in cui verrà determinato il parametro della sessione corrente:

Codice di procedura:

Procedura Impostazione parametri sessione (Parametri richiesti) // in cerca di fisico. affrontare per nome utente CurrentUser \u003d Directory. Gli individui. FindByDesign (UserName ()); // se non trovato, creane uno nuovo Se CurrentUser. Vuoto () Quindi NewUser \u003d Directory. Gli individui. CreateElement (); Nuovo utente. Nome \u003d UserName (); Nuovo utente. Scrivi (); CurrentUser \u003d NewUser. link; Finisci se; // assegna al parametro della sessione CurrentUser un collegamento al riferimento delle persone Parametri della sessione. CurrentUser \u003d CurrentUser; Fine della procedura

I parametri considerati in 1C: Enterprise sono presentati come un oggetto metadati. In sostanza, non è altro che una variabile globale associata alla sessione corrente.

Una variabile globale è la stessa variabile di qualsiasi altra, ma la sua peculiarità è che puoi farvi riferimento da qualsiasi parte del programma e, nel caso di un parametro di sessione, funziona solo all'interno della sessione corrente.

Nella misura in cui parametro di sessione è un oggetto metadati, ha alcune caratteristiche:

  • Può essere di un certo tipo. I tipi consentiti sono specifici della piattaforma. L'elenco è piuttosto esteso, ma anche se questo elenco non contiene quello di cui hai bisogno, puoi sempre serializzare il valore e memorizzarlo nel parametro come stringa.
  • I diritti su di esso, come su qualsiasi altro oggetto metadata, possono essere limitati ai ruoli (sia per la scrittura che per la lettura). Allo stesso tempo, c'è una peculiarità quando lo si utilizza in RLS, ma questo verrà descritto di seguito.
  • Ha un limite alla quantità di dati serializzati che possono essere inseriti. Il loro volume non deve superare i 4 GB.

Se il tipo del parametro session è:

  • FixedArray
  • Raccolta fissa
  • Struttura fissa

Quindi può essere il valore dell'elemento di raccolta Non definito.

L'ambito principale dei parametri è l'applicazione dei loro valori nelle richieste RLS (restrizioni di accesso a livello di record).

Ad esempio, dobbiamo impostare una condizione per l'utente corrente in una richiesta RLS. Per fare ciò, imposta il parametro di sessione "CurrentUser", imposta il valore dal codice lingua incorporato:

Session Options.CurrentUser \u003d<значение>

Table.User \u003d & CurrentUser

Questo uso del parametro session non tiene conto delle autorizzazioni di lettura del parametro, ma puoi provare a ottenere il loro valore dal linguaggio incorporato:

CurrentUser \u003d SessionParameters.CurrentUser;


È possibile impostare un parametro di sessione, ovvero il suo valore, solo a livello di codice e solo sul server. Per fare ciò, il client dovrà chiamare la procedura del server. Quando si accede a un parametro di sessione (set, get), se il parametro non è inizializzato, verrà chiamata la procedura SettingSessionParameters nel modulo di sessione. Questa procedura ha un parametro Parametri richiesti - matrice di identificatori impostati di parametri di sessione. SettingSessionParameters Viene anche chiamato quando si stabilisce una connessione a una infobase prima di chiamare tutti gli altri gestori. In questo caso Parametri richiesti sarà uguale Non definito.

Si consiglia di utilizzare l'inizializzazione differita (lazy), ovvero di inizializzare i parametri della sessione su richiesta e non all'avvio del sistema, poiché non tutti i parametri della sessione sono richiesti immediatamente all'avvio del sistema. L'inizializzazione lazy viene eseguita in questo modo:

Procedura SettingSessionParameters (SessionParameterNames) Se SessionParameterNames non è definito, allora se ParameterName \u003d "CurrentUser", SessionParameters.CurrentUser \u003d; ElseIf ParameterName \u003d "CurrentOrganization" Quindi SessionParameters.CurrentOrganization \u003d; // eccetera. Finisci se; Finisci se; EndProcedure value\u003e value \u003e\u003e

Poiché il parametro session è associato alla sessione, non sarà possibile accedere al parametro session dal metodo in esecuzione in background, poiché si tratterà di una sessione diversa. Questa sfumatura può essere una sorpresa, quindi è meglio prepararsi in anticipo passando il valore desiderato come parametro del metodo e inizializzandolo dal parametro della sessione all'inizio della procedura.

  • COMUNICATI EFFETTIVI 1C
  • ESEMPI DI CODICE SULLA PIATTAFORMA 1C
Ruoli, diritti di accesso in 1C 8.x
Come faccio a sapere se un ruolo specifico è disponibile per l'utente corrente?
Se No RoleAvailable ("Manager"), quindi Segnala ("La visualizzazione delle richieste degli acquirenti non è consentita!"); Finisci se;
Come posso ottenere informazioni sui ruoli di configurazione?
ConfigurationPossibleRoleList function () RoleList \u003d newList of Values; RolesConfigurations \u003d Metadata.Roles; Per ogni ruolo dal ciclo RoleConfiguration Elenco ruoli.Add (Role.Name); Fine ciclo; Elenco ruoli di ritorno; endfunction
Come posso eseguire il codice senza controllare i diritti?
1. Utilizzare il modulo privilegiato 2. Posizionamento del codice del programma, che deve essere eseguito SENZA CONTROLLO DELLE RESTRIZIONI, in un modulo comune con il flag PREFERRED impostato nel modulo. Utilizzare la modalità privilegiata dell'esecuzione del codice del programma Simile alla modalità di funzionamento del codice dei moduli privilegiati. La modalità può essere abilitata / disabilitata tramite la lingua integrata: Imposta modalità preferita (<Включить>) Parametro<Включить> (richiesto) Tipo: booleano. Determina se la modalità privilegiata sarà abilitata: True: abilita la modalità; Falso: disattiva la modalità. La funzione PrivilegedMode () consente di determinare se la modalità privilegiata è abilitata o meno. L'uso della modalità privilegiata consente, in primo luogo, di velocizzare il lavoro, poiché non vi saranno restrizioni sull'accesso ai dati e, in secondo luogo, consente di eseguire operazioni con dati per conto degli utenti per i quali tali dati non sono disponibili. Si consiglia di utilizzare la modalità privilegiata quando, da un punto di vista logico, è necessario disabilitare il controllo dei diritti o quando è possibile disabilitare il controllo dei diritti per accelerare il lavoro. È consentito utilizzare la modalità privilegiata quando si lavora con i dati per conto di un determinato utente non viola i diritti di accesso impostati per questo utente.

5
Quando è necessaria una regolazione più precisa dell'accesso, il meccanismo RLS - Record Level Security viene in soccorso. Le configurazioni del sistema 1C: Enterprise 8 erano inizialmente posizionate come un programma per la contabilità multi-azienda e uno dei ... 3
A partire dalla piattaforma 8.0 del sistema 1C Enterprise, è possibile limitare i diritti di accesso degli utenti a livello record. Per questo, viene utilizzato il meccanismo RLS (Record Level Security). Una tale "messa a punto" può essere ... 3
Mi capita spesso di incontrare domande relative alla creazione di software e alle impostazioni dei diritti dell'utente. In questo articolo, fornirò esempi per applicazioni normali e gestite che creano programmaticamente un utente in ... 2
Domanda: ho aggiunto un nuovo utente. Creo una nuova interfaccia (copiando quella esistente) e specifica questa interfaccia come principale per questo utente. Il problema è che la nuova interfaccia creata ...

LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam