Округление в проценте #793044


#0 by Syhov21rus
Здравствуйте, возник такой вопрос, в запросе определяется доля количества запчастей на подразделение в процентах и записывается в регистр сведений в формате длина 5, точность 2. Появляются записи например на два подразделения, на первое 78.125%, на второе 21.875%. При записи автоматически округляется до 78.13 и 21.88 соответственно, в итоге имеем 100.01%. Сами понимате в отчете будет погрешность. Как можно правильо организовать округление. Есть такое правило, если перед 5 стоит четное, то округляется в большую сторону, если нечетное то в меньшую. Модно вручную, но обработка и так долгая.
#1 by Fragster
считать проценты не запросом, а выражением ресурса СКД, тогда при правильном выражении итогов будет 78.13% и 21.88%, но в общих итогах будет 100%
#2 by Syhov21rus
Изначально в регистр сведений заносится обработкой, а отчет формируется через ПостроительОтчета, СКД не подходит для этого отчета
#3 by patria0muerte
Почему решил что не подходит?
#4 by Naf2017
а если на три и поровну? 33.33% 33.33% 33.33% еще сложнее
#5 by Syhov21rus
Очень много нюансов
#6 by Jokero
показывай пользователю итог округленный до целых.
#7 by Syhov21rus
Вероятность такого случая очень мала, думую даже не будет ее
#8 by Jokero
+ имхо, в регистрах лучше хранить конкретные цифры, а проценты высчитывать при формировании отчета.
#9 by Aleksey
Хранить с избыточной точностью Т.е. если нужно 2 знака после запятой, то хранить с точностью 3 знака после запятой
#10 by Fragster
если принципиально на построителе, то выгружай в ТЗ, считай показатель "процент" руками пропорциональным распределением суммы показателя "100" по уменьшающейся базе распределения (или как там оно по научному называется), как-то так:
#11 by Fragster
а потом запихивай в качестве источника в построитель обратно
#12 by тарам пам пам
ну и добавь там, где у тебя записи в регистре формируются,   отнесение этих 0,01% на какую-либо строку (обычно относят на бОльшую строку для уменьшения погрешности).
#13 by Syhov21rus
хорошие предложения надо обсудить с руководством быстродействие скорей всего пострадает, не совсем понятно как это будет работать, несколько тысяч позиций, для каждой номенклатуры пересчитывать отдельно? Номенклатура1 Подразделение1 45,55% Номенклатура1 Подразделение2 20% Номенклатура1 Подразделение3 34,45% Номенклатура2 ........
#14 by Fragster
несколько тысяч итераций цикла из будет выполняться незаметно для глаза. А по другому ты не решишь проблему.
#15 by Fragster
>для каждой номенклатуры пересчитывать отдельно? если такой отчет - то да. тут итоги по номенклатуре и обход по группировкам помогут
#16 by 2dolist
% -> o|o -> (|) -> O
#17 by Naf2017
запросом: ВЫБРАТЬ     ТоварыНаСкладахОстатки.Номенклатура,     ТоварыНаСкладахОстатки.Склад,     РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ВЫБРАТЬ
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С