Администрирование · 11 мин
Как сравнить объекты разных баз 1С
Как сравнить объекты двух баз 1С: типовое сравнение конфигураций, обработки сопоставления данных, COM и OLE, выгрузка в XML. Порядок действий, риски и частые ошибки.
Задача сравнить объекты разных баз 1С возникает в нескольких типовых ситуациях: проверка расхождений между рабочей и тестовой базой, контроль после обновления, синхронизация справочников между филиалами, миграция данных из старой конфигурации в новую. В зависимости от того, что именно сравнивается — метаданные конфигурации или сами данные (справочники, документы, регистры) — выбирается разный инструмент.
Важно сразу разделить два уровня сравнения. Первый — сравнение конфигураций, то есть структуры метаданных: состава справочников, документов, реквизитов, модулей. Второй — сравнение данных: конкретных элементов справочников, документов и записей регистров в двух базах. Для этих задач в 1С предусмотрены принципиально разные механизмы, и смешивать их нельзя.
Ниже разобраны рабочие способы сравнения: штатное сравнение конфигураций, типовые обработки сопоставления данных, программный доступ через COM/OLE и внешние подключения, а также выгрузка в промежуточные форматы. Для каждого способа указаны условия применения, ограничения и типичные ошибки.
Определите, что именно нужно сравнить: метаданные или данные
Прежде чем выбирать инструмент, ответьте на вопрос: расходятся ли базы по структуре или по содержимому. Если после обновления или доработки нужно понять, какие объекты метаданных изменились — это задача сравнения конфигураций. Если в двух базах «одинаковой» конфигурации есть разные элементы справочников или документы — это задача сравнения данных.
Признаки того, что нужно сравнивать конфигурации: базы обновлялись в разное время, в одну вносились доработки, при обмене возникают ошибки вида «объект не найден» или «поле объекта не обнаружено». Признаки расхождения данных: разные остатки на складах, отсутствие контрагентов или документов в одной из баз, разные значения в регистрах сведений.
Часто встречается смешанная ситуация: сначала сравнивают конфигурации и приводят их к одной версии, и только потом сопоставляют данные. Сравнивать данные баз с разными версиями конфигураций технически возможно, но результат будет искажён — часть реквизитов просто не существует в одной из баз.
Как выбрать действие
Сравнение конфигураций через «Сравнение и объединение»
Штатный механизм конфигуратора позволяет сравнить текущую конфигурацию базы с конфигурацией из файла выгрузки. Для этого в базе-источнике выполните «Конфигурация → Сохранить конфигурацию в файл» и получите файл с расширением .cf. Затем в базе-приёмнике откройте «Конфигурация → Сравнить, объединить с конфигурацией из файла» и укажите полученный файл.
Результат — дерево объектов метаданных с отметками о различиях: изменённые объекты подсвечиваются, по двойному щелчку открывается детальное сравнение, включая построчное сравнение модулей. Режим объединения можно не запускать: достаточно снять все флажки и использовать окно только как отчёт о различиях.
Ограничение способа: он показывает различия метаданных, но не данные. Кроме того, сравнение модулей текстовое — перестановка процедур местами или изменение комментариев будет показана как различие, хотя функционально ничего не изменилось.
- 1В базе-источнике: Конфигурация → Сохранить конфигурацию в файл (.cf)
- 2В базе-приёмнике: Конфигурация → Сравнить, объединить с конфигурацией из файла
- 3Снимите все флажки в дереве объектов, чтобы исключить случайное объединение
- 4Проанализируйте список различающихся объектов и детальные сравнения модулей
- 5Закройте окно без выполнения объединения, если нужна только диагностика
Сравнение данных типовыми обработками
В конфигурациях на базе Библиотеки стандартных подсистем (УТ, ERP, КА, БП и других) есть штатная обработка «Сравнение данных из разных источников» (в ряде версий — «Сопоставление объектов информационных баз»). Она позволяет сравнить таблицы из текущей базы и внешнего источника: другой базы 1С через COM/OLE-подключение, файла, табличного документа.
Обработка строит соответствие строк по ключевым полям (например, по коду, наименованию или GUID) и показывает: какие строки есть только в первой базе, какие только во второй, а какие есть в обеих, но с различающимися значениями полей. Это удобно для контроля синхронизации справочников между центральной и периферийной базами.
Если конфигурация самописная или без БСП, используются распространённые открытые обработки сравнения данных, либо «Выгрузка и загрузка данных XML» с диска ИТС: выгружаете одинаковый набор объектов из обеих баз и сравниваете полученные XML-файлы любым инструментом сравнения текстов. Способ грубый, но надёжный для небольших выборок.
Программное сравнение через COM/OLE и внешние подключения
Когда типовых средств недостаточно — например, нужно сравнить миллионы записей регистра или построить собственный отчёт о расхождениях — пишут обработку с подключением к второй базе через COM-коннектор (V83.COMConnector) или OLE. Обработка открывает оба соединения, выбирает данные запросами и сопоставляет объекты по уникальному идентификатору (GUID).
Сопоставление по GUID работает только если базы имеют общее происхождение: одна создана копией другой или данные мигрировали с сохранением ссылок. Если базы наполнялись независимо, одинаковые по смыслу элементы будут иметь разные GUID, и ключом сопоставления становятся прикладные поля: ИНН и КПП для контрагентов, код для номенклатуры, номер и дата для документов.
Типовой каркас такой обработки: запрос к первой базе выбирает ключевые поля и GUID, результат выгружается в таблицу значений; аналогичный запрос выполняется во второй базе; далее таблицы сравниваются через соединение по ключу. Результат выводится в табличный документ с тремя группами: только в базе 1, только в базе 2, различаются значения.
Сравнение через выгрузку в файлы
Если базы физически недоступны друг для друга (разные сети, разные организации, запрет на прямые подключения), данные выгружают в промежуточный формат и сравнивают файлы. Для ссылочных объектов подходит «Выгрузка и загрузка данных XML», для табличных наборов — выгрузка запроса в CSV или табличный документ.
Практический приём: сформировать в обеих базах один и тот же отчёт или выгрузку с фиксированным набором полей и сортировкой, сохранить в CSV и сравнить файлы инструментом сравнения текста. Расхождения строк покажут и отсутствующие записи, и различающиеся значения. Для контрольных сумм по регистрам достаточно сравнить итоговые обороты по счетам или измерениям — это быстрее построчного сравнения.
Ограничение метода: файлы фиксируют состояние на момент выгрузки. Если базы активно используются, выгрузки из двух баз нужно делать максимально близко по времени, иначе различия будут отражать не ошибку, а обычную работу пользователей.
Проверка результата сравнения
После сравнения важно отличить реальные расхождения от технических. Технические различия: служебные реквизиты, даты обмена, комментарии, нумерация. Реальные: разные остатки, отсутствующие документы, различающиеся проводки. Начинайте анализ с контрольных сумм — сверните данные по ключевым измерениям и сравните итоги: если итоги совпадают, детальные расхождения, скорее всего, отсутствуют.
Для каждого найденного расхождения определите причину: объект не перенёсся при обмене, был изменён после обмена, удалён в одной из баз или создан независимо. Без классификации причин нельзя решать, что является эталоном и в какую сторону синхронизировать.
Как проверить результат
Суммы совпадают до копейки в обеих базах
Расхождение итогов — ищите период и измерение, где оно возникает
Число активных элементов совпадает
Разница в количестве — есть неперенесённые или лишние элементы
Суммы, даты и проведение совпадают по выборке
Различия в выборке — нужно полное построчное сравнение
Различия только в известных доработках
Неожиданные изменённые объекты — базы обновлялись из разных источников
Частые вопросы
Можно ли сравнить базы с разными конфигурациями, например УТ и БП?
Да, но только на уровне данных и только по сопоставимым объектам. Прямое сравнение конфигураций бессмысленно — различиями будет вся структура. Для данных строится соответствие: контрагенты сопоставляются по ИНН, номенклатура — по артикулу или наименованию, документы — по номеру и дате. Обычно это делается программной обработкой с настраиваемыми правилами соответствия.
Как сравнить две базы, если нет доступа к конфигуратору?
Используйте средства пользовательского режима: универсальный отчёт, выгрузку списков в табличный документ или Excel, обработку сравнения данных, если она входит в конфигурацию. Сформируйте в обеих базах одинаковые отчёты с одинаковыми отборами и сравните результаты. Это покроет сравнение данных, но не метаданных.
Что делать, если GUID одинаковых объектов в базах разные?
Это нормальная ситуация для независимо наполнявшихся баз. Сопоставляйте по естественным ключам: для контрагентов — ИНН и КПП, для номенклатуры — код или артикул, для документов — организация, номер, дата. Перед сопоставлением желательно устранить дубли в обеих базах, иначе соответствие будет неоднозначным.
Безопасно ли COM-подключение к рабочей базе?
Само по себе подключение на чтение безопасно, но создаёт дополнительный сеанс и нагрузку на сервер. Тяжёлые запросы по большим таблицам могут замедлить работу пользователей. Запускайте такие сравнения в нерабочее время или на копии базы, а запросы ограничивайте периодом и отборами.
Как сравнить движения документов, а не сами документы?
Сравнение шапок документов не показывает различия в проводках. Выгружайте запросом записи регистров с отбором по регистраторам за период из обеих баз и сравнивайте наборы записей по измерениям, ресурсам и реквизитам. Проще всего начать с итоговых оборотов по регистру: если они совпадают, детальное сравнение часто не требуется.
Чем сравнить модули, если базы на разных версиях платформы?
Выгрузите конфигурации обеих баз в файлы конфигуратора (конфигурация → выгрузить в файлы) и сравните каталоги любым файловым инструментом сравнения. Тексты модулей хранятся в файлах Module.bsl и сравниваются построчно независимо от версии платформы. Штатное сравнение конфигураций через .cf при несовместимости версий может не открыться.
Что важно запомнить
Метаданные сравнивают через «Сравнение и объединение конфигураций» с файлом .cf, данные — типовыми обработками сопоставления, COM-подключением или выгрузкой в файлы. Ключ сопоставления — GUID для родственных баз и естественные ключи (ИНН, код, номер и дата) для независимых. Любые операции объединения и загрузки выполняйте только после резервного копирования и проверки на копии базы.