При обновлении нетиповых конфигураций 1С:Предприятие специалисты часто сталкиваются с ситуацией, когда в окне сравнения и объединения отсутствует критически важный фильтр «Показывать только дважды измененные свойства». Этот фильтр является основным инструментом для качественного обновления, так как он позволяет сфокусироваться только на тех объектах, которые были доработаны программистом и одновременно изменены вендором в новом релизе.
Рассмотрим подробно причины отсутствия этого фильтра и разберем пошаговые инструкции по его возвращению в интерфейс Конфигуратора.
Для начала проанализируем ситуацию, в которой оказывается разработчик. Фильтр «дважды измененные» технически реализует механизм трехстороннего сравнения (3-way merge). Чтобы платформа могла определить, что свойство изменено «дважды», ей необходимо сопоставить три состояния объекта:
Выясним причину проблемы: когда мы выбираем пункт меню Конфигурация — Сравнить, объединить с конфигурацией из файла, мы инициируем двустороннее сравнение. В этом режиме платформа видит только два объекта: тот, что в базе, и тот, что в файле. Она «не знает», какой объект был исходным предком, и, следовательно, не может вычислить, менялся ли он в обеих ветках разработки. Именно поэтому в выпадающем списке фильтров нужный пункт просто отсутствует.
Многие разработчики ошибочно полагают, что для использования штатного механизма обновления обязательно нужен файл обновления (.cfu). На самом деле, это не так. Чтобы задействовать фильтр «дважды измененные» при наличии обычного файла конфигурации (.cf), необходимо использовать другой алгоритм действий. Рассмотрим его по шагам:
Конфигурация — Поддержка — Обновить конфигурацию..cf файл нового релиза.Именно такой подход позволяет платформе однозначно определить «общего предка» и корректно отфильтровать только конфликтные изменения.
Проанализируем ситуацию, когда фильтр включен, но в списке отображается огромное количество объектов, которые вы точно не меняли (они стоят «на замке»). Это часто случается в конфигурациях на обычных формах, таких как Управление торговлей 10.3 или УПП 1.3.
Рассмотрим основные причины «шума» в сравнении:
GENERATOR или невидимые символы переноса строк.Чтобы эффективно обработать такие случаи, рекомендуется сначала выполнить предварительное сравнение «Конфигурации поставщика» с самой собой из нового файла, чтобы отсечь системный шум, но в стандартном обновлении лучше просто внимательно просматривать дерево объектов, ориентируясь на иконки «карандаша» (ваши изменения) и «молнии» (изменения поставщика).
Если штатного механизма недостаточно или вы хотите видеть более детальную разницу в коде модулей, разберем возможность подключения внешних утилит. В настройках Конфигуратора (меню Сервис — Параметры — закладка Общие — Сравнение/Объединение) можно указать путь к сторонним программам, таким как KDiff3, WinMerge или P4Merge.
Эти программы специально заточены под трехстороннее сравнение текстов. Рассмотрим, как это помогает:
// Пример того, как внешняя утилита видит конфликт (Common Ancestor -> Mine -> Theirs)
<<<<<<< MINE
Процедура РассчитатьНалог()
Результат = Сумма * 0.20; // Моя доработка (изменил ставку)
КонецПроцедуры
=======
Процедура РассчитатьНалог()
Результат = Сумма * СтавкаНДС; // Изменение вендора (переход на переменную)
КонецПроцедуры
>>>>>>> THEIRS
Использование внешних программ позволяет в один клик из окна сравнения 1С открыть текстовый модуль в специализированном редакторе, где визуально разделены ваши правки и правки фирмы 1С относительно исходного кода старого релиза.
Для тех, кто использует современную среду разработки 1С:EDT (Enterprise Development Tool), проблема с фильтрами решается еще проще. В EDT механизм сравнения базируется на Git, который по определению работает с трехсторонним слиянием. В этой среде можно вручную указать любую конфигурацию в качестве «базовой» (Base) для сравнения двух других, что делает фильтрацию изменений гораздо гибче, чем в классическом Конфигураторе.
Подводя итог, отметим: если вы не видите фильтр дважды измененных свойств — вы используете простое сравнение файлов. Всегда используйте механизм Обновить конфигурацию, даже если у вас на руках только полный .cf файл. Это сэкономит часы времени при ручном анализе кода.