Сравнение двух баз 1С: инструменты и пошаговые методы

· 9 мин

Содержание

Сравнить две базы 1С можно на двух уровнях: сравнить конфигурации (прикладное решение — объекты метаданных, модули, формы) и сравнить данные (справочники, документы, остатки). Для первого есть штатный инструмент Конфигуратора «Сравнить, объединить». Для второго готовой кнопки в платформе нет — данные сверяют запросами, отчётами или через COM-соединение между базами.

Выбор метода зависит от того, что именно разошлось. Если после обновления «уехала» форма документа или появился лишний реквизит — это уровень конфигурации. Если в одной базе остаток 100 штук, а в копии 98 — это уровень данных, и Конфигуратор здесь не поможет. Ниже разберём оба направления: от встроенных средств платформы до diff-менеджеров и сторонних утилит.

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

С чего начать: конфигурация, данные или структура таблиц

Прежде чем открывать инструменты, определите тип расхождения — от этого зависит метод.

  • 🧩 Конфигурация. Отличаются объекты метаданных, реквизиты, модули, печатные формы, роли. Сравнивают в Конфигураторе или через выгрузку в файлы.
  • 📊 Данные. Отличаются значения в справочниках и документах, остатки в регистрах, суммы в проводках. Сверяют запросами и отчётами.
  • 🗄️ Структура хранения. Интересует физический состав таблиц СУБД: какие таблицы и поля создала платформа под объекты. Снимают функцией платформы.
Что именно нужно сравнить в двух базах 1С?

Сравнение конфигураций средствами Конфигуратора

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

Что можно сравнить между собой:

  • основную конфигурацию и конфигурацию базы данных (видно незафиксированные доработки);
  • основную конфигурацию и внешний файл .cf;
  • два файла .cf между собой;
  • конфигурацию с версией из хранилища;
  • конфигурацию с конфигурацией поставщика.

Сравнение с файлом или с базой данных

Чтобы сравнить текущую конфигурацию с другой базой, выгрузите вторую базу в файл. В её Конфигураторе: Конфигурация → Сохранить конфигурацию в файл, получите .cf.

Дальше в первой базе:

  1. Откройте Конфигуратор нужной базы.
  2. Выберите Конфигурация → Сравнить, объединить конфигурацию с конфигурацией из файла.
  3. Укажите сохранённый .cf второй базы.
  4. Платформа построит дерево объектов, где различия подсвечены.

Если нужно только посмотреть разницу, без слияния, подойдёт пункт Конфигурация → Сравнить конфигурации — он открывает отчёт без режима объединения.

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

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

Сравнение основной конфигурации с конфигурацией базы данных в одной и той же базе показывает, что разработчик изменил, но ещё не применил к рабочей базе.

Сравнение с хранилищем и с конфигурацией поставщика

Если база подключена к хранилищу конфигурации, версии между собой сравнивают в истории хранилища: Конфигурация → Хранилище конфигурации → Открыть историю хранилища, затем выбрать две версии и сравнить. Так видно, что поменялось между релизами разработки.

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

Выгрузка конфигурации в файлы и diff-менеджеры

Когда нужен построчный, «текстовый» diff модулей и форм, а не дерево объектов, конфигурацию выгружают в набор XML-файлов и сравнивают внешними программами.

Порядок такой:

  1. В Конфигураторе первой базы: Конфигурация → Выгрузить конфигурацию в файлы, укажите пустой каталог.
  2. То же самое для второй базы — в другой каталог.
  3. Сравните два каталога diff-менеджером.

Ту же выгрузку можно запустить из командной строки — удобно для автоматизации и сравнения в CI:

"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /F "C:\base" /N "Администратор" /P "" /DumpConfigToFiles "C:\dump"

Для сравнения двух каталогов подходят привычные diff-инструменты:

ИнструментЧем удобенНюанс
WinMergeБесплатный, сравнение папок и файловWindows-only
KDiff3Бесплатный, кросс-платформенный, 3-стороннее слияниеИнтерфейс попроще
Beyond CompareУдобные правила фильтрацииПлатный
git diffЕсли конфигурация хранится в репозиторииНужна настройка выгрузки

Выгрузка в файлы — основа для хранения конфигурации в Git. Инструменты вроде precommit1c и gitsync автоматизируют выгрузку перед коммитом, после чего история изменений и сравнение версий ведутся штатными средствами системы контроля версий.

Текстовый diff показывает все различия вперемешку, включая порядок строк и форматирование. Для прикладной логики дерево Конфигуратора нагляднее, а diff-менеджер — для детального разбора конкретного модуля.

Сравнение данных двух баз 1С

Готового пункта меню «сравнить данные двух баз» в платформе нет. Данные сверяют одним из трёх подходов.

1. Одинаковый отчёт в каждой базе. Постройте универсальный отчёт или свой отчёт на одном и том же наборе данных (например, остатки по складу на дату) в обеих базах. Выгрузите результаты в таблицу и сравните суммы построчно. Способ не требует программирования и подходит бухгалтеру.

2. Запрос и выгрузка. Напишите в консоли запросов одинаковый текст запроса для каждой базы, выгрузите результаты и сверьте. Для разовой сверки остатков или оборотов этого достаточно.

