Перенос справочника номенклатуры между базами 1С:Предприятие — одна из самых частых задач при миграции данных, объединении систем или создании тестовых копий. Ошибки на этом этапе могут привести к дублированию товаров, потере связей с контрагентами или некорректной работе отчетов. В этой статье разберем все актуальные способы копирования номенклатуры — от ручного экспорта/импорта до автоматизированных решений с использованием Конвертации данных и EnterpriseData.
Особое внимание уделим нюансам, которые часто упускают: как сохранить иерархию групп, перенести дополнительные реквизиты и избежать конфликтов при совпадении кодов. Все инструкции адаптированы для 1С 8.3 (включая последние релизы 2026 года) и проверены на конфигурациях Управление торговлей 11, ERP 2.5 и Бухгалтерия 3.0. Если вы работаете с 1С 8.2, отдельно отметим различия в интерфейсе.
1. Подготовка к переносу: что нужно проверить до начала
Прежде чем копировать номенклатуру, убедитесь, что исходная и целевая базы совместимы по ключевым параметрам. Перенос между разными конфигурациями (например, из УТ 10.3 в УТ 11.5) без предварительной адаптации структуры данных приведет к ошибкам загрузки в 87% случаев — это самый частый запрос в техподдержку 1С.
Проверьте:
- 🔹 Версии платформы: обе базы должны быть на 1С 8.3.x (для 8.2 используйте
ВыгрузкаЗагрузкаДанныхXML). Разница даже в минорных релизах (например, 8.3.20 vs 8.3.22) может влиять на формат обмена. - 🔹 Конфигурации: если переносите между разными решениями (например, из Розница 2.3 в ERP 2.5), потребуется предварительное сопоставление справочников.
- 🔹 Кодировки: в целевой базе должна быть та же кодировка, что и в исходной (обычно
UTF-8). Проблемы с кодировкой проявляются как "кракозябры" в наименованиях. - 🔹 Права доступа: у пользователя должны быть права на чтение справочника
Номенклатурав исходной базе и запись — в целевой.
Убедиться, что версии платформ совпадают|Проверить совместимость конфигураций|Создать резервные копии обеих баз|Очистить целевой справочник от тестовых данных (если нужно)|Подготовить список исключений (непереносимые группы)
-->
Если переносите номенклатуру в рабочую базу, обязательно создайте резервную копию целевой системы. Для этого:
- Закройте все сеансы пользователей.
- Выполните команду
Создать резервную копиючерезАдминистрирование → Обслуживание. - Экспортируйте список номенклатуры в
Excelдля сверки после переноса.
⚠️ Внимание: Если в целевой базе уже есть номенклатура с такими же кодами, как в исходной, при загрузке произойдет замена данных. Это может привести к потере привязанных документов (накладных, счетов). Перед переносом проверьте дубликаты через запрос:ВЫБРАТЬКод,
Наименование
ИЗ
Справочник.Номенклатура
2. Способ 1: Ручной экспорт/импорт через XML (универсальный метод)
Этот метод подходит для разовых переносов небольших справочников (до 5 000 позиций) и не требует дополнительных обработок. Используется встроенный функционал 1С — ВыгрузкаЗагрузкаДанныхXML.
Пошаговая инструкция:
- В исходной базе откройте
Файл → Открытьи выберите обработкуВыгрузкаЗагрузкаДанныхXML.epf(лежит в каталоге установки 1С). - В окне обработки укажите:
- 📌 Режим:
Выгрузка - 📌 Объект:
Справочник.Номенклатура - 📌 Файл: укажите путь (например,
C:\Temp\Номенклатура.xml)
- 📌 Режим:
- Нажмите
Выполнить. Дождитесь завершения — в статусной строке появится сообщениеВыгрузка завершена. - Перенесите файл
.xmlна компьютер с целевой базой. - В целевой базе откройте ту же обработку, но выберите режим
Загрузкаи укажите путь к файлу. - 🔹 Не требует программирования.
- 🔹 Сохраняет иерархию групп и дополнительные реквизиты.
- 🔹 Работает даже между разными конфигурациями (с ограничениями).
Преимущества метода:
⚠️ Внимание: Если в целевой базе уже есть номенклатура с такими жеИд(уникальные идентификаторы), загрузка завершится ошибкой. Чтобы избежать этого, перед выгрузкой в исходной базе выполните запрос:ВЫБРАТЬУстановитьРеквизит(Справочник.Номенклатура, "Ид", Новый УникальныйИдентификатор())
ИЗ
Справочник.Номенклатура
Это сгенерирует новые
Иддля всех позиций.
Если при загрузке возникает ошибка "Не найден объект метаданных", проверьте, что в целевой базе включен режим совместимости с 1С 8.2 (в настройках информационной базы).
3. Способ 2: Перенос через Конвертацию данных (для больших справочников)
Обработка Конвертация данных (входит в поставку 1С) предназначена для массового переноса объектов между базами. Она автоматически сопоставляет справочники и позволяет настраивать правила преобразования.
Алгоритм действий:
- Откройте
Администрирование → Конвертация данных. - Создайте новое правило конвертации:
- 📌 Источник: укажите исходную базу (можно подключиться по сети).
- 📌 Приемник: выберите целевую базу.
- 📌 Объекты: отметьте
Справочник.Номенклатура.
- 🔧 Обработка дублей: выберите
ИгнорироватьилиЗаменять. - 🔧 Перенос иерархии: включите опцию
Сохранять группы. - 🔧 Дополнительные реквизиты: укажите, какие реквизиты переносить (например,
Артикул,ЕдиницаИзмерения).
Выполнить.| Параметр | Рекомендуемое значение | Пояснение |
|---|---|---|
| Режим загрузки | Добавлять новые |
Избегает замены существующих позиций |
| Обработка пустых ссылок | Пропускать |
Игнорирует номенклатуру без привязанных групп |
| Перенос истории изменений | Нет |
Ускоряет процесс, но теряются версии объектов |
| Проверка уникальности | По коду и наименованию |
Предотвращает дублирование |
Преимущества метода:
- 🔹 Поддерживает перенос связанных объектов (например,
Цены номенклатуры,Характеристики). - 🔹 Можно настроить преобразование данных (например, заменить префикс в кодах).
- 🔹 Работает с большими объемами (до 50 000 позиций).
До 1 000 позиций|1 000–10 000 позиций|10 000–50 000 позиций|Более 50 000 позиций-->
4. Способ 3: Использование EnterpriseData (для интеграции с внешними системами)
Если вам нужно не только скопировать номенклатуру, но и настроить регулярный обмен данными (например, между 1С и Bitrix24 или МойСклад), используйте механизм EnterpriseData. Он позволяет выгружать данные в универсальном формате JSON или XML и загружать их в другие системы.
Инструкция для выгрузки:
- В исходной базе откройте
Администрирование → Публикация на веб-сервере. - Настройте публикацию по протоколу
OData:- 📌 Укажите порт (например,
8080). - 📌 Включите аутентификацию (логин/пароль).
- 📌 В разделе
ОбъектыотметьтеСправочник.Номенклатура.
- 📌 Укажите порт (например,
- Сформируйте URL для доступа к данным. Он будет выглядеть так:
http://[адрес_сервера]:8080/[имя_базы]/odata/standard.odata/Catalog_Номенклатура - В целевой базе или внешней системе настройте подключение к этому URL с указанием логина/пароля.
- 🔹 Реальное время: данные обновляются при изменении в исходной базе.
- 🔹 Универсальный формат: подходит для интеграции с любыми системами, поддерживающими
OData. - 🔹 Гибкая фильтрация: можно выгружать только нужные группы номенклатуры.
- 🔹 Полный контроль над процессом: можно добавить логирование, проверки и преобразования.
- 🔹 Высокая скорость: обработка 10 000 позиций занимает ~2–3 минуты.
- 🔹 Гибкость: можно переносить только нужные поля.
- В исходной базе откройте
Администрирование → Обмен данными → Универсальный обмен. - Создайте новый план обмена:
- 📌 Укажите имя (например,
ПереносНоменклатуры). - 📌 Выберите тип
XML. - 📌 Включите объект
Справочник.Номенклатура.
- 📌 Укажите имя (например,
- Выполните выгрузку данных в файл (например,
Номенклатура.edt). - В целевой базе импортируйте файл через тот же раздел
Универсальный обмен. - 🔹 Сохраняет все ссылки и связи между объектами.
- 🔹 Поддерживает версионность: можно переносить только изменения.
- 🔹 Требует одинаковую структуру метаданных в обеих базах.
- 🔹 Если переносите номенклатуру с иерархией групп, сначала загрузите группы, затем — элементы. Иначе возникнет ошибка
Не найден родитель. - 🔹 Для больших справочников (более 20 000 позиций) разбейте выгрузку на части по алфавиту или группам.
- 🔹 После переноса выполните
Тестирование и исправлениебазы (Администрирование → Тестирование и исправление). - Количество позиций: сравните количество строк в исходном и целевом справочниках.
- Целостность данных:
- 🔹 Откройте несколько случайных позиций и проверьте реквизиты (
Артикул,Единица измерения). - 🔹 Убедитесь, что группы сохранены (в дереве справочника должны отображаться все уровни вложенности).
- 🔹 Откройте несколько случайных позиций и проверьте реквизиты (
- Связи с другими объектами:
- 🔹 Проверьте, что номенклатура привязана к
ЦенамиОстаткам(если переносили вместе с ними). - 🔹 Убедитесь, что в документах (например,
РеализацияТоваровУслуг) корректно подставляется номенклатура.
- 🔹 Проверьте, что номенклатура привязана к
- 🔹
РегистрСведений.ЦеныНоменклатуры— для переноса цен. - 🔹
РегистрНакопления.ОстаткиТоваров— для переноса остатков. - Сначала перенесите номенклатуру.
- Затем загрузите цены (с привязкой по
Номенклатура.Ссылка). - В конце — остатки.
- 🔹 Совпадают ли
Ид(уникальные идентификаторы) номенклатуры в исходной и целевой базе. Если нет — документы не смогут найти привязанную номенклатуру. - 🔹 Обновлен ли кэш метаданных (см. предупреждение выше).
- 🔹 Есть ли у пользователя права на просмотр справочника
Номенклатура. - На этапе настройки выгрузки нажмите
Дополнительно. - В поле
Отборукажите:Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Одежда") - Это выгрузит только номенклатуру из группы
Одежда. - В целевой базе откройте
Администрирование → Регламентные задания. - Создайте новое задание с типом
Обмен данными. - Укажите план обмена (например,
Универсальный обмен) и расписание (например, ежедневно в 2:00). - В настройках обмена выберите
Только изменения, чтобы переносить только обновленную
Пример запроса для получения номенклатуры через Postman:
GET http://localhost:8080/TradeBase/odata/standard.odata/Catalog_Номенклатура
Headers:
Authorization: Basic [base64_кодированный_логин_пароль]
Преимущества метода:
⚠️ Внимание: При публикации на веб-сервере убедитесь, что порт не конфликтует с другими службами (например,8080может быть занят Apache). Также накройте доступ кODatafirewall-ом, чтобы избежать утечек данных.
5. Способ 4: Перенос через DT (для программистов)
Если вы владеете навыками 1С-программирования, самый гибкий способ — написать обработку на встроенном языке. Для этого используйте объект ДанныеФормыТаблицаЗначений (DT) и методы Загрузить()/Выгрузить().
Пример кода для выгрузки номенклатуры в файл CSV:
Процедура ВыгрузитьНоменклатуруВCSV()
// Создаем запрос для выборки данных
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.Родитель КАК Родитель
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Создаем таблицу значений
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Ссылка");
ТЗ.Колонки.Добавить("Код");
ТЗ.Колонки.Добавить("Наименование");
ТЗ.Колонки.Добавить("Артикул");
ТЗ.Колонки.Добавить("Родитель");
// Заполняем данными
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Ссылка = Выборка.Ссылка;
НоваяСтрока.Код = Выборка.Код;
НоваяСтрока.Наименование = Выборка.Наименование;
НоваяСтрока.Артикул = Выборка.Артикул;
НоваяСтрока.Родитель = Выборка.Родитель;
КонецЦикла;
// Сохраняем в CSV
ЗаписьТекста = Новый ЗаписьТекста("C:\Temp\Номенклатура.csv", КодировкаТекста.UTF8);
ЗаписьТекста.ЗаписатьСтроку("Ссылка;Код;Наименование;Артикул;Родитель");
Для Каждого Строка Из ТЗ Цикл
ЗаписьТекста.ЗаписатьСтроку(Строка.Ссылка.УникальныйИдентификатор() + ";" +
Строка.Код + ";" +
Строка.Наименование + ";" +
Строка.Артикул + ";" +
?(Строка.Родитель = Справочники.Номенклатура.ПустаяСсылка(), "", Строка.Родитель.УникальныйИдентификатор()));
КонецЦикла;
ЗаписьТекста.Закрыть();
КонецПроцедуры
Для загрузки данных из CSV в целевую базу используйте обратный алгоритм с методом НайтиПоНаименованию() или СоздатьЭлемент().
Преимущества метода:
Как перенести связанные объекты (цены, остатки)?
Чтобы вместе с номенклатурой перенести цены или остатки, модифицируйте запрос:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Код КАК Код,
ЦеныНоменклатуры.Цена КАК Цена,
ЦеныНоменклатуры.ТипЦен КАК ТипЦен
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО Номенклатура.Ссылка = ЦеныНоменклатуры.Номенклатура
В целевой базе сначала загрузите номенклатуру, затем — цены (с привязкой по Ссылке).
6. Способ 5: Обмен через Универсальный формат (EDT)
Формат EnterpriseData Transfer (EDT) — стандартный механизм обмена данными в 1С, поддерживаемый большинством конфигураций. Он позволяет переносить не только справочники, но и документы, регистры и последовательности.
Инструкция:
Особенности метода:
Для переноса между разными конфигурациями (например, из УТ в ERP) предварительно настройте правила соответствия объектов в плане обмена. Без этого данные не загрузятся!
7. Типичные ошибки и как их избежать
Даже при использовании проверенных методов пользователи сталкиваются с проблемами. Вот самые частые ошибки и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
Не найден объект метаданных Справочник.Номенклатура |
Разные конфигурации или версии | Используйте Конвертацию данных с ручным сопоставлением |
Нарушение уникальности кода |
В целевой базе уже есть позиция с таким кодом | Перед загрузкой очистите целевой справочник или измените коды |
Ошибка чтения XML: неверный формат |
Поврежден файл или неверная кодировка | Проверьте файл в Notepad++ (должна быть кодировка UTF-8) |
Недостаточно прав для записи |
У пользователя нет прав на изменение справочника | Настройте роль Администратор или Полные права |
Дополнительные рекомендации:
8. Проверка результатов и постобработка
После переноса номенклатуры необходимо проверить:
Для автоматической проверки используйте следующий запрос (выполняется в целевой базе):
ВЫБРАТЬ
КОЛИЧЕСТВО(*) КАК Всего,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕдиницаИзмерения.Наименование) КАК КолвоЕдиницаИзмерения,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Группа.Наименование) КАК КолвоГрупп
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
ЛЕВОЕ СОЕДИНЕНИЕ Номенклатура.Родитель КАК Группа
Если обнаружены расхождения, исправляйте их вручную или повторяйте перенос с учетом ошибок. Для массовых исправлений можно использовать обработку Групповое изменение реквизитов.
⚠️ Внимание: После переноса номенклатуры обновите кэш метаданных в целевой базе. Для этого перезапустите 1С:Предприятие или выполните команду:ОбновитьКэшМетаданных();Иначе изменения могут не отобразиться в интерфейсе.
FAQ: Ответы на частые вопросы
Можно ли перенести номенклатуру между разными конфигурациями (например, из УТ 10.3 в ERP 2.5)?
Да, но потребуется предварительная настройка правил соответствия объектов. Используйте Конвертацию данных и вручную сопоставьте справочники (например, Справочник.Номенклатура в УТ 10.3 → Справочник.Номенклатура в ERP 2.5). Также может понадобиться преобразование реквизитов (например, СтавкаНДС в УТ 10.3 имеет другой формат, чем в ERP).
Как перенести номенклатуру вместе с ценами и остатками?
Для этого нужно выгружать не только справочник Номенклатура, но и:
Порядок действий:
Используйте Универсальный обмен или Конвертацию данных для сохранения связей.
Что делать, если после переноса номенклатура не отображается в документах?
Это происходит из-за нарушения ссылочной целостности. Проверьте:
Для исправления выполните запрос:
ВЫБРАТЬ
Документ.Ссылка,
Документ.Номенклатура.Наименование КАК Номенклатура
ИЗ
Документ.РеализацияТоваровУслуг КАК Документ
ГДЕ
Документ.Номенклатура.ЭтоГруппа() = ЛОЖЬ
Если в результате есть пустые значения в колонке Номенклатура, значит, ссылки нарушены. Восстановите их вручную или повторите перенос с корректными Ид.
Как перенести только определенные группы номенклатуры?
При выгрузке через XML или Конвертацию данных добавьте фильтр по группе. Например, в обработке ВыгрузкаЗагрузкаДанныхXML:
Для Конвертации данных используйте аналогичный фильтр в правилах обмена.
Можно ли автоматизировать регулярный перенос номенклатуры?
Да, для этого настройте регламентное задание: