![]() |
![]() |
![]() |
|
Проблема округления итогов в запросе | ☑ | ||
---|---|---|---|---|
0
Eckadra
28.11.18
✎
16:11
|
Привет. Помогите пожалуйста, решить одну проблему. Есть простой запрос:
ВЫБРАТЬ ТоварыВРозницеОстатки.Склад КАК Склад, ТоварыВРозницеОстатки.Номенклатура КАК Номенклатура, ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры, ТоварыВРозницеОстатки.СуммаПродажнаяОстаток КАК СуммаПродажнаяОстаток ИЗ РегистрНакопления.ТоварыВРознице.Остатки КАК ТоварыВРозницеОстатки ИТОГИ СУММА(СуммаПродажнаяОстаток) ПО ОБЩИЕ, Склад, Номенклатура Итоги считаются верно. Но при округлении и выводе их в макет, если сложить итоги по номенклатуре и сравнить с итогами по складу, то в некоторых случаях возникают расхождения на копейки. Причину я выяснила. После округления итогов теряется точность расчетов, отсюда расхождения. Можно ли как-то избавиться от погрешности? |
|||
1
Джинн
28.11.18
✎
16:13
|
Какие тут округления вообще могут быть? Все цифры с двумя знаками после запятой.
|
|||
2
Eckadra
28.11.18
✎
16:59
|
Извиняюсь. Забыла указать... Конфигурация с изменениями. В регистр записываются значения, которые могут иметь точность более 2 знаков. Отсюда и округление.
Для округления используется функция Формат. Если использовать Выразить() в запросе, то итоги будут считаться с учетом этой функции или по исходным значениям? |
|||
3
dka80
28.11.18
✎
17:05
|
(2) по исходным. Чтобы учитывало выразить помести результат во временную таблицу и итоги получай из временной таблицы
|
|||
4
Джинн
28.11.18
✎
17:09
|
(2) Любят люди находить геморрой на свою задницу....
|
|||
5
RomanYS
28.11.18
✎
17:11
|
(3) "по исходным" с чего вдруг? Выразить() - это округление(а не формат), итоги конечно будут суммировать округленные суммы
|
|||
6
PR
28.11.18
✎
17:13
|
У меня есть запрос безо всяких округлений и регистр с количеством знаков после запятой больше двух, в итоге считается неправильно
В чем проблема, с учетом того, что все вообще нахрен не так, как я написала? |
|||
7
Джинн
28.11.18
✎
17:15
|
(6) Кстати да - с чего бы вдруг групповой функции округлять?
|
|||
8
Конструктор1С
28.11.18
✎
17:21
|
Это поступает в отчёт на СКД?
|
|||
9
Конструктор1С
28.11.18
✎
17:30
|
Я предполагаю что проблема в следующем. В регистре хранится, допустим, 4 знака после запятой. Запрос делает итоги с 4 знаками после запятой. А потом значения итоговых полей помещаются в другую коллекцию значений, где 2 знака после запятой. Чтобы этого избежать, нужно сразу в запросе округлить до нужной точности
ВЫРАЗИТЬ(ТоварыВРозницеОстатки.СуммаПродажнаяОстаток КАК ЧИСЛО(15,2)) тогда ошибка округления уйдёт |
|||
10
youalex
28.11.18
✎
17:35
|
(3) уверены? Итоги это вообще пост-обработка
|
|||
11
Eckadra
28.11.18
✎
17:36
|
(6) Пробовала использовать функцию Выразить в запросе, но проблема с расхождением итоговых данных осталась. Попробую поместить все во временную таблицу как подсказал (3) и считать итоги по ней.
|
|||
12
Ботаник Гарден Меран
28.11.18
✎
17:47
|
Че непонятного?
Округляют перед выводе в макет (оставить 4 знака после запятой перед текстом "Руб" некошерно). Потом по распечатанному проверяют. ТС успехов в накоплении опыта. |
|||
13
PR
28.11.18
✎
17:59
|
(11) Ты троллишь что ли?
Что не так-то? В вашей копроситуации это абсолютно нормальное поведение, так и должно быть |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |