|
Распределение суммы прапорционально | ☑ | ||
---|---|---|---|---|
0
Дебет
17.12.15
✎
12:18
|
В определенном документе пытаюсь распределить сумму согласно количества материалов. Всего 14 позиций материалов, делаю в Запросе. Суммы распределения должны получиться с копейками. Но как бы я не старался итог у меня не 100 % а 99,99% Теряется 0,01%, соответственно и конечная сумма не сходится, что в моем случае не как нельзя допустить=(. Может старшие научные сотрудники подскажут как обойти, необходимое?
|
|||
1
Godofsin
17.12.15
✎
12:19
|
ну так показывай, что ты там распределяешь
|
|||
2
Господин ПЖ
17.12.15
✎
12:19
|
взять функцию готовую из типовых
|
|||
3
Timon1405
17.12.15
✎
12:19
|
// Выполняет пропорциональное распределение суммы в соответствии
// с заданными коэффициентами распределения. // // Параметры: // РаспределяемаяСумма - Число - сумма, которую надо распределить; // МассивКоэффициентов - Массив - коэффициенты распределения; // Точность - Число - точность округления при распределении. Необязателен. // // Возвращаемое значение: // Массив - массив размерностью равный массиву коэффициентов, содержит // суммы в соответствии с весом коэффициента (из массива коэффициентов). // В случае если распределить не удалось (сумма = 0, кол-во коэффициентов = 0, // или суммарный вес коэффициентов = 0), тогда возвращается значение Неопределено. // Функция РаспределитьСуммуПропорциональноКоэффициентам(Знач РаспределяемаяСумма, Коэффициенты, Знач Точность = 2) Экспорт Если Коэффициенты.Количество() = 0 Или Не ЗначениеЗаполнено(РаспределяемаяСумма) Тогда Возврат Неопределено; КонецЕсли; ИндексМаксимальногоКоэффициента = 0; МаксимальныйКоэффициент = 0; РаспределеннаяСумма = 0; СуммаКоэффициентов = 0; Для Индекс = 0 По Коэффициенты.Количество() - 1 Цикл Коэффициент = Коэффициенты[Индекс]; АбсолютноеЗначениеКоэффициента = ?(Коэффициент > 0, Коэффициент, -Коэффициент); Если МаксимальныйКоэффициент < АбсолютноеЗначениеКоэффициента Тогда МаксимальныйКоэффициент = АбсолютноеЗначениеКоэффициента; ИндексМаксимальногоКоэффициента = Индекс; КонецЕсли; СуммаКоэффициентов = СуммаКоэффициентов + Коэффициент; КонецЦикла; Если СуммаКоэффициентов = 0 Тогда Возврат Неопределено; КонецЕсли; Результат = Новый Массив(Коэффициенты.Количество()); Для Индекс = 0 По Коэффициенты.Количество() - 1 Цикл Результат[Индекс] = Окр(РаспределяемаяСумма * Коэффициенты[Индекс] / СуммаКоэффициентов, Точность, 1); РаспределеннаяСумма = РаспределеннаяСумма + Результат[Индекс]; КонецЦикла; // Погрешности округления отнесем на коэффициент с максимальным весом. Если Не РаспределеннаяСумма = РаспределяемаяСумма Тогда Результат[ИндексМаксимальногоКоэффициента] = Результат[ИндексМаксимальногоКоэффициента] + РаспределяемаяСумма - РаспределеннаяСумма; КонецЕсли; Возврат Результат; КонецФункции |
|||
4
Быдло замкадное
17.12.15
✎
12:21
|
в последней строчке делай = общая сумма - уже распределили.
|
|||
5
PR третий
17.12.15
✎
12:22
|
(0) Прапорционально - это по прапорам?
|
|||
6
Дебет
17.12.15
✎
12:22
|
Большое Спасибо
|
|||
7
Дебет
17.12.15
✎
12:23
|
(3) в своей бухии не нашел такой функции
|
|||
8
Господин ПЖ
17.12.15
✎
12:24
|
>в последней строчке делай
так верстают только .удаки (с) Татьяныч... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |