Почему вылетает Конфигуратор 1С при обновлении УПП на этапе загрузки конфигурации поставщика и как это исправить?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При обновлении нетиповых, сильно кастомизированных и «тяжелых» конфигураций (таких как «1С:Управление производственным предприятием» в связке с крупными отраслевыми решениями, например, «БИТ.ФИНАНС») специалисты часто сталкиваются со скрытыми техническими проблемами. Одна из самых неприятных ситуаций — когда процесс обновления внезапно прерывается, а Конфигуратор просто закрывается без вывода каких-либо ошибок («вылетает») на этапе считывания или загрузки конфигурации поставщика. При этом на тестовых базах или файловых копиях то же самое обновление может проходить абсолютно штатно.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем неочевидные серверные факторы, влияющие на процесс обновления, и рассмотрим эффективные пошаговые методики устранения ошибки. В случаях, когда сопровождение текущей системы становится слишком трудозатратным, можно изучить раздел с решениями для перехода с 1С:УПП на более современные конфигурации.

Выясняем причины: почему сбой происходит только на боевом сервере?

Ситуация, когда на тестовом сервере или локальной копии обновление выполняется успешно, а на рабочей СУБД стабильно «отваливается», указывает на различия в системном окружении или инфраструктурных настройках. Давайте проанализируем основные факторы влияния СУБД MS SQL Server и сервера приложений 1С:Предприятие.

1. Модель восстановления базы данных (Recovery Model)

На рабочих базах данных СУБД практически всегда настроена Полная модель восстановления (Full Recovery Model). Это необходимо для обеспечения возможности восстановления данных на любой момент времени с помощью логов транзакций. Тестовые же базы чаще всего работают в Простой модели (Simple Recovery Model).

Во время обновления конфигураций масштаба УПП система совершает сотни тысяч записей в таблицы метаданных. При полной модели восстановления файл лога транзакций (.ldf) мгновенно разрастается до гигантских размеров. Если на диске под логи не хватает места, либо скорость записи дисковой подсистемы недостаточна, SQL-сервер приостанавливает транзакцию для выделения пространства. Если задержка превышает таймаут соединения, процесс 1С аварийно завершается.

2. Ограничения размера и авторасширения базы TempDB

Системная база данных TempDB активно используется СУБД при операциях сравнения и объединения больших объемов метаданных. Если для файлов TempDB задан слишком маленький шаг авторасширения (например, по умолчанию 1 МБ или 10%), SQL-сервер тратит драгоценное время на постоянное изменение размеров файлов, что приводит к дисковым очередям и падению клиента 1С.

3. Лимиты рабочего процесса rphost и кэш сервера

При сопоставлении тяжелых объектов метаданных рабочий процесс сервера 1С (rphost) может потреблять колоссальный объем оперативной памяти. Начиная с платформы 8.3.15, в кластере 1С действуют жесткие внутренние алгоритмы контроля памяти. Если процесс превышает допустимые лимиты или время жизни, установленное в настройках кластера, сервер 1С принудительно перезапускает rphost. Конфигуратор на стороне пользователя при этом мгновенно закрывается без предупреждения.

Также не следует забывать о серверном кэше. Часто администраторы очищают только локальный кэш пользователя, забывая о временных файлах службы сервера «1С:Предприятие» (папка пользователя usr1cv8 на сервере приложений). Накопившийся там мусор может провоцировать ошибки формата потока при обновлении структуры конфигурации поставщика.

4. Логическое повреждение («битость») конфигурации поставщика

Это наиболее частая причина сбоя непосредственно в структуре данных. Если в прошлом обновления выполнялись с нарушениями правил (например, через прямое объединение с файлом .cf без корректного сохранения поддержки, или путем пропуска обязательных промежуточных релизов при обновлении через файлы обновлений .cfu), внутренние уникальные идентификаторы (UUID) метаданных могут рассинхронизироваться. Конфигурация базы данных перестает понимать структуру поставляемого обновления, что вызывает критический сбой на этапе загрузки конфигурации поставщика.


Способ 1. Восстановление конфигурации поставщика через «пересборку» (Классический метод)

Если мы имеем дело с нарушением целостности метаданных поддержки, нам необходимо полностью пересобрать конфигурацию поставщика в рабочей базе, вернув ей эталонный вид, соответствующий текущему релизу. Проанализируем этот процесс по шагам.

Шаг 1. Создание резервной копии и выгрузка текущей конфигурации

Перед началом любых манипуляций обязательно создаем резервную копию базы данных средствами СУБД или выгрузкой в .dt. Затем открываем Конфигуратор рабочей базы и выгружаем нашу текущую доработанную конфигурацию в файл .cf через меню Конфигурация — Выгрузить конфигурацию в файл... (назовем его, например, my_work_with_changes.cf).

Шаг 2. Полное снятие базы с поддержки

Переходим в меню Конфигурация — Поддержка — Настройка поддержки. В открывшемся окне нажимаем кнопку Снять с поддержки. Подтверждаем действие. Теперь наша база полностью лишена конфигурации поставщика, таблицы Config очищены от старых связей, мешавших обновлению.

Шаг 3. Загрузка «чистой» конфигурации поставщика текущей версии

