← На главную
При работе в Конфигураторе 1С разработчики часто сталкиваются с ситуацией: во время сравнения и объединения основной конфигурации с файлом (или конфигурацией поставщика) система показывает как измененные те объекты, в которые не вносилось никаких правок. В отчете о сравнении при этом могут фигурировать ветки ПанельФормы, Привязки, ПолеТабличногоДокумента или отдельные элементы управляемых форм. Рассмотрим подробнее причины появления этих ложных (фантомных) изменений и проанализируем проверенные способы решения проблемы.
Причины возникновения фантомных изменений
Выясним причину, почему платформа 1С фиксирует различия в объектах, которые визуально не редактировались. На внутреннем уровне конфигурация 1С хранит не только видимые свойства метаданных, но и сложные бинарные структуры, идентификаторы элементов и системную информацию.
- Изменение внутренних уникальных идентификаторов (UUID / GUID): При пересоздании, удалении и повторном добавлении объектов, а также при операциях с хранилищем конфигурации платформа генерирует новые системные UUID. Даже если имя, заголовок и состав элементов полностью совпадают, их внутренние GUID будут различаться, что воспринимается механизмом сравнения как изменение.
- Скрытые привязки и структура управляемых форм: Любое визуальное изменение формы (даже добавление элемента с последующей отменяющей операцией) изменяет внутренние ссылки, порядковые индексы элементов и параметры привязок. В отчете о сравнении это фиксируется как расхождение в элементах формы.
- Различия версий и сборок платформы: Если файл конфигурации (CF) был сохранен на одной сборке платформы, а сравнение выполняется на другой, внутренние структуры сериализации управляемых форм и элементов могут отличаться.
- Служебные теги во встроенной справке: Текст встроенной справки и форматированные строки формируются с помощью системного браузерного движка. Разные версии системных компонентов могут добавлять в HTML-код справки скрытые мета-теги, которые платформа фиксирует как изменение свойства объекта.
Метод 1. Пересоздание управляемой формы
Если отчет о сравнении указывает на расхождения в управляемой форме конкретного отчета, обработки или документа (например, изменяются внутренние привязки или ID элементов), эффективно помогает пересоздание формы.
Разберем этот процесс по шагам:
- Откроем объект метаданных в Конфигураторе и перейдем к списку его форм.
- Скопируем проблемную форму (создадим ее дубликат). При копировании платформа автоматически генерирует новые корректные идентификаторы для всех элементов.
- Удалим исходную проблемную форму.
- Переименуем созданную копию формы, возвращая ей первоначальное имя, и назначим ее основной формой объекта в свойствах.
Метод 2. Выгрузка и загрузка конфигурации в XML-исходники
Чтобы системно нормализовать структуру метаданных и очистить конфигурацию от накопившегося мусора внутренних UUID, выполним пересборку через файлы исходных текстов.
- В Конфигураторе откроем главное меню
Конфигурация — Выгрузить конфигурацию в исходные тексты....
- Укажем каталог и дождемся завершения выгрузки XML-файлов.
- Затем выберем пункт меню
Конфигурация — Загрузить конфигурацию из исходных текстов... и загрузим данные из того же каталога.
В процессе экспорта и импорта платформа нормализует порядок тегов в XML-файлах, перезаписывает внутренние бинарные структуры и устраняет ложные расхождения.
Метод 3. Очистка и пересоздание встроенной справки
Если ложные изменения возникают из-за справочной информации объекта метаданных или отдельных форм, проанализируем содержимое справки:
- Откроем справку проблемного объекта метаданных.
- Полностью выделим и удалим весь текст.
- Сохраним объект конфигурации.
- Вставим текст справки повторно в виде чистого текста без скрытого HTML-форматирования сторонних редакторов.
Метод 4. Пересборка хранилища конфигурации
В условиях групповой разработки расхождения часто связаны с тем, что хранилище конфигурации привязывает новые UUID к объектам при обновлениях. В этом случае помогает создание нового хранилища:
- Сохраним актуальную и проверенную конфигурацию базы в файл
.cf (Конфигурация — Сохранить конфигурацию в файл...).
- Создадим новое пустое хранилище конфигурации на основе сохраненного файла
.cf.
- Подключим всех разработчиков к новому хранилищу.
Метод 5. Использование расширений и modern-инструментов разработки
Рассмотрим долгосрочные решения, позволяющие избежать проблемы фантомных изменений:
- Перенос доработок в расширения: Если вынести кастомный функционал в расширения конфигурации, основная конфигурация останется на полной поддержке поставщика. Это полностью исключит появлении фантомных расхождений при сравнении типовых объектов.
- Разработка в EDT (1C:Enterprise Development Tools) и Git: При переходе на EDT конфигурация хранится в виде структурированного текстового кода, а версионирование выполняется через Git. В Git можно настроить игнорирование незначащих изменений служебных тегов и внутренних GUID при сравнении веток.