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

В этой статье мы разберем 5 основных способов вывода номенклатуры в 1С 8.3 (актуально для конфигураций УТ 11, КА 2, ERP 2 и БП 3.0), включая стандартные отчеты, внешние обработки, программные методы на встроенном языке и интеграцию с внешними системами. Особое внимание уделим типичным ошибкам, которые приводят к потере данных при выгрузке или искажению цен в печатных формах. Все примеры сопровождаются скриншотами (условными описаниями) и фрагментами кода, которые можно адаптировать под свои задачи.

1. Стандартные отчеты 1С для вывода номенклатуры

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

  • 📊 Отчет "Ведомость по товарам" — показывает остатки, движения и обороты по номенклатуре с возможностью детализации по складам, партиям или контрагентам. Доступен в меню Отчеты → Товары → Ведомость по товарам.
  • 📋 Отчет "Анализ субконто" — позволяет вывести номенклатуру с привязкой к аналитическим разрезам (например, по проектам или подразделениям). Путь: Отчеты → Стандартные → Анализ субконто.
  • 📑 Оборотно-сальдовая ведомость по счетам — если номенклатура учитывается на счетах 10, 41 или 43, ее можно вывести через ОСВ с детализацией по субконто. Настраивается в Отчеты → Стандартные → Оборотно-сальдовая ведомость.

Для быстрого доступа к отчетам рекомендуется добавить их в панель избранного. Например, в 1С:УТ 11.5 это делается через контекстное меню отчета (правая кнопка мыши → Добавить в избранное). Однако у стандартных отчетов есть ограничения:

  • 🚫 Нет возможности вывести пользовательские реквизиты номенклатуры (например, Артикул поставщика или Срок годности).
  • 🚫 Ограниченные варианты группировки — нельзя сгруппировать товары по произвольному набору полей.
  • 🚫 Нет экспорта в форматы, отличные от Excel и PDF (например, JSON или XML).
⚠️ Внимание: В конфигурациях на базе БСП 3.1 (например, 1С:ERP 2.5) состав стандартных отчетов может отличаться. Перед использованием проверьте наличие нужного отчета в вашей версии через меню Все функции (включается в Сервис → Параметры → Общие → Отображать команду "Все функции").

Если стандартных отчетов недостаточно, переходите к следующему способу — внешним обработкам.

📊 Какой отчет вы используете чаще всего для работы с номенклатурой?
Ведомость по товарам
Оборотно-сальдовая ведомость
Анализ субконто
Собственные обработки
Другой

2. Внешние обработки для вывода номенклатуры

Внешние обработки позволяют расширить функционал без изменения конфигурации. Их можно скачать с портала 1С:ИТС, форумов или создать самостоятельно в Конфигураторе. Преимущества обработок:

  • 🔧 Гибкая настройка полей вывода (можно добавить любые реквизиты номенклатуры).
  • 📤 Экспорт в различные форматы: Excel, CSV, XML, JSON.
  • 🎨 Возможность кастомизации дизайна печатных форм (например, добавление логотипа компании).

Пример популярных обработок:

Название обработки Назначение Поддерживаемые конфигурации
Выгрузка номенклатуры в Excel Экспорт данных о товарах с возможностью фильтрации по группам, складам, остаткам УТ 11, КА 2, ERP 2, БП 3.0
Печатная форма прайс-листа Формирование прайс-листов с ценами, картинками и описаниями УТ 11, Розница 2.3
Инвентаризационная опись Вывод номенклатуры для инвентаризации с колонками для ручного ввода остатков УТ 11, ERP 2

Чтобы подключить внешнюю обработку:

  1. Скачайте файл с расширением .epf или .erf.
  2. В перейдите в Файл → Открыть → Дополнительные отчеты и обработки.
  3. Нажмите Добавить и выберите скачанный файл.
  4. Запустите обработку из списка доступных.

Скачать обработку с проверенного источника

Проверить совместимость с версией 1С

Создать резервную копию базы (рекомендуется)

Настроить права доступа для пользователей-->

⚠️ Внимание: Обработки от сторонних разработчиков могут содержать вредоносный код. Перед использованием проверьте файл антивирусом и, по возможности, просмотрите исходный код в Конфигураторе (меню Файл → Открыть → Внешняя обработка). Особенно это касается обработок, скачанных с непроверенных форумов.

3. Программный вывод номенклатуры на встроенном языке

Для опытных пользователей и разработчиков самый гибкий способ вывода номенклатуры — написание кода на встроенном языке . Это позволяет:

  • 🛠️ Выводить данные в любом формате (включая HTML или TXT).
  • 🔄 Автоматизировать выгрузку по расписанию.
  • 🔗 Интегрироваться с внешними системами через HTTP-запросы или COM-соединение.

Пример кода для вывода номенклатуры в табличный документ:

Процедура ВывестиНоменклатуру()

// Создаем запрос для выборки номенклатуры

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

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

"ВЫБРАТЬ

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

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

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

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

| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения

|ИЗ

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

// Выполняем запрос

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

Выборка = РезультатЗапроса.Выбрать();

// Создаем табличный документ

ТабличныйДокумент = Новый ТабличныйДокумент;

ТабличныйДокумент.Очистить();

// Формируем заголовки колонок

ОбластьЗаголовок = ТабличныйДокумент.Область(1, 1, 1, 5);

ОбластьЗаголовок.Текст = "Ссылка;Артикул;Наименование;Группа;Ед.изм.";

ОбластьЗаголовок.ПереноситьТекст = Ложь;

ОбластьЗаголовок.ГоризонтальноеПоложение = ГоризонтальноеПоложениеТекста.Центр;

// Заполняем данными

НомерСтроки = 2;

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

ТабличныйДокумент.ВывестиСтроку(

Выборка.Ссылка.Наименование + ";" +

Выборка.Артикул + ";" +

Выборка.Наименование + ";" +

Выборка.Группа.Наименование + ";" +

Выборка.ЕдиницаИзмерения.Наименование

);

НомерСтроки = НомерСтроки + 1;

КонецЦикла;

// Отображаем результат

ТабличныйДокумент.Показать("Номенклатура");

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

Этот код выведет таблицу со всеми позициями номенклатуры. Чтобы добавить фильтрацию (например, только товары определенной группы), модифицируйте текст запроса:

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

"ВЫБРАТЬ ...

|ГДЕ

| Номенклатура.Группа = &Группа";

И передайте параметр при выполнении:

Запрос.УстановитьПараметр("Группа", Справочники.ГруппыНоменклатуры.НайтиПоНаименованию("Электроника"));
💡

Если нужно вывести номенклатуру с остатками, добавьте в запрос соединение с регистром ТоварыНаСкладах и группировку по складам. Пример: ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки

4. Вывод номенклатуры в печатные формы документов

Часто номенклатуру нужно вывести не в отдельном отчете, а в составе печатной формы документа (например, в накладной или счете). Для этого используются макеты печатных форм, которые настраиваются в Конфигураторе.

