В розничной торговле одеждой и обувью часто возникает необходимость выводить на ценнике не только информацию о конкретной позиции, но и данные о наличии других размеров и цветов этой же модели. Проанализируем способы решения этой задачи в типовой конфигурации 1С:Розница 2 при условии, что конфигурация находится на стандартной поддержке и менять ее напрямую нельзя.
Типовой механизм печати этикеток и ценников в 1С формирует печатные формы на основании текущих настроек макета и данных компоновки. Стандартная схема компоновки данных выводит параметры для пары Номенклатура + Характеристика, но не агрегирует остатки по всем соседним характеристикам одного товара в единую текстовую строку для вывода на одном ценнике.
Рассмотрим несколько способов реализации такой печати: от быстрого варианта без программирования механизмов печати до применения расширений и внешних обработок.
Выясним суть данного подхода: если типовой редактор макетов ценников умеет выводить пользовательские дополнительные реквизиты, мы можем сформировать текстовое представление остатков и записать его в базу перед печатью.
Номенклатура или ХарактеристикиНоменклатуры добавляем строковый дополнительный реквизит (например, ОстаткиРазмеров).41: 2 шт, 42: 1 шт, 43: 3 шт) в созданный дополнительный реквизит.ОстаткиРазмеров в нужную ячейку.Преимущества: Способ работает в базовых версиях конфигураций и не требует редактирования программного кода подсистемы печати ценников.
Недостатки: Остатки в дополнительном реквизите становятся статичными. При оформлении продаж данные на ценнике устаревают, поэтому обработку перерасчета необходимо запускать заново перед каждой новой печатью.
Проанализируем более гибкий и устойчивый вариант, который не замусоривает базу данных лишними текстовыми значениями и формирует актуальную информацию непосредственно в момент печати.
Для реализации подготавливаем расширение конфигурации и дорабатываем логику подсистемы ПечатьЭтикетокИЦенников:
Посмотрим на пример логики сбора остатков характеристик в единую строку:
// Пример формирования строки остатков по характеристикам номенклатуры
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Номенклатура = &ТекущаяНоменклатура) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("ТекущаяНоменклатура", ВыбраннаяНоменклатура);
Выборка = Запрос.Выполнить().Выбрать();
СтрокаОстатков = "";
Пока Выборка.Следующий() Цикл
СтрокаОстатков = СтрокаОстатков + Строка(Выборка.Характеристика) + ": " + Строка(Выборка.Остаток) + " шт. ";
КонецЦикла;
Разберем вариант применения механизма «Дополнительные отчеты и обработки». Мы можем вынести обработку печати ценников во внешнюю обработку, зарегестрировав ее в БСП.
Внешняя обработка самостоятельно формирует запрос к остаткам, строит пользовательскую форму и выводит табличный документ с ценниками. Это полностью изолирует доработки от типовой конфигурации и позволяет использовать решение в любых версиях 1С:Розница.