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

Мы разберём не только техническую сторону процесса, но и критерии выбора метода: когда достаточно встроенной выгрузки в XML, а когда потребуется внешняя обработка или программный код. Особое внимание уделено сохранению иерархии справочников, реквизитов и табличных частей — тех аспектов, которые часто упускают в упрощённых руководствах. Если вы ищете решение для конкретной версии платформы (например, 1С:Предприятие 8.3.22) или типа конфигурации (Управление торговлей 11, Бухгалтерия 3.0), в статье есть сравнительная таблица совместимости методов.

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

1. Подготовка к переносу: что нужно проверить перед копированием

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

  • 🔍 Сравните структуры справочников в исходной и целевой базе: совпадают ли реквизиты, табличные части, формы. Используйте отчёт Сравнение конфигураций в конфигураторе.
  • 📋 Определите объём данных: если справочник содержит более 10 000 записей, стандартная выгрузка в XML может занять часы. Для больших объёмов лучше использовать регламентные задания.
  • 🔗 Проверьте зависимости: какие документы или регистры ссылаются на элементы справочника. Например, перенос Номенклатуры потребует синхронизации остатков в регистре ТоварыНаСкладах.
  • 🛡️ Создайте контрольные точки: сделайте архивные копии баз (через 1CV8.exe /DumpIB) или снапшоты виртуальных машин, если используете 1С на сервере.

Особое внимание уделите идентификаторам объектов. Если в целевой базе уже есть справочник с таким же именем, но другими UID, при загрузке возникнут конфликты. В этом случае потребуется либо очистка целевого справочника, либо использование обработки с функцией слияния по ключевым реквизитам (например, по Артикулу или Наименованию).

⚠️ Внимание: Если целевая база находится на управляемом приложении (тонкий клиент), некоторые методы переноса (например, через Конфигуратор) будут недоступны без прав администратора сервера 1С:Предприятие.
📊 Какой метод переноса справочников вы используете чаще?
Стандартная выгрузка/загрузка XML
Внешние обработки (например, от фирмы 1С)
Программный код (1С или SQL)
Синхронизация через РИБ
Другой способ

2. Способ 1: Стандартная выгрузка и загрузка через XML

