При работе с флагманскими решениями от 1С, такими как «1С:Комплексная автоматизация 2.0» (КА 2.0) или «1С:ERP Управление предприятием», программисты часто сталкиваются с проблемой критического зависания конфигуратора. Ситуация обычно выглядит следующим образом: запускается стандартная процедура «Сравнить/объединить с конфигурацией из файла» или обновление через поддержку, в строке состояния появляется надпись «Сравнение объектов: 0%», и на этом процесс останавливается. Ожидание в течение нескольких часов или даже суток не приносит результата. Рассмотрим причины этого поведения и разберем по шагам методы решения данной проблемы.
Проанализируем технические характеристики современных конфигураций. Вес файла конфигурации (CF) для КА 2.0 может достигать 1.5 Гб и более. В процессе сравнения платформа строит в оперативной памяти дерево метаданных двух конфигураций, а также создает вспомогательные структуры для сопоставления объектов. Рассмотрим, почему это критично для 32-битного клиента:
1cv8.exe может адресовать не более 2 Гб (в редких случаях до 3.5 Гб с ключом /3GB) оперативной памяти. При сравнении огромных объектов КА 2.0 этот лимит исчерпывается мгновенно.Решение: В обязательном порядке установите и используйте 64-битный клиент 1С:Предприятия. Это снимет ограничения на использование оперативной памяти конфигуратором. Убедитесь, что на компьютере, где выполняется сравнение, установлено не менее 16 Гб (а лучше 32 Гб) ОЗУ.
Выясним причину, связанную с версиями программного обеспечения. В истории развития платформы 8.3 были «неудачные» ветки (например, некоторые сборки 8.3.15.х), в которых алгоритм сравнения объектов содержал внутренние ошибки, приводившие к бесконечным циклам или утечкам ресурсов при обработке сложных форм и макетов. Как показывает практика обсуждения, обновление платформы до актуальных релизов (например, 8.3.16.1148, 8.3.18+ или последних версий 8.3.21/22/23) полностью устраняет проблему «зависания на 0%».
Проанализируем ситуацию со стороны операционной системы. При сравнении конфигураций 1С активно использует папку временных файлов пользователя (%TEMP%). Рассмотрим факторы, замедляющие процесс:
Разберем методику оптимизации процесса обновления. При использовании файла обновления (.cfu), платформе приходится сначала «собрать» конфигурацию поставщика из текущей версии и набора дельт, а затем сравнивать результат с вашей конфигурацией. Это требует колоссальных ресурсов.
Попробуем следующий алгоритм:
.cf)..cf файлом.Это исключает этап предварительной сборки метаданных из цепочки обновлений и существенно снижает нагрузку на память.
Если работа в клиент-серверном варианте через консоль конфигуратора идет медленно, выполним следующие действия:
.dt или просто выгрузите конфигурацию в .cf..cf обратно в серверную базу через меню «Конфигурация — Загрузить конфигурацию из файла».Важно: Помните, что метод Загрузить конфигурацию из файла полностью замещает конфигурацию базы данных. Перед этим убедитесь, что в рабочей базе нет изменений, которые не учтены в вашем файле.
Иногда причиной зависания становятся «битые» ссылки в кэше метаданных или самой конфигурации. Проанализируем шаги по очистке:
chdbfl.exe (для файловых копий), чтобы убедиться в отсутствии физических повреждений таблиц метаданных.В конфигурациях ERP и КА 2.0 существуют объекты с огромным количеством реквизитов и форм (например, справочник Номенклатура или документы блока Производство). Если зависание происходит на конкретном объекте, попробуйте выполнять объединение «порциями», снимая галочки с наиболее тяжелых объектов и перенося их по отдельности. Это позволит локализовать проблемный элемент метаданных.
Таким образом, мы выяснили, что основной стратегией решения является переход на 64-битную платформу последних релизов и отказ от использования файлов .cfu в пользу полных .cf при проведении сложных сравнений.