Реализация системы скидок

11.10.17

Задачи пользователя - Адаптация типовых решений

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

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

Скидка по типу цен

Есть в типовом механизме документа установка скидок "Количество одного товара в документе превысило", механизм представляет собой, если в поле указать кол-во товара 3, то на каждый товар будет скидка, указанная в поле процент. Возникла необходимость, чтобы был не процент скидки, а конкретная сумма.

Для реализации необходимо добавить поле в документе "Установка скидок номенклатуры", в котором и будет критерий (в моем случае видов скидок 4, потому создан справочник и справочник привязан к критериям скидки). В критерии мы указываем, что будет действовать специальная цена (Справочник "Тип Цен", создаем свой, чтобы не был связан с точкой). Далее заполняем документ "Установка скидок номенклатуры" все необходимые поля в типовом механизме.

После заходим в "Установка цен номенклатуры", создаем документ с типом цен, который заполнен в новом критерии. Выставляем цены с учетом скидки, проводим, готово.

Вот код для  "Общие модули - ОбработкаТабличныхЧастей" Процедура РассчитатьСкидкиПриПродаже

//Определение специальных цен для скидки

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

//Расчет скидки

СтрТЗСпецЦены = ТЗСпецЦены.Найти(СтрокаТЧ.Номенклатура, "Номенклатура");
            Если СтрТЗСпецЦены <> Неопределено Тогда
                СтрокаТЧ.Сумма = СтрокаТЧ.Количество * СтрТЗСпецЦены.Цена;
                СтрокаТЧ.ПроцентАвтоматическихСкидок = Окр(((СтрокаТЧ.СуммаБезСкидки - СтрокаТЧ.Сумма) / СтрокаТЧ.СуммаБезСкидки) * 100, 2);
            КонецЕсли;

Скидка на товар кратный условию

Рассмотрим скидку, если купили 2 позиции, то 3 по скидке, 4 снова за полную стоимость (в варианте 1, после выполнения условия, например купили 2 позиции, то на 3,4,5 и т д. уже будет действовать скидка), то есть скидка действует только каждой 3 позиции. Работает абсолютно так же как и первая позиция, только добавляется еще 1 свой критерий ( тип цен, кратность), в первом варианте только тип цен.

Вот код для расчета по кратности

Для Каждого ТекРасчетСкидки Из СтруктМасРасчета["СкидкаПоТипуЦен_КратностьКолТовара"] Цикл
        
        //Определение специальных цен для скидки
        ЗапросЦен = Новый Запрос;
        ЗапросЦен.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    ЦеныНоменклатурыСрезПоследних.Номенклатура,
        |    ЦеныНоменклатурыСрезПоследних.Цена
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        |            &ОтборДата,
        |            ТипЦен = &ОтборТипЦен
        |                И Номенклатура В (&ОтборНоменклатура)) КАК ЦеныНоменклатурыСрезПоследних";
        ЗапросЦен.УстановитьПараметр("ОтборДата", КонецДня(ДокументОбъект.Дата));
        ЗапросЦен.УстановитьПараметр("ОтборТипЦен", ТекРасчетСкидки.СкидкаПоТипуЦен);
        ЗапросЦен.УстановитьПараметр("ОтборНоменклатура", ТаблицаТоваров.ВыгрузитьКолонку("Номенклатура"));
        ТЗСпецЦены = ЗапросЦен.Выполнить().Выгрузить();
        
        //Перебор товаров
        Для Каждого СтрокаТЧ Из ТаблицаТоваров Цикл
            Если СтрокаТЧ.СуммаБезСкидки = 0 Тогда
                Продолжить;
            КонецЕсли;
            
            Если СтрокаТЧ.ПроцентАвтоматическихСкидок = 100 Тогда
                Продолжить;
            КонецЕсли;
            
                СтрТЗСпецЦены = ТЗСпецЦены.Найти(СтрокаТЧ.Номенклатура, "Номенклатура");
                Если СтрТЗСпецЦены <> Неопределено Тогда
                    
                    //Определение кратности товара
                    КолКратныхПачек = Цел(СтрокаТЧ.Количество / ТекРасчетСкидки.СкидкаПоТипуЦен_КратностьКоличестваТовара);
                    
                    Если КолКратныхПачек > 0 Тогда
                        КолТовараСоСкидкой = КолКратныхПачек * ТекРасчетСкидки.СкидкаПоТипуЦен_КратностьКоличестваТовара;
                        
                        //Расчет суммы товара
                        СуммаСПрименениемСкидки = КолТовараСоСкидкой * СтрТЗСпецЦены.Цена;
                        СуммаБезПримененияСкидки = (СтрокаТЧ.Количество - КолТовараСоСкидкой) * СтрокаТЧ.Цена;
                        СтрокаТЧ.Сумма = СуммаСПрименениемСкидки + СуммаБезПримененияСкидки;
                        СтрокаТЧ.ПроцентАвтоматическихСкидок = Окр(((СтрокаТЧ.СуммаБезСкидки - СтрокаТЧ.Сумма) / СтрокаТЧ.СуммаБезСкидки) * 100, 2);
                        
                    КонецЕсли;
                КонецЕсли;
        КонецЦикла;
    КонецЦикла;

