Почему при обновлении нетиповой конфигурации 1С появляется множество неизмененных объектов в списке отличий и как это исправить?

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

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

Разберем подробнее, почему возникают такие ложные расхождения, как они связаны с правилами поддержки и какими способами можно привести сравнение к корректному виду.

Анализ проблемы: откуда берутся ложные изменения в метаданных

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

Выясним главные факторы, влияющие на появление такого визуального шума:

  1. Разнородные настройки правил поддержки (замков). Если в конфигурации часть объектов снята с поддержки, у части стоит «Редактируется с сохранением поддержки», а остальные заблокированы («Объект поставщика не редактируется»), платформа по-разному обрабатывает алгоритмы сравнения и объединения для каждой группы.
  2. Различия в механизмах сопоставления. При обновлении через меню Конфигурация -> Поддержка -> Обновить конфигурацию сопоставление выполняется строго по внутренним идентификаторам (UUID). Если же использовать команду Конфигурация -> Сравнить, объединить с конфигурацией из файла, платформа отдает приоритет сопоставлению по именам, что приводит к разным результатам анализа.
  3. Несоответствие внутренних идентификаторов (UUID). Если объект метаданных когда-либо скопировали вручную или пересоздали, его UUID меняется. Платформа начинает воспринимать такой объект как абсолютно новый, даже если его имя совпадает с типовым.
  4. Изменение порядка элементов внутри объектов. Изменение порядка подчиненных реквизитов, табличных частей или форм фиксируется платформой как различие объекта в целом.
  5. Технические правки разработчиков 1С. В новых релизах поставщик может пересобирать формы, обновлять БСП или оптимизировать служебную разметку. В окне сравнения такой объект будет отображен как измененный поставщиком.

Главная причина: рассинхронизация режимов поддержки

Проанализируем практический пример из работы специалистов. Когда у объектов метаданных правила поддержки выставлены вразнобой (часть снята с поддержки, часть редактируется, а у части стоят «замочки»), при обновлении через поддержку платформа не может корректно построить трехстороннее сравнение (Основная конфигурация — Старая конфигурация поставщика — Новая конфигурация поставщика).

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

Пошаговое решение: выравнивание режимов поддержки

Для устранения массовых ложных расхождений выполним процедуру выравнивания правил поддержки информационных баз.

  1. Откроем Конфигуратор и перейдем в пункт меню Конфигурация -> Поддержка -> Настройка поддержки....
  2. Обратим внимание на состояние объектов в дереве поддержки. Если правила установлены хаотично, выберем команду Включить возможность изменения (если она еще не включена).
  3. Нажмем кнопку Установить режим для всех... и выберем единый режим для всех объектов дерева метаданных: Редактируется с сохранением поддержки.
  4. Сохраним настройки поддержки и выполним обновление конфигурации базы данных.
  5. Повторно запустим процедуру обновления или сравнения с конфигурацией поставщика.

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

Дополнительные методы устранения визуального шума при сравнении

Рассмотрим дополнительные способы, помогающие программисту сосредоточиться только на реальных доработках при сравнении сложных конфигураций:

1. Использование фильтра по дважды измененным свойствам
В окне сравнения и объединения конфигураций нажмем на кнопку настройки фильтров и выберем режим отображения Показывать только дважды измененные свойства. Это позволит полностью скрыть объекты, которые изменил только поставщик или в которых нет прямых конфликтов с пользовательским кодом.

2. Выравнивание конфигурации поставщика
Если конфигурация поставщика рассинхронизирована с основной, выполним принудительное обновление конфигурации поставщика с помощью файла поставки .cf нужного релиза, сняв все флажки объединения с основной конфигурацией.

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

Профилактика: рекомендации по доработке нетиповых конфигураций

Чтобы в будущем избежать проблем с поиском ложных расхождений при каждом обновлении, придерживаемся следующих правил архитектуры:

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