Esta característica está implementada en la versión 8.3.9.1818 de 1C:Enterprise.
Como prometimos en el artículo anterior, estamos expandiendo gradualmente la funcionalidad de las extensiones de configuración y mejorando su diagnóstico de aplicabilidad.
Agregando roles
Anteriormente, era posible cambiar los roles de una configuración estándar adoptándolos y agregándoles objetos creados en la extensión. Ahora puedes crear roles en las extensiones.
Podemos ver dos escenarios principales que involucran el uso de roles agregados. En primer lugar, pueden ser necesarios para crear conjuntos atómicos o complejos de derechos sobre los objetos que la extensión agrega a la configuración (sin ninguna vinculación a los roles existentes en la configuración).
En segundo lugar, puedes usarlos para crear conjuntos atómicos o complejos de derechos sobre los objetos de configuración que tengan en cuenta las especificidades de la funcionalidad implementada en las extensiones.
Los roles creados en las extensiones solo se pueden agregar a los usuarios utilizando el script de 1C:Enterprise. Por ejemplo:
CurrentUser = InfoBaseUsers.CurrentUser(); CurrentUser.Roles.Add(Metadata.Roles.ExtAndromedaAdditionalReports); CurrentUser.Write();El usuario cuyos roles se agregan con una extensión se muestra en Designer con un nuevo icono especial.

En Designer, puedes eliminar los roles del usuario que se agregaron a través de las extensiones. No uno por uno, sino todos juntos. Por eso, el usuario ahora tendrá el elemento titulado Roles agregados por extensiones de configuración en la pestaña Otros . Desmarca la casilla para eliminar los roles.

Si en algún momento la extensión que agregó el rol deja de pasar la verificación de aplicabilidad con éxito y se vuelve inactiva, el rol que se agregó desde ella sigue estando disponible a través de la colección UserRoles como un objeto de metadatos normal. Usando el script de 1C:Enterprise, puedes eliminarlo de los roles del usuario o agregarlo al conjunto de roles para otro usuario.
Si eliminas la extensión, todos los roles que se agregaron con ella también se eliminan de la lista de roles de usuario.
Ampliación de roles de configuración
Ahora puedes otorgar o, por el contrario, denegar privilegios de acceso a objetos en la configuración principal en los roles de extensión adoptados.

Esta característica te permitirá, en primer lugar, crear conjuntos complejos de derechos sobre los objetos de configuración y extensión, que tendrán en cuenta las especificidades de la extensión y estarán vinculados a los roles existentes en la configuración.
En segundo lugar, la ampliación de los roles de configuración reducirá el número de derechos en los roles de configuración.
Cuando edites los derechos de un objeto adoptado, ahora tienes una tercera opción para cada casilla de verificación: Usar valor del rol extendido. Todos los derechos de los objetos adoptados tienen este valor de forma predeterminada. Hemos agregado un botón encima de la lista de derechos que selecciona la tercera opción para todas las casillas de verificación de un rol adoptado.
Cuando edites un rol adoptado, se agrega la palabra “nativo” a los nombres de las casillas de verificación que se encuentran en la parte inferior de la ventana:
- Establecer derechos para nuevos objetos nativos
- Establecer derechos para atributos nativos y secciones tabulares de forma predeterminada
Además de establecer los derechos, también puedes describir restricciones de acceso a datos y crear plantillas de restricción. La unicidad de los nombres de las plantillas está controlada por la plataforma y está garantizada debido a que las plantillas creadas en las extensiones de roles contienen el prefijo de la extensión.

Restricciones de roles nativos y adoptados
Los roles nativos de las extensiones tienen una serie de restricciones. En primer lugar, hay restricciones “constructivas”, lo que significa que estos roles no pueden proporcionar a un usuario los derechos disponibles para el elemento raíz de la configuración.
Por otro lado, los roles nativos de la extensión pueden estar restringidos por la configuración del perfil de seguridad del clúster. Creemos que esta característica será demandada en las configuraciones que funcionan en modo SaaS. Con su ayuda, puedes crear un rol que le dé a un usuario acceso a todos los objetos de la configuración, con la excepción de aquellos que son responsables de funciones de servicio y administrativas. Luego, puedes usar este rol para restringir la extensión de los derechos de acceso para el perfil de seguridad del modo seguro y para los perfiles asignados a extensiones específicas.
Si no está disponible un rol de este tipo, puedes implementar la restricción como una lista de roles que proporcionan acceso a objetos seguros (desde el punto de vista del servicio).
Para implementar estas características, hemos agregado una casilla de verificación de extensión de derechos de acceso al perfil de seguridad, al grupo Conceder acceso completo a. También hemos agregado el campo Roles que restringen la extensión de derechos de acceso. Puedes usar este campo para especificar la lista de roles separados por “;”.

Si un perfil está en efecto mientras se ejecuta la extensión, la plataforma interpreta los nuevos parámetros de la siguiente manera.
Si se especifica el valor del campo, el rol que se cambia o se agrega mediante la extensión proporciona solo aquellos derechos de acceso a objetos de configuración que son proporcionados por al menos uno de los roles especificados en el campo.
Si no se especifica el valor del campo y la casilla de verificación de acceso completo no está seleccionada, los derechos de acceso a objetos de configuración no se extienden. Aún tienes la opción de denegar algunos derechos a los objetos.
Si resulta que, al iniciar la extensión, el perfil de seguridad restringe la provisión de cierto derecho a cierto rol incluido en la extensión, el usuario recibirá el siguiente mensaje: “El derecho SomeRight al objeto SomeObject para el rol SomeRole está restringido por el perfil de seguridad”.
Verificación de aplicabilidad
No siempre se puede aplicar una extensión específica a una configuración específica. Por ejemplo, porque tiene errores en sus módulos. O porque las propiedades de los objetos adoptados con la verificación de valor habilitada no coinciden.
El primer problema se puede resolver fácilmente antes de la puesta en marcha utilizando la verificación del módulo de extensión. Sin embargo, el segundo problema solo se conoce después de ejecutar la aplicación, cuando la plataforma intenta aplicar la extensión. Si hay algo mal con los objetos a los que accede la extensión, la plataforma lo informa y no aplica la extensión.
Con el fin de minimizar la complejidad del proceso de desarrollo de extensiones, analizamos la situación, cambiamos ligeramente el comportamiento del sistema e implementamos una serie de verificaciones.
Ahora, las nuevas herramientas de diagnóstico te permiten verificar la aplicabilidad de las extensiones antes de su puesta en marcha real junto con la configuración.
Cuando ejecutas la aplicación cliente
El comportamiento cambia de tal manera que ahora, cuando ejecutas la aplicación cliente, ya no se muestran los mensajes anteriores sobre problemas de aplicabilidad de la extensión. En la nueva versión, si se detectan errores al aplicar una extensión al iniciar, la plataforma muestra una ventana emergente de notificación con un hipervínculo.

Haciendo clic en el hipervínculo se abre la Ventana de información para soporte técnico . Todos los mensajes sobre los errores ocurridos ahora se agregan a esta ventana, que también se puede abrir desde el cuadro de diálogo Acerca de 1C:Enterprise.

Todos estos errores ahora se pueden detectar de antemano en diferentes lugares.
En Designer
Los diagnósticos están disponibles en Designer. Hemos agregado dos nuevos comandos en la ventana Extensiones de configuración: Verificar aplicabilidad y Verificar aplicabilidad para todos.

Estos comandos verifican la aplicabilidad de la extensión seleccionada (o todas las extensiones) en relación con una infobase específica. Esta verificación tiene en cuenta incluso los cambios en las extensiones y la configuración que se han realizado, pero no se han aplicado a la infobase.
También puedes ejecutar una verificación similar en el modo por lotes de Designer. Para este propósito, hemos agregado una nueva opción de línea de comandos /CheckCanApplyConfigurationExtensions.
En el script de 1C:Enterprise
Los diagnósticos también están disponibles en el script de 1C:Enterprise. Hemos agregado un nuevo método CheckCanApplyAll() al ConfigurationExtensionsMananger. Y al objeto ConfigurationExtension, hemos agregado el método CheckCanApply(). Puedes usar estos métodos para verificar la aplicabilidad de todas (o una) las extensiones de la infobase en el área de datos actual de acuerdo con el orden de carga y teniendo en cuenta las extensiones que ya se han verificado.
Una característica importante e interesante aquí es que el método CheckCanApply() te permite verificar la aplicabilidad de una nueva versión de la extensión antes de que se cargue directamente en la infobase. Puedes pasar una nueva versión de la extensión a este método como datos binarios.
En el procesador de datos estándar “Administrar extensiones de configuración”
Y finalmente, el último lugar donde puedes encontrar las nuevas herramientas de diagnóstico es Administrar extensiones de configuración. Hemos agregado la casilla de verificación Verificar aplicabilidad al agregar o cargar extensiones. Si está seleccionada, que lo está de forma predeterminada, se verificará la aplicabilidad antes de agregar o cargar una extensión.
También hemos agregado dos comandos que te permiten verificar la aplicabilidad de las extensiones que ya están disponibles en la lista al menú Más .



