Menú
Está libre
registro
hogar  /  Internet/ 1s 8.3 define el usuario actual en el cliente.

1c 8.3 define el usuario actual en el cliente.

  • LANZAMIENTOS ACTUALES 1C
  • EJEMPLOS DE CÓDIGO EN PLATAFORMA 1C
Roles, derechos de acceso en 1C 8.x
¿Cómo sé si un rol específico está disponible para el usuario actual?
Si no hay rol disponible ("Administrador"), informe ("¡No se permite ver las solicitudes de los compradores!"); Terminara si;
¿Cómo obtengo información sobre los roles de configuración?
FunctionPossibleConfigurationPossibleRoles () RoleList = nuevaLista de valores; RolesConfigurations = Metadata.Roles; Para cada rol de RoleConfiguration Cycle Role List.Add (Role.Name); Fin de ciclo; Lista de roles de retorno; EndFunction
¿Cómo puedo ejecutar código sin verificar los derechos?
1. Utilizar un módulo privilegiado. 2. Colocación del código del programa que se debe ejecutar SIN CONTROL DE LÍMITES en un módulo común con la bandera PRIVILEGADA configurada para el módulo. Utilizar el modo de ejecución privilegiado del código del programa Similar al modo de funcionamiento del código de los módulos privilegiados. El modo se puede habilitar / deshabilitar mediante el idioma integrado: Establecer modo preferido (<Включить>) Parámetro<Включить>(obligatorio) Tipo: booleano. Determina si se habilitará el modo privilegiado: Verdadero: habilita el modo; Falso: desactiva el modo. la función PrivilegedMode () le permite determinar si el modo privilegiado está habilitado o no. El uso del modo privilegiado permite, en primer lugar, agilizar el trabajo, ya que no habrá restricciones de acceso a los datos, y en segundo lugar, permite realizar operaciones con datos en nombre de los usuarios que no tienen acceso a estos datos. Se recomienda utilizar el modo privilegiado cuando, desde un punto de vista lógico, necesite deshabilitar la verificación de derechos o cuando pueda deshabilitar la verificación de derechos para acelerar su trabajo. Está permitido utilizar el modo privilegiado cuando trabajar con datos en nombre de un determinado usuario no viola los derechos de acceso establecidos para este usuario.

5
Cuando se requiere un ajuste más fino del acceso, el mecanismo RLS - Record Level Security viene al rescate. La configuración del sistema 1C: Enterprise 8 se posicionó inicialmente como un programa para la contabilidad multiempresa, y uno de ... 3
A partir de la plataforma 8.0 del sistema 1C Enterprise, es posible restringir los derechos de acceso de los usuarios a nivel de registro. Para ello, se utiliza el mecanismo RLS (Record Level Security). Tal "ajuste fino" puede ser ... 3
A menudo me encuentro con preguntas relacionadas con la creación de software y la configuración de derechos de usuario. En este artículo, proporcionaré ejemplos de aplicaciones normales y administradas que crean un usuario mediante programación en ... 2
Pregunta: He agregado un nuevo usuario. Creo una nueva interfaz (copiando la existente) y especifico esta interfaz como la principal para este usuario. El problema es que la nueva interfaz creada ...

Los parámetros considerados en 1C: Enterprise se presentan como un objeto de metadatos. Esencialmente, no es más que una variable global vinculada a la sesión actual.

Una variable global es la misma variable que cualquier otra, pero su peculiaridad es que puedes referirte a ella desde cualquier lugar del programa, y ​​en el caso de un parámetro de sesión, esto solo funciona dentro de la sesión actual.

En la medida en parámetro de sesión es un objeto de metadatos, tiene ciertas características:

  • Puede ser de cierto tipo. Los tipos permitidos son específicos de la plataforma. La lista de ellos es bastante extensa, pero incluso si esta lista no contiene el que necesita, siempre puede serializar el valor y almacenarlo en un parámetro como una cadena.
  • Los derechos sobre él, así como sobre cualquier otro objeto de metadatos, pueden limitarse a roles (tanto para escritura como para lectura). Al mismo tiempo, existe una peculiaridad al usarlo en RLS, pero esto se describirá a continuación.
  • Tiene un límite en la cantidad de datos serializados que se pueden colocar. Su volumen no debe exceder los 4 GB.

