При выполнении обновления доработанной информационной базы 1С программисты часто сталкиваются с нетипичной ситуацией. При открытии окна сравнения и объединения конфигураций или при сравнении основной конфигурации с новой конфигурацией поставщика платформа выводит огромный список отличающихся объектов. В этот список попадают общие модули, справочники, документы и формы, в которые специалисты гарантированно не вносили никаких изменений.
Разберем подробнее, почему возникают такие ложные расхождения, как они связаны с правилами поддержки и какими способами можно привести сравнение к корректному виду.
Сформулируем типичный сценарий: доработанная конфигурация обновляется через механизм поддержки. До процедуры обновления выполнялся анализ изменений, и список отличающихся метаданных был относительно небольшим. Однако после перехода на новый релиз поставщика в окне сравнения оказываются десятки объектов, отмеченных как измененные.
Выясним главные факторы, влияющие на появление такого визуального шума:
Конфигурация -> Поддержка -> Обновить конфигурацию сопоставление выполняется строго по внутренним идентификаторам (UUID). Если же использовать команду Конфигурация -> Сравнить, объединить с конфигурацией из файла, платформа отдает приоритет сопоставлению по именам, что приводит к разным результатам анализа.UUID меняется. Платформа начинает воспринимать такой объект как абсолютно новый, даже если его имя совпадает с типовым.Проанализируем практический пример из работы специалистов. Когда у объектов метаданных правила поддержки выставлены вразнобой (часть снята с поддержки, часть редактируется, а у части стоят «замочки»), при обновлении через поддержку платформа не может корректно построить трехстороннее сравнение (Основная конфигурация — Старая конфигурация поставщика — Новая конфигурация поставщика).
В результате объекты, находящиеся в частично измененном состоянии или имеющие несовпадающие настройки наследования правил, сбрасывают свои связки и помечаются как отличающиеся, создавая эффект массового изменения исходного кода.
Для устранения массовых ложных расхождений выполним процедуру выравнивания правил поддержки информационных баз.
Конфигурация -> Поддержка -> Настройка поддержки....Включить возможность изменения (если она еще не включена).Установить режим для всех... и выберем единый режим для всех объектов дерева метаданных: Редактируется с сохранением поддержки.После выравнивания режимов поддержки платформа начинает единовременно и корректно сопоставлять все объекты метаданных, благодаря чему из списка отличающихся исчезают нетронутые модули и справочники.
Рассмотрим дополнительные способы, помогающие программисту сосредоточиться только на реальных доработках при сравнении сложных конфигураций:
1. Использование фильтра по дважды измененным свойствам
В окне сравнения и объединения конфигураций нажмем на кнопку настройки фильтров и выберем режим отображения Показывать только дважды измененные свойства. Это позволит полностью скрыть объекты, которые изменил только поставщик или в которых нет прямых конфликтов с пользовательским кодом.
2. Выравнивание конфигурации поставщика
Если конфигурация поставщика рассинхронизирована с основной, выполним принудительное обновление конфигурации поставщика с помощью файла поставки .cf нужного релиза, сняв все флажки объединения с основной конфигурацией.
3. Очистка кэша Конфигуратора
При переходе между версиями платформы кэш сопоставления метаданных может содержать устаревшие данные. Закроем Конфигуратор, очистим локальный кэш информационных баз и повторим сравнение.
Чтобы в будущем избежать проблем с поиском ложных расхождений при каждом обновлении, придерживаемся следующих правил архитектуры:
.cfe). Вся новая бизнес-логика, доработка форм и создание новых реквизитов выносится в расширения конфигурации. Основная конфигурация при этом остается на полной поддержке («Замок»), а обновления происходят без вызова окна сравнения.