Часто в практике администраторов и программистов 1С встречается ситуация, когда база данных «достается по наследству» в замороженном состоянии. Вроде бы конфигурация знакомая, например, Управление производственным предприятием (УПП), но при попытке внести любые изменения в Конфигуратор система выдает предупреждение: «Изменения конфигурации заблокированы средствами управления распределенной ИБ». При этом в настройках поддержки может значиться, что конфигурация вообще не находится на поддержке, а поля поставщика и версии пусты.
В этой статье мы подробно разберем, почему это происходит и какими способами можно вернуть базе работоспособность, возможность обновления и редактирования. Мы проанализируем как стандартные методы платформы 1С:Предприятие, так и более глубокие технические приемы.
Причина кроется в механизме РИБ (Распределенная Информационная База). Когда база создается как «подчиненный узел», она жестко привязывается к «главному узлу». В целях сохранения целостности данных платформа запрещает любые изменения метаданных в подчиненном узле, так как они должны приходить только вместе с изменениями из центральной базы. Если связь с центром потеряна (например, вам передали просто файл .dt или копию базы), база остается в режиме «вечного ожидания» команд от главного узла.
Рассмотрим пошагово, как разорвать эту связь и сделать базу автономной.
Самый распространенный и эффективный метод — это использование встроенного языка 1С. Нам необходимо вызвать метод УстановитьГлавныйУзел и передать в него значение Неопределено. Это скажет системе, что данная база больше не является подчиненной.
Разберем процесс создания такой обработки:
Процедура ОтключитьГлавныйУзелНажатие(Кнопка)
Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда
// Опционально: сохраняем старый узел для истории
// СохранитьЗначение("СтарыйГлавныйУзел", ПланыОбмена.ГлавныйУзел());
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Предупреждение("Главный узел успешно отключен. База теперь автономна.");
Иначе
Предупреждение("База и так не является подчиненным узлом.");
КонецЕсли;
КонецПроцедуры
Важный нюанс: выполнение этого кода должно происходить в монопольном режиме. Убедитесь, что в базе не работают другие пользователи. После выполнения этого кода замок на объектах метаданных в Конфигураторе пропадет, и вы сможете редактировать объекты.
Если по какой-то причине вы не можете войти в режим «Предприятие» (например, из-за критических ошибок конфигурации), существует альтернативный вариант через командную строку. Платформа предусматривает специальный флаг для таких случаев.
Проанализируем синтаксис команды:
Win + R и введите cmd.
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "D:\Bases\MyBase" /N "Admin" /P "Pass" /ResetMasterNode
Здесь параметр /ResetMasterNode выполняет ту же функцию, что и программный код выше — он сбрасывает признак подчиненности узла на уровне системных таблиц. Это «чистый» способ, который помогает избежать инициализации многих механизмов обмена при запуске.
После того как мы сняли блокировку РИБ, часто обнаруживается вторая проблема: конфигурация «не опознана» (в окне Настройка поддержки пусто). Это значит, что при выгрузке/загрузке была потеряна связь с конфигурацией поставщика. Чтобы вернуть возможность штатного обновления через файлы .cfu, нужно заново поставить базу на поддержку.
Рассмотрим, как это сделать правильно:
1.3.23.1.1cv8.cf.Конфигураторе перейдите в меню Конфигурация — Поддержка — Настройка поддержки..cf.Иногда после разрыва связи с РИБ база продолжает вести себя нестабильно. Выясним, что еще можно сделать для «оздоровления» системы.
Очистка кэша. 1С активно кэширует структуру метаданных. После того как вы сняли признак подчиненного узла, локальный компьютер может «помнить» старое состояние. Рекомендуется удалить базу из списка в стартере и добавить ее заново, либо вручную очистить папки в %AppData%\1C\1cv8.
Параметр /SACleanup. Если в базе остались незавершенные административные операции, которые мешают обновлению, попробуйте запустить конфигуратор с ключом /SACleanup. Он предназначен для очистки «мусора» в системных таблицах после аварийных завершений работы.
Использование Tool_1CD. Для файловых баз существует утилита Tool_1CD. С ее помощью можно просмотреть таблицу Config и убедиться, что записи, отвечающие за распределенную базу, очищены. Однако это радикальный метод, требующий осторожности.
Создание «чистой» базы. Если конфигурация всё еще ведет себя странно, попробуйте выполнить полную выгрузку конфигурации в файл .cf, создайте абсолютно новую пустую базу и загрузите этот .cf туда. Затем перенесите данные через обработку ВыгрузкаЗагрузкаДанныхXML. Это полностью исключит любые «хвосты» от старой РИБ на уровне базы данных.
Резюме: Мы проанализировали ситуацию с блокировкой базы 1С и выяснили, что наиболее простым решением является команда ПланыОбмена.УстановитьГлавныйУзел(Неопределено) или параметр запуска /ResetMasterNode. После этого важно восстановить поддержку через сравнение с типовым .cf файлом соответствующей версии, чтобы вернуть базе возможность стандартного обслуживания и обновления.