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

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

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

Особенности задачи и технические ограничения

Типовой механизм печати этикеток и ценников в 1С формирует печатные формы на основании текущих настроек макета и данных компоновки. Стандартная схема компоновки данных выводит параметры для пары Номенклатура + Характеристика, но не агрегирует остатки по всем соседним характеристикам одного товара в единую текстовую строку для вывода на одном ценнике.

Рассмотрим несколько способов реализации такой печати: от быстрого варианта без программирования механизмов печати до применения расширений и внешних обработок.

Способ 1. Использование дополнительных реквизитов и вспомогательной обработки

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

  1. Создание дополнительного реквизита: В справочнике Номенклатура или ХарактеристикиНоменклатуры добавляем строковый дополнительный реквизит (например, ОстаткиРазмеров).
  2. Заполнение данных: Запускаем внешнюю обработку, которая рассчитывает актуальные остатки в разрезе характеристик по виртуальным таблицам остатков и записывает сформированную строку (например, 41: 2 шт, 42: 1 шт, 43: 3 шт) в созданный дополнительный реквизит.
  3. Настройка макета ценника: В типовом редакторе макетов ценников добавляем поле нашего дополнительного реквизита ОстаткиРазмеров в нужную ячейку.

Преимущества: Способ работает в базовых версиях конфигураций и не требует редактирования программного кода подсистемы печати ценников.

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

Способ 2. Модернизация обработки печати ценников через расширение

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

Для реализации подготавливаем расширение конфигурации и дорабатываем логику подсистемы ПечатьЭтикетокИЦенников:

  1. Перехватываем процедуру заполнения табличной части товаров и характеристик перед выводом на печать.
  2. Запросом к остаткам собираем доступные характеристики для каждой номенклатуры и склеиваем их в одну текстовую строку.
  3. Добавляем в сформированную таблицу временную строковую колонку и записываем туда полученную цепочку размеров и остатков.
  4. В макете ценника связываем нужную ячейку с параметром добавленной колонки.

Посмотрим на пример логики сбора остатков характеристик в единую строку:


// Пример формирования строки остатков по характеристикам номенклатуры
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
    |	ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
    |ИЗ
    |	РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Номенклатура = &ТекущаяНоменклатура) КАК ТоварыНаСкладахОстатки";

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

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

Пока Выборка.Следующий() Цикл
    СтрокаОстатков = СтрокаОстатков + Строка(Выборка.Характеристика) + ": " + Строка(Выборка.Остаток) + " шт. ";
КонецЦикла;

Способ 3. Подключение внешней печатной формы или обработки

Разберем вариант применения механизма «Дополнительные отчеты и обработки». Мы можем вынести обработку печати ценников во внешнюю обработку, зарегестрировав ее в БСП.

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

Практические рекомендации по работе с ценниками остатков

← На главную