В процессе разработки или обновления программ на платформе 1С:Предприятие 8 программисты часто сталкиваются с ситуацией, когда конфигурация базы данных «зависает» в неопределенном состоянии. Вы внесли изменения, значок «» в заголовке окна указывает на рассогласование основной конфигурации и конфигурации базы данных, а кнопка «Обновить конфигурацию базы данных» (тот самый «синий бочонок») активна. Однако при нажатии на нее происходит лишь быстрая «Проверка корректности метаданных», после чего процесс прерывается, и бочонок снова остается активным. В этой статье мы разберем причины такого поведения и составим подробный план действий для выхода из этой ситуации.
Ситуация, описанная в теме, обычно возникает после сложных манипуляций: сравнения и объединения с конфигурацией поставщика, работы с хранилищем или после некорректного завершения предыдущего сеанса обновления. Платформа считает, что изменения есть, но по какой-то причине механизм реструктуризации таблиц базы данных не запускается. Разберем пошагово, как заставить систему применить изменения.
Как показывает практика и опыт автора темы, корень проблемы часто кроется не в самой базе данных, а в окружении (клиентской машине). Если обновление не проходит на локальном компьютере, попробуйте выполнить следующие действия:
%AppData%\1C\1cv8\ и %LocalAppData%\1C\1cv8\.Иногда флаг изменения конфигурации «залипает» в базе, и 1С не видит реальной разницы между основной конфигурацией и конфигурацией БД. Нам нужно внести такое изменение, которое платформа гарантированно не сможет проигнорировать. Обычное добавление константы (как советовали в сообщении 1) помогает не всегда. Попробуем более радикальные методы:
РежимСовместимости на один пункт выше или ниже. Внимание: это действие заставляет 1С пересчитать логику работы всей системы. Если после смены режима «бочонок» отработал, обязательно верните режим совместимости в исходное состояние и проведите финальное обновление.Если ваша база подключена к хранилищу, проблема может быть вызвана рассинхронизацией локального кэша хранилища и основной базы данных. Рассмотрим алгоритм действий:
Если база работает на MS SQL Server или PostgreSQL, проблема может заключаться в «фантомных» записях в служебных таблицах. В 1С есть таблица ConfigSave, в которой хранится промежуточное состояние конфигурации перед обновлением БД.
Рассмотрим логику действий (требуются навыки администратора БД):
ConfigSave есть данные, которые 1С считает актуальными изменениями..cf файл.Сравнить с конфигурацией БД. Если отчет пуст, а бочонок активен — это явный программный сбой флага, который лечится либо ТиИ, либо перезагрузкой службы сервера 1С:Предприятия.Иногда графическая оболочка Конфигуратора блокирует выполнение команд из-за внутренних ошибок прорисовки или конфликтов потоков. Мы можем запустить обновление принудительно через параметры запуска. Разберем пример команды:
"C:\Program Files\1cv8\common\1cv8.exe" DESIGNER /S "ServerName\BaseName" /N "Admin" /P "Password" /UpdateDBCfg
Преимущество этого метода в том, что в случае ошибки в консоль или лог-файл будет выведено конкретное описание причины прерывания процесса, чего не всегда можно добиться в интерфейсе.
Если ничего из вышеперечисленного не помогло, проанализируем целостность самой структуры метаданных:
Чаще всего проблема «активного бочонка» решается либо очисткой кэша, либо сменой рабочего места (терминала), как это произошло у автора вопроса. Если же это не помогает, используйте метод принудительной реструктуризации через изменение длины кода справочников. Помните, что любые манипуляции с конфигурацией базы данных, особенно на уровне SQL-таблиц, необходимо проводить только после создания полной резервной копии базы данных.