Сравнение двух информационных баз 1С 8.3: инструменты и порядок

· 10 мин

Содержание

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

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

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

С чего начать: выберите слой сравнения

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

Что вы хотите сравнить в двух базах?

Второе правило — не сравнивайте рабочую базу под нагрузкой. Если нужна точная сверка данных на фиксированный момент, снимите копию: Администрирование → Выгрузить информационную базу (файл .dt) и загрузите её в тестовую базу. Тогда цифры не «поплывут» из-за работы пользователей.

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

Это самый точный и штатный способ. Платформа покажет различия до каждой процедуры и реквизита.

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

  • 📦 основная конфигурация;
  • 🗄️ конфигурация базы данных;
  • 📁 конфигурация из файла (.cf);
  • 🌐 конфигурация из хранилища (если база на хранилище).

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

В окне сравнения различия сгруппированы по дереву метаданных. Напротив изменённых объектов стоят отметки; двойной клик раскрывает построчное сравнение модулей и свойств. Через команду Действия можно вывести отчёт о сравнении — удобно приложить к задаче или согласованию.

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

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

Сравнение данных двух баз: обработки и история версий

Штатной универсальной обработки «сравнить все данные двух баз» в платформе нет. Поэтому задачу разбивают на части.

Сверка по регистрам и справочникам. Самый надёжный ручной способ — в каждой базе построить один и тот же отчёт с идентичными настройками (период, организация, детализация) и сравнить итоги. Для остатков подойдут оборотно-сальдовая ведомость и ведомости по регистрам накопления. Главное — одинаковый отбор, иначе сравниваете несравнимое.

Что сверять построчно при переносе данных
ПоказательНаши данныеКонтрагентΔ
Остатки по счетам (оборотно-сальдовая ведомость)—
Количество документов по видам за период—
Остатки по складам и номенклатуре—
Взаиморасчёты по контрагентам (62, 60, 76)—
Итоговое расхождение: 0 ₽

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

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

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

Внешние инструменты и консоль администрирования

Когда штатных средств мало, подключают внешние обработки и консольные операции.

  • 🧰 Внешние обработки сравнения. Существуют готовые обработки сравнения и синхронизации данных информационных баз. Запускайте их только из проверенного источника и сначала на копии: сторонняя обработка с полными правами способна изменить данные.
  • 💾 Копия через .dt. Для честного сравнения на одну дату выгрузите обе базы в .dt и разверните в тестовом контуре. Работает для файловых и клиент-серверных баз.
  • 🖥️ Консоль кластера (для серверных баз). Утилита rac и консоль администрирования показывают сеансы, соединения и блокировки — это нужно, чтобы убедиться, что база свободна перед снятием копии. Для списка сеансов используйте rac session list, точные подкоманды смотрите в rac help.

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

Если база на сервере, снять .dt можно и без остановки службы, но данные в этот момент продолжают меняться — для точной сверки всё равно нужен момент без активности либо блокировка на запись.

Для файловых баз есть и совсем простой вариант сравнения «на глаз»: скопируйте файл 1Cv8.1CD каждой базы и откройте копии в разных сеансах рядом. Одинаковые отчёты в двух окнах с одинаковым отбором быстро показывают, где итоги не сходятся, — удобно для первичной локализации проблемы перед точной сверкой.

Сравнение на уровне СУБД: запросы к таблицам

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

Соответствие объект → таблица даёт функция ПолучитьСтруктуруХраненияБазыДанных(), вызванная в 1С:Предприятии (например, через внешнюю обработку ). По её результату вы узнаете реальные имена таблиц и полей для SQL-запроса.

Типовые запросы для сверки — подсчёт количества строк и контрольных сумм по ключевым таблицам в обеих базах:

SELECT COUNT(*) AS cnt FROM _Document123;
SELECT SUM(_Fld789) AS total FROM _AccumRgT456;

Расхождение количества или суммы сразу показывает, в каком регистре искать разницу, без перебора документов средствами 1С.

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

Запросы к таблицам 1С выполняйте только на чтение (SELECT) и только на копии. Прямая запись в таблицы базы 1С не поддерживается и приводит к порче данных — структуру и целостность контролирует платформа, а не СУБД.