Si el tipo de parámetro de sesión es:

  • FixedArray
  • Colección fija
  • Estructura fija

Entonces el valor del artículo de colección puede ser Indefinido.

El alcance principal de los parámetros es la aplicación de sus valores en las solicitudes de RLS (restricción de acceso a nivel de registro).

Por ejemplo, necesitamos establecer una condición para el usuario actual en una solicitud de RLS. Para hacer esto, establezca el parámetro de sesión "CurrentUser", establezca el valor del código de idioma integrado:

Parámetros de sesión.CurrentUser =<значение>

Table.User = & CurrentUser

Este uso del parámetro de sesión no tiene en cuenta los permisos de lectura del parámetro, pero puede intentar obtener su valor del lenguaje incrustado:

CurrentUser = SessionParameters.CurrentUser;


El parámetro de sesión, es decir, su valor, se puede establecer solo mediante programación y solo en el servidor. Para hacer esto, necesita llamar al procedimiento del servidor desde el cliente. Al acceder a un parámetro de sesión (set, get), si el parámetro no está inicializado, se llamará al procedimiento SettingSessionParameters en el módulo de sesión. Este procedimiento tiene un parámetro. Parámetros requeridos- una matriz de identificadores de conjuntos de parámetros de sesión. SettingSessionParameters También se llama cuando se establece una conexión a una base de datos, antes de que se llame a todos los demás controladores. En este caso Parámetros requeridos será igual Indefinido.

Se recomienda utilizar la inicialización diferida (diferida), es decir, para inicializar los parámetros de la sesión a pedido y no al iniciar el sistema, ya que no todos los parámetros de la sesión se requieren directamente al iniciar el sistema. La inicialización diferida se realiza así:

Procedimiento SettingSessionParameters (SessionParameterNames) Si SessionParameterNames no están definidos, entonces si ParameterName = "CurrentUser" Then SessionParameters.CurrentUser =; De lo contrario, si ParameterName = "CurrentOrganization", entonces SessionParameters.CurrentOrganization =; // etc. Terminara si; Terminara si; EndProcedure value> value >>

Dado que el parámetro de sesión está vinculado a la sesión, no será posible acceder al parámetro de sesión desde el método que se ejecuta en segundo plano, ya que esta ya será una sesión diferente. Este matiz puede ser una sorpresa, por lo que es mejor prepararse con anticipación pasando el valor deseado como parámetro de método e inicializándolo desde el parámetro de sesión al comienzo del procedimiento.

Parámetros sesiones 1C 8.3- una variable que almacena el valor del parámetro requerido durante la duración de la sesión del usuario. De hecho, esta es una especie de variable global ligada a la sesión del usuario actual.

Usar parámetros de sesión en 1C

Los parámetros de sesión se establecen solo mediante programación, no existe una interfaz universal para configurar los parámetros de sesión en el sistema. Por lo general, se establecen al inicio del sistema, en el "Módulo de sesión". Si el parámetro no está definido, se generará un error durante la llamada.

Un ejemplo de configuración de un parámetro de sesión 1C

Veamos un caso de uso típico para los parámetros de sesión: configurar el usuario actual. Tomaré un ejemplo de la preparación para.

En el árbol de metadatos, cree un nuevo parámetro de sesión: CurrentUser, asígnele un tipo: ReferenceLink.

Obtenga 267 tutoriales en video 1C gratis:

En el módulo de sesión crearemos un procedimiento en el que se determinará el parámetro de sesión actual:

Código de procedimiento:

Procedimiento para establecer parámetros de sesión (parámetros obligatorios) // buscando físico. cara por nombre de usuario CurrentUser = Directorios. Individuos. FindByDesign (Nombre de usuario ()); // si no lo encuentra, cree uno nuevo Si CurrentUser. Empty () Luego NewUser = Directories. Individuos. CreateElement (); Nuevo Usuario. Nombre = Nombre de usuario (); Nuevo Usuario. Escribir (); CurrentUser = NewUser. Enlace; Terminara si; // asignar al parámetro de sesión CurrentUser un enlace a la referencia de individuos Parámetros de sesión. CurrentUser = CurrentUser; Fin del procedimiento