Экспорт справочника номенклатуры из 1С в Excel и XML

· 9 мин

Содержание

Чтобы выгрузить номенклатуру из 1С в Excel за минуту, откройте список Справочники → Номенклатура, нажмите Ещё → Вывести список, выберите нужные колонки и сохраните результат через Файл → Сохранить как → Лист Excel (*.xlsx). Этого хватает для прайса или инвентаризации.

Способ с выводом списка подойдёт не всегда. Если нужны остатки, цены и обороты — берите универсальный отчёт. Если переносите справочник в другую базу 1С — выгрузку в XML. Если справочник на сотни тысяч позиций и выгружать его надо регулярно — внешнюю обработку по расписанию. Ниже — каждый способ с точными действиями и примерами кода, плюс разбор ошибок, из-за которых у артикулов пропадают нули, а файл не открывается в Excel.

Какой способ экспорта выбрать под задачу

Методы отличаются не «удобством», а тем, что именно вы получаете на выходе. Сравните по колонке «что в файле».

СпособЧто в файлеКогда брать
Вывод списка в ExcelРеквизиты справочника: код, артикул, наименование, единицаПрайс, сверка, инвентаризация
Универсальный отчётРеквизиты + остатки, цены, обороты из регистровНужны количества и суммы
Выгрузка в XMLПолная структура объектов для переносаПеренос в другую базу 1С
Запрос в консолиЛюбой набор полей и связей по вашему тексту запросаРазовая нестандартная выборка
Внешняя обработкаТо же, что запрос, но автоматически и по расписаниюРегулярная выгрузка в файл или на обмен

Коды и артикулы в Excel норовят превратиться в числа и потерять ведущие нули (00123 станет 123). Чтобы этого не было, перед вставкой задайте формат ячеек «Текстовый» или выгружайте сразу в .mxl, а в Excel конвертируйте с указанием текстового типа столбца.

Вывод списка номенклатуры в Excel

Самый короткий путь. Работает в любой типовой конфигурации с интерфейсом «Такси» — Бухгалтерия, УТ, ЗУП, ERP, УНФ.

  1. Откройте список: Справочники → Товары и услуги → Номенклатура (в УТ 11 — НСИ и администрирование → Номенклатура).
  2. Настройте, что видно на экране. Команда Ещё → Изменить форму позволяет включить колонки Артикул, Единица, Ставка НДС, Код. В файл попадёт то, что отображается.
  3. Нажмите Ещё → Вывести список.
  4. В окне выбора отметьте колонки и тип — Табличный документ. Снимите флажки с лишних полей.
  5. Полученный табличный документ сохраните: Файл → Сохранить как, тип файла — Лист Excel (*.xlsx) или Таблица (*.mxl).

Чтобы выгрузить не весь справочник, а одну группу, встаньте на неё в дереве папок слева — список справа покажет только её содержимое, и в файл уйдёт тоже только она.

Иерархию «Вывести список» передаёт плоско: группы и элементы окажутся вперемешку, без отступов. Если структура папок важна, включите колонку Родитель — тогда в Excel по ней можно будет собрать дерево.

Для совсем небольшого списка есть ещё более короткий путь: выделите строки в списке (Ctrl+A — все), скопируйте Ctrl+C и вставьте прямо в открытый лист Excel. Переносятся видимые колонки. Способ годится на несколько десятков позиций; на тысячах строк он медленный и ненадёжный — тогда только «Вывести список ».

Ограничение всех этих приёмов — только реквизиты самого справочника. Остатков, цен и движений здесь нет: они хранятся в регистрах, а не в карточке номенклатуры, и достаются отчётом или запросом.

Выгрузка с остатками и ценами через универсальный отчёт

Когда к списку нужны количества на складах или цены из прайса, список не поможет — нужен отчёт по регистрам.

  1. Откройте Отчёты → Универсальный отчёт (в Бухгалтерии — Отчёты → Стандартные отчёты → Универсальный отчёт).
  2. В шапке выберите тип источника. Для цен — Регистр сведений → Цены номенклатуры, для остатков — Регистр накопления → Товары на складах, остатки.
  3. Кнопкой Настройки добавьте в строки Номенклатуру, в показатели — Количество или Цена.
  4. Сформируйте отчёт и сохраните результат: Ещё → Сохранить → Лист Excel.

