Tabla de Contenidos
Protección de campo
Es posible proteger un campo para que uno o varios usuarios no puedan cambiar su contenido.
La protección se aplica tanto en las fichas donde aparece el campo, como en las rejillas.
Proteger un campo:
- Situarse en el campo a proteger.
- Seleccionar Edición/Protección de campo. Se abre una rejilla donde podemos meter los datos relevantes.
Campo | Descripción |
---|---|
Usuario | Poner el código del usuario para el que se quiere proteger el campo. También se puede poner el usuario PUBLIC que afecta a todos los usuarios que no tengan un registro para si mismo (ver abajo). |
Escritura | Poner 'N' para impedir los cambios sobre el campo. |
Lectura | Sin usar. |
Condición | Este campo se puede editar con F6, terminando la edición con la tecla Intro. Aquí se puede poner una condición que tiene que cumplir el registro actual para que esté activo la protección. Se explica más detallado abajo. |
El usuario PUBLIC
Con el usuario PUBLIC
se puede denegar la escritura de un campo a todos los usuarios. Luego se puede definir por separado los usuarios que sí deberían poder modificar el campo. El ejemplo a continuación prohibe la escritura de un campo a todos los usuarios menos a SMART
.
Usuario | Escritura | Lectura | Condición |
---|---|---|---|
PUBLIC | N | N | |
SMART | N | S |
Condiciones
En algunos casos, es necesario poner una condición para refinar los registros a los que el usuario no debería tener acceso.
Un ejemplo son todos los campos de las fichas basadas en la tabla de los terceros, por ejemplo clientes, proveedores, bancos, empleados.
Si queremos proteger el campo Forma de pago solo para los proveedores, tenemos que poner lo siguiente en el campo Condición:
TIPO = 'PR'
Otras condiciones permitidas son
TIPO in ('CL', 'PR') TIPO = 'CL' or TIPO = 'PR'
Cambio masivo (obsoleto)
Para hacer un cambio masivo para proteger un campo para varios usuarios de golpe, se puede adaptar la siguiente instrucción y ejecutarla en la base de datos. Esto siempre se debería hacer como usuario SYSDBA y después de hablarlo con el servicio técnico de Smart.
insert into Z_CAMPOS_PROTEGIDOS (NOMBRE_TABLA, NOMBRE_CAMPO, USUARIO, LECTURA, ESCRITURA, CONDICION) select 'TERCERO', 'COD_FORMA_PAGO', a.CODIGO, 'N', 'N', 'TIPO = ''PR''' from USUARIO a left join Z_CAMPOS_PROTEGIDOS b on a.CODIGO = b.USUARIO and b.NOMBRE_TABLA = 'TERCERO' and b.NOMBRE_CAMPO = 'COD_FORMA_PAGO' where b.NOMBRE_TABLA is null and a.CODIGO not in ('SYSDBA', 'Poner aquí los códigos de usuarios que deben de tener acceso');