Этот способ требует доступа к серверу СУБД и понимания структуры хранения, поэтому его берут, когда штатные средства упираются в объём.

Сверка пользователей и прав доступа

Если в одной базе у сотрудника чего-то не видно, причина почти всегда в правах, а не в данных.

Список пользователей сравнивают в двух местах:

  1. В режиме 1С:Предприятие — Администрирование → Настройки пользователей и прав → Пользователи. Здесь же профили групп доступа и сами группы.
  2. В Конфигураторе — Администрирование → Пользователи: таблица пользователей с назначенными ролями.

Порядок сверки простой:

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

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

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

Автоматизация: регулярная сверка конфигураций

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

Команда выгружает конфигурацию в файл без участия человека:

1cv8 DESIGNER /F "путь_к_базе" /N "Админ" /P "пароль" /DumpCfg "C:\compare\base1.cf"

Выгрузив .cf из обеих баз по расписанию (планировщик Windows или задание cron на Linux), сравнивайте их: быстрее всего — по контрольной сумме или размеру файла, чтобы просто поймать сам факт изменения, а при расхождении открыть сравнение в Конфигураторе и посмотреть, что именно поменялось.

Точный перечень ключей командной строки смотрите в выводе 1cv8 DESIGNER /? — не полагайтесь на подсмотренные где-то параметры, у разных версий платформы набор отличается.

Настройка регулярной сверки
Выполнено: 0 / 5

Пакетный запуск занимает сеанс и лицензию, а некоторые операции Конфигуратора требуют монопольного доступа к базе (загрузка .dt, изменение структуры). Простая выгрузка /DumpCfg монополии не требует, но планируйте её на время без активной работы.

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

Частые ошибки при сравнении

Ошибки сравнения чаще ведут к ложным выводам, чем к сбоям. Вот что путает в первую очередь.

  • ❌ Сравнивают основную конфигурацию, а не конфигурацию базы данных. Доработки могут лежать в основной конфигурации и быть не применёнными к базе. Для вопроса «что реально работает в базе» сравнивайте именно конфигурацию базы данных.
  • ❌ Сравнивают разные релизы и считают все различия ошибкой. На разных версиях вендор сам меняет сотни объектов. Сначала выровняйте релиз, потом ищите доработки.
  • ❌ Сверяют данные на работающей базе. Пока идёт сверка, пользователи проводят документы, и цифры расходятся сами собой. Берите копию .dt или фиксированный момент.
  • ❌ Считают разные GUID и номера строк расхождением. После обмена ссылочные идентификаторы в базах разные по определению. Сверяйте по бизнес-реквизитам.
  • ❌ Пишут в таблицы СУБД напрямую, чтобы «подровнять» данные. Это разрушает целостность базы. Все исправления — только средствами 1С.

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

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

Можно ли сравнить две базы на разных конфигурациях?
Конфигурации сравнить технически можно, но различий будет очень много и толку мало — объекты называются и устроены по-разному. Имеет смысл сравнивать данные по бизнес-смыслу (остатки, обороты, справочники), а не метаданные.
Чем отличается основная конфигурация от конфигурации базы данных?
Основная конфигурация — та, что вы редактируете в Конфигураторе. Конфигурация базы данных — та, по которой реально работают пользователи. Пока вы не выполнили обновление конфигурации базы данных, доработки в базе не действуют, хотя в основной конфигурации уже есть.
Есть ли в платформе штатная кнопка «сравнить данные двух баз»?
Для конфигураций — да, встроенное сравнение в Конфигураторе. Для данных единой штатной кнопки нет: сверяют отчётами с одинаковыми настройками, выгрузкой в XML или внешними обработками сравнения.
Как сравнить базы, не останавливая пользователей?
Снимите копию через выгрузку в файл .dt и разверните её в отдельной тестовой базе. Все сравнения проводите на копии — рабочую базу это не затрагивает.
Почему имена таблиц в SQL не совпадают с объектами конфигурации?
Платформа сама формирует технические имена таблиц (_Document123 и подобные). Получить соответствие объект → таблица можно функцией ПолучитьСтруктуруХраненияБазыДанных() в режиме 1С:Предприятие.