Как ускорить сравнение и объединение при обновлении нетиповых конфигураций 1С?

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

Обновление крупных доработанных конфигураций (таких как 1С:ERP, 1С:Управление торговлей или 1С:Бухгалтерия предприятия) нередко сопровождается длительным ожиданием на этапе сравнения и объединения модулей и метаданных. Процесс сопоставления структуры конфигураций может занимать от десятков минут до нескольких часов. Разберем основные причины медленной работы и рассмотрим эффективные методы ускорения этой процедуры.

Причины медленного сравнения конфигураций

Процесс трехстороннего сравнения конфигураций в среде 1С создает специфическую нагрузку на оборудование и программную среду:

  1. Однопоточная процессорная нагрузка: Алгоритмы парсинга и сопоставления синтаксических деревьев и объектов метаданных внутри Конфигуратора 1С выполняются преимущественно в один поток. В связи с этим решающее значение имеет производительность процессора на одно ядро (Single-Core Performance) и высокая тактовая частота CPU, а не общее количество ядер.
  2. Сотни тысяч мелких файлов во временных каталогах: При открытии окна сравнения платформа распаковывает контейнеры метаданных во временные каталоги пользователя (%TEMP%). Если дисковая подсистема или антивирусное ПО замедляют операции ввода-вывода с тысячами мелких файлов, процедура сильно затягивается.
  3. Накладные расходы клиент-серверной СУБД: При выполнении сравнения непосредственно в базе на MS SQL Server или PostgreSQL происходит огромное количество коротких транзакций и обращений к таблицам метаданных Config и ConfigSave, что увеличивает задержки по сравнению с локальной файловой базой.

Метод 1. Сравнение в локальной файловой базе с последующей загрузкой CF

Самый результативный способ сократить время обновления рабочей клиент-серверной базы — вынести интерактивное сравнение и ручное объединение в локальную среду. Разберем этот процесс по шагам:

  1. Выгрузим рабочую конфигурацию в файл поставки или файл конфигурации .cf через меню «Конфигурация — Сохранить конфигурацию в файл».
  2. Создадим на локальном компьютере с быстрым накопителем пустую файловую информационную базу и загрузим в нее полученный .cf через меню «Конфигурация — Загрузить конфигурацию из файла».
  3. Выполним сравнение и объединение с новым релизом конфигурации или файлом обновления локально. В файловом режиме отсутствуют сетевые задержки и блокировки таблиц СУБД, благодаря чему окно сравнения строится и применяется значительно быстрее.
  4. Сохраним итоговую объединенную конфигурацию в файл .cf.
  5. В рабочей клиент-серверной базе снимем блокировки, сделаем резервную копию и применим подготовленный файл через команду «Конфигурация — Загрузить конфигурацию из файла». Загрузка готовой структуры выполняется на порядок быстрее, чем прямое объединение в рабочей базе.

Метод 2. Использование 64-разрядного Конфигуратора

Для больших конфигураций с разветвленной структурой метаданных стандартный 32-разрядный процесс 1cv8.exe упирается в лимит адресного пространства памяти (около 2–3 ГБ). Это приводит к частой сборке мусора, медленному сопоставлению форм и модулей, а иногда и к ошибкам нехватки памяти (Недостаточно памяти).

Использование 64-разрядного клиента 1С позволяет Конфигуратору свободно кэшировать дерево метаданных в оперативной памяти целиком, что дает стабильный прирост скорости и предотвращает аварийные падения при анализе сложных конфигураций.

Метод 3. Настройка исключений антивируса и Защитника Windows

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

  1. Исполняемые файлы платформы 1С: 1cv8.exe, 1cv8s.exe, 1cv8c.exe.
  2. Каталоги временных файлов текущего пользователя: %TEMP% и %TMP%.
  3. Каталоги кэша метаданных 1С: %LOCALAPPDATA%\1C и %APPDATA%\1C.
  4. Рабочие каталоги, в которых располагаются файлы обновлений .cf и .cfu.

Метод 4. Оптимизация работы с окном объединения

При интерактивном сопоставлении объектов можно существенно снизить нагрузку на интерфейс и сократить ручной труд:

  1. Фильтрация отображения: В окне сравнения и объединения переключим режим фильтра на «Показывать только измененные свойства» или «Показывать только дважды измененные свойства». Платформе не придется тратить ресурсы на отрисовку неизмененных веток дерева метаданных.
  2. Сохранение настроек объединения: Если обновление выполняется поэтапно или на нескольких базах одной ветки, используем меню «Действия — Сохранить настройки...» для сохранения правил объединения в XML-файл. При повторном обновлении аналогичной конфигурации достаточно выполнить «Действия — Загрузить настройки...», что исключит повторный ручной анализ модулей.
  3. Очистка устаревших конфигураций поставщика: В окне «Конфигурация — Поддержка — Настройка поддержки» проанализируем наличие лишних или поврежденных конфигураций поставщика. Если в базе остались следы старых версий от прошлых некорректных обновлений, их следует удалить, чтобы платформа не тратила ресурсы на их обработку.

Метод 5. Архитектурный подход: перевод доработок в расширения

Долгосрочным и наиболее эффективным решением проблемы медленных обновлений является перенос кастомной логики в механизм расширений (.cfe):

  1. Выносим доработанный программный код, новые подсистемы, отчеты и обработки в расширения конфигурации.
  2. Основную конфигурацию возвращаем на типовую поддержку поставщика (режим «Объект поставщика не редактируется»).
  3. В результате такой архитектуры типовые обновления конфигурации сводятся к автоматической накатке типового .cfu или .cf без необходимости проводить ручное трехстороннее объединение модулей, что сокращает процедуру обновления в несколько раз.
← На главную