Contactos

El modo de bloqueo controlado 1s 8 no funciona. Mecanismo de bloqueo gestionado. Si hay errores, regresamos del controlador de eventos.

El sistema 1C: Enterprise le permite utilizar dos modos de trabajar con la base de datos: el modo de bloqueos automáticos en una transacción y el modo de bloqueos controlados en una transacción.

La diferencia fundamental entre estos modos es la siguiente. El modo de bloqueo automático no requiere que el desarrollador realice ninguna acción para administrar los bloqueos en una transacción para poder hacerlo. Estas reglas son proporcionadas por la plataforma 1C: Enterprise mediante el uso de ciertos niveles de aislamiento de transacciones en un DBMS en particular. Este modo de operación es el más fácil para el desarrollador, pero en algunos casos (por ejemplo, con trabajo simultáneo intensivo un número grande usuarios), el nivel de aislamiento de transacciones utilizado en el DBMS no puede proporcionar suficiente paralelismo, que se manifiesta en forma de un gran número de conflictos de bloqueo cuando los usuarios trabajan.

Cuando se opera en el modo de bloqueos controlados, el sistema 1C: Enterprise utiliza un nivel mucho más bajo de aislamiento de transacciones en el DBMS, lo que puede aumentar significativamente el paralelismo de los usuarios de la solución de la aplicación. Sin embargo, a diferencia del modo de bloqueos automáticos, este nivel de aislamiento de transacciones no puede garantizar por sí mismo que se cumplan todas las reglas para trabajar con datos en una transacción. Por lo tanto, cuando se trabaja en modo controlado, el desarrollador debe administrar de forma independiente los bloqueos establecidos en la transacción.

En forma resumida, las diferencias entre los enclavamientos automáticos y los enclavamientos controlados se muestran en la siguiente tabla:

Tipo de bloqueo Nivel de aislamiento de transacciones
Cerraduras automáticas
Archivo DB De tablas Serializable
MS SQL Server Registros
IBM DB2 Registros Lectura repetible o serializable
PostgreSQL De tablas Serializable
Base de datos Oracle De tablas Serializable
Cerraduras gestionadas
Archivo DB De tablas Serializable
MS SQL Server Registros Leer comprometido
IBM DB2 Registros Leer comprometido
PostgreSQL Registros Leer comprometido
Base de datos Oracle Registros Leer comprometido

Establecer el modo de bloqueo en la configuración
La configuración tiene la propiedad. Cada objeto de configuración de la aplicación también tiene la propiedad Modo de control de bloqueo de datos.
El modo de control de bloqueo de datos para toda la configuración se puede establecer en Automático, Controlado (establecido de forma predeterminada para nueva configuracion) y Automático y controlado... Los valores Automático y Controlado significan que el modo de bloqueo correspondiente se utilizará para todos los objetos de configuración, independientemente de los valores establecidos para cada uno de los objetos. Sentido Automático y controlado significa que para un objeto de configuración específico se utilizará el modo especificado en su propiedad Modo de control de bloqueo de datos: Automático o Controlado.
Cabe señalar que el modo de control de bloqueo de datos especificado para el objeto de metadatos se establece para aquellas transacciones que son iniciadas por el sistema 1C: Enterprise cuando se trabaja con los datos de este objeto (por ejemplo, al modificar los datos del objeto).
Si, por ejemplo, la operación de escribir un objeto se realiza en una transacción iniciada por el desarrollador (método StartTransaction ()), entonces el modo de control de bloqueo de datos será determinado por el valor del parámetro Modo de bloqueo método StartTransaction () en lugar del valor de la propiedad del objeto de metadatos Modo de control de bloqueo de datos.
Parámetro predeterminado Modo de bloqueo tiene el significado Modo de gestión de bloqueo de datos Automático, así que para
para utilizar el modo de bloqueo administrado en una transacción explícita, debe especificar el valor de este parámetro
Modo de control DataLock. (tiene sentido establecer este parámetro sila propiedad de configuración "Modo de control de bloqueo de datos" se establece en "Automático y controlado") .

Trabajar con bloqueos administrados utilizando el lenguaje integrado
El objeto de lenguaje incorporado se utiliza para administrar bloqueos en una transacción. Bloqueo de datos... Se puede crear una instancia de este objeto usando el constructor y le permite describir los espacios de bloqueo requeridos y los modos de bloqueo. Para configurar todos los bloqueos creados, use el método Lock () del objeto Bloqueo de datos... Si este método se ejecuta en una transacción (explícita o implícita), los bloqueos se adquieren y se liberarán automáticamente al final de la transacción. Si el método Lock () se ejecuta fuera de una transacción, no se adquirirán bloqueos.

Las condiciones se establecen en la igualdad del valor del campo con el valor especificado o en la aparición del valor del campo en el rango especificado.
Las condiciones se pueden establecer de dos formas:

● especificando explícitamente el nombre y el valor del campo (el Valor ajustado() objeto DataLockElement);
● especificando una fuente de datos que contiene los valores requeridos (la propiedad DataSource del objeto DataLockElement).

Para cada elemento de bloqueo, se puede configurar uno de los dos modos de bloqueo:

● compartido,
● excepcional.

La tabla de compatibilidad de bloqueos administrados se ve así

El modo de bloqueo compartido significa que los datos bloqueados no pueden ser cambiados por otra transacción hasta el final de la transacción actual.
El modo de bloqueo exclusivo significa que los datos bloqueados no pueden ser cambiados por otra transacción hasta el final de la transacción actual, ni pueden ser leídos por otra transacción que está adquiriendo un bloqueo compartido en esos datos.

Características del trabajo en el modo "Automático y controlado".

Cuando se opera en el modo de control de interbloqueo automático y controlado, hay dos puntos a considerar:

