Выгрузка справочника номенклатуры из 1С:Предприятие — одна из самых востребованных операций при миграции данных, интеграции с внешними системами или аналитике. Без корректного экспорта товаров, услуг и материалов невозможно синхронизировать складской учет с маркетплейсами, CRM или бухгалтерскими программами. Однако даже опытные пользователи сталкиваются с проблемами: от отсутствия нужных полей в выгруженном файле до ошибок при конвертации в XML или Excel.
В этой статье мы разберем 5 проверенных способов выгрузки — от стандартных инструментов платформы до программного кода на 1С:Предприятие 8.3. Вы узнаете, как сохранить иерархию групп, выгрузить дополнительные реквизиты (артикулы, штрихкоды, цены) и избежать типичных ошибок при работе с большими справочниками (10 000+ позиций). Особое внимание уделим форматам Excel, XML и JSON, а также интеграции с 1С:УТ, 1С:ERP и 1С:Бухгалтерия.
Если вам нужно перенести номенклатуру в другую базу, обновить данные на сайте или передать их партнерам — здесь вы найдете готовые решения с пошаговыми скриншотами и примерами кода. Для удобства мы разделили инструкции по уровням сложности: от ручных операций для начинающих до автоматизированных скриптов для разработчиков.
1. Стандартная выгрузка через «Универсальный обмен данными»
Самый простой способ выгрузить номенклатуру — использовать встроенный механизм «Универсальный обмен данными», доступный в большинстве конфигураций 1С (УТ 11, ERP 2, Бухгалтерия 3.0). Этот метод не требует программирования и подходит для разовых операций.
Чтобы начать, откройте раздел Администрирование → Обмен данными → Универсальный обмен данными. Далее:
- 📁 Выберите «Справочники» в списке объектов обмена.
- 🔍 Найдите «Номенклатура» и отметьте её галочкой.
- 📥 Укажите формат выгрузки:
XML(рекомендуется для интеграций) илиTXT(для простых задач). - 💾 Сохраните файл в удобную папку, указав кодировку
UTF-8(важно для кириллических символов!).
Преимущество этого метода — сохранение иерархии групп номенклатуры и базовых реквизитов (наименование, артикул, единица измерения). Однако в выгруженном файле не будет дополнительных полей (например, штрихкодов или фотографий), если они не включены в шаблон обмена.
⚠️ Внимание: В конфигурациях 1С:УТ 10.3 и старше путь к универсальному обмену может отличаться. Если не находите раздел, проверьте права доступа или используйте альтернативный метод через Все функции (см. раздел 3).
2. Выгрузка в Excel через «Отчеты и обработки»
Если вам нужен файл Excel с возможностью фильтрации и дополнительной обработки, используйте внешние обработки или стандартные отчеты. Этот способ подходит для аналитики и ручного редактирования данных.
Инструкция для 1С:Управление торговлей 11:
- Перейдите в
Отчеты → Справочники → Номенклатура. - Нажмите
Ещё → Вывести список(илиВсе действия → Вывести списокв некоторых версиях). - В открывшемся окне настройте колонки: добавьте артикул, штрихкод, группу номенклатуры и другие нужные поля.
- Нажмите
Ещё → Выгрузить в Excelи сохраните файл.
Для более гибкой настройки используйте внешнюю обработку «ВыгрузкаВExcel.epf» (можно скачать с сайта 1С-ИТС или форумов). Она позволяет:
- 📊 Выгружать данные с сохранением форматирования (цвета, шрифты).
- 🔄 Обновлять существующие файлы, не пересоздавая их.
- 📌 Фиксировать шапку таблицы для удобства работы.
| Формат | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
XML |
Сохраняет структуру данных, подходит для интеграций | Сложно редактировать вручную | Обмен с другими системами (CRM, сайты) |
Excel |
Удобно для анализа, фильтрации, ручного редактирования | Может терять иерархию групп | Отчетность, правка данных |
JSON |
Легковесный формат для веб-приложений | Не поддерживается стандартными средствами 1С | Интеграция с API |
Если при выгрузке в Excel русские буквы отображаются как "кракозябры", проверьте кодировку файла. В настройках обработки укажите UTF-8 или Windows-1251 (в зависимости от версии Excel).
3. Программная выгрузка через запрос и объект «ЗаписьXML»
Для автоматизации или выгрузки больших объемов данных (например, 50 000+ позиций) используйте встроенный язык 1С. Этот метод требует базовых знаний программирования, но дает полный контроль над структурой выходного файла.
Пример кода для выгрузки номенклатуры в XML:
Процедура ВыгрузитьНоменклатуруВXML()
// Создаем объект записи XML
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Export\Номенклатура.xml", "UTF-8");
// Записываем заголовок
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Номенклатура");
// Выбираем данные запросом
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.Штрихкод КАК Штрихкод
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Записываем каждую позицию
Пока Выборка.Следующий() Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Позиция");
ЗаписьXML.ЗаписатьАтрибут("Ид", Выборка.Ссылка.УникальныйИдентификатор());
ЗаписьXML.ЗаписатьЭлемент("Наименование", Выборка.Наименование);
ЗаписьXML.ЗаписатьЭлемент("Артикул", Выборка.Артикул);
ЗаписьXML.ЗаписатьЭлемент("Штрихкод", Выборка.Штрихкод);
ЗаписьXML.ЗаписатьКонецЭлемента(); // Позиция
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Номенклатура
ЗаписьXML.Закрыть();
КонецПроцедуры
Этот скрипт выгрузит:
- 🔗 Уникальные идентификаторы (для последующей синхронизации).
- 📛 Наименования, артикулы и штрихкоды.
- 📂 Структуру XML, совместимую с большинством систем обмена.
Для выгрузки в Excel замените ЗаписьXML на ЗаписьДанныхExcel (доступно в 1С:Предприятие 8.3.10+). Пример:
ЗаписьExcel = Новый ЗаписьДанныхExcel;
ЗаписьExcel.ОткрытьФайл("C:\Export\Номенклатура.xlsx");
ЗаписьExcel.ЗаписатьСтроку("Наименование", "Артикул", "Штрихкод");
// ... запрос и запись данных
ЗаписьExcel.Закрыть();
⚠️ Внимание: При выгрузке больших справочников (100 000+ строк) разбейте процесс на пакеты по 10 000 записей, чтобы избежать переполнения памяти. Используйте конструкцию Пределы.Память() для контроля.
Создать резервную копию базы|Проверить права доступа к папке экспорта|Определить список выгружаемых полей|Тестировать на небольшой выборке данных-->
4. Выгрузка с помощью внешних обработок (например, «Универсальный обмен данными 2.0»)
Для регулярного обмена данными удобно использовать внешние обработки, такие как:
- 📦 «Универсальный обмен данными 2.0» (от фирмы 1С).
- 🔄 «Конвертация данных» (для сложных трансформаций).
- 📤 «Выгрузка в Excel/Word» (от партнеров 1С).
Рассмотрим работу с «Универсальный обмен данными 2.0»:
- Скачайте обработку с портала 1С-ИТС и подключите её через
Файл → Открыть. - В настройках выберите «Номенклатура» как объект обмена.
- Укажите формат выгрузки (
XML,JSONилиExcel). - Настройте правила отбора (например, выгружать только активные позиции).
- Запустите выгрузку и сохраните файл.
Преимущества этого метода:
- 🔧 Гибкая настройка полей (можно добавить пользовательские реквизиты).
- 📅 Возможность создать расписание автоматической выгрузки.
- 🔄 Поддержка двусторонней синхронизации (выгрузка + загрузка изменений).
Обработка «Конвертация данных» подходит для сложных трансформаций, например, когда нужно:
- 🔄 Преобразовать структуру данных под требования другой системы.
- 📊 Объединить несколько справочников в один файл.
- 🔍 Применить фильтры (например, выгрузить только товары определенной группы).
Как выгрузить изображения номенклатуры?
Для выгрузки фотографий товаров используйте обработку "ВыгрузкаИзображенийНоменклатуры" (доступна на Инфостарте). Она сохраняет картинки в отдельную папку и привязывает их к позициям в XML/Excel через пути к файлам. Важно: изображения должны быть загружены в справочник заранее (поле "Картинка" или "Изображение").
5. Выгрузка через COM-соединение и внешние скрипты (Python, PowerShell)
Для интеграции с внешними системами (например, 1С + Python или 1С + PowerShell) используйте COM-соединение. Этот метод требует знаний программирования, но позволяет полностью автоматизировать обмен данными.
Пример скрипта на Python с использованием библиотеки pywin32:
import win32com.client
Подключаемся к базе 1С
v8 = win32com.client.Dispatch("V83.ComConnector")
base = v8.Connect("File=C:\Bases\Trade;Usr=Администратор")
Получаем справочник номенклатуры
catalog = base.Sправочники.Номенклатура
selection = catalog.Выбрать()
Выгружаем данные в CSV
with open("nomenklatura.csv", "w", encoding="utf-8") as f:
f.write("Наименование;Артикул;Штрихкод\n")
while selection.Next():
item = selection.GetObj()
f.write(f"{item.Наименование};{item.Артикул};{item.Штрихкод}\n")
print("Выгрузка завершена!")
Для PowerShell логика аналогична:
$v8 = New-Object -ComObject V83.ComConnector
$base = $v8.Connect("File=C:\Bases\Trade;Usr=Администратор")
$catalog = $base.Справочники.Номенклатура
$selection = $catalog.Выбрать()
$output = @()
while ($selection.Next()) {
$item = $selection.GetObj()
$output += [PSCustomObject]@{
Наименование = $item.Наименование
Артикул = $item.Артикул
Штрихкод = $item.Штрихкод
}
}
$output | Export-Csv -Path "C:\Export\nomenklatura.csv" -Encoding UTF8 -Delimiter ";"
Преимущества этого подхода:
- 🤖 Полная автоматизация (можно запускать по расписанию через Планировщик задач).
- 🔗 Интеграция с любыми системами (CRM, ERP, веб-сервисы).
- 📊 Возможность предварительной обработки данных (например, очистка артикулов).
⚠️ Внимание: При использовании COM-соединения убедитесь, что на компьютере установлена платформа 1С:Предприятие 8.3 и пользователь имеет права на доступ к базе через OLE.
6. Решение типичных ошибок при выгрузке
Даже при правильной настройке выгрузки пользователи сталкиваются с ошибками. Рассмотрим самые частые проблемы и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Файл пустой или содержит некорректные данные | Неверные настройки фильтра или прав доступа | Проверьте права пользователя и параметры отбора в запросе |
| Русские символы отображаются как "???" | Неверная кодировка файла | Укажите UTF-8 при сохранении |
| Ошибка "Недостаточно памяти" | Слишком большой объем данных | Разбейте выгрузку на части по 5 000–10 000 записей |
| Не выгружаются дополнительные реквизиты | Поля не включены в запрос или шаблон | Добавьте реквизиты в текст запроса или настройте обработку |
Если при выгрузке в Excel возникает ошибка «Файл поврежден», попробуйте:
- 📂 Сохранить файл в формате
.xlsxвместо.xls. - 🔄 Использовать обработку «ВыгрузкаВExcel» вместо стандартных средств.
- 📋 Открыть файл через LibreOffice Calc (иногда справится там, где Excel выдает ошибку).
Для ошибок при работе с XML проверьте:
- 🔍 Корректность структуры (открывающие/закрывающие теги).
- 📌 Наличие специальных символов (&, <, >) — они должны быть экранированы (
<,>). - 📡 Кодировку файла (рекомендуется
UTF-8).
Перед массовой выгрузкой всегда тестируйте процесс на небольшой выборке данных (10–20 позиций). Это поможет избежать ошибок при работе с полным справочником.
FAQ: Частые вопросы по выгрузке номенклатуры
Как выгрузить номенклатуру с иерархией групп?
Для сохранения иерархии используйте XML-формат с указанием родительских групп. В запросе добавьте поле Номенклатура.Родитель, а при выгрузке рекурсивно обрабатывайте вложенные элементы. Пример кода:
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Родитель КАК Родитель
|ИЗ
| Справочник.Номенклатура КАК Номенклатура"
В обработчике проверяйте Родитель и стройте дерево категорий.
Можно ли выгрузить номенклатуру с ценами и остатками?
Да, но для этого нужно объединить данные из нескольких таблиц. Пример запроса:
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| ЦеныНоменклатуры.Цена КАК Цена,
| РегистрыНакопления.ОстаткиТоваров.КоличествоОстаток КАК Остаток
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО Номенклатура.Ссылка = ЦеныНоменклатуры.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров КАК РегистрыНакопления.ОстаткиТоваров
| ПО Номенклатура.Ссылка = РегистрыНакопления.ОстаткиТоваров.Номенклатура"
Учтите, что остатки зависят от текущей даты — укажите её в параметрах запроса.
Как автоматизировать выгрузку по расписанию?
Используйте регламентные задания в 1С или внешние инструменты:
- В 1С:
Администрирование → Поддержка и обслуживание → Регламентные задания. - Создайте задание типа «Выполнение обработки» и укажите ваш скрипт выгрузки.
- Настройте расписание (например, ежедневно в 2:00).
Для внешней автоматизации подойдет Планировщик задач Windows + скрипт на PowerShell или Python.
Что делать, если выгрузка прерывается из-за большого объема данных?
Разбейте справочник на части по алфавиту или группам. Пример запроса для выгрузки по буквам:
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Наименование LIKE 'А%'" // Только на "А"
Запускайте выгрузку для каждой буквы отдельно.
Как выгрузить номенклатуру с характеристиками (размеры, цвета)?summary>
Используйте запрос с присоединением таблицы ХарактеристикиНоменклатуры:
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Номенклатура,
| ХарактеристикиНоменклатуры.Наименование КАК Характеристика,
| ХарактеристикиНоменклатуры.Значение КАК Значение
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
| ПО Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Номенклатура"
В результате получите таблицу с парами "Номенклатура — Характеристика — Значение".
ХарактеристикиНоменклатуры:Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Номенклатура,
| ХарактеристикиНоменклатуры.Наименование КАК Характеристика,
| ХарактеристикиНоменклатуры.Значение КАК Значение
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
| ПО Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Номенклатура"