При обновлении тяжелых конфигураций, таких как Управление холдингом или ERP, системные администраторы и программисты часто сталкиваются с пугающим поведением платформы: процесс реструктуризации таблиц в Конфигураторе кажется бесконечным. Полоса загрузки доходит до конца, а затем начинается заново, создавая иллюзию «мертвого цикла». В этой статье мы подробно разберем, почему это происходит в современных версиях платформы 1С 8.3.22 и 8.3.23, и как успешно завершить обновление.
Прежде всего, проанализируем поведение системы. Начиная с последних релизов платформы, механизм реструктуризации стал более фрагментарным. То, что пользователь видит в окне Конфигуратора как повторение одного и того же процесса, на самом деле является последовательной обработкой разных типов метаданных. Платформа сначала может реструктурировать справочники, затем документы, после чего переходит к регистрам сведений и накопления. Каждый раз шкала прогресса может сбрасываться в ноль.
Ситуация усугубляется, если в базе активно используются расширения. Платформа может выполнять пересчет структуры основной конфигурации, а следом — всех подключенных расширений по очереди. Рассмотрим пример из практики: на крупных базах процесс может занимать от 4 до 6 часов, даже если кажется, что система «зависла». Основной совет: если нагрузка на процессор (CPU) и дисковую подсистему со стороны SQL-сервера сохраняется, не прерывайте процесс принудительно, так как это может привести к повреждению структуры данных.
В платформе 8.3.22 был внедрен механизм «оптимизированной реструктуризации». Несмотря на название, в некоторых случаях (особенно на сложных схемах метаданных) он может работать некорректно или вызывать логические петли. Если вы столкнулись с тем, что база действительно не может завершить обновление, попробуем использовать старый, проверенный алгоритм.
Для этого необходимо запустить обновление конфигурации базы данных через командную строку с использованием специального ключа. Рассмотрим пошагово, как это сделать:
"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /S "ИмяСервера\ИмяБазы" /N "Логин" /P "Пароль" /ConfigAdministerister /UpdateDBCfg -OptimizedRestructuring Off
При использовании этого параметра 1С применит классический механизм пересоздания таблиц, который работает медленнее, но гораздо стабильнее и предсказуемее в сложных ситуациях.
Выясним техническую причину, по которой SQL-сервер может «откатывать» процесс назад. Часто это связано с нехваткой ресурсов для транзакций реструктуризации. Проанализируем следующие моменты:
Параметры TempDB и журнала транзакций: При обновлении тяжелой таблицы 1С создает временную копию данных. Если ваша база находится в модели восстановления Full, журнал транзакций (LDF) может мгновенно переполниться. В этом случае SQL-сервер прерывает операцию и начинает откат, а 1С пытается запустить процесс снова. На время обновления рекомендуем переключить базу в модель Simple.
Очистка серверного кэша: Иногда в сеансовых данных зависают старые описания метаданных. Перед началом обновления выполните следующие действия:
snccntx в каталоге описания информационной базы на сервере.Local и Roaming в профиле пользователя, под которым запускается служба 1С.Если ожидание более 5 часов не приносит результата, нам необходимо точно понять, на какой таблице «спотыкается» система. Для этого настроим минимальный Технологический журнал. Посмотрим на пример конфигурационного файла logcfg.xml, который поможет выявить проблему:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\LOGS\DB_UPDATE" history="2">
<event>
<eq property="Name" value="DBMSSQL"/>
</event>
<event>
<eq property="Name" value="DBPOSTGRS"/>
</event>
<property name="all"/>
</log>
</config>
В логах ТЖ следует искать события с большой длительностью и повторяющиеся SQL-запросы к одним и тем же таблицам. Если вы видите ошибку Deadlock или WaitConnections, это означает, что процессу реструктуризации мешает фоновое задание или зависшее соединение на уровне СУБД, которое не видно в консоли 1С.
Чтобы избежать подобных ситуаций в будущем, проанализируем следующие правила безопасного обновления:
ТиС (Тестирование и исправление) с включенными опциями проверки логической и ссылочной целостности. Часто именно битые ссылки мешают корректному созданию индексов при реструктуризации..dt и загрузить в новую пустую базу на SQL-сервере. Это принудительно пересоберет все индексы и очистит таблицы от «мусорных» записей.TempDB свободного места как минимум в 2 раза больше, чем объем самой базы данных.Подводя итог, отметим: в большинстве случаев «зацикливание» оказывается либо штатной последовательной обработкой данных, либо конфликтом с новым механизмом оптимизации. Использование ключа -OptimizedRestructuring Off и терпение — ваши главные инструменты при работе с платформой 8.3.22 и выше.