● Independientemente del modo especificado para una transacción determinada, el sistema establecerá el control adecuado
bloqueo.
● El modo de gestión de bloqueo está determinado por la transacción de más alto nivel. En otras palabras, si se inició otra transacción en el momento en que comenzó la transacción, entonces la transacción que se está iniciando se puede realizar solo en el modo que está configurado para una transacción que ya se está ejecutando.

Consideremos las características enumeradas con más detalle.
Primera característica radica en el hecho de que incluso si se utiliza el modo de gestión de bloqueo automático para una transacción, el sistema establecerá adicionalmente el correspondiente cerraduras gestionadas al escribir datos en esta transacción. Esto implica que las transacciones que se ejecutan en modo de bloqueo administrado pueden confrontar con transacciones,
ejecutado en el modo de control de bloqueo automático.
Segunda característica es que el modo de gestión de bloqueo especificado para el objeto de metadatos en la configuración o especificado al principio de la transacción de forma explícita (como un parámetro del método StartTransaction ()), es solo el modo "deseado". El modo de gestión de bloqueo real en el que se ejecutará la transacción depende de si esta llamada para iniciar una transacción es la primera o si ya se ha iniciado otra transacción en esta sesión del sistema 1C: Enterprise.
Por ejemplo, si desea administrar bloqueos al escribir conjuntos de registros de registro, al publicar un documento, entonces el modo de bloqueo controlado debe configurarse tanto para el registro en sí como para el documento, ya que la escritura de conjuntos de registros de registro se realizará en el transacción abierta cuando se escribió el documento.

¡Has venido a la página correcta! Lo más probable es que, por la mañana, descubra que su 1C 8.3 favorito no comienza con el mensaje: " Está prohibido iniciar una sesión con una base de datos. Hacer copias de seguridad ...».

Lo primero que debes hacer ahora es Permitir que los usuarios trabajen con urgencia. Después de eso, lea con calma el artículo hasta el final y descubra por qué sucedió esto y qué significa "Bloqueo y desbloqueo de base de información 1C 8,3 ".

Mi experiencia dicta que usted es un usuario (no un administrador del sistema o un programador), y su base de datos es un archivo (si es una base de datos SQL, los especialistas ya están lidiando con su problema). Para comenzar debe comprender en qué carpeta (directorio) se encuentra y eliminar un archivo en esta carpeta: 1Cv8.cdn(No tiene que guardar el archivo, ya no lo necesitará).

* Si es un especialista en TI, puede proceder con seguridad a leer la sección "Bloqueo y desbloqueo desde la infobase de 1C".

En la ventana con la lista de bases de información, busque su base (número 1 en la ilustración de abajo) y haga clic en ella una (¡y solo una!) Vez con el mouse. Luego presione el botón "Cambiar" (número 2).

Solo puede haber una base en la lista, por lo que esta ventana puede resultarle familiar como la "ventana de inicio de 1C". En este caso, simplemente haga clic en el botón "Cambiar".

Si ve que la base de datos se encuentra en esta computadora o en red local- mi experiencia no me decepcionó - la base de datos es un archivo y lo estamos haciendo todo bien. Copia esta ruta ( números 3 y 4).

Ahora ve a esta carpeta.

Por si acaso, aquí hay algunas opciones para iniciar el Explorador de archivos:

  • Tiene Windows XP o Windows 7. Haga clic en Inicio, Ejecutar y pegue la ubicación de la base de información copiada anteriormente. Se abrirá el Explorador de archivos.
  • Tiene Windows 7. Pero no existe la opción Ejecutar. Pegue la ubicación justo después de hacer clic en Inicio. Se abrirá el Explorador de archivos.
  • Tiene Windows 8 o Windows 10. Haga clic en Inicio, a la derecha esquina superior haga clic en Lupa, pegue la ubicación de la base de información copiada previamente, presione Entrar. Se abrirá el Explorador de archivos.

  • Busque el disquete amarillo en la barra de tareas y haga clic en él. Pegue la ubicación de la base de información en la barra de direcciones en la parte superior de la ventana del Explorador. (Haga clic con el botón derecho en la barra de direcciones, cambie la dirección, vuelva a hacer clic con el botón derecho en la barra de direcciones, pegue).

  • Una forma universal para todos Versiones de Windows y su configuración. Presione el botón de la bandera en el teclado y, sin soltarlo, presione la R latina (o la K rusa) en el teclado. Se abrirá la ventana "Ejecutar", pegue allí la ubicación de la base de información copiada anteriormente y haga clic en Aceptar.

Usando una de las opciones propuestas, será llevado a la ventana del explorador con la ubicación de la base de información.


En la ventana del explorador busque el archivo 1Cv8.cdn en la lista de archivos, haga clic derecho sobre él, seleccione "Eliminar", como se muestra en la figura anterior.

¡Listo! Vuelve a lanzar tu "1C: Contabilidad" o "1C: Gestión de Salarios y Recursos Humanos" o "1C: Gestión Comercial".

Bloqueo y desbloqueo desde la infobase de 1C. Destruimos los mitos.

En esta sección, encontrará información única sobre cómo trabajar con cerraduras, además de obtener una refutación de conceptos erróneos comunes sobre el "bloqueo de datos".

¿Cómo configuro un candado?

El mecanismo de bloqueo de la base de datos está diseñado para finalizar las sesiones abiertas actuales y evitar nuevas conexiones. La ubicación de la función de bloqueo en el menú puede variar según la configuración. Por ejemplo, en UT, revisión 11 (11.3.3.163) esto es NSI y administración, [Servicio] Bloqueo del trabajo de los usuarios. Opción alternativa: NSI y administración, Soporte y mantenimiento, Bloqueo del trabajo de los usuarios. En UT, revisión 10.3 (10.3.21.2) esto es Servicio, Usuarios, Bloqueando el establecimiento de conexiones a la base de datos.