Для готового прайс-листа в УТ и Рознице есть отдельный механизм: Склад и доставка → Сервис → Печать прайс-листа либо документ Установка цен номенклатуры с печатью. Он сразу группирует по видам цен и выгружается в Excel.

Универсальный отчёт удобен тем, что сохраняет настройку: один раз собрали колонки «код — наименование — остаток — цена», сохранили вариант и дальше формируете одной кнопкой.

Выгрузка номенклатуры в XML для переноса в другую базу

XML нужен, когда номенклатуру надо не прочитать человеку, а загрузить в другую информационную базу — например, перенести справочник из старой базы в новую той же конфигурации.

Штатный инструмент — внешняя обработка Выгрузка и загрузка данных XML (ВыгрузкаЗагрузкаДанныхXML.epf). Она идёт в составе типовых поставок и доступна подписчикам ИТС.

  1. Откройте обработку: Файл → Открыть и выберите файл .epf.
  2. На закладке выгрузки отметьте объект Справочник.Номенклатура. Галка «по ссылкам» подтянет связанные объекты — единицы измерения, виды номенклатуры.
  3. Укажите имя файла и выполните выгрузку. На выходе — один файл .xml.
  4. В базе-приёмнике откройте ту же обработку в режиме загрузки и укажите этот файл.

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

Для переноса между РАЗНЫМИ конфигурациями (например, из УТ в Бухгалтерию) простой XML не подходит — там нужна Конвертация данных (КД 2) с настроенными правилами обмена либо типовой обмен через Синхронизацию данных. Это отдельная большая тема, вручную XML от разных конфигураций не стыкуется.

Если выгружаете для стороннего сервиса или сайта, формат XML задаёт принимающая сторона. В этом случае штатная обработка не подойдёт — структуру придётся формировать своей обработкой (см. раздел про автоматизацию) или типовым обменом с сайтом (CommerceML).

Получение номенклатуры запросом через консоль

Когда нужна нестандартная выборка — только товары с заполненным артикулом, с конкретной ставкой НДС, со связью на вид номенклатуры — проще всего написать запрос. Для разовой задачи подойдёт внешняя обработка Консоль запросов (КонсольЗапросов.epf), для серверной базы — её вариант с выполнением на сервере.

Базовый текст запроса по справочнику:

ВЫБРАТЬ
    Номенклатура.Код КАК Код,
    Номенклатура.Артикул КАК Артикул,
    Номенклатура.Наименование КАК Наименование,
    Номенклатура.ЕдиницаИзмерения КАК Единица,
    Номенклатура.СтавкаНДС КАК СтавкаНДС
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.ЭтоГруппа
    И НЕ Номенклатура.ПометкаУдаления
УПОРЯДОЧИТЬ ПО
    Наименование

Условие НЕ ЭтоГруппа убирает папки, НЕ ПометкаУдаления — помеченные на удаление позиции. Результат в консоли сохраняется в Excel той же командой Вывести список из контекстного меню таблицы результата.

Запрос гибче вывода списка: к справочнику можно соединением подтянуть цены и остатки из регистров. Чтобы получить к каждой позиции актуальную цену, соедините номенклатуру со срезом последних значений регистра цен:

ВЫБРАТЬ
    Товары.Код КАК Код,
    Товары.Наименование КАК Наименование,
    Цены.Цена КАК Цена
ИЗ
    Справочник.Номенклатура КАК Товары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
    ПО Цены.Номенклатура = Товары.Ссылка
ГДЕ
    НЕ Товары.ЭтоГруппа

СрезПоследних берёт последнюю установленную цену по каждой позиции. У товаров без цены поле Цена будет пустым — это нормально для ЛЕВОГО СОЕДИНЕНИЯ. Названия реквизитов и регистров проверяйте по дереву метаданных своей конфигурации: в УТ 11 регистр цен устроен иначе, чем в Бухгалтерии, а часть реквизитов номенклатуры в разных конфигурациях называется по-разному.

