К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как сравнить файлы в 1С: конфигурации, обработки и данные

Как сравнить файлы в 1С: сравнение конфигураций, внешних отчётов и обработок, текстовых файлов и данных. Пошаговые инструкции, инструменты и типичные ошибки.

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

Главная сложность в том, что «файл» в контексте 1С может означать совершенно разные вещи: файл конфигурации .cf, файл обновления .cfu, внешний отчёт .epf или .erf, выгрузку XML, обычный текстовый файл с кодом. Универсальной кнопки «сравнить два файла» в платформе нет, поэтому сначала нужно определить тип файлов и цель сравнения.

Ниже разобраны рабочие способы для каждого сценария: от штатного сравнения конфигураций в конфигураторе до сравнения произвольных текстовых файлов средствами встроенного языка и внешних инструментов. Все действия описаны для типовой работы администратора или разработчика 1С.

Определяем, какие именно файлы нужно сравнить

Перед выбором инструмента важно понять, с какими файлами вы работаете, потому что механизмы сравнения принципиально различаются. Конфигурация в формате .cf — это бинарный контейнер, и сравнить два таких файла «побайтово» бессмысленно: платформа умеет анализировать их структуру и показывать различия по объектам метаданных.

Внешние отчёты и обработки (.epf, .erf) — тоже бинарные контейнеры, но их можно выгрузить в набор XML-файлов и сравнить уже их. Текстовые файлы — модули, выгрузки, журналы — сравниваются построчно любым diff-инструментом. Выгрузки данных в XML или JSON сравнивают либо как текст, либо специальными обработками сверки данных.

Маршрут решения

Как выбрать инструмент

Нужно сравнить две конфигурации (.cf) или конфигурацию базы с файломИспользуйте штатное сравнение в конфигураторе
Нужно сравнить две внешние обработки или отчёты (.epf, .erf)Выгрузите обе в файлы XML и сравните каталоги
Нужно сравнить текстовые файлы (модули, выгрузки, логи)Используйте объект СравнениеФайлов или внешний diff-инструмент
Нужно сверить данные двух баз (справочники, документы)Используйте обработку сравнения данных через COM или выгрузки

Сравнение конфигураций в конфигураторе

Штатный механизм сравнения конфигураций — основной инструмент при обновлении доработанных баз и анализе чужих доработок. Он показывает различия на уровне объектов метаданных: какие справочники, документы, реквизиты, модули и формы добавлены, изменены или удалены.

Чтобы сравнить текущую конфигурацию базы с файлом .cf, откройте базу в конфигураторе и выберите в меню «Конфигурация» пункт «Сравнить, объединить с конфигурацией из файла», затем укажите файл. Платформа загрузит его и построит дерево различий, где каждый объект помечен статусом: изменён, добавлен, отсутствует во второй конфигурации.

Для сравнения двух независимых файлов .cf без привязки к базе используйте пункт «Конфигурация — Сравнить конфигурации». В диалоге укажите источник каждой конфигурации: файл, база данных, хранилище или конфигурация поставщика. Результат откроется в том же окне дерева различий.

Сравнение конфигурации с файлом
  1. 1
    Сделайте резервную копию базы или убедитесь, что работаете с копией
  2. 2
    Откройте базу в конфигураторе под пользователем с правами администратора
  3. 3
    Выберите «Конфигурация — Сравнить, объединить с конфигурацией из файла» и укажите файл .cf
  4. 4
    В дереве различий снимите флажки с объектов, которые не должны участвовать в объединении
  5. 5
    Нажмите «Выполнить» для объединения или закройте окно, если нужен был только просмотр различий

Важный нюанс: если вы открыли сравнение через «Сравнить, объединить», закрытие окна с отказом от объединения не вносит никаких изменений в конфигурацию. Режим безопасен для анализа — до тех пор, пока вы не нажали «Выполнить» и не обновили конфигурацию базы данных.

Настройка детализации и фильтров сравнения

Окно сравнения конфигураций по умолчанию группирует различия по объектам. Двойной щелчок по изменённому объекту открывает детальный отчёт: различия свойств, табличных частей, форм и модулей. Для модулей платформа показывает построчное сравнение текста с подсветкой изменённых строк.

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

Для документирования различий сформируйте отчёт о сравнении: в окне сравнения есть кнопка вывода отчёта в табличный документ, который можно сохранить в файл. Такой отчёт удобно приложить к задаче или передать коллеге для ревью.

Сравнение внешних отчётов и обработок

Файлы .epf и .erf — бинарные, поэтому конфигуратор не умеет сравнивать их напрямую. Стандартный приём — выгрузить обе обработки в файлы XML через пункт «Файл — Сохранить копию» с выбором формата выгрузки или через команду «Выгрузить в файлы» в палитре свойств обработки, открытой в конфигураторе. В результате получится каталог с XML-файлами: модуль, формы, макеты, описание.

Полученные каталоги сравниваются любым инструментом сравнения папок: WinMerge, Beyond Compare, KDiff3 или встроенным сравнением в популярных редакторах кода. Основной интерес обычно представляет файл модуля объекта и модули форм — именно там находится программный код.

Альтернативный путь — хранить обработки в системе контроля версий (например, через выгрузку в EDT-формат или с помощью сторонних инструментов разборки epf на исходники). Тогда сравнение версий выполняется штатными средствами Git, и история изменений сохраняется автоматически.

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

Сравнение текстовых файлов средствами 1С

Во встроенном языке платформы есть объект «СравнениеФайлов», который позволяет сравнить два текстовых файла программно и получить результат построчно. Это удобно для автоматизации: например, для проверки, изменился ли файл настроек, или для сверки выгрузок в регламентном задании.

1c
Сравнение = Новый СравнениеФайлов;
Сравнение.ПервыйФайл = "C:\Файлы\версия1.txt";
Сравнение.ВторойФайл = "C:\Файлы\версия2.txt";
Сравнение.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент;
Если Сравнение.Сравнить() Тогда
    Сообщить("Файлы идентичны");
Иначе
    Сравнение.ПоказатьРазличияМодально();
КонецЕсли;

Метод «Сравнить» возвращает булево — совпадают файлы или нет. Метод показа различий открывает стандартное окно построчного сравнения с подсветкой. Учтите, что интерактивный показ работает только в толстом и тонком клиенте; на сервере доступно только программное сравнение без вывода окна.

Для разовых задач проще внешние инструменты: WinMerge и KDiff3 бесплатны, корректно работают с кодировкой UTF-8, в которой обычно сохраняются тексты модулей 1С, и умеют сравнивать целые каталоги. Notepad++ с плагином Compare подойдёт для быстрой сверки двух небольших файлов.

Сравнение данных двух информационных баз

Отдельный класс задач — сверка не файлов, а данных: например, нужно убедиться, что после переноса справочник «Номенклатура» в новой базе совпадает со старой. Такое сравнение выполняется специальными обработками, которые подключаются к обеим базам (через COM-соединение или OLE) и сопоставляют объекты по ключевым полям.

Существуют типовые и широко известные обработки сравнения данных, которые строят отчёт: какие объекты есть только в первой базе, только во второй, а по совпадающим объектам показывают различия реквизитов. При выборе такой обработки проверяйте совместимость с вашей версией платформы и режимом работы (обычное или управляемое приложение).

Для разовой сверки небольшого объёма подойдёт и ручной способ: выгрузите данные в табличный документ или XML из обеих баз с одинаковой сортировкой и сравните файлы как текст. Способ грубый, но прозрачный — вы видите каждое расхождение глазами.

Типичные ошибки и ограничения

Самая частая ошибка — попытка сравнить файлы .cf или .epf внешним текстовым diff-инструментом. Это бинарные контейнеры, и результат такого сравнения не даст никакой полезной информации. Используйте для них только механизмы платформы или предварительную выгрузку в XML.