* Existen configuraciones especiales de la industria en las que el bloqueo desde el punto de vista de la interfaz y desde el punto de vista del mecanismo no se verá como se describe en este artículo. Dado que estamos considerando un mecanismo estándar para la mayoría de las configuraciones de 1C, no tocaremos las configuraciones especiales de la industria.


Cuando seleccione este elemento, se abrirá el cuadro de diálogo "Bloquear usuarios", en el que debe ingresar un mensaje para los usuarios, la hora de inicio y finalización del bloqueo y un código para desbloquear.


Dado que se ingresa el inicio y el final de la acción de bloqueo, debe tener mucho cuidado en este cuadro de diálogo e ingresar la información explícitamente. Si en el cuadro de diálogo sería posible ingresar el inicio del bloqueo "después de 15 minutos" con una duración de "20 minutos", o al menos una visualización de referencia de estos valores basada en las horas absolutas de inicio y finalización del bloqueo. , sería difícil establecer un bloqueo con una duración de un año, como esto puede suceder cuando se ingresa el error de fecha-hora.

Se recomienda establecer el parámetro "Hora de inicio" como la fecha / hora actual + el tiempo necesario para que los usuarios se preparen para la salida mientras guardan los documentos editados. Por ejemplo, ahora son 9 horas 50 minutos, damos 10 minutos para que los usuarios guarden sus resultados. En total, el tiempo de inicio del bloqueo debe ser de 10 horas 00 minutos.

Hora de finalización: no es necesario que ingrese y el bloqueo del objeto se establecerá indefinidamente (para siempre).

El código de desbloqueo es una "contraseña" de un solo uso para comenzar "desde cero", a pesar del bloqueo establecido, que puede ser necesario en algunos casos (se discutirá más adelante). Es obligatorio ingresar y memorizar. En el caso de la versión SQL de la base de datos, este parámetro está visible en el complemento de Administración de servidores Enterprise 1C y se denomina "Código de permiso" allí.

En el caso de la versión SQL de la infobase, se requiere adicionalmente la autorización del administrador de la infobase o del administrador del clúster.


Entonces, después de presionar el botón "Establecer bloqueo" y una respuesta positiva a la confirmación ...


... volverá al cuadro de diálogo anterior, apariencia que cambió:


En la esquina inferior derecha, aparecerá un mensaje indicando que se planea un bloqueo del trabajo de los usuarios. Solo tú verás este mensaje.


¿Planificado? ¿Quizás tenga algo que ver con las tareas rutinarias?

¿Funcionará el bloqueo programado de usuarios si se establece el bloqueo de trabajos programados? Sí, funcionará. El mecanismo de bloqueo no utiliza trabajos programados.

¿Qué veremos los usuarios y yo?

Hasta que comience el bloqueo, los usuarios activos recibirán recordatorios "educados" para que se apaguen. En este cuadro de diálogo, "Sí" se activa por el tiempo de espera, por lo que los usuarios que están ausentes del lugar de trabajo saldrán con éxito de la sesión 1C.


El iniciador del bloqueo recibe un mensaje diferente:


Después del inicio del bloqueo, será imposible ingresar a la base de datos de la manera habitual... A continuación se describe cómo entrar. Tenga en cuenta que el cuadro de diálogo no contiene una indicación automática de la hora en que finalizó el bloqueo, por lo que la tarea de informar a los usuarios sobre la hora de reanudar el trabajo recae en el Administrador. Esta información se puede proporcionar en un mensaje al usuario.



La bomba explota exactamente a la hora señalada. La sirena aúlla hasta que explota.

Contrariamente a la creencia popular de que la terminación de las sesiones de los usuarios activos se realiza con cuidado, después de una advertencia que se puede ignorar y continuar funcionando, de hecho, la terminación, o mejor dicho, la "interrupción", las sesiones activas ocurren exactamente según lo programado. , rígidamente y con la pérdida de todos los resultados no guardados. Todas las advertencias se emiten en el intervalo desde el momento en que se presiona el botón "Establecer bloqueo" hasta el momento en que comienza el bloqueo, después del cual la sesión activa terminará sin ninguna notificación, y 1C entrará en un ciclo de intentos para iniciar la configuración. nuevamente, con un intervalo de 1 minuto.

No hay excepciones a los modos de ingresar valores de referencia, en los cuales se ingresa un valor que no está en el libro de referencia; no puede salir del modo de ingreso (por ejemplo, cierre 1C con una cruz), pero esto no le impedirá completando el trabajo. De mayor interés es el modo de diálogo modal, por lo que se hablará más al respecto.

* La terminación de las sesiones de usuario en configuraciones antiguas se produce un poco más tarde de la hora designada, porque los usuarios reciben primero una alerta de "Apagado del sistema".

¿Explotará?

Para empezar, observamos que en las configuraciones antiguas, es posible que el bloqueo del iniciador de bloqueo no funcione. Ahora pasemos a considerar el problema de la plataforma 8.3.

Un usuario de IB de archivo que, por ejemplo, decide eliminar un documento y luego ir a almorzar, dejando el cuadro de diálogo "¿Marcar documento para eliminación?" En la pantalla, mantendrá abierta la conexión a la base de datos. Por supuesto, su sesión terminará por la tarde después de que responda “Sí” o “No”, pero hasta entonces verás que hay usuarios activos. En este caso, el iniciador del bloqueo verá el mensaje:


Aparecerá un mensaje de error de tiempo de ejecución en el registro, que no debe interpretarse como un error de tiempo de ejecución, sino como "no todos los usuarios han terminado sus sesiones":


Y esta no es la única razón por la que el bloqueo podría no funcionar. (Consulte las secciones adicionales "¿Por horas de quién?" y "¿Pero qué hay de mis usuarios en Vladivostok?").