Перед большой выгрузкой стоит почистить справочник: удалить дубли и помеченные позиции штатной обработкой Администрирование → Обслуживание → Поиск и удаление дублей и Удаление помеченных объектов. Иначе дубли и «мусор» уедут в файл и всплывут уже у получателя.

Автоматическая выгрузка внешней обработкой

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

Минимальная обработка, которая кладёт .xlsx на диск:

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   Номенклатура.Код КАК Код,
    |   Номенклатура.Наименование КАК Наименование,
    |   Номенклатура.Артикул КАК Артикул
    |ИЗ
    |   Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |   НЕ Номенклатура.ЭтоГруппа";

Выборка = Запрос.Выполнить().Выбрать();

ТабДок = Новый ТабличныйДокумент;
Строка = 0;
Пока Выборка.Следующий() Цикл
    Строка = Строка + 1;
    Префикс = "R" + Формат(Строка, "ЧГ=0");
    ТабДок.Область(Префикс + "C1").Текст = Выборка.Код;
    ТабДок.Область(Префикс + "C2").Текст = Выборка.Наименование;
    ТабДок.Область(Префикс + "C3").Текст = Выборка.Артикул;
КонецЦикла;

ТабДок.Записать("C:\Выгрузка\Номенклатура.xlsx", ТипФайлаТабличногоДокумента.XLSX);

Чтобы такая выгрузка шла по расписанию, в типовых конфигурациях подключите обработку как дополнительную: Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки, добавьте файл .epf с видом «Дополнительная обработка» и настройте для неё регламентное задание с нужным расписанием (например, ежедневно в 6:00). Отдельный конфигуратор для этого не нужен — всё делается в режиме предприятия.

В клиент-серверной базе путь к файлу должен указывать на диск СЕРВЕРА, а не на ваш компьютер: регламентное задание выполняется в рабочем процессе rphost. Если каталога на сервере нет, задание завершится с ошибкой записи, а в журнале регистрации появится сообщение о недоступном пути.

Для выгрузки на сайт готовить свою обработку обычно не нужно: в типовых конфигурациях есть Обмен с сайтом по стандарту CommerceML, который формирует import.xml с номенклатурой и offers.xml с ценами и остатками сам.

Частые ошибки при выгрузке номенклатуры

Диагностика: выберите симптом

Отдельно про помеченные на удаление: по умолчанию они тоже выгружаются. Если в прайс не должны попадать снятые с продажи позиции, добавляйте условие НЕ ПометкаУдаления в запрос или отбор в списке.

Частые вопросы

Как выгрузить номенклатуру с ценами и остатками в один файл?
Через универсальный отчёт по регистрам Цены номенклатуры и Товары на складах либо запросом с соединением этих регистров. Вывод списка справочника цены и остатки не содержит — они лежат в регистрах, а не в карточке товара.
Можно ли выгрузить номенклатуру из 1С в формате CSV?
Напрямую типовой команды нет, но сохранённый .xlsx или .mxl открывается в Excel и пересохраняется в CSV. Либо формируйте текстовый файл запросом через обработку, разделяя поля точкой с запятой.
Как перенести номенклатуру в другую базу 1С без ручного ввода?
Между одинаковыми конфигурациями — обработкой «Выгрузка и загрузка данных XML». Между разными конфигурациями — через «Синхронизацию данных» или правила Конвертации данных. Копировать XML от разных конфигураций вручную нельзя.
Почему при открытии выгрузки в Excel сбились коды товаров?
Excel обрезал ведущие нули, приняв код за число. Импортируйте файл с указанием текстового формата для столбцов кода и артикула или задайте формат ячеек «Текстовый» до вставки данных.
Как выгрузить только одну группу номенклатуры?
Встаньте на нужную папку в дереве слева — список покажет только её содержимое, и «Вывести список» выгрузит именно эту группу. В запросе то же делается условием по полю Родитель или через иерархию.