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

В этой статье мы разберём пять основных методов сравнения: от ручного анализа через конфигуратор до использования специализированных инструментов вроде 1C:EDT или Vanessa-ADD. Вы узнаете, какие настройки можно сравнить автоматически, а где без человеческого глаза не обойтись, как избежать типичных ошибок при экспорте/импорте данных, и почему иногда проще написать собственный скрипт, чем полагаться на стандартные отчёты. Особое внимание уделим скрытым параметрам конфигурации, которые не отображаются в стандартных сравнениях, но могут кардинально влиять на работу системы.

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

1. Сравнение конфигураций через стандартный механизм 1С

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

Чтобы запустить сравнение:

  • 📂 Откройте обе базы в Конфигураторе (можно в разных окнах).
  • 🔄 В меню одной из баз выберите Конфигурация → Сравнить конфигурации.
  • 🖥️ Укажите вторую базу в качестве источника для сравнения (через путь к файлу .cf или подключение к серверу).
  • 🔍 Запустите анализ и дождитесь формирования отчёта.

В результате вы получите дерево объектов с пометками о различиях: добавленные (зелёным), удалённые (красным) и изменённые (синим) элементы. Клик по объекту покажет детальное сравнение свойств и кода.

💡

Если сравнение занимает слишком много времени, ограничьте анализ конкретными подсистемами или объектами через фильтр в окне настроек сравнения.

⚠️ Внимание: Стандартное сравнение не учитывает Параметры сеанса, Настройки пользователей и данные, хранящиеся в регистрах сведений (например, НастройкиОбменаДанными). Для них потребуются другие методы.

2. Экспорт/импорт настроек через файлы .cf и .dt

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

  • 📁 Для конфигурации: Файл → Сохранить конфигурацию в файл (формат .cf).
  • 📊 Для данных: Администрирование → Выгрузка данных (формат .dt).
  • 🔄 Сравните файлы с помощью внешних инструментов (например, WinMerge, Beyond Compare или KDiff3).

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

"C:\Program Files\1cv8\8.3.20.1500\bin\1cv8.exe" DESIGNER /F "C:\Bases\Base1" /NАдминистратор /P12345 /Out "C:\Exports\Base1.cf"

Главный плюс этого метода — возможность архивировать настройки и откатываться к предыдущим версиям. Минус — ручная обработка больших объёмов данных может занять много времени.

Выгрузить конфигурацию и данные в отдельные файлы|Убедиться, что в базе нет активных пользователей|Сверить версии платформы 1С в обеих базах|Сохранить резервную копию перед изменениями-->

3. Сравнение справочников и регистров сведений

Настройки, хранящиеся в регистрах сведений (например, параметры обмена, настройки печатных форм или пользовательские предпочтения), требуют отдельного подхода. Их нельзя сравнить через стандартное сравнение конфигураций, но можно экспортировать в Excel или XML.

Алгоритм действий:

  1. Откройте нужный регистр сведений в режиме 1С:Предприятие.
  2. Выгрузите данные через Файл → Сохранить как... (формат .xlsx или .mxl).
  3. Повторите для второй базы и сравните файлы.

Для часто используемых регистров (например, НастройкиОбменаДанными) имеет смысл создать обработку, которая будет автоматически выгружать и сравнивать данные по ключевым полям. Пример кода для выгрузки регистра в JSON:

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.НастройкиОбменаДанными";

Результат = Запрос.Выполнить();

ЗаписьJSON = Новый ЗаписьJSON;

ЗаписьJSON.УстановитьСтроку();

ЗаписьJSON.ЗаписатьНачалоОбъекта();

ЗаписьJSON.ЗаписатьКлюч("Данные");

ЗаписьJSON.ЗаписатьНачалоМассива();

Пока Результат.Следующий() Цикл

ЗаписьJSON.ЗаписатьЗначение(Результат.ПолучитьСтрокуJSON());

КонецЦикла;

ЗаписьJSON.ЗаписатьКонецМассива();

ЗаписьJSON.ЗаписатьКонецОбъекта();

РезультатJSON = ЗаписьJSON.Закрыть();

РезультатJSON.СохранитьКак("C:\Exports\НастройкиОбмена.json");

