Как настроить скидки для Топ-3 клиентов по выручке и количеству заказов в 1С:УТ 11.5

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

Рассмотрим интересную практическую задачу: компании необходимо поощрять своих лучших покупателей. Требуется настроить систему так, чтобы клиентам, входящим в Топ-3 по объему выручки за прошлый год, автоматически назначалась скидка 10%. Одновременно с этим, Топ-3 клиентам по количеству заказов также должна предоставляться скидка 10%. Если клиент оказался настолько хорош, что попал в обе группы, скидки должны складываться (в сумме 20%). Состав лучших клиентов должен пересматриваться раз в год. Проанализируем, как реализовать этот механизм, используя исключительно стандартный функционал программы 1С:Управление торговлей 11.5.

Шаг 1. Понимание общей архитектуры решения

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

  1. Создать два динамических Сегмента партнеров (один по выручке, второй по количеству заказов), состав которых будет определяться запросом к базе данных.
  2. Настроить автоматическое обновление этих сегментов раз в год с помощью фоновых заданий.
  3. Создать карточки автоматических скидок и настроить правила их совместного применения в дереве скидок.
  4. Привязать условия предоставления скидок к созданным сегментам.
  5. Активировать скидки в ТиповыеСоглашенияСКлиентами.

Посмотрим на каждый из этих этапов подробнее.

Шаг 2. Создание сегмента "Топ-3 по выручке" и настройка схемы СКД

Перейдем в раздел CRM и маркетинг и создадим новый сегмент клиентов. В настройках сегмента необходимо выбрать способ формирования ПериодическиОбновлять. Однако стандартных отборов нам не хватит для вычисления лидеров продаж. Нам потребуется нажать кнопку Редактировать схему компоновки.

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

Частая ошибка, с которой сталкиваются разработчики на этом этапе — неправильное использование операторов ПЕРВЫЕ и УПОРЯДОЧИТЬ ПО. Если вы поместите ПЕРВЫЕ 3 во вложенный запрос, а сортировку оставите во внешнем (или наоборот), система возьмет три случайные записи из базы данных, а уже потом отсортирует этот случайный кусок. Чтобы получить достоверные данные, отбор и сортировка должны находиться в одном блоке запроса.

Проанализируем правильный вариант кода для первого набора данных (отбор по выручке):


ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 3
    АналитикаПоПартнерам.Партнер КАК Партнер,
    СУММА(ВыручкаИСебестоимость.СуммаВыручкиОборот) КАК Выручка
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода, &ОкончаниеПериода, Авто, ) КАК ВыручкаИСебестоимость
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаПоПартнерам 
    ПО ВыручкаИСебестоимость.АналитикаУчетаПоПартнерам = АналитикаПоПартнерам.КлючАналитики
СГРУППИРОВАТЬ ПО
    АналитикаПоПартнерам.Партнер
УПОРЯДОЧИТЬ ПО
    Выручка УБЫВ

Обратите внимание: мы используем виртуальную таблицу Обороты регистра накопления. В параметрах СКД (на вкладке "Параметры") необходимо будет жестко задать периоды: &НачалоПериода — начало прошлого года, &ОкончаниеПериода — конец прошлого года.

Шаг 3. Создание сегмента "Топ-3 по количеству заказов"

Теперь создадим второй сегмент. Логика работы с ним аналогична, но источником данных будет выступать не регистр выручки, а документы. Отредактируем схему компоновки второго сегмента.

Здесь нам нужно обратиться к таблице документов ЗаказКлиента. Мы сгруппируем данные по полю Партнер и применим агрегатную функцию КОЛИЧЕСТВО для подсчета уникальных документов.

Посмотрим на пример запроса для второго сегмента:


ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 3
    ЗаказКлиента.Партнер КАК Партнер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК КоличествоЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачалоПериода И &ОкончаниеПериода
    И ЗаказКлиента.Проведен = ИСТИНА
СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Партнер
УПОРЯДОЧИТЬ ПО
    КоличествоЗаказов УБЫВ

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

Шаг 4. Автоматизация обновления сегментов

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

Чтобы автоматизировать процесс, настроим фоновое задание. Перейдем в раздел НСИ и администрирование, далее откроем Обслуживание и найдем пункт РегламентныеИФоновыеЗадания. В списке заданий найдите элемент с названием "Обновление сегментов партнеров". Откройте его и задайте расписание. Поскольку по условию задачи статусы пересматриваются раз в год, расписание можно настроить, например, на запуск 1 января в 02:00 ночи. Обязательно убедитесь, что регламентное задание включено.

Шаг 5. Настройка скидок и правил их совместного применения

Сегменты готовы, теперь перейдем к финансовой части. Откроем раздел CRM и маркетинг и перейдем в Скидки (наценки). Нам необходимо создать две отдельные карточки скидок по 10%.

В первой карточке (назовем ее "Скидка Топ-3 по выручке") на вкладке "Условия предоставления" добавим условие: Клиент входит в сегмент, и выберем наш первый созданный сегмент. Аналогичные действия проделаем для второй скидки (10% для "Топ-3 по заказам"), привязав ее ко второму сегменту.

Ключевой момент задачи: скидки могут складываться, если клиент попал в оба Топ-3. В 1С:УТ логика пересечения настраивается через группы (папки) в дереве скидок. Выполним следующие действия:

  1. Создадим новую группу в дереве скидок (назовем ее, например, "Бонусы для лидеров").
  2. В настройках этой группы в поле "Вариант совместного применения" обязательно выберем значение Сложение (если оставить стандартный "Максимум", то клиент получит только 10% вместо заслуженных 20%).
  3. Поместим обе созданные карточки скидок внутрь этой новой группы.

Шаг 6. Активация скидок в соглашениях

Завершающий этап. Просто создать скидку в системе недостаточно — она не начнет действовать сама по себе. Скидки должны быть привязаны к правилам продаж, по которым работают ваши менеджеры.

Перейдем в раздел CRM и маркетинг -> ТиповыеСоглашенияСКлиентами. Откроем соглашение, которое используется для оформления продаж (или несколько соглашений, если их много). Перейдем на вкладку Скидки (наценки). Найдем в дереве нашу группу "Бонусы для лидеров" и обе скидки внутри нее. Установим для них статус Действует.

Теперь задача полностью решена. Когда менеджер создает документ реализации или заказ клиента, система проверяет партнера. Если фоновое задание в начале года поместило этого партнера в сегмент "Топ-3 по выручке", применится 10%. Если он оказался еще и в "Топ-3 по заказам", применится вторая скидка, и благодаря правилу группы Сложение, в документе рассчитается итоговая скидка 20%.

← На главную