Diálogo modal en la versión SQL de la infobase en formularios administrados

El servidor de aplicaciones 1C tiene la capacidad de eliminar una sesión a pesar del modo de diálogo modal. La interfaz 1C y el diálogo modal permanecerán en la pantalla del usuario, creando la apariencia de una sesión inacabada, pero de hecho la sesión se eliminará y la conexión a la seguridad de la información se terminará de manera oportuna. Al intentar seguir trabajando, el usuario verá un mensaje de error "La sesión falta o se borró" o "La sesión fue cancelada por el Administrador", según los matices.



Diálogo modal en la versión SQL de la infobase en formularios ordinarios

Las sesiones de usuario finalizan.

Después de configurar el bloqueo, es mejor no dejar el diálogo, porque cuando vuelve a ingresar a este cuadro de diálogo antes de que comience el bloqueo, aparece un mensaje falso que indica que el bloqueo ya se ha establecido (aunque solo la mitad), que no hay sesiones activas (no es cierto). Al mismo tiempo, continúa el proceso de terminación del trabajo de los usuarios (contradice cero sesiones activas + no tanto, ya que los usuarios “terminan ellos mismos”). Si bien el código de bloqueo del usuario no es perfecto, al final no está de más bloquear y finalizar las sesiones activas, pero confunde al administrador de la base de datos.



¿Funcionará el bloqueo si configura el bloqueo y cierra el cuadro de diálogo?

¿Funcionará el bloqueo si configura el bloqueo y sale inmediatamente de 1C (es decir, finaliza la sesión de 1C antes de que comience el bloqueo)?

Si. El mecanismo para responder a un bloqueo establecido no permite la interacción entre el iniciador del bloqueo y otros usuarios. Las sesiones de usuario comprueban de forma independiente si pueden funcionar.

¿Con qué reloj funcionará el bloqueo si la hora en las computadoras es ligeramente diferente?

Problema de desincronización del reloj

Con el archivo IS, cada computadora comprueba por sí misma si el IS tiene un intervalo de tiempo establecido para el bloqueo y lo compara con su reloj local. Depende de la precisión de su reloj si puede este computador completar la sesión exactamente en el momento adecuado. Si la base está bloqueada desde las 10:00, para una computadora este momento llegará antes y para otra, más tarde.

En un entorno de dominio y cuando los administradores del sistema trabajan sin problemas, la hora de todas las computadoras se sincroniza con el controlador de dominio. Pero en diferentes razones el tiempo puede estar fuera de orden: la sincronización de tiempo con un controlador de dominio no está configurada, la sincronización de tiempo está configurada con un servidor de tiempo exacto externo que ya no está disponible, los servicios de red o dominio fallan, falta de derechos para cambiar la hora del sistema, etc.

Parece que podemos hablar de segundos, al menos, minutos. Pero, de hecho, es posible que la computadora, por ejemplo, no tenga una actualización instalada sistema operativo que admite la transición al horario estacional (invierno / verano), y es posible que el error ya no sea de segundos, sino de horas. Es fácil hacer este experimento: programe un bloque a las 10 a.m. durante media hora, y en una de las computadoras, avance una hora el tiempo; el bloque no funcionará en él.

Por lo tanto, antes de instalar la cerradura, verifique cuidadosamente la hora en la esquina inferior derecha de la computadora con su reloj de pulsera y también pregunte al administrador del sistema con anticipación si la sincronización horaria funciona en su infraestructura de TI.

¿Qué pasa con mis usuarios en Vladivostok?

El problema del tiempo absoluto con usuarios de diferentes zonas horarias

El intervalo de tiempo de bloqueo se almacena en la base de datos. Mire el contenido del archivo de bloqueo 1Cv8.cdn (que se crea en la versión de archivo del IB), contiene la hora en que comenzó el bloqueo el 17/07/2017 a las 13:59 en el formato AAAAMMDDHCHMMSS sin ninguna indicación de la zona horaria:


Sin especificar la zona horaria, quedaría claro cuál es el tiempo absoluto en cuestión si la hora siempre se referiría a una zona horaria específica, por ejemplo, UTC + 0. Pero la base de datos almacena la hora local de acuerdo con el reloj de la computadora que inició el bloqueo. Se desconoce de qué zona horaria era esta computadora, lo que significa que se desconoce la hora absoluta de bloqueo.

Si en Moscú, en una seguridad de la información centralizada, establece un bloqueo a las 13:59, y este momento para los usuarios de Moscú es en el futuro, entonces los usuarios de la misma seguridad de la información en Vladivostok tenían 13:59 hace 7 horas. Y dependiendo de la solución técnica según la cual se lleve a cabo el trabajo con los usuarios de IS de Vladivostok, el bloqueo de estos usuarios funcionará o no.

¿Qué soluciones técnicas podrían ser en las que el bloqueo no funcionará correctamente para los usuarios de Vladivostok? Aquellos en los que la parte del cliente 1C recibirá tiempo en Vladivostok, y no en Moscú. Por ejemplo, las oficinas están conectadas a una red local a través de VPN y la parte del cliente 1C se inicia desde computadora local teniendo UTC + 10 hora. Pero si trabajan con la base de datos a través de una conexión RDP o en modo RemoteApp en un servidor de Moscú, ejecutándose en este servidor lado del cliente 1C - todo estará bien, porque será UTC + 3.

¿Hay algún problema con la desincronización del reloj y la zona horaria en el caso de la versión SQL de la base de datos?

No. En esta versión, hay un "reloj de servidor", que se toma como estándar.

¿Me sacará del Configurador si estaba en él y el bloqueo comenzó a surtir efecto?

¿Será posible ingresar al Configurador después de que se haya iniciado el bloqueo?

