Как вывести остатки товара по характеристикам на ценник в 1С:Розница?

Пользователь 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

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

В этом материале мы подробно разберем, почему стандартный конструктор шаблонов ценников в 1С не позволяет решить эту задачу «из коробки», проанализируем архитектуру работы типовых конфигураций и рассмотрим пошаговые алгоритмы реализации данной функциональности.

В чем заключается проблема типового механизма печати ценников

Проанализируем работу штатного механизма печати ценников и этикеток в конфигурациях 1С:Розница 2.x / 3.x, 1С:Управление торговлей и 1С:УНФ. В базовом исполнении программа работает по следующему принципу:

1 строка табличной части печати = 1 сочетание «Номенклатура + Характеристика» = 1 отдельный ценник.

Когда вы открываете обработку Печать этикеток и ценников и выбираете товар с характеристиками, программа генерирует отдельную печатную форму для каждого размера. Если попытаться отредактировать схему компоновки данных (СКД) внутри редактора шаблонов ценников, вы столкнетесь со следующими архитектурными ограничениями:

  1. Отсутствие группировки характеристик верхнего уровня: Вложенный запрос в СКД ценника выполняется в контексте конкретной характеристики текущей строки, а не для всей номенклатурной позиции в целом.
  2. Невозможность динамически сформировать массив размеров в одной ячейке: Вывести список всех связанных характеристик одной базовой номенклатуры с отбором по остатку `КоличествоОстаток > 0` в рамки одного ценника средствами редактора макета нельзя.

Таким образом, настроить вывод размерной сетки с остатками только через пользовательский интерфейс редактора шаблонов невозможно.

Решение задачи: разработка внешней печатной формы или расширения

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

Разберем по шагам, как должна работать доработанная печатная форма:

  1. Сбор параметров печати: Обработка получает список выбранных позиций номенклатуры и текущую торговую точку (склад/магазин).
  2. Запрос к регистру накопления остатков: Выполняется запрос к регистру ТоварыНаСкладах (или ОстаткиТоваров) для получения всех характеристик, у которых остаток строго больше нуля.
  3. Формирование размерного ряда: Сгруппированные размеры объединяются в единую строку через разделитель или выстраиваются в табличную матрицу.
  4. Вывод в макет: Сформированный массив данных передается в ячейку табличного документа макета ценника.

Посмотрим на пример запроса на языке 1С, который собирает актуальные остатки по характеристикам номенклатуры:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    |	ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
    |	ТоварыНаСкладахОстатки.В НаличииОстаток КАК Количество
    |ИЗ
    |	РегистрНакопления.ТоварыНаСкладах.Остатки(
    |		&Период,
    |		Магазин = &Магазин
    |			И Номенклатура В (&МассивНоменклатуры)
    |			И ВНаличииОстаток > 0) КАК ТоварыНаСкладахОстатки
    |УПОРЯДОЧИТЬ ПО
    |	ТоварыНаСкладахОстатки.Характеристика.Наименование ИЕРАРХИЯ";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("Магазин", ВыбранныйМагазин);
Запрос.УстановитьПараметр("МассивНоменклатуры", МассивТоваров);

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

Далее в коде обработки полученные характеристики сворачиваются в текстовую строку с помощью функции СтрСоединить():


МассивРазмеров = Новый Массив;
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
    МассивРазмеров.Добавить(Строка(Выборка.Характеристика));
КонецЦикла;

СтрокаРазмеровНаЦенник = СтрСоединить(МассивРазмеров, " | ");

В результате в макете ценника в поле размера будет выведена готовая строка вида: 38 | 39 | 40 | 42, содержащая только реально присутствующие в магазине позиции.

Альтернативные способы решения проблемы

Если бюджет или ресурсы на доработку программы ограничены, проанализируем альтернативные варианты организации работы в розничном магазине:

1. Использование специализированных отраслевых решений

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

2. Печать полной матрицы с ручной корректировкой

Распространенная схема в обувных магазинах: на ценник выводится полный список существующих размеров модели (вся линейка от производителя). При выкладке товара на витрину продавцы вручную зачеркивают ручкой или маркером отсутствующие размеры. При продаже последнего экземпляра размер зачеркивается, при поступлении партии — ценник перепечатывается целиком.

3. Внедрение электронных ценников (E-Paper)

Для автоматизации магазинов с высокой динамикой продаж применяется интеграция 1С с электронными ценниками на основе «электронной бумаги» (E-Ink). При проведении документа Реализация товаров или Чек ККМ система 1С по радиоканалу отправляет обновленные данные на дисплей ценника. В этом случае список доступных размеров меняется на витрине автоматически в режиме реального времени без затрат на бумагу и печать.

Подведем итоги

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

← На главную