Самый универсальный метод, работающий во всех конфигурациях на платформе 1С:Предприятие 8.3. Подходит для одноразового переноса небольших справочников (до 5 000 записей). Алгоритм:

  1. Откройте исходную базу в режиме 1С:Предприятие.
  2. Перейдите в раздел Администрирование → Выгрузка и загрузка данных → Выгрузка данных.
  3. Выберите нужный справочник (например, Контрагенты) и настройте параметры выгрузки:
    • 📌 Формат: XML (рекомендуется) или TXT (для совместимости со старыми версиями).
    • 📌 Глубина выгрузки: если справочник иерархический (например, Номенклатура), отметьте Выгружать подчинённые элементы.
    • 📌 Дополнительные реквизиты: включите галочки для табличных частей и реквизитов, которые нужно перенести.
  • Укажите путь для сохранения файла (например, C:\Temp\Контрагенты.xml).
  • В целевой базе выполните обратную операцию: Администрирование → Загрузка данных, выберите файл и запустите процесс.
  • Преимущества метода:

    ✅ Не требует прав доступа к конфигуратору.

    ✅ Сохраняет иерархию и большинство связей между объектами.

    ✅ Работает даже при разных версиях конфигураций (если структуры справочников совпадают).

    Недостатки:

    ❌ Медленная обработка больших объёмов данных (более 10 000 записей).

    ❌ Не переносит права доступа на элементы справочника.

    ❌ Может возникнуть ошибка "Не найден объект метаданных", если в целевой базе отсутствует справочник с таким именем.

    Параметр Значение для выгрузки Значение для загрузки
    Формат файла XML (рекомендуется) XML или TXT
    Кодировка UTF-8 (по умолчанию) Автоопределение
    Обработка ошибок Пропускать Прерывать или Пропускать
    Сохранять связи Да Да (если структуры совпадают)

    Убедиться, что в целевой базе есть справочник с таким же именем|

    Проверить свободное место на диске (XML-файл может весить в 2-3 раза больше, чем данные в базе)|

    Закрыть все сеансы работы с базой-приёмником|

    Отключить регламентные задания на время переноса|

    Сделать резервную копию целевой базы-->

    3. Способ 2: Перенос через Конфигуратор (для опытных пользователей)

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

    Инструкция:

    1. Откройте исходную базу в Конфигураторе (режим 1CV8.exe /Config).
    2. Выделите нужный справочник в дереве метаданных (например, Справочники → Контрагенты).
    3. Нажмите Правка → Копировать (или Ctrl+C).
    4. Откройте целевую базу в конфигураторе и вставьте справочник (Правка → Вставить).
    5. Подтвердите замену объекта, если справочник уже существует.
    6. Выполните Администрирование → Загрузка данных из файла, выбрав ранее сохранённый XML или DT.
    7. Ключевые нюансы:

      ✔️ Метод позволяет переносить не только данные, но и структуру справочника (реквизиты, формы, права).

      ✔️ Подходит для переноса между базами с разными версиями платформы (например, с 8.2 на 8.3), если структуры совместимы.

      Не сохраняет ссылки на документы — только внутреннюю структуру справочника.

      ❌ Требует остановки всех пользовательских сеансов в целевой базе.

      Если при вставке справочника возникает ошибка "Объект не найден", проверьте:

      - Совпадают ли имена подсистем в конфигурациях.

      - Нет ли в целевой базе расширений, блокирующих изменения метаданных.

      - Достаточно ли прав у вашей учётной записи (требуется роль Администратор).

      Что делать, если справочник не вставляется в конфигуратор?

      Если при попытке вставить справочник появляется сообщение "Ошибка контроля версии", выполните следующие шаги:

      1. В целевой базе откройте Конфигурация → Поддержка → Настройка поддержки.

      2. Установите флаг Включить возможность изменения (если конфигурация на поддержке).

      3. Повторите попытку вставки.

      4. После успешного переноса верните конфигурацию на поддержку, если это требование лицензии.

      4. Способ 3: Использование внешних обработок (например, от фирмы 1С)

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

      • 📄 Обработка"ВыгрузкаЗагрузкаДанныхXML.epf" — расширенная версия стандартного механизма с поддержкой фильтров и преобразований данных.
      • 🔄 "Универсальный обмен данными в формате XML" — позволяет настраивать правила соответствия полей между базами.
      • 🔗 Обработки для конкретных конфигураций (например, "Перенос данных из УТ 10.3 в УТ 11").

    Пример использования обработки ВыгрузкаЗагрузкаДанныхXML.epf:

    1. Скачайте обработку с сайта 1С:ИТС или получите у партнёра.

    2. Откройте её в режиме 1С:Предприятие (Файл → Открыть).

    3. Настройте параметры выгрузки:

    - Укажите справочник-источник (например, Справочник.Контрагенты).

    - Добавьте фильтр, если нужно выгрузить только часть данных (например, ПометкаУдаления = Ложь).

    - Выберите формат XML или JSON (для новых версий платформы).

    4. Сохраните файл и загрузите его в целевую базу через ту же обработку.

    Преимущества внешних обработок:

    ✔️ Гибкая настройка правил преобразования данных (например, замена значений реквизитов при переносе).

    ✔️ Поддержка пакетной обработки нескольких справочников за один запуск.

    ✔️ Возможность логирования ошибок с указанием проблемных записей.

    ⚠️ Внимание: Некоторые обработки (например, для переноса между УТ 10.3 и УТ 11) требуют лицензионных ключей или подписки на 1С:ИТС. Перед использованием проверьте условия на сайте разработчика.
    💡

    Если вам нужно перенести справочник между базами с разными конфигурациями (например, из Бухгалтерии 2.0 в Бухгалтерию 3.0), используйте обработку "Конвертация данных" из комплекта поставки 1С:Предприятие. Она позволяет настроить соответствие полей между разными версиями конфигураций.

    5. Способ 4: Программный перенос (1С или SQL)

    Для автоматизации регулярного обмена или переноса больших объёмов данных (более 50 000 записей) целесообразно написать собственный код на встроенном языке или использовать SQL-запросы (если базы находятся на MS SQL Server или PostgreSQL).

    Пример кода для выгрузки справочника Номенклатура в файл JSON:

    Процедура ВыгрузитьНоменклатуруВJSON
    
    

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

    Запрос.Текст =

    "ВЫБРАТЬ

    | Номенклатура.Ссылка КАК Ссылка,

    | Номенклатура.Наименование КАК Наименование,

    | Номенклатура.Артикул КАК Артикул

    |ИЗ

    | Справочник.Номенклатура КАК Номенклатура";

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

    Выборка = Результат.Выбрать;

    МассивДанных = Новый Массив;

    Пока Выборка.Следующий Цикл

    Элемент = Новый Структура;

    Элемент.Вставить("Ссылка", Выборка.Ссылка.УникальныйИдентификатор);

    Элемент.Вставить("Наименование", Выборка.Наименование);

    Элемент.Вставить("Артикул", Выборка.Артикул);

    МассивДанных.Добавить(Элемент);

    КонецЦикла;

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

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

    ЗаписьJSON.Записать(МассивДанных);

    ТекстJSON = ЗаписьJSON.Закрыть;

    ТекстJSON.Записать("C:\Temp\Номенклатура.json", КодировкаТекста.UTF8);

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

    Для загрузки данных в целевую базу используйте аналогичный код с чтением JSON и созданием элементов справочника через метод Справочники.Номенклатура.СоздатьЭлемент.

    Преимущества программного метода:

    ✔️ Максимальная гибкость: можно реализовать любую логику преобразования данных.

    ✔️ Высокая скорость при работе с большими объёмами (например, перенос 100 000 записей за 10-15 минут).

    ✔️ Возможность интеграции с внешними системами (например, отправка данных в API после переноса).

    Недостатки:

    ❌ Требует знания языка 1С или SQL.

    ❌ Ошибки в коде могут привести к потере данных или нарушению ссылочной целостности.

    ❌ При изменении структуры справочника придётся дорабатывать код.

    💡

    Для переноса данных между базами на MS SQL Server можно использовать SQL-скрипты с командой INSERT INTO. Однако этот метод требует точного знания структуры таблиц (например, _Reference123 для справочника с UID = {123...}).

    6. Способ 5: Синхронизация через РИБ (Распределённая Информационная База)

    Если вам нужно не просто скопировать справочник один раз, а поддерживать его актуальность в нескольких базах, оптимальное решение — настройка РИБ (Распределённой Информационной Базы). Этот механизм встроен в платформу 1С:Предприятие и позволяет автоматически синхронизировать изменения между узлами.

    Пошаговая настройка РИБ:

    1. В главной базе (центральном узле) откройте Администрирование → Распределённые информационные базы.

    2. Создайте новый план обмена (например, ОбменСФилиалами).

    3. Добавьте в план обмена нужные справочники (например, Контрагенты, Номенклатура).

    4. Настройте правила обмена:

    - Укажите, какие реквизиты синхронизировать.

    - Задайте периодичность обмена (например, Каждый час).

    5. В дочерней базе подключитесь к центральному узлу через Администрирование → Подключение к распределённой базе.

    6. Запустите начальную синхронизацию.

    Преимущества РИБ:

    ✔️ Автоматическое обновление данных без ручного вмешательства.

    ✔️ Поддержка конфликтов изменений (можно настроить правила разрешения).

    ✔️ Возможность выборочной синхронизации (например, только справочников, без документов).

    Недостатки:

    ❌ Сложная настройка для новичков (требуется понимание планов обмена и узлов РИБ).

    ❌ При большом количестве узлов (более 5) может снижаться производительность.

    ❌ Не все конфигурации поддерживают РИБ"из коробки" (например, в 1С:ЗУП может потребоваться доработка).

    ⚠️ Внимание: При использовании РИБ убедитесь, что в дочерних базах отключены права на изменение синхронизируемых справочников для пользователей. В противном случае возможны конфликты версий объектов.

    7. Типичные ошибки и их решение

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

    Ошибка Причина Решение
    "Не найден объект метаданных" В целевой базе отсутствует справочник с таким именем или он имеет другой UID. Создайте справочник вручную в целевой базе или используйте обработку с функцией автоматического создания объектов.
    "Нарушение ссылочной целостности" Переносимые элементы справочника ссылаются на другие объекты (например, Подразделения), которых нет в целевой базе. Перенесите сначала зависимые справочники или настройте замену ссылок в обработке.
    "Ошибка контроля версии" Конфигурация целевой базы находится на поддержке и блокирует изменения метаданных. Снимите базу с поддержки (Конфигурация → Поддержка → Настройка поддержки).
    "Превышен лимит памяти" Выгрузка слишком большого справочника (более 100 000 записей) в одном файле. Разбейте выгрузку на части по фильтру (например, по первым буквам наименования).
    "Нет прав на операцию" У пользователя недостаточно прав для выгрузки/загрузки данных. Выдайте роль Администратор или Полные права на время переноса.

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

    - Используйте обработку с функцией слияния дублей (объединения по ключевым реквизитам).

    - Очистите целевой справочник перед загрузкой (но это удалит все существующие данные!).

    Для диагностики сложных ошибок включите режим отладки в конфигураторе (Сервис → Параметры → Отладка) и просмотрите журнал регистрации (Администрирование → Журнал регистрации).

    8. Сравнение методов: какой выбрать для вашей задачи

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

    Критерий Стандартная выгрузка/загрузка XML Конфигуратор Внешние обработки Программный код РИБ
    Объём данных До 10 000 записей До 5 000 записей До 50 000 записей Неограниченно Неограниченно
    Частота переноса Разовый Разовый Разовый/регулярный Регулярный Постоянная синхронизация
    Требуемые навыки Базовые Средние (знание конфигуратора) Средние (настройка обработки) Продвинутые (программирование) Продвинутые (настройка РИБ)
    Сохранение связей Да Частично Да (настраивается) Да (реализуется в коде) Да
    Поддержка разных конфигураций Да (если структуры совпадают) Нет Да (с настройкой правил) Да Ограниченно

    Рекомендации по выбору:

    - Для разового переноса небольшого справочника между базами с одинаковыми конфигурациями подойдёт стандартная выгрузка в XML.

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

    - Для регулярного обмена между филиалами настройте РИБ.

    - Если справочники сильно отличаются по структуре, напишите собственный код или используйте внешнюю обработку с настройкой правил преобразования.

    💡

    Для переноса справочников между 1С:УТ 10.3 и 1С:ERP 2 фирма 1С рекомендует использовать специализированную обработку "Перенос данных из УТ 10.3 в ERP 2", которая учитывает различия в структурах конфигураций.

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

    Можно ли перенести справочник между базами с разными версиями платформы (например, 8.2 и 8.3)?

    Да, но с оговорками:

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

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

    - Перенос через Конфигуратор между разными версиями платформы не поддерживается.

    Как перенести справочник вместе с историей изменений (кто и когда создавал/редактировал элементы)?

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

    - SQL-запросы к таблицам _DocLog123 (где 123 — UID справочника), если базы на MS SQL.

    - Специализированные обработки, например, "Выгрузка истории изменений" от партнёров 1С.

    - РИБ — при синхронизации история изменений переносится автоматически.

    Что делать, если после переноса в справочнике пропали некоторые реквизиты?

    Причины и решения:

    - Реквизиты не были отмечены при выгрузке: проверьте настройки выгрузки и повторите процесс.

    - В целевой базе отсутствуют реквизиты: добавьте их вручную через Конфигуратор или используйте обработку с функцией создания недостающих реквизитов.

    - Ограничения по правам: убедитесь, что у пользователя есть права на чтение/запись всех реквизитов.

    - Ошибка преобразования типов: например, если в исходной базе реквизит имеет тип Строка, а в целевой — Число. В этом случае потребуется преобразование данных в обработке или коде.

    Как перенести справочник из 1С в Excel и обратно?

    Для обмена данными с Excel используйте:

    - Стандартный механизм: Файл → Открыть → Выгрузить данные в Excel (доступно в режиме 1С:Предприятие).

    - Обработка"ВыгрузкаВExcel.epf" — позволяет гибко настраивать столбцы и фильтры.

    - Обратная загрузка: используйте обработку "Загрузка из