Что делать, если сравнение и объединение конфигураций в 1С работает некорректно?

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

Иногда даже опытные разработчики сталкиваются с ситуациями, когда привычные инструменты платформы 1С ведут себя непредсказуемо. В этой статье мы разберем сложный случай, когда механизм «Сравнить, объединить с конфигурацией из файла...» перестал корректно работать и не видел различий в некоторых модулях. Проблема проявилась на платформах 8.3.25.1445 и 8.3.27.1559 в конфигурации «Управление холдингом», но может быть актуальна и для других решений.

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

Официальный ответ 1С: зарегистрированная ошибка платформы

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

Специалисты 1С сообщили, что по данной проблеме зарегистрирована ошибка 60025642. Суть ошибки заключается в следующем: в файлах сравниваемых конфигураций у объекта метаданных (в данном случае ОбщегоНазначенияБПОКлиентСервер) и его модуля оказались абсолютно одинаковые номера версий.

Важный момент: добиться такого состояния штатными средствами, работая в Конфигураторе, практически невозможно. Платформа автоматически инкрементирует версию объекта или его свойства при любом редактировании и сохранении. Появление одинаковых версий, как правило, свидетельствует о том, что конфигурация выгружалась в XML-файлы, и эти файлы затем редактировались вручную или с помощью сторонних инструментов. Такое вмешательство может нарушить внутреннюю согласованность данных конфигурации, что и приводит к сбоям в работе штатных механизмов, таких как сравнение и объединение.

Поскольку специалистам поддержки не удалось воспроизвести ошибку без конкретного примера, ее исправление может быть отложено. Тем не менее, знание причины — это уже половина решения. Если вы столкнулись с подобным, в первую очередь стоит проверить, не было ли ручного вмешательства в файлы конфигурации.

Общие рекомендации при проблемах со сравнением конфигураций

Помимо описанной специфической ошибки, проблемы с механизмом сравнения/объединения могут возникать и по другим, более распространенным причинам. Рассмотрим стандартный набор действий, который стоит предпринять в таких случаях.

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

  2. Проверка целостности конфигурации. Внутренние нарушения структуры могут приводить к сбоям. Рекомендуется выполнить два вида проверки:

    • Логическая целостность: В режиме Конфигуратора через меню «Конфигурация» -> «Проверка конфигурации...». Эта проверка помогает выявить логические несоответствия внутри метаданных.
    • Физическая целостность: Для файловых баз данных используется утилита chdbfl.exe, которая находится в папке bin установленной платформы. Она проверяет физическую структуру файла базы данных 1Cv8.1CD.
  3. Выгрузка и загрузка конфигурации. Иногда помогает полный цикл выгрузки конфигурации в файлы (*.cf или *.xml) и последующая загрузка в чистую информационную базу. Этот процесс может исправить некоторые внутренние структурные ошибки, которые не обнаруживаются стандартными проверками.

  4. Сравнение через выгрузку в XML. Если штатные средства не показывают различий, а вы уверены, что они есть, можно использовать обходной путь. Выгрузите обе конфигурации (исходную и измененную) в файлы XML. Затем сравните полученные каталоги с помощью сторонних утилит для сравнения текста, например, WinMerge, Beyond Compare или встроенных инструментов в VS Code. Это позволит вам вручную найти измененные модули и другие объекты.

Дополнительно: работа с хранилищем и снятие объектов с поддержки

В ходе обсуждения основной проблемы возник интересный побочный вопрос, который волнует многих разработчиков: нужно ли снимать с поддержки («открывать замок») все объекты, включая модули Библиотеки стандартных подсистем (БСП), при работе с хранилищем конфигурации?

Выяснилось, что само по себе хранилище не требует снятия всех замков. Однако такая необходимость возникает при сочетании двух условий:

  1. Нужно сохранять в хранилище полную историю всех изменений конфигурации.
  2. При этом необходимо сохранить конфигурацию на поддержке поставщика для удобства последующих обновлений.

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

Как правильно подключить базу к хранилищу, не снимая с поддержки?

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

  1. Захватите корневой узел конфигурации в хранилище. Это самый верхний элемент в дереве конфигурации.

  2. Выполните команду меню «Конфигурация» -> «Поддержка» -> «Настройка поддержки...», а затем нажмите кнопку «Сравнить, объединить». Если конфигурация не на поддержке, то используйте «Конфигурация» -> «Сравнить, объединить с конфигурацией из файла...» и выберите cf-файл поставщика.

  3. Платформа задаст вопрос о постановке на поддержку. Согласитесь с этим предложением.

  4. Откроется стандартное окно сравнения и объединения. На этом шаге вам не нужно отмечать никаких объектов для объединения. Просто нажмите кнопку «Выполнить».

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

  6. Поместите изменения (захваченный корневой узел) обратно в хранилище.

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

← На главную