При выполнении служебных операций в 1С:Предприятие, таких как создание нового пользователя или редактирование прав доступа, администратор или программист может столкнуться с критической ошибкой вида: «Не удалось заблокировать таблицу '_INFORG9057'» (или другой служебной таблицы регистра). При этом повторяющиеся попытки записать объект не дают результата и приводят к аналогичной ошибке. В этой статье разберем, почему возникает подобная проблема в файловом режиме работы и как успешно её устранить.
Проанализируем технические особенности работы платформы 1С в файловом режиме. В отличие от полноценных клиент-серверных СУБД (например, PostgreSQL или MS SQL Server), где блокировка устанавливается на уровне отдельных строк, файловый движок (файл 1Cv8.1CD) использует табличные блокировки. Это означает, что при изменении любой записи платформа блокирует всю таблицу целиком.
При записи нового пользователя в конфигурации 1С:Управление нашей фирмой (УНФ) и других решениях на базе Библиотеки Стандартных Подсистем (БСП) программа одновременно обновляет данные в нескольких служебных регистрах сведений (таких как идентификаторы объектов метаданных, права ролей, пользовательские настройки). Если в этот момент происходят следующие события, возникает конфликт:
Рассмотрим первоочередные действия для устранения блокировки. В первую очередь необходимо убедиться, что все сеансы работы с информационной базой полностью завершены.
Конфигуратор).1cv8.exe и 1cv8c.exe. При необходимости завершим их принудительно.Посмотрим, как удалить некорректно снятые блокировки прямо из каталога с файловой базой. Перейдем в папку, где расположен файл информационной базы 1Cv8.1CD.
Внимательно удалим все временные и блокировочные файлы. Критически важно не удалить сам файл базы данных 1Cv8.1CD!
Удалению подлежат файлы со следующими расширениями и именами:
.1CL..1CF и 1Cv8tmp.*..cdn, .lck.Рассмотрим наиболее эффективный способ восстановления внутренней структуры таблиц и индексов файловой базы — выгрузку и последующую загрузку информационной базы через файл дампа (.dt).
Разберем процесс по шагам:
.dt и дождемся завершения процесса выгрузки..dt.Процесс выгрузки и последующей загрузки полностью пересоздает структуру таблиц и индексы файла 1Cv8.1CD, полностью устраняя застрявшие табличные блокировки и фрагментацию данных.
Проанализируем физическое состояние файла базы данных. Для этого воспользуемся специализированной утилитой физической проверки, поставляемой вместе с платформой 1С.
C:\Program Files\1cv8\8.3.X.X\bin\.chdbfl.exe.1Cv8.1CD.Чтобы предотвратить повторное возникновение блокировок таблиц в будущем, проанализируем настройки безопасности операционной системы:
1cv8.exe, 1cv8c.exe) в список исключений вашего антивирусного программного обеспечения.После выполнения указанных рекомендаций зайдём в программу в монопольном режиме и повторим создание пользователя. Проблема с блокировкой таблицы _INFORG9057 будет полностью решена.