Как настроить сопутствующие товары для розницы с широким ассортиментом в 1С без перегрузки интерфейса кассира?

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

В розничной торговле сопутствующие продажи (cross-selling) — это мощный инструмент повышения среднего чека. Однако при работе с широким ассортиментом (например, в сфере хозяйственных товаров, посуды, строительных материалов) стандартный подход настройки сопутствующих товаров «один к одному» быстро превращается в хаос. Представьте ситуацию: менеджер хочет, чтобы при покупке кастрюли кассир предлагал губку для мытья посуды. Но в базе данных заведено 50 видов кастрюль и 30 видов губок. Если настраивать связи вручную для каждого товара, менеджеру придется создать 1500 связей! А на экране кассира при сканировании кастрюли отобразится огромный список из 30 губок, в котором невозможно ориентироваться.

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

Проблема классического подхода и постановка задачи

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

  1. Трудоемкость заполнения: Менеджеры физически не успевают связывать тысячи SKU между собой и быстро забрасывают эту задачу.
  2. Визуальный шум на кассе: Кассир видит слишком много однотипных предложений и перестает предлагать их покупателям, чтобы не затягивать очередь.
  3. Проблема актуальности остатков: Если настроить связь с конкретной губкой, а ее не окажется на складе, кассир будет предлагать отсутствующий товар.

Наша задача — спроектировать гибкую систему, которая позволит связывать категории товаров, динамически отбирать лучшие предложения и выводить кассиру не более 3–5 актуальных позиций, имеющихся в наличии на конкретном складе.

Решение 1: Концепция логических множеств (динамические сегменты)

Вместо связи конкретных элементов номенклатуры мы предлагаем использовать понятие «Множество». Множество — это логическое условие, под которое попадает группа товаров. Например, множество «Кастрюли» и множество «Губки для посуды».

Давайте спроектируем структуру хранения таких связей. Создадим справочник МножестваНоменклатуры. Каждое множество может описываться набором правил:

Далее мы создаем регистр сведений СопутствующиеМножества со следующей структурой:

При сканировании товара на кассе система определяет, к каким продаваемым множествам относится текущий SKU, находит связанные предлагаемые множества, а затем динамически выбирает из этих множеств товары, которые есть в наличии на текущем складе.

Решение 2: Наследование сопутствующих товаров от групп (категорий)

Это более простой в реализации, но крайне эффективный подход, который уже применяется в современных конфигурациях, таких как 1С:Розница 3.0 и 1С:УНФ 3.0. Мы настраиваем сопутствующие товары не для конкретной номенклатуры, а для её родительской группы (папки).

Рассмотрим алгоритм работы этой системы:

  1. Менеджер открывает карточку группы «Кастрюли» и указывает в табличной части сопутствующие товары: «Губка профилированная (упаковка 3 шт)» и «Средство для мытья посуды 0.5л». Это конкретные, самые ходовые и маржинальные товары.
  2. При сканировании на кассе конкретной кастрюли «Кастрюля эмалированная 3л» программа видит, что для самого товара сопутствующие позиции не заданы.
  3. Программа поднимается вверх по иерархии справочника номенклатуры к родительской группе «Кастрюли» (и выше, если групп несколько) и считывает настройки сопутствующих товаров оттуда.
  4. Кассиру предлагаются именно эти 2–3 конкретных товара, что полностью решает проблему визуального мусора.

Решение 3: Динамический подбор по дополнительным реквизитам (свойствам)

Иногда сопутствующий товар жестко привязан к техническим характеристикам основного. Классический пример — элементы питания (батарейки). Если покупатель берет фонарик или детскую игрушку, кассир обязан предложить батарейки нужного формата (АА, ААА, C, D).

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

  1. В свойствах номенклатуры (или вида номенклатуры) создаем дополнительный реквизит ТипПитания со значениями «Батарейки АА», «Батарейки ААА» и т.д.
  2. Для сопутствующего товара (батареек) создаем доп. реквизит или признак ФорматБатарейки с аналогичными значениями.
  3. При добавлении товара в корзину программный код считывает значение реквизита ТипПитания. Если оно заполнено, система автоматически выполняет поиск в группе номенклатуры «Батарейки» по фильтру ФорматБатарейки = ТипПитания основного товара.

Реализация программной логики на платформе 1С

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

Предположим, у нас есть регистр сведений СопутствующиеТоварыГрупп, где задана связь между группой продаваемого товара и конкретными сопутствующими товарами. Нам нужно получить список рекомендаций, исключив те товары, которых нет на складе.

Проанализируем пример кода на языке запросов 1С:


Процедура ПолучитьСопутствующиеТовары(ТекущийТовар, ТекущийСклад)
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 5
        |	Сопутствующие.СопутствующийТовар КАК Товар,
        |	ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК Остаток,
        |	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
        |ИЗ
        |	РегистрСведений.СопутствующиеТоварыГрупп КАК Сопутствующие
        |		// Соединяем со свободными остатками для фильтрации
        |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(,&Склад) КАК СвободныеОстаткиОстатки
        |		ПО Сопутствующие.СопутствующийТовар = СвободныеОстаткиОстатки.Номенклатура
        |		
        |		// Получаем актуальную розничную цену
        |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
        |		ПО Сопутствующие.СопутствующийТовар = ЦеныНоменклатурыСрезПоследних.Номенклатура
        |ГДЕ
        |	Сопутствующие.ГруппаНоменклатуры = &ГруппаНоменклатуры
        |	И ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) > 0
        |УПОРЯДОЧИТЬ ПО
        |	Сопутствующие.Приоритет";
    
    // Определяем родительскую группу для текущего товара
    ГруппаТовара = ТекущийТовар.Родитель;
    
    Запрос.УстановитьПараметр("ГруппаНоменклатуры", ГруппаТовара);
    Запрос.УстановитьПараметр("Склад", ТекущийСклад);
    Запрос.УстановитьПараметр("Период", ТекущаяДата());
    Запрос.УстановитьПараметр("ВидЦены", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная"));
    
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Пока Выборка.Следующий() Цикл
            // Выводим товары на панель рекомендаций РМК
            ДобавитьТоварНаПанельРекомендаций(Выборка.Товар, Выборка.Цена);
        КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры

Этот алгоритм решает сразу несколько ключевых задач:

Гибридный подход: Мнение экспертов и автоматизация

Если у клиента есть ресурсы и желание развивать систему продаж, наилучшим решением будет гибридный подход. Ручные настройки менеджеров («я так вижу») можно совместить с автоматическим анализом чеков (Data Mining).

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

Менеджер может запустить эту обработку, получить рекомендации системы и утвердить их, автоматически создав записи в нашем регистре СопутствующиеТоварыГрупп. Это исключает субъективные ошибки и позволяет продавать именно то, что действительно нужно покупателям.

Резюме и рекомендации по внедрению

Подводя итоги, дадим несколько практических советов для успешного запуска сопутствующих продаж в рознице с широким ассортиментом:

  1. Не пытайтесь связать все товары поштучно. Используйте наследование от групп номенклатуры или логические сегменты.
  2. Ограничивайте количество выводимых рекомендаций на экране РМК до 3–5 позиций.
  3. Обязательно накладывайте жесткий фильтр по остаткам на складе в режиме реального времени.
  4. Используйте дополнительные реквизиты для технически связанных товаров (например, для подбора батарейки к устройству по типу питания).
  5. Периодически запускайте стандартные механизмы 1С для поиска скрытых ассоциаций в продажах, чтобы корректировать ручные настройки менеджеров.
← На главную