Разработчики 1С часто сталкиваются с раздражающей ситуацией: при попытке вернуть конфигурацию на поддержку или синхронизировать её с поставщиком окно сравнения и объединения настойчиво показывает различия в объектах, которые фактически не менялись. Мы выбираем вариант «Взять из конфигурации поставщика», выполняем объединение, сохраняем результат, но при повторном сравнении те же самые объекты снова отображаются как измененные. Рассмотрим подробно, почему это происходит и как окончательно победить «фантомные» изменения.
Прежде чем переходить к активным действиям, нам необходимо понять механику работы платформы. Почему 1С считает объекты разными, если визуально они идентичны? Выясним основные причины:
CRLF и LF) или в лишних пробелах в конце строк. Платформа при побайтовом сравнении видит разницу, хотя визуальный редактор её игнорирует.Проанализируем самый простой, но часто эффективный метод. Перед проведением серьезных манипуляций с конфигурацией попробуем сбросить временные данные платформы. Выполним следующие шаги:
%AppData%\1C\1cv8).F7 (Обновить конфигурацию базы данных). Это заставит платформу пересчитать хэш-суммы объектов в таблице Config.После этого снова запустим сравнение с конфигурацией поставщика. Если изменения не исчезли, переходим к более радикальным методам.
Иногда обычное объединение не может корректно перезаписать статус объекта в таблицах поддержки. Разберем, как принудительно заставить систему «забыть» о редактировании объекта:
Важный момент: если этот способ не помогает в рамках окна настройки поддержки, попробуйте сначала снять этот конкретный объект с поддержки совсем, сохранить конфигурацию (F7), а затем снова выполнить сравнение/объединение с конфигурацией поставщика, установив галочку постановки на поддержку.
Если ваша задача — полностью вынести все доработки в расширение и вернуть основную конфигурацию к типовому виду, лучшим решением будет полная загрузка конфигурации (LoadCfg). Посмотрим на алгоритм действий:
.cf файл поставщика нужного релиза.Проанализируем риски: этот метод опасен, если в основной конфигурации остались объекты, содержащие данные (новые реквизиты или справочники), которые вы еще не перенесли. Платформа предупредит об удалении полей при обновлении базы данных. Если такие объекты есть, используйте метод частичного объединения через выгрузку в файлы.
Рассмотрим продвинутый метод, который помогает убрать различия в пробелах и невидимых символах. Этот способ требует работы с файловой структурой конфигурации.
KDiff3 или WinMerge).Этот метод позволяет точечно «полечить» объекты, не затрагивая те части конфигурации, которые действительно должны остаться измененными (например, Подписки на события, которые на старых версиях платформы нельзя было вынести в расширения).
Часто «фантомные» изменения остаются в объектах, которые связаны с другими метаданными. Например, если вы изменили тип реквизита в расширении, основная конфигурация может помечать этот реквизит как измененный в окне сравнения.
Разберем ситуацию с Подписками на события. До версии платформы 8.3.17 расширение подписок было ограничено. Если вы работаете на более ранних версиях, вам придется оставлять подписки в основной конфигурации. В этом случае, чтобы минимизировать список различий, следуйте правилу:
// Пример правильного выноса логики из основной конфигурации в расширение
// В основной конфигурации оставляем только пустую процедуру-обработчик подписки
Процедура ОбработкаСобытияПриЗаписи(Источник, Отказ) Экспорт
// Сама логика перенесена в расширение через &После или &Вместо
КонецПроцедуры
После переноса логики обязательно верните текст модуля в основной конфигурации к исходному состоянию (или к минимально необходимому), чтобы при сравнении платформа видела только те изменения, которые действительно невозможно скрыть.
Подводя итог, можно сказать, что универсальной кнопки «Убрать все ложные изменения» не существует из-за особенностей хранения XML-структур метаданных. Однако сочетание очистки кэша, нормализации файлов и, в крайнем случае, полной перегрузки конфигурации позволяет добиться чистого списка сравнения. Это критически важно для комфортной дальнейшей поддержки и обновлений системы.