Скидки на цену товара.

1. gangrel1989 12.02.20 17:27 Сейчас в теме
Добрый день.
Имеется проблема, конфигурация УТ 11.1, но это к теме имеет косвенное отношение. Необходимо распределять скидку на товар для каждой позиции. Приведу пример.
Продаем Товар, 200 шт., цена Товара 0,31 р. в сумме 62 р. На всю сумму делаем скидку 31 р. Теперь нам надо определить цену Товара после применения скидки. 31/200 = 0,155. Округлить до 0,15 или 0,16 мы не можем, тогда итоговая сумма не будет равна 31 р. Мы должны разделить на несколько позиций, например
1. Товар цена: 0,15, количество 150, сумма 22,5 р.
2. Товар цена: 0,17, количество 50, сумма 8,5 р.
Итого: 31 р.

Проблема усложняется и тем, что количество товара может быть не целым, например 0,003.

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

В какую сторону копать для построения алгоритма?
По теме из базы знаний
Найденные решения
10. dhurricane 12.02.20 22:04 Сейчас в теме
(9) Если вопрос заключается в том, как распределить сумму после применения скидки пропорционально количеству, при этом учесть разрядность результата, то используйте функцию "ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам" (в зависимости от версии конфигурации функция может располагаться и в модуле "ОбщегоНазначенияКлиентСервер").
gangrel1989; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 12.02.20 19:07 Сейчас в теме
а зачем такие сложности?
просто в оплату пишите несколько сумм с разными типами
оплата рублями
оплата баллами
общая сумма должна равняться сумме документа(чека), и ничего разносить не надо
3. gangrel1989 12.02.20 19:12 Сейчас в теме
(2) к сожалению надо, в подробности опускаться не хотелось бы, это не поможет решить задачу. Но суть такова что необходимо цену товара получить именно с учетом скидок.
4. soft_wind 12.02.20 19:39 Сейчас в теме
хорошо,зайдем с другого края, у покупателя есть бонусов на 500 руб.
он оплачивает покупку на сумму 400 руб бонусами. по вашей логике цена товара уйдет в 0. как вы через бухгалтерию будете проводить продажу за 0 руб.? Налоговые органы не поймут!
5. gangrel1989 12.02.20 19:46 Сейчас в теме
(4) вы зачем-то прицепились к скидке бонусом, проблема может быть и при обычной скидке. Под полным списанием со счета я не подразумевал возможность списания баллов больше или равным сумме документа. Вопрос о реализации в розницу товаров в подарок к теме вообще никакого отношения не имеет.
6. dhurricane 12.02.20 19:53 Сейчас в теме
А как Вы видите разделение товара на несколько позиций? Вы подразумеваете, что после применения скидки строка товара в документе должна разбиться на две строки с разными ценами?
7. gangrel1989 12.02.20 21:45 Сейчас в теме
(6) Конкретно в моем случае мне необходимо получить отдельную таблицу с рассчитанными распределениями сумм.
8. dhurricane 12.02.20 21:49 Сейчас в теме
(7) Извините, тогда я не понял Ваше первоначальных вопрос. Я подумал, что результат по описанному алгоритму Вам необходимо получить непосредственно в ТЧ "Товары" типовыми средствами.

А раз Вы заполняете некую собственную таблицу, при этом привели алгоритм расчета сумм, то в чем же тогда вопрос?
9. gangrel1989 12.02.20 22:01 Сейчас в теме
(8) Я не привел алгоритма. Вопрос в том, какой метод использовать для разработки алгоритма? Я понимаю, что это частный случай равномерного распределения, но не уверен что не существует типовых методов для данной предметной области, не хотелось бы изобретать велосипед.
10. dhurricane 12.02.20 22:04 Сейчас в теме
(9) Если вопрос заключается в том, как распределить сумму после применения скидки пропорционально количеству, при этом учесть разрядность результата, то используйте функцию "ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам" (в зависимости от версии конфигурации функция может располагаться и в модуле "ОбщегоНазначенияКлиентСервер").
gangrel1989; +1 Ответить
11. gangrel1989 12.02.20 22:24 Сейчас в теме
(10) Не подходит, функция кидает не распределенный остаток на максимальный элемент массива. Кинув предложенный в теме пример, получил 0.16 для всего массива и -0.84 для нулевого элемента, т.е. помимо неравномерного распределения, еще и цена может выйти отрицательной.
12. gangrel1989 12.02.20 22:53 Сейчас в теме
(10) Прошу прощения, проверял на старой версии торговли. В последней эта функция сильно изменена и делает как раз то, что надо, огромное спасибо.
13. пользователь 13.02.20 06:42
Сообщение было скрыто модератором.
...
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)