¡Está prohibido! La verificación de la posibilidad de trabajar con el configurador se realiza solo al inicio y no se realiza durante el funcionamiento. Por lo tanto, si se establece un bloqueo para trabajos posteriores en el configurador, es mucho más fácil iniciarlo primero que omitir el bloqueo de inicio más tarde.

¿Cómo quito el candado?

En el mismo diálogo en el que se estableció el bloqueo. Le recordamos que después de configurar el bloqueo, en lugar del botón "Establecer el bloqueo", el botón "Eliminar el bloqueo" está en él.

En el caso de la versión SQL de IB, el desbloqueo también es posible en el complemento 1C Enterprise Server Administration. (vea abajo)

¿Para qué sirve el código de desbloqueo?

Para ingresar a IB en un momento en que el bloqueo esté en vigor. Situaciones en las que es necesario:

  • Después de que se estableció el bloqueo, se terminó la sesión de IB (manualmente o como resultado de la acción de bloqueo en el iniciador mismo) y se requiere una nueva sesión para comenzar;
  • El tiempo de finalización del bloqueo no se completó por error en absoluto;
  • La hora de finalización del bloqueo se completó por error (por ejemplo, el mes o año siguiente se ingresó inadvertidamente);
  • La base de datos está en la versión SQL y, para cancelar un bloqueo configurado incorrectamente, es imposible eliminar el archivo 1Cv8.cdn en el directorio de la base de datos.

En este caso, use la sugerencia que se da al inicio. Aquellos. en la ventana con la lista de bases de información, haga clic en "Cambiar" e ingrese en Opciones extra ejecutar la línea:

ENTERPRISE / F "Z: \ Exchange \ UT 11" / CAllowUsers / UC12345

… Teniendo en cuenta el directorio de ubicaciones y el código de desbloqueo.


Es mejor copiar esta línea en el portapapeles y corregirla en el cuadro de diálogo "Editar infobase". Si confundió el tipo de comillas o la "C" rusa y el latín, verá un mensaje de error:



En caso de entrada correcta y posterior lanzamiento de 1C en modo empresarial, 1C se desbloqueará y saldrá automáticamente. Después de eso, puede eliminar parámetros adicionales e iniciar 1C como de costumbre.

¿Qué pasa si no configuré un bloqueo y alguien bloqueó la base de datos SQL? Sin embargo, no conozco el código de desbloqueo.

La base de datos se puede bloquear por la propia configuración en el momento de crear una copia de archivo. Si el proceso de creación no se completó normalmente, la base de datos SQL puede permanecer en un estado bloqueado. En este caso, necesita acceder a la consola (más correctamente, el complemento) "Administración de 1C: servidores empresariales".

¿Dónde encontrarla?

El complemento 1C: Enterprise Server Administration a menudo se instala en el mismo servidor donde Servidor SQL, así como dónde se implementa el servidor 1C (o el servidor de aplicaciones 1C). Aunque no es necesario: SQL se puede instalar en una computadora, "1C Application Server" - en otra, y el complemento se puede implementar por su cuenta puesto de trabajo... Es más probable que el éxito se logre haciendo lo siguiente:

  • Conéctese mediante RDP al servidor especificado en la línea Srvr = ... utilizando su nombre de usuario y contraseña de dominio. Si no puede conectarse, pregunte administrador de sistema agregarlo al grupo de usuarios de escritorio remoto. (En caso de denegación de dichos derechos, implemente y configure el complemento 1C Enterprise Server Administration en la estación de trabajo);

  • En el servidor, busque el complemento 1C: Enterprise Server Administration;
  • Inicie el complemento, expanda el árbol hasta el nodo con su infobase;

  • En las propiedades de la base de datos, desmarque la casilla de verificación "Bloqueo de inicio de sesión habilitado", o corrija las horas de inicio y finalización del bloqueo, o mire el "código de permiso" para ingresar al IB (también conocido como el "código de desbloqueo" en el bloque diálogo de configuración).

Qué hacer si todos los usuarios de la información Bases de datos SQL salió, pero aún no puede iniciar el Configurador, porque ¿hay usuarios activos?

En el nodo "Conexiones" de la base de información, en el lado derecho de la pantalla, puede eliminar las conexiones existentes.


Estas no son todas las preguntas relacionadas con el tema del bloqueo de la base de datos.

Si aún tiene preguntas:

  • ¿Es posible trabajar según la hora de Moscú si alquila un servidor en Europa y no quiere depender de su zona horaria?
  • ¿Cómo encontrar el servidor de aplicaciones 1C si no sabe dónde está instalado?
  • ¿Cómo implementar el complemento 1C: Enterprise Server Administration y cómo configurarlo?
  • Si hay varios servidores de aplicaciones en la misma red local, ¿qué se debe hacer?
  • Cómo estar en caso sistema de clúster? etc.

Nuestros consultores certificados en temas tecnológicos 1C estarán encantados de responderlos.

De vez en cuando, debe comprender el uso de mecanismos de bloqueo en ciertos casos para la implementación de diversas tareas. Aunque hay mucha información sobre estos temas, está muy fragmentada y con el tiempo se empieza a olvidar el montón de material que había que remover. Tenemos que solucionarlo de nuevo ...

Como resultado, la idea pareció estructurar y esbozar brevemente la esencia de varios modos de bloqueo en 1C en general y en relación con configuraciones típicas. Esperamos que esto sea útil.

Y entonces, vamos ...

Primero, escribiré sobre los niveles de aislamiento de transacciones, consideraré brevemente solo aquellos niveles que son relevantes para este artículo.

Niveles de aislamiento de transacciones

Leer comprometido (lectura completada) - está permitido leer datos en una transacción, cuyos cambios fueron completados por todas las demás transacciones. El predeterminado se usa para la mayoría de las bases de datos.

