Сравнение двух информационных баз 1С 8.3: инструменты и порядок
Содержание
Сначала решите, что именно сравниваете: конфигурацию (метаданные и код), данные (записи в документах и регистрах) или права пользователей. Инструмент под каждую задачу разный. Конфигурацию сравнивают в Конфигураторе через Конфигурация → Сравнить конфигурации. Данные — внешними обработками или выгрузкой в XML с последующей сверкой. Права — через список пользователей и профили групп доступа.
Эти три слоя нельзя смешивать в одном сравнении. Отличия в конфигурации видны мгновенно и подробно, а вот автоматической «кнопки сравнить все данные двух баз» в платформе нет — здесь работают обходные приёмы.
Ниже — по каждому слою: чем сравнивать, где это лежит в интерфейсе 8.3 и на что смотреть, чтобы не принять нормальные расхождения за ошибку.
С чего начать: выберите слой сравнения
Прежде чем открывать Конфигуратор, ответьте на один вопрос — зачем вам сравнение. От этого зависит инструмент и то, нужна ли вообще копия базы .
Второе правило — не сравнивайте рабочую базу под нагрузкой. Если нужна точная сверка данных на фиксированный момент, снимите копию: Администрирование → Выгрузить информационную базу (файл .dt) и загрузите её в тестовую базу. Тогда цифры не «поплывут» из-за работы пользователей.
Сравнение конфигураций в Конфигураторе
Это самый точный и штатный способ. Платформа покажет различия до каждой процедуры и реквизита.
Откройте Конфигуратор той базы, которую берёте за основу, и выполните Конфигурация → Сравнить конфигурации. В диалоге выбираются два источника для сравнения:
- 📦 основная конфигурация;
- 🗄️ конфигурация базы данных;
- 📁 конфигурация из файла (
.cf); - 🌐 конфигурация из хранилища (если база на хранилище).
Чтобы сравнить две разные базы, из второй базы выгрузите конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл. Получите .cf и в первой базе сравните с ним через вариант «из файла».
В окне сравнения различия сгруппированы по дереву метаданных. Напротив изменённых объектов стоят отметки; двойной клик раскрывает построчное сравнение модулей и свойств. Через команду Действия можно вывести отчёт о сравнении — удобно приложить к задаче или согласованию.
Частая находка: отличается не «версия программы», а то, что в одной базе доработки лежат только в основной конфигурации и не применены к базе данных. Поэтому в самой базе сначала сравните Основную конфигурацию с Конфигурацией базы данных — расхождение означает неприменённые изменения.
Если видите множество различий в типовых объектах, сверьте версию релиза конфигурации: Справка → О программе в режиме 1С:Предприятие. Сравнивать доработки есть смысл только на одинаковых релизах — иначе половина различий окажется штатными изменениями вендора.
Сравнение данных двух баз: обработки и история версий
Штатной универсальной обработки «сравнить все данные двух баз» в платформе нет. Поэтому задачу разбивают на части.
Сверка по регистрам и справочникам. Самый надёжный ручной способ — в каждой базе построить один и тот же отчёт с идентичными настройками (период, организация, детализация) и сравнить итоги. Для остатков подойдут оборотно-сальдовая ведомость и ведомости по регистрам накопления. Главное — одинаковый отбор, иначе сравниваете несравнимое.
| Показатель | Наши данные | Контрагент | Δ |
|---|---|---|---|
| Остатки по счетам (оборотно-сальдовая ведомость) | — | ||
| Количество документов по видам за период | — | ||
| Остатки по складам и номенклатуре | — | ||
| Взаиморасчёты по контрагентам (62, 60, 76) | — |
Выгрузка в 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С:Предприятие —
Администрирование → Настройки пользователей и прав → Пользователи. Здесь же профили групп доступа и сами группы. - В Конфигураторе —
Администрирование → Пользователи: таблица пользователей с назначенными ролями.
Порядок сверки простой:
- сравните состав профилей групп доступа и набор ролей в каждом профиле;
- проверьте, в какие группы доступа входит конкретный пользователь в обеих базах;
- для типовых конфигураций помните: доступ к данным задаётся профилем и RLS, а не только галочкой роли.
Определения самих ролей (что роль разрешает) — это часть конфигурации, поэтому различия в ролях уже видны при сравнении конфигураций из раздела выше. А вот назначение ролей и профилей конкретным людям — это данные, их сверяют именно в списке пользователей.
Если профили и роли совпали, а доступ всё равно разный, сравните ограничения на уровне записей (RLS) и значения, по которым они работают: группы доступа контрагентов, склады, организации в настройках пользователя.
Автоматизация: регулярная сверка конфигураций
Когда базы должны оставаться идентичными (например, рабочая и резервная), сравнение автоматизируют через пакетный режим Конфигуратора.
Команда выгружает конфигурацию в файл без участия человека:
1cv8 DESIGNER /F "путь_к_базе" /N "Админ" /P "пароль" /DumpCfg "C:\compare\base1.cf"
Выгрузив .cf из обеих баз по расписанию (планировщик Windows или задание cron на Linux), сравнивайте их: быстрее всего — по контрольной сумме или размеру файла, чтобы просто поймать сам факт изменения, а при расхождении открыть сравнение в Конфигураторе и посмотреть, что именно поменялось.
Точный перечень ключей командной строки смотрите в выводе 1cv8 DESIGNER /? — не полагайтесь на подсмотренные где-то параметры, у разных версий платформы набор отличается.
Пакетный запуск занимает сеанс и лицензию, а некоторые операции Конфигуратора требуют монопольного доступа к базе (загрузка .dt, изменение структуры). Простая выгрузка /DumpCfg монополии не требует, но планируйте её на время без активной работы.
Для серверных баз к этому добавляют мониторинг через консоль кластера: регулярная проверка версии конфигурации базы данных показывает, что обновление доехало до всех узлов.
Частые ошибки при сравнении
Ошибки сравнения чаще ведут к ложным выводам, чем к сбоям. Вот что путает в первую очередь.
- ❌ Сравнивают основную конфигурацию, а не конфигурацию базы данных. Доработки могут лежать в основной конфигурации и быть не применёнными к базе. Для вопроса «что реально работает в базе» сравнивайте именно конфигурацию базы данных.
- ❌ Сравнивают разные релизы и считают все различия ошибкой. На разных версиях вендор сам меняет сотни объектов. Сначала выровняйте релиз, потом ищите доработки.
- ❌ Сверяют данные на работающей базе. Пока идёт сверка, пользователи проводят документы, и цифры расходятся сами собой. Берите копию
.dtили фиксированный момент. - ❌ Считают разные GUID и номера строк расхождением. После обмена ссылочные идентификаторы в базах разные по определению. Сверяйте по бизнес-реквизитам.
- ❌ Пишут в таблицы СУБД напрямую, чтобы «подровнять» данные. Это разрушает целостность базы. Все исправления — только средствами 1С.
Отдельно про права: если доступ разный, не спешите менять роли в конфигурации — сначала убедитесь, что дело не в профиле группы доступа или в RLS. Правка роли затронет всех пользователей, а не одного.
Частые вопросы
Можно ли сравнить две базы на разных конфигурациях?
Чем отличается основная конфигурация от конфигурации базы данных?
Есть ли в платформе штатная кнопка «сравнить данные двух баз»?
Как сравнить базы, не останавливая пользователей?
.dt и разверните её в отдельной тестовой базе. Все сравнения проводите на копии — рабочую базу это не затрагивает.Почему имена таблиц в SQL не совпадают с объектами конфигурации?
_Document123 и подобные). Получить соответствие объект → таблица можно функцией ПолучитьСтруктуруХраненияБазыДанных() в режиме 1С:Предприятие.