Вторая типичная проблема — различия из-за кодировки и окончаний строк при сравнении текстовых файлов. Если один файл сохранён в UTF-8 с BOM, а другой без, некоторые инструменты покажут различие первой строки. Перед сравнением приведите файлы к одной кодировке, а в настройках diff-инструмента включите игнорирование различий в пробельных символах, если они не важны.

Третья ошибка — сравнение конфигурации с файлом не той версии платформы. Файл .cf, сохранённый более новой платформой, может не открыться в старом конфигураторе или открыться с потерей части данных. Убедитесь, что версии платформы совместимы, прежде чем делать выводы о различиях.

Типичные ошибки
01
Сравнение бинарных .cf и .epf текстовым diff-инструментом — результат бессмысленен
02
Игнорирование кодировки файлов — ложные различия из-за BOM и окончаний строк
03
Выполнение объединения вместо просмотра — случайное внесение изменений в рабочую конфигурацию
04
Сравнение конфигураций без резервной копии базы — риск потерять доработки при ошибочном объединении
05
Вывод о различиях данных по результатам сравнения конфигураций — это разные уровни

Как проверить результат сравнения

После сравнения конфигураций убедитесь, что список различий соответствует ожиданиям: если вы искали конкретную доработку, она должна быть в дереве различий, а количество «неожиданных» изменённых объектов должно быть минимальным. Большое число различий там, где их не должно быть, — признак того, что сравниваются не те версии.

После объединения конфигураций обязательно выполните проверку конфигурации («Конфигурация — Проверка конфигурации») и обновите конфигурацию базы данных в тестовом режиме. Затем запустите базу в пользовательском режиме и проверьте работу затронутых доработкой функций.

Контрольные точки

Как проверить результат

Дерево различий конфигураций
Норма

Изменены только ожидаемые объекты, их список объясним

Тревожный признак

Массовые различия объектов, которые никто не менял

Проверка конфигурации после объединения
Норма

Нет ошибок, только допустимые предупреждения

Тревожный признак

Ошибки компиляции модулей, битые ссылки

Сравнение текстовых файлов
Норма

Различия только в ожидаемых фрагментах кода

Тревожный признак

Различается весь файл — вероятно, разная кодировка или формат

Итог

Что важно запомнить

Тип файла определяет инструмент: конфигурации сравниваются в конфигураторе, обработки — через выгрузку в XML, тексты — объектом СравнениеФайлов или внешним diff-инструментом, данные — специальными обработками сверки. Перед объединением конфигураций всегда делайте резервную копию и проверяйте результат на копии базы.

Частые вопросы

Можно ли сравнить два файла .cf, не открывая базу в конфигураторе?

Да. В конфигураторе есть пункт «Конфигурация — Сравнить конфигурации», где оба источника можно указать как файлы .cf. Конфигуратор всё равно нужен, но привязка к конкретной базе данных не требуется — достаточно любой пустой файловой базы для запуска конфигуратора.

Как сравнить модули двух версий конфигурации построчно?

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

Почему конфигуратор не показывает различий, хотя файлы .cf разные?

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

Работает ли объект СравнениеФайлов на сервере 1С?

Программный метод «Сравнить» работает и на сервере, что позволяет использовать его в регламентных заданиях. А вот интерактивный показ окна различий доступен только на клиенте — на сервере этот вызов приведёт к ошибке.

Чем сравнить две выгрузки XML из 1С?

Если выгрузки сформированы с одинаковой структурой и сортировкой, подойдёт обычный текстовый diff (WinMerge, KDiff3). Если порядок элементов может отличаться, текстовое сравнение даст ложные различия — тогда нужна обработка, которая читает XML и сопоставляет объекты по ключевым полям, либо нормализация файлов перед сравнением.

Опасно ли открывать окно «Сравнить, объединить» на рабочей базе?

Само окно сравнения безопасно: изменения вносятся только после нажатия кнопки «Выполнить». Опасность в случайном подтверждении объединения и последующем обновлении конфигурации базы данных. Перед экспериментами снимите копию базы — это займёт несколько минут и исключит риск потери доработок.