Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Проблема округления итогов в запросе

Проблема округления итогов в запросе
Я
   Eckadra
 
28.11.18 - 16:11
Привет. Помогите пожалуйста, решить одну проблему. Есть простой запрос:
ВЫБРАТЬ
    ТоварыВРозницеОстатки.Склад КАК Склад,
    ТоварыВРозницеОстатки.Номенклатура КАК Номенклатура,
    ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры,
    ТоварыВРозницеОстатки.СуммаПродажнаяОстаток КАК СуммаПродажнаяОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки КАК ТоварыВРозницеОстатки
ИТОГИ
    СУММА(СуммаПродажнаяОстаток)
ПО
    ОБЩИЕ,
    Склад,
    Номенклатура

Итоги считаются верно. Но при округлении и выводе их в макет, если сложить итоги по номенклатуре и сравнить с итогами по складу, то в некоторых случаях возникают расхождения на копейки. Причину я выяснила. После округления итогов теряется точность расчетов, отсюда расхождения. Можно ли как-то избавиться от погрешности?
 
 
   Джинн
 
1 - 28.11.18 - 16:13
Какие тут округления вообще могут быть? Все цифры с двумя знаками после запятой.
   Eckadra
 
2 - 28.11.18 - 16:59
Извиняюсь. Забыла указать... Конфигурация с изменениями. В регистр записываются значения, которые могут иметь точность более 2 знаков. Отсюда и округление.
Для округления используется функция Формат. Если использовать Выразить() в запросе, то итоги будут считаться с учетом этой функции или по исходным значениям?
   dka80
 
3 - 28.11.18 - 17:05
(2) по исходным. Чтобы учитывало выразить помести результат во временную таблицу и итоги получай из временной таблицы
   Джинн
 
4 - 28.11.18 - 17:09
(2) Любят люди находить геморрой на свою задницу....
   RomanYS
 
5 - 28.11.18 - 17:11
(3) "по исходным" с чего вдруг? Выразить() - это округление(а не формат), итоги конечно будут суммировать округленные суммы
   PR
 
6 - 28.11.18 - 17:13
У меня есть запрос безо всяких округлений и регистр с количеством знаков после запятой больше двух, в итоге считается неправильно
В чем проблема, с учетом того, что все вообще нахрен не так, как я написала?
   Джинн
 
7 - 28.11.18 - 17:15
(6) Кстати да - с чего бы вдруг групповой функции округлять?
   Конструктор1С
 
8 - 28.11.18 - 17:21
Это поступает в отчёт на СКД?
   Конструктор1С
 
9 - 28.11.18 - 17:30
Я предполагаю что проблема в следующем. В регистре хранится, допустим, 4 знака после запятой. Запрос делает итоги с 4 знаками после запятой. А потом значения итоговых полей помещаются в другую коллекцию значений, где 2 знака после запятой. Чтобы этого избежать, нужно  сразу в запросе округлить до нужной точности

ВЫРАЗИТЬ(ТоварыВРозницеОстатки.СуммаПродажнаяОстаток КАК ЧИСЛО(15,2))

тогда ошибка округления уйдёт
   youalex
 
10 - 28.11.18 - 17:35
(3) уверены? Итоги это вообще пост-обработка
 
 Рекламное место пустует
   Eckadra
 
11 - 28.11.18 - 17:36
(6) Пробовала использовать функцию Выразить в запросе, но проблема с расхождением итоговых данных осталась. Попробую поместить все во временную таблицу как подсказал (3) и считать итоги по ней.
   Ботаник Гарден Меран
 
12 - 28.11.18 - 17:47
Че непонятного?
Округляют перед выводе в макет (оставить 4 знака после запятой перед текстом "Руб" некошерно).
Потом по распечатанному проверяют.
ТС успехов в накоплении опыта.
   PR
 
13 - 28.11.18 - 17:59
(11) Ты троллишь что ли?
Что не так-то?
В вашей копроситуации это абсолютно нормальное поведение, так и должно быть

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует