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) Прошу прощения, проверял на старой версии торговли. В последней эта функция сильно изменена и делает как раз то, что надо, огромное спасибо.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

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

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

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