Leer comprometido Instantánea (control de versiones de datos) - lectura permitida versión antigua datos, cambios en los que no se completan con otras transacciones. Apoyado por bases de datos: Postgre SQL y Oráculo... A partir de la versión 8.3 de la plataforma 1C, se implementa para trabajar con bases de datos:MSSQL .

Repetible leer (lectura repetible) - prohibición de modificar registros en una transacción que ya se hayan leído anteriormente en el marco de otras transacciones.

En cuanto al aislamiento de transacciones, eso es todo por ahora, luego me gustaría decir algunas palabras sobre el mecanismo para dividir totales en registros de acumulación.

Dividir los totales de los registros de acumulación

El registro de acumulación a nivel de base de datos consta de dos tablas: Mesa principal y Tabla de totales. Durante el registro en el registro (tanto para ingresos como para consumo), los datos se registran en ambas tablas, los datos se registran directamente en la tabla principal y la fila total para un conjunto de dimensiones del registro se actualiza en la tabla de totales. Por consiguiente, cuando se están ejecutando transacciones paralelas, la escritura en la tabla de totales para un conjunto de dimensiones no se puede realizar simultáneamente, lo que reduce la velocidad de contabilización de documentos.

Para eliminar este problema, se ha creado un mecanismo: división de totales. Sin entrar en detalles, este mecanismo permite actualizar los datos en la tabla de totales del registro de acumulación para el mismo conjunto de dimensiones, simultaneamente.

Para revelar el tema principal del artículo, necesito describir principios generales Mecanismos de control de residuos que se utilizan en configuraciones típicas. En resumen, existen mecanismos de control antiguos y nuevos, ambos en uso actualmente, a pesar de que el nuevo régimen tiene alrededor de 8 años.

Mecanismos de control de residuos en configuraciones típicas de 1C

Viejo esquema, entonces VIEJO - se forma una solicitud a la base de datos para controlar los saldos libres, en caso de una decisión positiva, se forma un movimiento a lo largo del registro. Sobre este momento utilizado en Contabilidad 3.0 y en algunos algoritmos UT 11, KA 2, ERP 2.

desventajas :

  • es necesario bloquear los registros que están involucrados en el movimiento ya en el momento de su lectura, lo que agrava el paralelismo del trabajo.

Nuevo esquema, más NUEVO - se realiza el movimiento a lo largo del registro, luego se verifica la presencia de saldos negativos, si los hay, se revierte la operación. Usado actualmente en UT 11, KA 2, ERP 2.

Ventajas:

  • No es necesario eliminar los movimientos de documentos en una operación separada, los datos se sobrescriben sin un registro preliminar de juegos vacíos. Esto aumenta enormemente la velocidad de publicación de documentos.
  • Se ha incrementado la velocidad de ejecución de la solicitud a los saldos, ya que en la mayoría de los casos, la solicitud después de la ejecución da un resultado vacío.
  • No es necesario bloquear previamente los datos mutables.

desventajas :

  • en el caso de que, para realizar la contabilización, sea necesario obtener datos de los registros contables (por ejemplo, el cálculo del precio de coste por dar de baja), en cualquier caso, es necesario bloquear los registros ya al momento de leerlos.

Resumiendo lo anterior, podemos concluir - si para la publicación de documentos no es necesario requerimientos adicionales a los registros de la base de datos, es mejor aplicar el nuevo mecanismo, si es necesario, usamos el mecanismo anterior.

Bueno, es hora de pasar, de hecho, a la presentación del tema principal de este artículo: descripción de los modos de bloqueo... De hecho, solo hay dos modos: Auto y Administrado, están especificadas en las propiedades generales de la configuración, estoy seguro de que todo el mundo lo sabe muy bien, por lo que no me extenderé en esto en detalle.

Probablemente ya haya adivinado que es necesario trabajar con estos dos modos de diferentes maneras en relación con diferentes mecanismos de publicación de documentos. Echemos un vistazo más de cerca a esto.

Modo de bloqueo automático

En este caso, se utiliza el modo de aislamiento de transacciones descrito anteriormente:Repetible leer.

Nota: Este artículo trata principalmente de la versión cliente-servidor del trabajo. Para el modo de archivo, aún más nivel alto aislamiento, que no consideraremos aquí.

Para excluir puntos muertos al contabilizar documentos con control de saldo:VIEJO se aplica la construcción del lenguaje de consulta " PARA CAMBIAR", Que permite, al leer datos en una transacción por primera vez, colocar en estos datos no un bloqueo de lectura compartido, sino un bloqueo de actualización. En consecuencia, en otra transacción ya no será posible realizar un procedimiento similar, ya que es imposible imponer dos bloqueos de actualización de diferentes transacciones en los mismos datos.

El bloqueo se aplica solo a aquellos registros que aparecen en la solicitud (en el peor de los casos, si el plan de consulta no es óptimo o si está escrito incorrectamente, se pueden bloquear más registros de los necesarios).

Nota: En el caso de trabajar con una base de archivo y con PAG postgre SQL , toda la mesa está bloqueada.

Ejemplo:

SELECCIONE Saldos de bienes, Nomenclatura, Saldos de bienes, Equilibrio de cantidad COMO Cantidad DESDE Registro de acumulación.

Utilice el modo de control de residuos -NUEVO junto con el modo de bloqueo automático, tiene sentido solo para registros sin dividir totales, en este caso, no se necesita ninguna acción adicional. Cuando utilice registros con totales divididos, puede experimentar D ea dlock en la lectura de datos, si el registro se escribió al mismo tiempo, y de alguna manera resolver este problema no trabajará.

Modo de enclavamiento administrado

En este caso, se aplican los modos de aislamiento de transacciones:Leer comprometido yLeer comprometido Instantánea .