⚠️ Внимание: При сравнении регистров сведений учитывайте периодичность данных. Например, настройки обмена могут отличаться по датам действия, и простое сравнение текущих значений не покажет полную картину.
Тип данных Инструмент сравнения Пример объектов
Конфигурация Стандартное сравнение в Конфигураторе Справочники.Номенклатура, Документы.РеализацияТоваров
Пользовательские настройки Экспорт в .dt + внешние утилиты РегистрСведений.НастройкиПользователей
Права доступа Отчёт Права пользователей или скрипт Роли.ПолныеПрава, Пользователи.ИвановИИ
Параметры сеанса Просмотр через Администрирование → Параметры сеанса Тайм-аут сеанса, Макс. количество соединений

4. Автоматизированные инструменты: 1C:EDT, Vanessa-ADD и другие

Для комплексного анализа крупных баз или регулярного сравнения (например, при разработке обновлений) стоит использовать специализированные инструменты:

  • 🛠️ 1C:EDT (Enterprise Development Tools) — официальное решение от с поддержкой Git-интеграции. Позволяет сравнивать конфигурации, отслеживать изменения и конфликты при слиянии.
  • 🤖 Vanessa-ADD — фреймворк для автоматического тестирования и сравнения баз. Подходит для регрессионного тестирования после обновлений.
  • 🔍 StoreHouse — утилита для сравнения и хранения версий конфигураций с поддержкой командной работы.

Пример настройки сравнения в 1C:EDT:

  1. Подключите обе базы к проекту через Team → Share Project.
  2. Выберите Compare With → Each Other.
  3. Настройте фильтры для игнорирования служебных объектов (например, ВременныеТаблицы).

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

Стандартное сравнение в Конфигураторе|1C:EDT|Vanessa-ADD|Собственные скрипты|Другое-->

5. Скрипты и обработки для сравнения пользовательских данных

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

  1. Создайте обработку с двумя реквизитами типа ДокументСсылка.Константа или СправочникСсылка.Номенклатура (в зависимости от сравниваемых данных).
  2. Добавьте кнопку Сравнить с кодом, который будет извлекать данные из обеих баз.
  3. Выводите различия в таблицу значений с пометками (например, «Только в базе 1», «Разные значения»).

Пример кода для сравнения справочника Номенклатура:

Процедура СравнитьНажатие(Кнопка)

// Подключение к второй базе

Соединение = Новый COMОбъект("V83.COMConnector");

База2 = Соединение.Connect("File=C:\Bases\Base2");

// Запрос данных из текущей базы

Запрос1 = Новый Запрос;

Запрос1.Текст = "ВЫБРАТЬ Ссылка, Наименование, Артикул ИЗ Справочник.Номенклатура";

Результат1 = Запрос1.Выполнить();

// Запрос данных из второй базы

Запрос2 = База2.НовыйЗапрос();

Запрос2.Текст = "ВЫБРАТЬ Ссылка, Наименование, Артикул ИЗ Справочник.Номенклатура";

Результат2 = Запрос2.Выполнить();

// Сравнение и вывод результатов

ТаблицаРезультатов = Новый ТаблицаЗначений;

ТаблицаРезультатов.Колонки.Добавить("ТипРазличия");

ТаблицаРезультатов.Колонки.Добавить("Ссылка");

ТаблицаРезультатов.Колонки.Добавить("Наименование1");

ТаблицаРезультатов.Колонки.Добавить("Наименование2");

// Логика сравнения (упрощённо)

Пока Результат1.Следующий() Цикл

Нашли = Ложь;

Результат2.Сбросить();

Пока Результат2.Следующий() И НЕ Нашли Цикл

Если Результат1.Ссылка.УникальныйИдентификатор() = Результат2.Ссылка.УникальныйИдентификатор() Тогда

Если Результат1.Наименование <> Результат2.Наименование Тогда

Строка = ТаблицаРезультатов.Добавить();

Строка.ТипРазличия = "Разные наименования";

Строка.Ссылка = Результат1.Ссылка;

Строка.Наименование1 = Результат1.Наименование;

Строка.Наименование2 = Результат2.Наименование;

КонецЕсли;

Нашли = Истина;

КонецЕсли;

КонецЦикла;

Если НЕ Нашли Тогда

Строка = ТаблицаРезультатов.Добавить();

Строка.ТипРазличия = "Только в базе 1";

Строка.Ссылка = Результат1.Ссылка;

Строка.Наименование1 = Результат1.Наименование;

КонецЕсли;

КонецЦикла;

// Вывод результатов

Форма = Новый Форма;

Форма.Элементы.Добавить(Новый ТабличноеПоле(ТаблицаРезультатов));

Форма.Открыть();

КонецПроцедуры

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

Как ускорить сравнение больших справочников?