3. COM-соединение между базами. Самый гибкий способ для автоматической сверки. Из внешней обработки в одной базе подключаются ко второй:

Соединение = Новый COMОбъект("V83.COMConnector");
ВтораяБаза = Соединение.Connect("File=""C:\base2"";");

Для серверной базы строка подключения другая: "Srvr=""сервер"";Ref=""имя_базы"";". Дальше в обработке выбирают данные из текущей базы и из ВтораяБаза, сопоставляют по ключу (код, номер, GUID) и выводят расхождения в таблицу.

Сопоставлять записи надёжнее по уникальному идентификатору ссылки (GUID), а не по коду или наименованию — коды в двух базах могут не совпадать, а ссылка при выгрузке-загрузке сохраняется.

4. Выгрузка в XML и сравнение файлов. Объекты можно сериализовать в XML средствами платформы (ЗаписатьXML, сериализатор XDTO) и сравнить полученные файлы diff-менеджером. Способ удобен для разового сопоставления конкретного набора объектов, когда поднимать COM-соединение избыточно.

Под сверку данных есть и готовые сторонние обработки (например, на Infostart) — они связывают две базы и показывают различия по выбранным объектам без ручного кода. Для типовых задач это экономит время.

Пример постановки: после переноса базы бухгалтер видит, что оборотно-сальдовая ведомость в копии отличается на 4 200 ₽. Через COM-соединение обработка выбирает проводки по счёту из обеих баз, сопоставляет их по регистратору и показывает, что в копии не перенёсся один документ корректировки. Руками такую разницу искали бы долго — автоматическая сверка находит её за минуты.

Сравнение структуры хранения таблиц СУБД

Иногда нужно сравнить не прикладные объекты, а физический состав таблиц, которые платформа создала в СУБД под каждый объект метаданных. Это пригодится при разборе производительности или при прямых SQL-запросах к базе.

Структуру снимает глобальная функция платформы — выполните её в консоли кода или отчёте в каждой базе:

Структура = ПолучитьСтруктуруХраненияБазыДанных();

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

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

Чтение .1CD напрямую сторонними утилитами (например, Tool1CD) даёт доступ к таблицам в обход платформы. На рабочей базе это опасно — используйте только копию и только на чтение.

Сторонние утилиты для сравнения баз

Внешние инструменты дополняют штатные средства там, где нужно сравнить без запущенного Конфигуратора или получить более детальный результат.

  • 🔧 gcomp — утилита для «гранулярного» сравнения конфигураций, работает с выгрузкой в файлы и показывает различия на уровне отдельных элементов.
  • 🔧 WinMerge / KDiff3 / Beyond Compare — diff-менеджеры для сравнения каталогов выгрузки и отдельных модулей.
  • 🔧 Tool1CD — просмотр структуры и таблиц файла .1CD напрямую; строго на копии и для чтения.
  • 🔧 Обработки с Infostart — готовые решения для сверки данных двух баз по COM или по выгрузке, без написания кода.

Выбор простой: для конфигураций надёжнее встроенное сравнение Конфигуратора, для построчного разбора модулей — diff-менеджеры, для сверки данных — COM-обработка или готовое решение. Сторонние утилиты не заменяют платформу, а закрывают частные задачи.

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

Безопасность и типичные ошибки при сравнении

Само по себе сравнение безопасно — оно читает и ничего не пишет. Проблемы начинаются на шаге объединения (слияния) и при неверной трактовке результата.

На что обратить внимание:

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

Частая ошибка — путать уровни. Если «не сходятся суммы», сравнение конфигураций покажет, что объекты идентичны, и это собьёт с толку. Сначала определите уровень расхождения, потом берите инструмент.

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

Нужен ли монопольный доступ, чтобы сравнить две базы?
Нет. Сравнение конфигураций и данных работает в обычном режиме и ничего не меняет. Монополия и завершение сеансов требуются только когда вы применяете найденные различия через обновление конфигурации базы данных.
Можно ли сравнить две базы без Конфигуратора?
Данные — да: через одинаковые отчёты, запросы или COM-соединение. Конфигурации на уровне объектов удобнее сравнивать в Конфигураторе; без него остаётся выгрузка в файлы и diff-менеджер, но для этого всё равно нужен доступ разработчика.
Как сравнить базы на разных версиях платформы?
Откройте каждую базу в её версии платформы, выгрузите конфигурации в файлы или в .cf и сравните именно файлы. Прямое объединение конфигураций между сильно разными релизами лучше не делать — результат может быть некорректным.
Можно ли сравнить данные в файловой и серверной базе?
Да. COM-соединение поддерживает оба варианта — отличается только строка подключения: для файловой File=..., для серверной Srvr=...;Ref=.... Если конфигурации совпадают, структура данных в обеих базах одинаковая.
Чем открыть и сравнить файлы `.cf` без установки 1С?
Надёжного стандартного способа нет: .cf — это внутренний формат платформы. Сторонние утилиты вроде gcomp работают с выгрузкой в файлы, но полноценное сравнение объектов даёт только Конфигуратор.