Перенос справочников между базами 1С:Предприятие — одна из самых востребованных задач при миграции данных, объединении информационных систем или синхронизации рабочих и тестовых контуров. Даже опытные пользователи сталкиваются с нюансами: от потери связей между объектами до ошибок при загрузке из-за различий в структурах конфигураций. Эта статья охватывает все актуальные способы копирования справочников — от стандартных инструментов платформы до специализированных обработок, с подробными инструкциями и предупреждениями о типичных ошибках.
Мы разберём не только техническую сторону процесса, но и критерии выбора метода: когда достаточно встроенной выгрузки в XML, а когда потребуется внешняя обработка или программный код. Особое внимание уделено сохранению иерархии справочников, реквизитов и табличных частей — тех аспектов, которые часто упускают в упрощённых руководствах. Если вы ищете решение для конкретной версии платформы (например, 1С:Предприятие 8.3.22) или типа конфигурации (Управление торговлей 11, Бухгалтерия 3.0), в статье есть сравнительная таблица совместимости методов.
Прежде чем приступать к переносу, убедитесь, что у вас есть резервные копии обеих баз — источника и приёмника. Даже при использовании проверенных методов всегда существует риск потери данных из-за несовпадения версий конфигураций или неучтённых зависимостей между объектами.
1. Подготовка к переносу: что нужно проверить перед копированием
Непродуманный перенос справочников может привести к потере ссылочной целостности — когда документы в базе-приёмнике ссылаются на несуществующие элементы справочника. Чтобы избежать этого, выполните предварительные шаги:
- 🔍 Сравните структуры справочников в исходной и целевой базе: совпадают ли реквизиты, табличные части, формы. Используйте отчёт
Сравнение конфигурацийв конфигураторе. - 📋 Определите объём данных: если справочник содержит более 10 000 записей, стандартная выгрузка в
XMLможет занять часы. Для больших объёмов лучше использовать регламентные задания. - 🔗 Проверьте зависимости: какие документы или регистры ссылаются на элементы справочника. Например, перенос
Номенклатурыпотребует синхронизации остатков в регистреТоварыНаСкладах. - 🛡️ Создайте контрольные точки: сделайте архивные копии баз (через
1CV8.exe /DumpIB) или снапшоты виртуальных машин, если используете 1С на сервере.
Особое внимание уделите идентификаторам объектов. Если в целевой базе уже есть справочник с таким же именем, но другими UID, при загрузке возникнут конфликты. В этом случае потребуется либо очистка целевого справочника, либо использование обработки с функцией слияния по ключевым реквизитам (например, по Артикулу или Наименованию).
⚠️ Внимание: Если целевая база находится на управляемом приложении (тонкий клиент), некоторые методы переноса (например, через Конфигуратор) будут недоступны без прав администратора сервера 1С:Предприятие.
2. Способ 1: Стандартная выгрузка и загрузка через XML
Самый универсальный метод, работающий во всех конфигурациях на платформе 1С:Предприятие 8.3. Подходит для одноразового переноса небольших справочников (до 5 000 записей). Алгоритм:
- Откройте исходную базу в режиме
1С:Предприятие. - Перейдите в раздел
Администрирование → Выгрузка и загрузка данных → Выгрузка данных. - Выберите нужный справочник (например,
Контрагенты) и настройте параметры выгрузки:- 📌 Формат:
XML(рекомендуется) илиTXT(для совместимости со старыми версиями). - 📌 Глубина выгрузки: если справочник иерархический (например,
Номенклатура), отметьтеВыгружать подчинённые элементы. - 📌 Дополнительные реквизиты: включите галочки для табличных частей и реквизитов, которые нужно перенести.
- 📌 Формат:
C:\Temp\Контрагенты.xml).Администрирование → Загрузка данных, выберите файл и запустите процесс.Преимущества метода:
✅ Не требует прав доступа к конфигуратору.
✅ Сохраняет иерархию и большинство связей между объектами.
✅ Работает даже при разных версиях конфигураций (если структуры справочников совпадают).
Недостатки:
❌ Медленная обработка больших объёмов данных (более 10 000 записей).
❌ Не переносит права доступа на элементы справочника.
❌ Может возникнуть ошибка "Не найден объект метаданных", если в целевой базе отсутствует справочник с таким именем.
| Параметр | Значение для выгрузки | Значение для загрузки |
|---|---|---|
| Формат файла | XML (рекомендуется) |
XML или TXT |
| Кодировка | UTF-8 (по умолчанию) |
Автоопределение |
| Обработка ошибок | Пропускать | Прерывать или Пропускать |
| Сохранять связи | Да | Да (если структуры совпадают) |
Убедиться, что в целевой базе есть справочник с таким же именем|
Проверить свободное место на диске (XML-файл может весить в 2-3 раза больше, чем данные в базе)|
Закрыть все сеансы работы с базой-приёмником|
Отключить регламентные задания на время переноса|
Сделать резервную копию целевой базы-->
3. Способ 2: Перенос через Конфигуратор (для опытных пользователей)
Этот метод даёт больше контроля над процессом, но требует знания структуры метаданных и прав доступа к конфигуратору. Подходит для переноса справочников между базами с идентичными конфигурациями или при миграции на новую версию платформы.
Инструкция:
- Откройте исходную базу в
Конфигураторе(режим1CV8.exe /Config). - Выделите нужный справочник в дереве метаданных (например,
Справочники → Контрагенты). - Нажмите
Правка → Копировать(илиCtrl+C). - Откройте целевую базу в конфигураторе и вставьте справочник (
Правка → Вставить). - Подтвердите замену объекта, если справочник уже существует.
- Выполните
Администрирование → Загрузка данных из файла, выбрав ранее сохранённыйXMLилиDT. - 📄 Обработка"ВыгрузкаЗагрузкаДанныхXML.epf" — расширенная версия стандартного механизма с поддержкой фильтров и преобразований данных.
- 🔄 "Универсальный обмен данными в формате XML" — позволяет настраивать правила соответствия полей между базами.
- 🔗 Обработки для конкретных конфигураций (например, "Перенос данных из УТ 10.3 в УТ 11").
Ключевые нюансы:
✔️ Метод позволяет переносить не только данные, но и структуру справочника (реквизиты, формы, права).
✔️ Подходит для переноса между базами с разными версиями платформы (например, с 8.2 на 8.3), если структуры совместимы.
❌ Не сохраняет ссылки на документы — только внутреннюю структуру справочника.
❌ Требует остановки всех пользовательских сеансов в целевой базе.
Если при вставке справочника возникает ошибка "Объект не найден", проверьте:
- Совпадают ли имена подсистем в конфигурациях.
- Нет ли в целевой базе расширений, блокирующих изменения метаданных.
- Достаточно ли прав у вашей учётной записи (требуется роль Администратор).
Что делать, если справочник не вставляется в конфигуратор?
Если при попытке вставить справочник появляется сообщение "Ошибка контроля версии", выполните следующие шаги:
1. В целевой базе откройте Конфигурация → Поддержка → Настройка поддержки.
2. Установите флаг Включить возможность изменения (если конфигурация на поддержке).
3. Повторите попытку вставки.
4. После успешного переноса верните конфигурацию на поддержку, если это требование лицензии.
4. Способ 3: Использование внешних обработок (например, от фирмы 1С)
Для регулярного обмена данными или переноса сложных справочников (например, Номенклатура с большим количеством реквизитов) удобнее использовать специализированные обработки. Фирма 1С и партнёры предлагают готовые решения:
Пример использования обработки ВыгрузкаЗагрузкаДанных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 записей) целесообразно написать собственный код на встроенном языке 1С или использовать 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. Однако этот метод требует точного знания структуры таблиц 1С (например, _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" — позволяет гибко настраивать столбцы и фильтры.
- Обратная загрузка: используйте обработку "Загрузка из