Нам понадобится чистый, абсолютно типовой файл конфигурации (.cf) той версии, которая сейчас установлена у нас (в рассматриваемом примере это релиз УПП .124). Выполняем сравнение и объединение:

  1. Переходим в меню Конфигурация — Сравнить, объединить с конфигурацией из файла....
  2. Выбираем чистый типовой файл .cf версии .124.
  3. В открывшемся окне сравнения не снимаем ни одной галочки (все объекты должны быть выбраны). Нажимаем кнопку Выполнить.
  4. На появившийся запрос системы «Поставить на поддержку?» отвечаем согласием.
  5. После завершения объединения не нажимаем клавишу F7 и не обновляем конфигурацию базы данных!

Шаг 4. Возврат доработок и кода

На данный момент в Конфигураторе находится чистая типовая конфигурация, но нам нужно вернуть все наши доработки из сохраненного файла. Повторяем процедуру сравнения:

  1. Выбираем пункт меню Конфигурация — Сравнить, объединить с конфигурацией из файла....
  2. Выбираем ранее сохраненный файл с нашими изменениями my_work_with_changes.cf.
  3. Система сопоставит объекты. Проверяем настройки сравнения, убеждаемся, что все наши уникальные доработки и нетиповые объекты отмечены галочками.
  4. Нажимаем кнопку Выполнить.
  5. Сохраняем конфигурацию и обновляем конфигурацию базы данных (нажимаем кнопку F7 или синюю бочку).

После проведения данной процедуры конфигурация поставщика будет полностью исправлена, а связь UUID восстановится. Последующее штатное обновление на следующий релиз (например, до .125) через файл обновления .cfu должно пройти без каких-либо зависаний и вылетов.


Способ 2. Решение через подготовку обновленного CF на копии (Метод автора темы)

Если предыдущий способ по каким-то причинам не применим непосредственно на работающей базе данных (например, из-за жесткого регламента простоя), мы можем использовать альтернативный подход, который успешно применил автор темы на форуме.

Рассмотрим алгоритм действий:

  1. Разворачиваем чистую типовую конфигурацию поставщика того релиза, на который мы планируем обновиться (в нашем случае это .125).
  2. Переносим в эту чистую базу все наши кастомные доработки и код из рабочей базы (путем аккуратного сравнения и объединения с файлом my_work_with_changes.cf).
  3. Сохраняем полученный результат в один результирующий файл конфигурации (например, ready_to_update_125.cf). Таким образом, мы получаем готовый «слепок» будущей рабочей базы, но с уже корректно интегрированной и обновленной конфигурацией поставщика внутри самого файла.
  4. В рабочей базе заходим в Конфигуратор и выполняем простую операцию: Конфигурация — Загрузить конфигурацию из файла..., указав подготовленный файл ready_to_update_125.cf.
  5. Выполняем обновление базы данных (клавиша F7), после чего можно провести автоматическую сверку бухгалтерских и налоговых проводок между базами для контроля целостности данных.

Этот метод исключает ресурсоемкий для СУБД процесс сопоставления и реструктуризации тяжелых таблиц поставщика непосредственно в момент обновления на рабочей базе, так как Конфигуратор получает уже готовую, собранную структуру метаданных.


Рекомендации по администрированию СУБД на время тяжелых обновлений

Чтобы гарантированно обезопасить себя от прерывания транзакций и падения процессов при обновлении масштабных конфигураций, настоятельно рекомендуем выполнить следующие настройки на вашем SQL-сервере перед запуском обновления:

Временный перевод базы данных в режим Simple

Для минимизации нагрузки на дисковую подсистему и предотвращения лавинообразного роста лога транзакций временно измените модель восстановления базы данных на простую. Выполнить это можно с помощью следующего скрипта в SQL Server Management Studio (SSMS):


-- Переводим базу в режим Simple перед обновлением 1С
ALTER DATABASE [Имя_Вашей_Базы] SET RECOVERY SIMPLE;

После того как обновление конфигурации базы данных в 1С будет успешно завершено (нажата кнопка F7 и обновлены таблицы метаданных), верните базу в режим полной модели восстановления и обязательно сделайте полную резервную копию:


-- Возвращаем полную модель восстановления базы данных
ALTER DATABASE [Имя_Вашей_Базы] SET RECOVERY FULL;

Оптимизация системной базы TempDB

Убедитесь, что файлы базы TempDB расположены на быстром SSD-накопителе. Настройте фиксированный шаг авторасширения файлов (например, по 256 МБ или 512 МБ), чтобы SQL-сервер не тратил процессорное время на динамическое выделение памяти мизерными порциями во время тяжелых транзакций.

Очистка кэша службы сервера приложений 1С

Перед началом работ остановите службу сервера «1С:Предприятие» и физически удалите папки временных файлов в каталоге реестра кластера (по умолчанию это папка srvinfo\reg_1541\snccntry и аналогичные директории временных файлов), а также очистите локальные папки Temp системного пользователя, из-под которого запущена служба сервера 1С.

Выполнение этих комплексных мер позволит вам успешно и без сбоев обновлять даже самые тяжелые и измененные конфигурации на платформе 1С:Предприятие 8.3. Для регулярного технического сопровождения нескольких систем удобно использовать программу для автоматического обновления, архивирования и тестирования баз 1С.

← На главную