Используйте пакетную обработку данных (например, сравнивайте по 1000 записей за раз), чтобы избежать блокировки базы. Также можно предварительно выгрузить данные в SQL-базу и сравнивать их через запросы, если у вас клиент-серверная версия 1С.

6. Типичные ошибки и как их избежать

Даже опытные администраторы допускают ошибки при сравнении баз. Вот самые распространённые:

  • 🔄 Игнорирование версий платформы: Сравнивать конфигурации на разных версиях 1С:Предприятие (например, 8.3.18 и 8.3.20) бессмысленно — различия в метаданных будут даже в неизменённых объектах.
  • 📂 Неполная выгрузка данных: При экспорте в .dt не забывайте про галочку Выгружать данные, иначе получите только структуру без содержимого.
  • 🔐 Пропуск прав доступа: Настройки ролей и пользователей часто упускают из виду, хотя они критичны для работоспособности системы.
  • 🕒 Сравнение без учёта времени: В регистрах сведений с периодичностью По секундам важно сравнивать данные на одну и ту же дату.

Чтобы минимизировать риски:

  1. Всегда сверяйте версии платформы и конфигурации перед сравнением.
  2. Используйте тестовую копию базы для экспериментов.
  3. Документируйте все изменения, особенно если работаете в команде.
⚠️ Внимание: При переносе настроек из тестовой базы в рабочую обязательно проверьте, не содержат ли они ссылки на тестовые данные (например, справочники с префиксом ТЕСТ_). Такие ссылки могут привести к ошибкам при работе с реальными данными.
💡

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

FAQ: Ответы на частые вопросы

Можно ли сравнить настройки двух баз 1С, если они на разных серверах?

Да, для этого:

  1. Подключитесь к удалённым базам через Конфигуратор (указывайте полный путь вида srvinfo="Server=192.168.1.10;Ref=BaseName").
  2. Используйте 1C:EDT с настройкой подключения к серверам.
  3. Для данных выгружайте их в файлы (.dt, .xml) и сравнивайте локально.

Убедитесь, что на серверах открыты порты для подключения (по умолчанию 1540-1541).

Как сравнить права пользователей между базами?

Права хранятся в объектах Роли и Пользователи. Чтобы их сравнить:

  1. Откройте отчёт Права пользователей (Администрирование → Права пользователей).
  2. Экспортируйте отчёт в Excel для обеих баз.
  3. Сравните файлы с помощью Excel или Beyond Compare.

Для автоматизации можно написать обработку, которая будет сравнивать роли по коду:

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Роли.Ссылка, Роли.Права КАК ПраваИзРоли

ИЗ РегистрСведений.ПраваПользователей КАК Роли";

Что делать, если сравнение показывает тысячили различий, хотя изменений было немного?

Это типичная ситуация при:

  • Сравнении баз на разных версиях платформы (даже минорные обновления вносят изменения в метаданные).
  • Использовании разных шаблонов конфигурации (например, Бухгалтерия 3.0 и Бухгалтерия КОРП).
  • Наличии служебных объектов (например, ВременныеТаблицы), которые не нужно сравнивать.

Решение:

  1. Настройте фильтры в инструменте сравнения (исключите служебные объекты).
  2. Обновите обе базы до одинаковой версии платформы.
  3. Сравнивайте не всю конфигурацию, а только изменённые подсистемы.
Как сравнить настройки обмена данными между базами?

Настройки обмена хранятся в регистре сведений НастройкиОбменаДанными. Чтобы их сравнить:

  1. Откройте регистр в режиме 1С:Предприятие (Все функции → Регистры сведений).
  2. Выгрузите данные в Excel для обеих баз.
  3. Сравните ключевые поля: ИмяНастройки, Значение, УзелОбмена.

Обратите внимание на настройки ПравилаОбмена — их тоже нужно сравнивать отдельно (они хранятся в плане обмена).

Можно ли автоматизировать сравнение баз по расписанию?

Да, для этого:

  1. Напишите скрипт на PowerShell или Python, который будет:
    • Выгружать конфигурации в файлы .cf.
    • Сравнивать их с помощью Beyond Compare или WinMerge.
    • Отправлять отчёт о различиях на почту.
  • Настройте задачу в Планировщике заданий Windows или cron (для Linux).
  • Пример команды для Планировщика:

    schtasks /create /tn "Сравнение баз 1С" /tr "C:\Scripts\compare_bases.ps1" /sc daily /st 23:00

    Для 1C:EDT можно настроить интеграцию с Jenkins или GitLab CI для автоматического сравнения при каждом коммите.