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

18.08.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Скидка процент за определённое количество товара
.epf 10,82Kb
75
75 Скачать (1 SM) Купить за 1 850 руб.

В некоторый конфигурациях 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 добавлена настройка для применения скидок ко всем товарам в документе.

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

См. также

Загрузка и выгрузка в 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 1С:Розница 3.0 Платные (руб)

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

15600 руб.

20.11.2015    156102    376    378    

513

SALE! 15%

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

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

11100 9435 руб.

29.10.2014    216764    657    527    

456

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

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

2000 руб.

22.04.2019    97291    587    189    

322

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

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

59640 руб.

11.11.2024    314    1    1    

1

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

Расширение возможностей программы 1С УНФ. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

3000 руб.

23.02.2018    58479    160    261    

152

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

Внешняя обработка «Загрузка из Excel в документы (4 вида) для УТ11.4-11.5 может загружать из файла Excel номенклатуру без характеристик и создавать 4 вида документов («Ввод начальных остатков», «Приобретение товаров и услуг», «Регистрация цен поставщика», «Установка цен номенклатуры»). С версии 1.6.3 при создании номенклатуры могут так же загружаться доп. реквизиты и сведения, номера ГТД. С версии 1.7.0 для УТ11.5 возможна загрузка полей:Текстовое описание, Файл описания для сайта, Файл картинки, Производитель, Ценовая группа, Ставка НДС, Срок годности товара.

3000 руб.

05.03.2019    46658    193    99    

93

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

Можно ли в 1С:Розница подключить несколько касс на одно рабочее место? Теперь это возможно! Обработка позволяет подключать неограниченное количество касс к одному рабочему месту и выбирать, на какой кассе пробивать чек в зависимости от необходимости. Публикация состоит из двух файлов: одно из них — расширение конфигурации для ПРОФ-версии, второе — внешняя обработка РМК для базовой версии.

4560 руб.

07.08.2018    76690    491    355    

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