Остальные типы скидок, думаю, не так интересны, потому рассматривать не будем.

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4652    9    5    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3058    4    0    

20

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1689    dimanich70    8    

14

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

27.10.2023    2105    19    avmartynov    14    

44

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

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

2 стартмани

22.08.2023    2244    25    progmaster    8    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ZLENKO 398 11.10.17 20:16 Сейчас в теме
Маркетологи чего только не придумают :-) Я недавно делал скидку за % определенного ассортимента в документе, т.е. заданный список товара должен был составлять не менее 20% от суммы документа. Или, например, чтобы получить скидку надо купить не менее 5 наименований из заданного списка товаров.Или, например, скидку за комплект покупки, т.е. комбинирование товаров в комплекты со скидкой. Вобщем вариантов много :-)
2. bakler 14 12.10.17 11:29 Сейчас в теме
А по факту одно и тоже, бездельники
3. TerveRus 18.10.17 09:13 Сейчас в теме
Реализация бонусной системы на старых версиях УТ не менее интересна.
Сейчас повсеместно используют именно накопительные карты с бонусами, а не просто разовые скидки.
4. ZLENKO 398 18.10.17 13:21 Сейчас в теме
(3) "Сейчас повсеместно используют именно накопительные карты с бонусами, а не просто разовые скидки"

Действительно бонусные системы почему то приобрели популярность, поэтому недавно дописал работу с бонусами.
Технически ничего сложного в бонусах нет. Просто вместо скидки начисляем бонус, а механизмы те же что и для скидок.
6. djek88 1 19.10.17 18:52 Сейчас в теме
(4)
Людям проще знать, что у них есть бонусы и их можно потратить, чем где-то предоставляют скидки.

А как реализовали механизм списания бонусов и оплаты бонусами?
8. ZLENKO 398 20.10.17 12:04 Сейчас в теме
(6)
А как реализовали механизм списания бонусов и оплаты бонусами?


Начисление бонусов = Начисление скидки, но дается не скидка в документ, а в регистр накопления накапливается сумма бонуса.
Оплата бонусом = Предоставление скидки, но сумма скидки ограничивается суммой накопленного бонуса, а в регистр списывается сумма бонуса.
10. ZLENKO 398 20.10.17 12:14 Сейчас в теме
(6) "А как реализовали механизм списания бонусов и оплаты бонусами? "

7. VampirRo 20.10.17 10:32 Сейчас в теме
(4) Сейчас повсеместно используют именно накопительные карты с бонусами, а не просто разовые скидки


Бонусные системы приобрели популярность по нескольким причинам. 1. Привлечение клиента на повторное посещение магазина (или покупку)
2.Бонусы обычно обставляются различными условиями, которые делают более прибыльным вариант их использование для магазина при внешней привлекательности для клиента (оплатить им не более какого-то процента от суммы товара, сгорают через определенное время) и т.д. Бонусы начисляемы в баллах (обычно привязанных к рублю) вызывают у покупателя большее чувство собственничества чем проценты скидки от неизвестно какой цены. Грубо говоря сто рублей ощутимее 2 процентов. У меня 3 клиенстких магазина перешли со скидочных накопительных карт на бонусы.
9. ZLENKO 398 20.10.17 12:09 Сейчас в теме
(7)
У меня 3 клиенстких магазина перешли со скидочных накопительных карт на бонусы.


И что это им дало ? :-) На самом деле ни скидки ни бонусы не повышают лояльность :-)
11. djek88 1 20.10.17 13:02 Сейчас в теме
(7)
У меня 3 клиенстких магазина перешли со скидочных накопительных карт на бонусы.


Присоединяюсь.
А эффект от этого перехода как-то измерили?
5. ZLENKO 398 18.10.17 13:27 Сейчас в теме
Примерно то же самое:
Если СтрокаСкидки.СпособПредоставленияСкидки = Перечисления.СпособыПредоставленияСкидки.СкидкаНаКратноеКоличество Тогда
			//даем скидку процентом на количество в строке кратное указанному 
			Если Количество > 0 И СтрокаСкидки.ЗначениеСпособПредоставленияСкидки > 0 И Количество >= СтрокаСкидки.ЗначениеСпособПредоставленияСкидки Тогда
				Скидка = (ЦЕЛ(Количество/СтрокаСкидки.ЗначениеСпособПредоставленияСкидки)*СтрокаСкидки.ЗначениеСпособПредоставленияСкидки)*(Сумма/Количество)*СтрокаСкидки.ЗначениеСкидкиНаценки/100;
			КонецЕсли;
Оставьте свое сообщение