Сравнение двух баз 1С: инструменты и пошаговые методы
Содержание
Сравнить две базы 1С можно на двух уровнях: сравнить конфигурации (прикладное решение — объекты метаданных, модули, формы) и сравнить данные (справочники, документы, остатки). Для первого есть штатный инструмент Конфигуратора «Сравнить, объединить». Для второго готовой кнопки в платформе нет — данные сверяют запросами, отчётами или через COM-соединение между базами.
Выбор метода зависит от того, что именно разошлось. Если после обновления «уехала» форма документа или появился лишний реквизит — это уровень конфигурации. Если в одной базе остаток 100 штук, а в копии 98 — это уровень данных, и Конфигуратор здесь не поможет. Ниже разберём оба направления: от встроенных средств платформы до diff-менеджеров и сторонних утилит.
Сравнение ничего не меняет в базе и не требует монопольного доступа. Монополия нужна только на финальном шаге — когда вы применяете найденные различия через «Обновить конфигурацию базы данных».
С чего начать: конфигурация, данные или структура таблиц
Прежде чем открывать инструменты, определите тип расхождения — от этого зависит метод.
- 🧩 Конфигурация. Отличаются объекты метаданных, реквизиты, модули, печатные формы, роли. Сравнивают в Конфигураторе или через выгрузку в файлы.
- 📊 Данные. Отличаются значения в справочниках и документах, остатки в регистрах, суммы в проводках. Сверяют запросами и отчётами.
- 🗄️ Структура хранения. Интересует физический состав таблиц СУБД: какие таблицы и поля создала платформа под объекты. Снимают функцией платформы.
Конфигурация → Сравнить, объединить конфигурацию с конфигурацией из файла или с конфигурацией базы данных. Для построчного diff выгрузите обе конфигурации в файлы и откройте в WinMerge, KDiff3 или git.ПолучитьСтруктуруХраненияБазыДанных() в обеих базах и сравните полученные таблицы имён.Сравнение конфигураций средствами Конфигуратора
Это основной способ, когда нужно понять разницу между двумя прикладными решениями. Инструмент встроен в платформу и работает с любыми конфигурациями — типовыми и доработанными.
Что можно сравнить между собой:
- основную конфигурацию и конфигурацию базы данных (видно незафиксированные доработки);
- основную конфигурацию и внешний файл
.cf; - два файла
.cfмежду собой; - конфигурацию с версией из хранилища;
- конфигурацию с конфигурацией поставщика.
Сравнение с файлом или с базой данных
Чтобы сравнить текущую конфигурацию с другой базой, выгрузите вторую базу в файл. В её Конфигураторе: Конфигурация → Сохранить конфигурацию в файл, получите .cf.
Дальше в первой базе:
- Откройте Конфигуратор нужной базы.
- Выберите
Конфигурация → Сравнить, объединить конфигурацию с конфигурацией из файла. - Укажите сохранённый
.cfвторой базы. - Платформа построит дерево объектов, где различия подсвечены.
Если нужно только посмотреть разницу, без слияния, подойдёт пункт Конфигурация → Сравнить конфигурации — он открывает отчёт без режима объединения.
В дереве сравнения работайте с фильтрами: показать только изменённые объекты, только дважды изменённые свойства, скрыть совпадающие. Это отсекает шум и оставляет реальные расхождения. Кнопка отчёта о сравнении выгружает список различий в отдельный документ — удобно приложить к задаче или согласованию.
Различия в дереве помечаются по типу: объект есть только в первой конфигурации, только во второй, или изменён в обеих. Для изменённого объекта можно раскрыть, что именно отличается — свойство, реквизит, табличная часть или текст модуля. Двойной клик по модулю открывает его построчное сравнение прямо в Конфигураторе.
Сравнение основной конфигурации с конфигурацией базы данных в одной и той же базе показывает, что разработчик изменил, но ещё не применил к рабочей базе.
Сравнение с хранилищем и с конфигурацией поставщика
Если база подключена к хранилищу конфигурации, версии между собой сравнивают в истории хранилища: Конфигурация → Хранилище конфигурации → Открыть историю хранилища, затем выбрать две версии и сравнить. Так видно, что поменялось между релизами разработки.
Для типовой конфигурации на поддержке есть отдельная опция — сравнение с конфигурацией поставщика через меню поддержки. Она отвечает на частый вопрос: «что в этой базе доработали руками, а что пришло из типового релиза». Объекты, отличающиеся от поставки, платформа помечает в дереве.
Выгрузка конфигурации в файлы и diff-менеджеры
Когда нужен построчный, «текстовый» diff модулей и форм, а не дерево объектов, конфигурацию выгружают в набор XML-файлов и сравнивают внешними программами.
Порядок такой:
- В Конфигураторе первой базы:
Конфигурация → Выгрузить конфигурацию в файлы, укажите пустой каталог. - То же самое для второй базы — в другой каталог.
- Сравните два каталога 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 покажет как различие, хотя на поведение решения это не влияет. Проверяйте спорные места в дереве Конфигуратора.
Нужен ли монопольный доступ, чтобы сравнить две базы?
Можно ли сравнить две базы без Конфигуратора?
Как сравнить базы на разных версиях платформы?
.cf и сравните именно файлы. Прямое объединение конфигураций между сильно разными релизами лучше не делать — результат может быть некорректным.Можно ли сравнить данные в файловой и серверной базе?
File=..., для серверной Srvr=...;Ref=.... Если конфигурации совпадают, структура данных в обеих базах одинаковая.Чем открыть и сравнить файлы `.cf` без установки 1С?
.cf — это внутренний формат платформы. Сторонние утилиты вроде gcomp работают с выгрузкой в файлы, но полноценное сравнение объектов даёт только Конфигуратор.