VIEJO - el bloqueo compartido se libera después de leer los datos de los saldos, por lo tanto, para excluir la posibilidad de saldos negativos, es necesario bloquear explícitamente las entradas necesarias en el registro antes de generar una solicitud para recibir los saldos. En realidad, este es el principio del modo de bloqueo controlado.

Ejemplo:

DataLock = NewDataLock; LockElement = Data Lock.Add ("Registro de acumulación.Productos en almacenes.RecordSet"); BlockElement.SetValue ("Almacén", Almacén); LockElement.SetValue ("Nomenclatura", Nomenclatura); DataLockElement.Mode = DataLockMode.Exclusive; Data Lock.Lock ();

Usando el modo de control residual NUEVO :

En el caso de utilizar registros sin separar totales, no se necesitan bloqueos adicionales a los impuestos por la base de datos, el propio DBMS bloqueará los datos necesarios (en este caso, registros en la tabla de totales del registro de acumulación).

En el caso de utilizar registros de acumulación con división de totales (por defecto, los registros con esta bandera se crean en el configurador), se pueden obtener las siguientes situaciones negativas:

  • Sin modo de control de versiones (MS SQL y 1C 8.2) - obtenemos un punto muerto al intentar leer datos, si la escritura en dos transacciones se realizó simultáneamente. Al escribir datos, no se producirá el bloqueo, ya que se utilizan diferentes filas de DBMS (división de totales)
  • Con el modo de control de versiones Snapshot (postgresql, oráculo o 1C 8.3) - No habrá bloqueo, pero aparecerán saldos negativos, ya que el control se realizará sin tener en cuenta todas las transacciones incompletas.

Para evitar tal situación, debe configurar el indicador del conjunto de registros antes de escribir en el registro: BLOQUEO PARA CAMBIO... Esta construcción da el comando para imponer un bloqueo exclusivo en los registros de la tabla de saldos del registro al escribir, sin tener en cuenta el separador de totales, en su esencia, simplemente deshabilita temporalmente la división de totales para el registro de acumulación.

En consecuencia, se excluye la posibilidad de escritura en paralelo en un registro de datos con un conjunto similar de medidas; una transacción posterior esperará a que se complete la anterior.

Ejemplo:

Conjunto de registros. BlockForChange = True;

Espero que este artículo haya sido útil, y después de leerlo, se crea una comprensión más holística del funcionamiento de la plataforma 1C bajo diferentes modos de bloqueo, utilizando diferentes mecanismos para controlar los residuos.

Si me perdí algo y fui inexacto en algo, podré verlo en los comentarios del artículo.

Un agradecimiento especial si marcas el artículo con un asterisco, ya que no hay nada que te motive a escribir nuevos artículos como tu aprobación.J

Hoy hablaremos de bloqueos tanto en los niveles 1C 8.3 y 8.2, como en el nivel DBMS. El bloqueo de datos es un elemento esencial de cualquier sistema con más de un usuario.

A continuación, describiré cómo funcionan las cerraduras y de qué tipo son.

Un candado es información de que otro usuario se ha apoderado de un recurso del sistema. Se cree que bloquear es un error. No, el bloqueo es una medida ineludible en un sistema multiusuario para compartir recursos.

Solo los bloqueos redundantes ("adicionales") pueden dañar el sistema, estos son bloqueos que bloquean información innecesaria. Es necesario aprender a eliminar estos bloqueos, pueden conducir a trabajo subóptimo sistemas.

Los bloqueos en 1C se dividen convencionalmente en objeto y transaccional.

Los objetivos son, a su vez, optimistas y pesimistas. Y transaccional se puede dividir en administrado y automático.

Bloqueos de objetos 1C

Este tipo de bloqueos está completamente implementado a nivel de plataforma 1C y no afecta al DBMS de ninguna manera.

Obtenga 267 tutoriales en video 1C gratis:

Cerraduras pesimistas

Este bloqueo se activa cuando un usuario ha cambiado algo en el formulario del catálogo y el segundo intenta cambiar el objeto en el formulario de la misma manera.

Cerraduras optimistas

Este candado compara las versiones del objeto: si dos usuarios abrieron el formulario, y uno de ellos cambió y escribió el objeto, entonces el segundo, al escribir, el sistema dará un error de que las versiones de los objetos son diferentes.

Cerraduras transaccionales 1C

El mecanismo de bloqueo de tracción 1C es mucho más interesante y funcional que el mecanismo de bloqueo de objeto. Los bloqueos a nivel de DBMS participan activamente en este mecanismo.

El funcionamiento incorrecto de los bloqueos transaccionales puede provocar los siguientes problemas:

  • problema de cambio perdido;
  • problema de lectura sucia;
  • lectura irrepetible;
  • fantasmas de lectura.

Estos problemas se discutieron en detalle en el artículo sobre.

Cerraduras transaccionales automáticas 1C y DBMS

En el modo de funcionamiento automático, el DBMS es totalmente responsable de los bloqueos. En este caso, el desarrollador no participa en absoluto en el proceso. Sin embargo, esto facilita el trabajo de un programador 1C, creando sistema de informacion para una gran cantidad de usuarios en bloqueos automáticos no es deseable (especialmente para PostgreSQL, Oracle BD - al modificar datos, bloquean completamente la tabla).

Se utilizan diferentes grados de aislamiento para diferentes DBMS en modo automático:

  • SERIALIZABLE para toda la tabla - modo de archivo 1C, Oracle;
  • SERIALIZABLE registrado - MS SQL, IBM DB2 cuando se trabaja con entidades que no son objetos;
  • LECTURA REPETIBLE en el registro: MS SQL, IBM DB2 cuando se trabaja con entidades.

Modo gestionado de cerraduras transaccionales 1C y DBMS

El desarrollador de una solución de aplicación a nivel 1C asume toda la responsabilidad. En este caso, el DBMS establece un nivel de aislamiento bastante alto para las transacciones: READ COMMITED (SERIALIZABLE para un archivo DBMS).

