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

Администрирование · 11 мин

Как сравнить объекты разных баз 1С

Как сравнить объекты двух баз 1С: типовое сравнение конфигураций, обработки сопоставления данных, COM и OLE, выгрузка в XML. Порядок действий, риски и частые ошибки.

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

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

Ниже разобраны рабочие способы сравнения: штатное сравнение конфигураций, типовые обработки сопоставления данных, программный доступ через COM/OLE и внешние подключения, а также выгрузка в промежуточные форматы. Для каждого способа указаны условия применения, ограничения и типичные ошибки.

Определите, что именно нужно сравнить: метаданные или данные

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

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

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

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

Как выбрать действие

Нужно узнать, чем отличаются структуры и модули двух базИспользуйте сравнение и объединение конфигураций с файлом .cf
Нужно найти различающиеся элементы справочников и документовИспользуйте обработку сопоставления данных или программное сравнение по GUID
Базы на разных платформах или недоступны по сетиВыгружайте данные в XML и сравнивайте файлы
Сравнение нужно регулярно и автоматическиПишите собственную обработку с COM-подключением или через HTTP-сервис

Сравнение конфигураций через «Сравнение и объединение»

Штатный механизм конфигуратора позволяет сравнить текущую конфигурацию базы с конфигурацией из файла выгрузки. Для этого в базе-источнике выполните «Конфигурация → Сохранить конфигурацию в файл» и получите файл с расширением .cf. Затем в базе-приёмнике откройте «Конфигурация → Сравнить, объединить с конфигурацией из файла» и укажите полученный файл.

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

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

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

Сравнение данных типовыми обработками

В конфигурациях на базе Библиотеки стандартных подсистем (УТ, ERP, КА, БП и других) есть штатная обработка «Сравнение данных из разных источников» (в ряде версий — «Сопоставление объектов информационных баз»). Она позволяет сравнить таблицы из текущей базы и внешнего источника: другой базы 1С через COM/OLE-подключение, файла, табличного документа.

Обработка строит соответствие строк по ключевым полям (например, по коду, наименованию или GUID) и показывает: какие строки есть только в первой базе, какие только во второй, а какие есть в обеих, но с различающимися значениями полей. Это удобно для контроля синхронизации справочников между центральной и периферийной базами.

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

Программное сравнение через COM/OLE и внешние подключения

Когда типовых средств недостаточно — например, нужно сравнить миллионы записей регистра или построить собственный отчёт о расхождениях — пишут обработку с подключением к второй базе через COM-коннектор (V83.COMConnector) или OLE. Обработка открывает оба соединения, выбирает данные запросами и сопоставляет объекты по уникальному идентификатору (GUID).

Сопоставление по GUID работает только если базы имеют общее происхождение: одна создана копией другой или данные мигрировали с сохранением ссылок. Если базы наполнялись независимо, одинаковые по смыслу элементы будут иметь разные GUID, и ключом сопоставления становятся прикладные поля: ИНН и КПП для контрагентов, код для номенклатуры, номер и дата для документов.

Типовой каркас такой обработки: запрос к первой базе выбирает ключевые поля и GUID, результат выгружается в таблицу значений; аналогичный запрос выполняется во второй базе; далее таблицы сравниваются через соединение по ключу. Результат выводится в табличный документ с тремя группами: только в базе 1, только в базе 2, различаются значения.

Типичные ошибки
01
Сопоставление по наименованию: дубли и опечатки дают ложные расхождения — используйте GUID или естественные ключи вроде ИНН
02
Сравнение баз с разными версиями конфигурации: часть реквизитов отсутствует, результат искажается
03
COM-подключение к базе другой разрядности или версии платформы: соединение не устанавливается
04
Сравнение без отбора периода: попытка выгрузить весь документооборот приводит к часам работы и нехватке памяти
05
Запуск сравнения на рабочей базе в разгар дня: COM-сеанс грузит сервер и мешает пользователям

Сравнение через выгрузку в файлы

Если базы физически недоступны друг для друга (разные сети, разные организации, запрет на прямые подключения), данные выгружают в промежуточный формат и сравнивают файлы. Для ссылочных объектов подходит «Выгрузка и загрузка данных XML», для табличных наборов — выгрузка запроса в CSV или табличный документ.

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

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

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

После сравнения важно отличить реальные расхождения от технических. Технические различия: служебные реквизиты, даты обмена, комментарии, нумерация. Реальные: разные остатки, отсутствующие документы, различающиеся проводки. Начинайте анализ с контрольных сумм — сверните данные по ключевым измерениям и сравните итоги: если итоги совпадают, детальные расхождения, скорее всего, отсутствуют.

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

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

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

Итоговые обороты по регистрам за период
Норма

Суммы совпадают до копейки в обеих базах

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

Расхождение итогов — ищите период и измерение, где оно возникает

Количество элементов справочника
Норма

Число активных элементов совпадает

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

Разница в количестве — есть неперенесённые или лишние элементы

Случайная выборка документов
Норма

Суммы, даты и проведение совпадают по выборке

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

Различия в выборке — нужно полное построчное сравнение

Список различающихся объектов метаданных
Норма

Различия только в известных доработках

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

Неожиданные изменённые объекты — базы обновлялись из разных источников

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

Можно ли сравнить базы с разными конфигурациями, например УТ и БП?

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

Как сравнить две базы, если нет доступа к конфигуратору?

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

Что делать, если GUID одинаковых объектов в базах разные?

Это нормальная ситуация для независимо наполнявшихся баз. Сопоставляйте по естественным ключам: для контрагентов — ИНН и КПП, для номенклатуры — код или артикул, для документов — организация, номер, дата. Перед сопоставлением желательно устранить дубли в обеих базах, иначе соответствие будет неоднозначным.

Безопасно ли COM-подключение к рабочей базе?

Само по себе подключение на чтение безопасно, но создаёт дополнительный сеанс и нагрузку на сервер. Тяжёлые запросы по большим таблицам могут замедлить работу пользователей. Запускайте такие сравнения в нерабочее время или на копии базы, а запросы ограничивайте периодом и отборами.

Как сравнить движения документов, а не сами документы?

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

Чем сравнить модули, если базы на разных версиях платформы?

Выгрузите конфигурации обеих баз в файлы конфигуратора (конфигурация → выгрузить в файлы) и сравните каталоги любым файловым инструментом сравнения. Тексты модулей хранятся в файлах Module.bsl и сравниваются построчно независимо от версии платформы. Штатное сравнение конфигураций через .cf при несовместимости версий может не открыться.

Итог

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

Метаданные сравнивают через «Сравнение и объединение конфигураций» с файлом .cf, данные — типовыми обработками сопоставления, COM-подключением или выгрузкой в файлы. Ключ сопоставления — GUID для родственных баз и естественные ключи (ИНН, код, номер и дата) для независимых. Любые операции объединения и загрузки выполняйте только после резервного копирования и проверки на копии базы.