Создание своих автоматических скидок в УТ 11.4

18.08.21

Учетные задачи - Ценообразование, анализ цен

Разбирался тут недавно с механизмом автоматического расчёта скидок/наценок для УТ 11.4 по произвольному алгоритму. Т.к. механизм не простой и требуется не часто, решил выложить здесь свои изыскания, и сам смогу подсмотреть и может сэкономлю кому много времени.

Скачать файлы

Наименование Файл Версия Размер
Скидка процент за определённое количество товара
.epf 10,82Kb
65
.epf 10,82Kb 65 Скачать

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

Первое и главное, где взять шаблон, чтобы не изобретать велосипед? Оказывается в демо-конфигурации 1С:Управление торговлей 11.4 уже есть две таких обработки:

  1. условие предоставления скидки за ассортимент — проверка условия;
  2. скидка/наценка процент за способ доставки — расчёт скидки.

Регистрация обработки происходит стандартным образом, однако все основные данные заполняются по умолчанию в функций ПараметрыРегистрацииВнешнейОбработкиСкидкиНаценки() или ПараметрыРегистрацииВнешнейОбработкиУсловияПредоставленияСкидокНаценок() общего модуля СкидкиНаценкиСервер. В данные процедуры передаются только Наименование и Информация. Зря не дали возможность передавать версию обработки, ну да ладно, всегда можно самому добавить данный функционал.

Соответственно один вид обработки отвечает непосредственно за расчёт скидок/наценок, а второй за условие применения тех или иных скидок/наценок. Соответственно одновременно и условия и методику расчёта описать в одной обработке нельзя. Причём, если вы реализуете произвольный алгоритм расчёта скидок, то наложить отбор на номенклатуру или сформировать условие для скидки уже нельзя. Взялись сами считать, вот и считаем. 

Рассмотрим механизм расчёта скидок, проверку условия изучим позже.

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

Вторым шагом формируется параметр ДеревоСкидок, как результат запроса к справочнику СкидкиНаценки. Полученные параметры передаются процедуре РассчитатьСкидкиРекурсивно(), которая рассчитывает скидку для каждой строки дерева скидок.

Непосредственный расчёт происходит в процедуре РассчитатьСкидку() с параметрами СтрокаДерева и ПараметрыРасчета, где по типу параметра СтрокаДерева.СпособПредоставления определяется алгоритм расчёта скидок, именно тут запускается процедура расчёта скидок, расположенная в модуле объекта внешней обработки. Расчёт запускается в безопасном режиме!

Есть ещё один важный параметр, на основании которого рассчитываются скидки, а именно наши настройки из внешней обработки, их нужно как-то передать в алгоритм расчёта. Мы должны их оформить в структуру и определённым образом организовать выгрузку во временное хранилище (см. пример,  функцию СохранитьНастройкиВнешнейОбработки() в модуле формы), потом эти настройки «как есть» будут сохранены в реквизите ПараметрыВнешнейОбработки элемента справочника СкидкиНаценки, а во время запуска нашей процедуры будут переданы в качестве параметра Настройки.

В итоге в процедуру Рассчитать модуля объекта внешней обработки передаются следующие параметры:

  • СкидкаНаценка — соответствующие данные элемента справочника СкидкиНаценки;
  • Настройки — полученные из хранилища значение наши настройки в виде структуры;
  • Товары — выборка из переменной ПараметрыРасчета.Товары с отбором по условию, в случае, если скидка применяется не ко всем товарам (т.к. отбор по товарам не осуществляется, то это все товары).
  • ПараметрыРасчета — большая структура со всеми данными для расчёта скидки.

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

  • ПрименитьЗначениеСкидкиКТовару() — это применение скидки к конкретному товару;
  • РаспределитьЗначениеСкидкиНаТовары() — распределение скидки между всеми товарами пропорционально их стоимости.

Для примера предлагаю внешнюю обработку, реализующую начисление скидки от некоторого количества товара определённой номенклатуры. Т.е., допустим, за 1 штуку ничего не даём, за 2 - 20%, за 3 и далее- 40% за штуку. Пример настроек приведён выше на скриншоте, а сама обработка сделана на основе демонстрационных обработок из 1С:УТ 11.4.

Все исследования проводил на конфигурации Управление торговлей, редакция 11 (11.4.11.55) и потом проверял на 1С:Комплексная автоматизация 2 (2.4.11.46).

UPD: 18.08.2021 добавлена настройка для применения скидок ко всем товарам в документе.

скидка наценка

См. также

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210202    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150738    365    375    

501

Простое ценообразование (установка цен номенклатуры) для 1С 8.3 (УТ 11 / ERP 2 / КА 2 / Розница 2) + (УТ 10.3 / УПП / КА 1 / Розница 1)