Al realizar cualquier operación con la base de datos, el administrador de bloqueo 1C analiza la posibilidad de bloquear (capturar) un recurso. Las cerraduras de un mismo usuario son siempre compatibles.

Dos bloqueos NO son compatibles si: configurados por diferentes usuarios, tienen tipos incompatibles (exclusivos / compartidos) y configurados en el mismo recurso.

Implementación física de cerraduras en un DBMS

Físicamente, los bloqueos son una tabla que reside en la base de datos llamada maestra. La tabla de bloqueo en sí se llama syslockinfo.

La tabla tiene convencionalmente cuatro campos:

  1. ID de sesión de bloqueo SPID;
  2. qué está bloqueado exactamente por RES ID;
  3. Tipo de bloqueo - S, U o X MODO(de hecho, hay 22 tipos de ellos en MS SQL, pero solo tres se usan junto con 1C);
  4. estado de bloqueo - puede ser CONCEDER(instalado) y ESPERE(esperando en la fila).

Mecanismo cerraduras transaccionales utilizado para el acceso de usuarios concurrentes al DBMS.
Una transacción es una especie de operación indisoluble, durante la cual cambia el estado de la base. Ésta es la cantidad mínima de cambios: no puede realizar una media transacción; si la transacción no se completa, la base de datos se revertirá a su estado inicial.
Dado que una transacción captura una matriz de datos, hay un matiz al acceder a esta matriz: por ejemplo, una transacción cambia los datos, mientras que otra intenta leerlos. El resultado de la lectura puede ser incorrecto, porque no se enciende cambios recientes... Por lo tanto, el aislamiento de transacciones funciona a nivel de DBMS. Son posibles los siguientes niveles de aislamiento:

  • Leer sin compromiso- mientras una transacción cambia la matriz, otra no puede cambiarla, pero puede leer. Nivel de aislamiento más bajo.
  • Leer comprometido- mientras una transacción cambia la matriz, la otra no puede cambiarla ni leerla
  • Lectura repetible- mientras una transacción lee la matriz, otra no puede cambiarla, pero puede leer
  • Serialaizable- mientras una transacción lee una matriz, otra no puede cambiarla ni leerla. Todas las operaciones son secuenciales. Nivel máximo de aislamiento.

Si se establece la configuración 1C: Enterprise modo de bloqueo automático, el DBMS selecciona el nivel de aislamiento de la transacción. En el caso de MS SQL, serán niveles de lectura repetible o serializables, es decir, el aislamiento de datos es cercano al máximo. Esto resuelve problemas con la corrección de los datos, pero puede provocar la aparición de bloqueos en el nivel de DBMS durante el trabajo intensivo del usuario. Por lo tanto, 1C: Enterprise tiene su propia funcionalidad para trabajar con bloqueos, que se activa habilitando el modo de bloqueos administrados. En este caso, el nivel de aislamiento de transacciones de MS SQL se confirmará en lectura. La propia plataforma aislará los datos sin depender del DBMS.

La habilitación del modo de bloqueo administrado ocurre en las propiedades de configuración:

Además, el modo de bloqueo se puede configurar para objetos de configuración específicos:

Si el modo de bloqueo automático se establece para la configuración en su conjunto, todas las transacciones en todos los registros funcionarán en el modo automático, independientemente del modo que se establezca para el objeto de configuración. Si está administrado, de manera similar, se administrarán todas las transacciones. Si la configuración se establece en Automático y Controlado, entonces el modo para cada objeto estará determinado por su configuración.

Hay un punto para los modos Automático y Controlado. Una sola transacción para el usuario puede representar varias transacciones desde el punto de vista de la plataforma. Por ejemplo, navegar de forma interactiva por un documento a través del registro dos las transacciones son un registro del documento en sí, y dentro de esta transacción hay un registro de un conjunto de filas por registro. Dependiendo del modo de control de bloqueos para el documento en sí y el registro movido por él, son posibles cuatro situaciones:

  1. Modo de documento Automático, modo de registro Automático ->
  2. Modo de documento Administrado, modo de registro Administrado -> escritura por registro en modo controlado
  3. Modo de documento Automático, modo de registro Guiado -> escritura por registro en modo automático
  4. Modo de documento Guiado, modo de registro Automático -> situación excepcional(error)

Pregunta 06.59 del examen 1C: Profesional en la plataforma. Al publicar un documento en un registro, si el documento tiene un modo de administración de bloqueos transaccionales automáticos y el registro tiene uno controlado (en las propiedades de configuración, se usa la opción "Automático y administrado"), entonces dicha publicación resultará en :

La respuesta correcta es la segunda, la determinamos por la primera transacción, si es automática, entonces todo es automático.

Pregunta 06.60 del examen 1C: Profesional en la plataforma. Al publicar un documento en un registro, si el documento tiene un modo de administración de bloqueos transaccionales administrados y el registro es automático (la opción "Automático y administrado" se usa en las propiedades de configuración), entonces dicha publicación dará como resultado:

  1. a la ocurrencia de una situación de error
  2. toda la transacción se realizará automáticamente
  3. toda la transacción se ejecutará de forma controlada

La primera respuesta correcta está determinada por la primera transacción, si se controla, luego un error.

Pregunta 06.61 del examen 1C: Profesional en la plataforma. Al publicar un documento en cualquier registro, si el documento tiene un modo de administración de bloqueos transaccionales automáticos y el registro tiene uno controlado (la opción "Controlado" se usa en las propiedades de configuración), entonces dicha conducta resultará en:

  1. a la ocurrencia de una situación de error
  2. toda la transacción se realizará automáticamente
  3. toda la transacción se ejecutará de forma controlada


¿Te gustó el artículo? Compártelo