При сопровождении информационных баз на платформе 1С:Предприятие 8.3 администраторы и разработчики иногда сталкиваются с пугающим сценарием: Конфигуратор внезапно выдает критическую ошибку «Ошибка совместного доступа к файлу root», при попытке входа сообщает, что «Пользователь ИБ не идентифицирован», а после повторного открытия выясняется, что конфигурация самопроизвольно откатилась на неделю или даже на месяц назад. Разберем детально, почему это происходит и как гарантированно восстановить стабильную работу системы.
Проанализируем природу каждого из трех проявившихся симптомов, чтобы понимать корень проблемы:
root. В структуре базы данных 1С объект root представляет собой корневой дескриптор метаданных, хранящийся в служебной таблице Config (или в ConfigSave при несохраненных изменениях). Конфликт совместного доступа возникает при коллизиях блокировок: когда рабочий процесс кластера rphost, фоновое задание или зависшая сессия Конфигуратора удерживают монопольный дескриптор в памяти либо на уровне СУБД.Config. Если при очередной фиксации изменений происходит сбой совместного доступа к root, цепочка инкрементов повреждается. В итоге сервер не может собрать актуальное состояние и сбрасывает метаданные до последней корректной монопольной версии, которая применялась недели назад.Первым делом устраним зависшие блокировки, которые мешают платформе освободить внутренний ресурс root. Выполним полную остановку и очистку серверного окружения:
ragent). В Linux это выполняется системным менеджером служб, в Windows — через оснастку управления службами.rphost, rmngr и ragent полностью завершили работу. Если процессы зависли, завершим их принудительно.srvinfo) и удалим содержимое папок временных файлов сеансов, не затрагивая конфигурационные файлы кластера (1cv8wsrv.lst, 1cv8reg.lst) и файлы лицензий.%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8. Именно старый клиентский кэш нередко пытается применить поврежденное состояние метаданных.Если после очистки кэша и перезапуска службы кластера зайти в Конфигуратор не удается из-за ошибки доступа к root, обратимся к средствам СУБД (PostgreSQL или MS SQL Server). Разберем, как убрать «зависшее» промежуточное состояние обновления.
Создадим резервную копию базы данных средствами СУБД, после чего выполним очистку таблицы несохраненной конфигурации:
DELETE FROM ConfigSave;
Данная команда удаляет несохраненный черновик конфигуратора, который удерживает блокировку объекта root. Основная рабочая конфигурация при этом остается нетронутой. После очистки таблицы ConfigSave запустим Конфигуратор в монопольном режиме.
Если же повреждена основная таблица Config, загрузим эталонный файл конфигурации (.cf), созданный до сбоя, при помощи пакетного режима запуска Конфигуратора или утилиты ibcmd:
1cv8.exe DESIGNER /S "server\base" /N "Admin" /P "Pass" /LoadCfg "C:\backup\backup.cf" /UpdateDBCfg
Для обхода ошибки авторизации на нестабильных релизах платформы используем следующие проверенные методы:
/N "ИмяПользователя" и /P "Пароль". Прямая передача параметров позволяет обойти сбойный интерфейс выбора пользователя.Релиз 8.3.27.1989 содержит множество критических ошибок управления сеансами и блокировками метаданных. Единственным фундаментальным решением является переход на исправленную сборку.
Обновим серверную и клиентскую части платформы до актуальных стабильных сборок ветки: 8.3.27.2214, 8.3.27.2342 или более старших версий. В них разработчики полностью переработали стек авторизации и исправили утечки дескрипторов блокировок в рабочих процессах rphost.
При работе в среде Linux обратим отдельное внимание на скрипты запуска. Нередко системные службы или скрипты инициализации продолжают запускать старые бинарные файлы платформы из параллельно установленных каталогов. Проверим пути в сервисах systemd и удалим старые версии платформы с сервера, чтобы исключить случайный запуск устаревшего релиза.
Чтобы раз и навсегда исключить потерю доработок и внезапные откаты метаданных, внедрим следующие строгие правила администрирования:
F7 при предварительно установленной блокировке сеансов и остановленных регламентных заданиях.Config в рабочей базе актуальная версия всегда хранится в репозитории хранилища.