Рассмотрим процесс на примере документа Реализация товаров и услуг:

  1. Откройте документ в режиме 1С:Предприятие и перейдите в печатную форму (кнопка Печать → Реализация (ТОРГ-12)).
  2. Если стандартная форма не подходит, создайте свою:
    • В Конфигураторе найдите объект Документ.РеализацияТоваровУслуг.
    • В ветке Печатные формы добавьте новую форму.
    • Настройте макет в редакторе (добавьте таблицу с колонками для номенклатуры).
  • В модуле документа пропишите процедуру заполнения данных:
    Процедура ПечатьТорг12(МассивОбъектов, Колонтитул)
    

    // Получаем данные табличной части "Товары"

    ТаблицаТоваров = Объект.Товары;

    // Заполняем макет данными

    Для Каждого СтрокаТоваров Из ТаблицаТоваров Цикл

    НоваяСтрока = Макет.ПолучитьОбласть("СтрокаТовара");

    НоваяСтрока.Параметры.Заполнить(СтрокаТоваров);

    ТабличныйДокумент.Вывести(НоваяСтрока);

    КонецЦикла;

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

  • Типичные ошибки при настройке печатных форм:

    • 🔴 Не совпадают имена параметров в макете и в коде (например, в макете указано Номенклатура, а в коде передается Товар).
    • 🔴 Отсутствуют проверки на заполненность — если в документе нет строк с номенклатурой, форма выдаст ошибку.
    • 🔴 Неправильные настройки шрифтов — в печатной форме могут "съехать" колонки из-за большого размера текста.
    Как исправить "съехавшие" колонки в печатной форме?

    Чаще всего проблема возникает из-за:

    1. Длинных наименований номенклатуры — ограничьте ширину колонки или добавьте перенос текста (ПереноситьТекст = Истина).

    2. Большого количества колонок — уменьшите размер шрифта или разбейте таблицу на две части.

    3. Неправильных настроек макета — проверьте свойства ячеек в редакторе макетов (вкладка "Свойства").

    5. Выгрузка номенклатуры в Excel и другие форматы

    Для обмена данными с внешними системами или дальнейшей аналитики часто требуется выгрузить номенклатуру в Excel, CSV или JSON. Рассмотрим два способа:

    Способ 1: Через стандартный экспорт

    В большинстве отчетов есть кнопка Экспорт (или Выгрузить), которая позволяет сохранить данные в Excel или PDF. Например, в отчете Ведомость по товарам:

    1. Сформируйте отчет с нужными данными.
    2. Нажмите Еще → Выгрузить и выберите формат.
    3. Укажите путь для сохранения файла.

    Способ 2: Программная выгрузка с использованием XDTO или COM-объекта

    Для выгрузки в JSON или XML используйте следующий код:

    Процедура ВыгрузитьВJSON()
    

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

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

    "ВЫБРАТЬ

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

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

    |ИЗ

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

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

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

    // Создаем объект для JSON

    МассивТоваров = Новый Массив;

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

    Товар = Новый Структура;

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

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

    МассивТоваров.Добавить(Товар);

    КонецЦикла;

    // Записываем в файл

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

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

    ЗаписьJSON.Записать(МассивТоваров);

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

    ТекстJSON.Записать("C:\Export\Номенклатура.json");

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

    Для выгрузки в Excel через COM-объект:

    Процедура ВыгрузитьВExcel()
    

    Excel = Новый COMОбъект("Excel.Application");

    Книга = Excel.Workbooks.Add();

    Лист = Книга.Worksheets(1);

    // Заголовки

    Лист.Cells(1, 1).Value = "Наименование";

    Лист.Cells(1, 2).Value = "Артикул";

    // Данные

    Запрос = Новый Запрос("ВЫБРАТЬ Наименование, Артикул ИЗ Справочник.Номенклатура");

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

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

    Строка = 2;

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

    Лист.Cells(Строка, 1).Value = Выборка.Наименование;

    Лист.Cells(Строка, 2).Value = Выборка.Артикул;

    Строка = Строка + 1;

    КонецЦикла;

    // Сохраняем файл

    Книга.SaveAs("C:\Export\Номенклатура.xlsx");

    Excel.Quit();

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

    ⚠️ Внимание: При выгрузке в Excel через COM-объект на сервере должен быть установлен Microsoft Excel или пакет совместимости. В противном случае возникнет ошибка Не удалось создать COM-объект. Альтернатива — использование библиотеки OneScript.Excel или выгрузка в CSV.

    6. Интеграция с внешними системами (API, обмен данными)

    Если номенклатуру нужно передать в другую систему (например, на сайт, в CRM или WMS), используйте механизмы обмена данными:

    • 🌐 REST API — для интеграции с веб-сервисами. В поддерживается через HTTPСоединение и HTTPЗапрос.
    • 🔄 Обмен через файлы — выгрузка в XML/JSON с последующим импортом в другую систему.
    • 🔌 Прямое подключение к базе — через ODBC или OLE DB (требует настройки прав доступа).

    Пример выгрузки номенклатуры через HTTP-запрос:

    Процедура ОтправитьНоменклатуруНаСервер()
    

    // Получаем данные

    Запрос = Новый Запрос("ВЫБРАТЬ Наименование, Артикул ИЗ Справочник.Номенклатура");

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

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

    // Формируем JSON

    МассивТоваров = Новый Массив;

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

    Товар = Новый Структура("Наименование,Артикул", Выборка.Наименование, Выборка.Артикул);

    МассивТоваров.Добавить(Товар);

    КонецЦикла;

    // Отправляем POST-запрос

    ЗапросHTTP = Новый HTTPЗапрос("/api/import/nomenklatura");

    ЗапросHTTP.УстановитьТелоИзСтроки(ЗаписатьJSON(МассивТоваров));

    ЗапросHTTP.УстановитьЗаголовок("Content-Type", "application/json");

    Соединение = Новый HTTPСоединение("api.example.com", 80, "", "");

    Ответ = Соединение.ВыполнитьЗапрос(ЗапросHTTP);

    Если Ответ.КодСостояния <> 200 Тогда

    Сообщить("Ошибка выгрузки: " + Ответ.ПолучитьТелоКакСтроку());

    Иначе

    Сообщить("Данные успешно выгружены!");

    КонецЕсли;

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

    Для настройки обмена через XML используйте стандартные механизмы :

    1. Создайте план обмена в Конфигураторе (Общие → Планы обмена).
    2. Настройте правила конвертации данных для справочника Номенклатура.
    3. Используйте обработку УниверсальныйОбменДаннымиXML для выгрузки.

    1. Формат передаваемых данных (JSON, XML, CSV).

    2. Кодировку файлов (рекомендуется UTF-8).

    3. Ограничения API (например, лимит запросов в минуту).

    4. Безопасность передачи (используйте HTTPS).-->

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

    При выводе номенклатуры пользователи часто сталкиваются с следующими проблемами:

    Ошибка Причина Решение
    В отчете не отображаются все позиции номенклатуры Установлен фильтр по группе или складу Проверьте настройки отчета (вкладка "Отбор")
    В печатной форме не выводятся цены Не заполнен регистр сведений Цены номенклатуры Обновите цены через документ Установка цен номенклатуры
    При выгрузке в Excel русские символы отображаются как "кракозябры" Неверная кодировка файла Укажите кодировку UTF-8 при сохранении
    Ошибка "Поле объекта не обнаружено" при выполнении запроса Опечатка в имени поля или реквизита Проверьте синтаксис запроса в Конфигураторе (меню Текст → Проверка)

    Еще несколько распространенных проблем:

    • 🔴 Дублирование строк в отчете — возникает из-за неверных соединений в запросе. Используйте РАЗЛИЧНЫЕ или проверьте логику запроса.
    • 🔴 Медленная работа отчета — обычно связано с отсутствием индексов на полях, по которым идет отбор. Добавьте индексы в Конфигураторе.
    • 🔴 Не совпадают остатки в отчете и в карточке товара — проверьте дату актуальности отчета и настройки учета по складам.
    Как ускорить выполнение медленного отчета?

    1. Добавьте индексы на поля, используемые в условиях ГДЕ.

    2. Разбейте сложный запрос на несколько простых (используйте временные таблицы).

    3. Ограничьте период данных (например, вместо "за все время" берите данные за последний год).

    4. Используйте предварительное формирование данных в регистрах накопления.

    FAQ: Частые вопросы по выводу номенклатуры в 1С

    Как вывести номенклатуру с картинками в прайс-лист?

    Для вывода номенклатуры с изображениями:

    1. Убедитесь, что в справочнике Номенклатура заполнено поле Картинка (тип ХранилищеЗначения).
    2. Используйте внешнюю обработку, которая поддерживает вывод изображений (например, Печатная форма прайс-листа с картинками с портала ИТС).
    3. В макете печатной формы добавьте колонку с типом Картинка и свяжите ее с реквизитом Номенклатура.Картинка.

    Если картинки хранятся во внешних файлах, потребуется доработать обработку для загрузки изображений по пути.

    Можно ли вывести номенклатуру с историей изменений цен?

    Да, для этого:

    1. Используйте отчет Анализ цен номенклатуры (доступен в 1С:УТ и ERP).
    2. Либо создайте запрос к регистру сведений Цены номенклатуры с параметром Период:
    ВЫБРАТЬ
    

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

    ЦеныНоменклатуры.Цена,

    ЦеныНоменклатуры.Период

    ИЗ

    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура

    ПО ЦеныНоменклатуры.Номенклатура = Номенклатура.Ссылка

    ГДЕ

    ЦеныНоменклатуры.Период МЕЖДУ &НачалоПериода И &КонецПериода

    Как вывести номенклатуру только с ненулевыми остатками?

    Добавьте в запрос соединение с регистром ТоварыНаСкладах.Остатки и условие по количеству:

    ВЫБРАТЬ
    

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

    Остатки.КоличествоОстаток

    ИЗ

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

    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекущаяДата,) КАК Остатки

    ПО Номенклатура.Ссылка = Остатки.Номенклатура

    ГДЕ

    Остатки.КоличествоОстаток > 0

    В отчете Ведомость по товарам установите отбор по полю Остаток > 0.

    Как автоматически обновлять выгрузку номенклатуры по расписанию?

    Для автоматической выгрузки:

    1. Создайте обработку с нужным кодом выгрузки (см. раздел 5).
    2. Настройте Регламентное задание в :
      • Перейдите в Администрирование → Поддержка и обслуживание → Регламентные задания.
      • Создайте новое задание, укажите обработку и расписание (например, ежедневно в 23:00).
  • Для отправки файла по FTP или Email добавьте соответствующий код в обработку.
  • Пример кода для отправки по email:

    Попытка
    

    Почта = Новый Почта;

    Сообщение = Новый ПочтовоеСообщение;

    Сообщение.Текст = "Выгрузка номенклатуры на " + ТекущаяДата();

    Сообщение.Тема = "Автоматическая выгрузка номенклатуры";

    Сообщение.Получатели.Добавить("manager@example.com");

    Сообщение.Вложения.Добавить(Новый ВложениеФайла("C:\Export\Номенклатура.xlsx"));