Оптовая торговля Розничная торговля Ценообразование, анализ цен Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:CRM ПРОФ, КОРП Управленческий учет Платные (руб)

Есть проблемы с расчетом и установкой цен на товары? Универсальная подсистема для ценообразования в 1С поможет навести порядок с ценами! Механизм позволяет задавать произвольные правила расчета колонок цен для разных групп товаров и легко их изменять. Может автоматически (по расписанию) обновлять цены в 1С и выполнять проверку наличия и корректности цен на все товары.

30000 руб.

13.11.2017    77906    40    11    

46

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    91951    512    186    

293

Универсальная загрузка остатков и цен поставщиков в 1С (УТ 11, КА 2, ERP 2.0) из файлов Excel, CSV, XML (YML и CML)

Прайсы Оптовая торговля Розничная торговля Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Обработка позволяет легко настроить загрузку прайс-листов и остатков поставщиков. Форматы файлов задаются для каждого поставщика отдельно. В настройках предусмотрена возможность гибкой обработки входящих данных (убрать лишние символы, пересчитать цены в другую валюту, сделать произвольную наценку и т.д.).

12000 руб.

23.01.2017    58863    59    48    

68

Пересчет, расчет цены на процент от другой цены в документе Установка цен. УТ 11.5, Розница 2.3

Ценообразование, анализ цен Платформа 1С v8.3 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Расширение добавляет возможность рассчитать (изменить) цену как процент от другого вида цены в документе Установка цен номенклатуры. Для конфигураций УТ 11.5 и Розница 2.3

7200 руб.

10.08.2022    8505    5    2    

8
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. aspirator23 339 01.07.21 12:07 Сейчас в теме
Автоматические скидки реализованные через внешние обработки "тормозные". Мне кажется что их нужно как можно меньше использовать, хотя сам механизм удобный для создания нетипичных или сложных скидок. Проблема заключается в том что создаются временные внешние файлы и их создание медленно. При этом какого механизма повторного использования этих файлов я не нашел в конфигурации.
2. soulner 359 01.07.21 14:20 Сейчас в теме
(1) Да, конечно вы правы. Но в УТ стандартный набор скидок небольшой и часто хочется чего-то большего, а заметное торможение наблюдается только при большом количестве товаров. А папка временных файлов должна быть на быстром диске или в памяти, тогда торможение не особо заметно.
3. PanNataly 15.07.21 17:10 Сейчас в теме
Скачала файлик, Установила скидку при покупке более 23шт скидка 20%, в заказе 24 штуки. обработка выдала автоматическую скидку 1,67%. не поняла, по какой формуле считает
4. soulner 359 16.07.21 20:16 Сейчас в теме
(3) Вы правы, была ошибка. Исправил, обработку в публикации обновил, вам выслал ссылку на обработку без ошибок.
А формула там простая: в вашем случае с 1 до 23 шт нет скидки, а на 24-ю штуку скидка 20%, общая скидка должна быть 0.83%.
5. ilnur75 18.08.21 10:29 Сейчас в теме
а возможно сделать чтобы такая скидка применялась ко всей номенклатуре ?
6. soulner 359 18.08.21 12:35 Сейчас в теме
(5) Добавил настройку, обновил файл в публикации.
Прикрепленные файлы:
7. ilnur75 18.08.21 14:06 Сейчас в теме
скиньте пож-та мне новый файл.
9. пользователь 18.08.21 15:49
Сообщение было скрыто модератором.
...
8. пользователь 18.08.21 15:08
Сообщение было скрыто модератором.
...
10. пользователь 18.08.21 15:50
Сообщение было скрыто модератором.
...
11. ilnur75 18.08.21 16:01 Сейчас в теме
эту тему можно развить, например сделать возможность применения скидки учитывая не только колво по строке (т.е. по отдельному товару ), но и применить ко всем строкам таблицы товары. например 2 товара по 1 ед. На второй товар идет скидка.
12. soulner 359 18.08.21 16:06 Сейчас в теме
(11) Публикация как раз о том, как сделать самому то, что хочешь. Тут на всех не угодишь, надо конкретно под задачу делать обработку. Иначе получим сложные нечитаемые настройки и тормоза при расчёте скидки (как коллега в первом посте говорил). ИМХО.
13. SGordon1 05.04.22 12:22 Сейчас в теме
А бонусы так можно самому посчитать?
14. soulner 359 05.04.22 14:19 Сейчас в теме
(13) Нет, там в результате работы заполняется специальная таблица значений в которой указываются именно скидки или наценки.
SGordon1; +1 Ответить
15. MarryJane 31 20.02.23 18:33 Сейчас в теме
На основе, сделал скидку на "подарок (скидка 99%) на самый дешевый товар в чеке". Спасибки.
Оставьте свое сообщение