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

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);
                        
                    КонецЕсли;
                КонецЕсли;
        КонецЦикла;
    КонецЦикла;

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

32330 руб.

29.06.2023    11681    35    15    

41

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

6000 руб.

07.02.2023    12567    116    20    

71

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36600 руб.

28.08.2025    7400    2    2    

6

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

9760 руб.

17.06.2025    3134    9    0    

9

Адаптация типовых решений 1С 8.3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Беларусь Россия Платные (руб)

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    1088    1    8    

2

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

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

9150 руб.

02.08.2023    7896    25    5    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ZLENKO 398 11.10.17 20:16 Сейчас в теме
Маркетологи чего только не придумают :-) Я недавно делал скидку за % определенного ассортимента в документе, т.е. заданный список товара должен был составлять не менее 20% от суммы документа. Или, например, чтобы получить скидку надо купить не менее 5 наименований из заданного списка товаров.Или, например, скидку за комплект покупки, т.е. комбинирование товаров в комплекты со скидкой. Вобщем вариантов много :-)
2. bakler 15 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;
			КонецЕсли;
Для отправки сообщения требуется регистрация/авторизация