В процессе сопровождения типовых решений 1С программисты часто сталкиваются с ситуацией, когда после снятия объекта с поддержки (для внесения доработок) и последующих обновлений возникают «фантомные» расхождения. Даже если вы не меняли форму или модуль, система при сравнении показывает отличия в регистре тегов, порядке свойств или оформлении. Попытки просто «объединить с конфигурацией поставщика» не всегда приводят к желаемому результату: замок может вернуться, но при следующем сравнении объект снова помечается как измененный. Рассмотрим подробно, почему это происходит и как добиться идеального совпадения с поставщиком.
Прежде чем приступать к исправлению, проанализируем ситуацию и поймем механику работы платформы 1С:Предприятие. Основные причины расхождений кроются не в логике кода, а в способе хранения и сериализации данных метаданных:
<color #FF0000> превращается в <color #ff0000>. Для платформы это разные строки, и она фиксирует модификацию.Если в вашей базе накопилось слишком много таких «грязных» объектов, самым надежным способом будет полное замещение конфигурации поставщика. Разберем по шагам, как это сделать правильно:
Важно: Перед выполнением этих действий обязательно создайте резервную копию базы данных!
.cfu, а именно полный .cf)..cf.Рассмотрим, что происходит в этот момент: платформа полностью переписывает таблицы Config и ConfigSave в базе данных. В отличие от объединения, загрузка полностью удаляет старые записи и записывает новые, что гарантирует идентичность UUID и всех скрытых свойств. Однако помните, что этот метод затрет все ваши доработки. Чтобы их сохранить, используйте комбинированный подход, описанный ниже.
Когда нам нужно и «вернуть замок», и оставить свои изменения, мы можем применить стратегию переноса через промежуточную базу. Проанализируем этот алгоритм:
.cf от поставщика.work.cf).work.cf..cf.Таким образом, мы получим чистую структуру метаданных для типовых объектов, сохранив при этом программный код ваших доработок. Это позволяет избежать накопления ошибок сериализации, которые тянутся через десятки обновлений.
Если проблема локализована в конкретной форме или текстовом элементе (например, ФорматированнаяСтрока), можно воспользоваться механизмом выгрузки конфигурации в файлы. Рассмотрим подробнее этот процесс:
Платформа 1С позволяет выгрузить всю структуру метаданных в набор XML-файлов. Выполним команду Конфигурация — Выгрузить конфигурацию в файлы. В полученной папке найдем XML-описание проблемного объекта. Проанализируем ситуацию: часто достаточно поправить регистр тегов или удалить лишние пробелы в XML-файле, чтобы они стали идентичны поставщику. После правки выполним Конфигурация — Загрузить конфигурацию из файлов.
Этот метод хорош тем, что он принудительно обновляет описание объекта в базе данных, игнорируя «интеллектуальные» алгоритмы объединения платформы, которые иногда и создают проблему.
Проанализируем еще несколько нюансов, которые помогут поддерживать «идеальность» конфигурации:
Очистка кэша конфигуратора. Иногда расхождения существуют только в локальном кэше вашего компьютера. Перед радикальными мерами попробуйте полностью удалить базу из списка и добавить её заново или запустить конфигуратор с параметром /ClearCache. Это заставит платформу заново считать структуру метаданных из таблицы Config.
Настройка окна сравнения. Посмотрим на настройки окна сравнения/объединения. Нажмите на иконку «шестеренки» (настройки) и убедитесь, что включена опция «Показывать только существенные различия». Платформа может игнорировать незначительные изменения в оформлении, что упростит вам аудит реальных изменений. Однако помните, что для установки «замка» (режим «Объект поставщика редактируется с сохранением поддержки» против «Объект поставщика не редактируется») требуется полное бинарное совпадение.
Обновление через полное замещение. Возьмем за правило: при выполнении крупных обновлений, если количество доработок не критично, лучше хотя бы раз в год выполнять не последовательное применение .cfu, а полное замещение конфигурации через .cf с последующим переносом изменений. Это предотвращает «деградацию» структуры метаданных и гарантирует корректную работу механизмов поддержки.
Подведем итог: если объект не встает на замок или показывает ложные изменения, проблема чаще всего в разнице версий платформ или накопленных ошибках в таблице Config. Используйте метод «базы-донора» или полную загрузку .cf для очистки структуры метаданных. Это обеспечит чистоту конфигурации и отсутствие лишних объектов в окне сравнения при следующем обновлении.