Имя: Пароль:
1C
 
Разрядность для агрегатных функций
0 merlin789
 
10.07.18
15:53
Добрый день. Прошу помощи со следующей проблемой:
Есть запрос в завершении которого я формирую итоги по строкам агрегатной функцией Среднее. Проблема в том, что для этой функции нет возможности указать разрядность, и в некоторых строках возникают неприлично длинные значения дробной части. Отчет я формирую запросом и далее вывожу результат в макет. Как ограничить разрядность выводимых значений. Знаю в скд есть возможность задать представление для выводимых значений. Но как быть, если запрос после выполнения сразу выводится в макет.
Вот так выглядит итоговая часть запроса:

        УПОРЯДОЧИТЬ ПО
                    ОстаткиСЦеной.Номенклатура
                ИТОГИ
                    СУММА(Х),
                    СУММА(С),
                    СУММА(П),
                    СРЕДНЕЕ(ЦенаХ),
                    СРЕДНЕЕ(ЦенаС),
                    СРЕДНЕЕ(ЦенаП),
                    СУММА(ВПути),
                    СРЕДНЕЕ(ЦенаВПути)
                ПО
                    Номенклатура,Склад
Подскажите где почитать или подсмотреть как это реализовать?
1 Cyberhawk
 
10.07.18
15:58
Поместить в ВТ, далее ВЫРАЗИТЬ
2 Cyberhawk
 
10.07.18
15:58
Хотя с итогами в ВТ не поместишь, ога
3 merlin789
 
10.07.18
15:59
Вот-вот, эта мысль уже приходила..
4 Cyberhawk
 
10.07.18
16:00
Ну так значит при выводе в макет обрабатывай / округляй
5 RomanYS
 
10.07.18
16:01
"Но как быть, если запрос после выполнения сразу выводится в макет."

Что значит "сразу"? В СКД есть представления, оформление и прочее. В обычном макете есть формат вывода. Если обработка выборки кодом - вообще деай что хочешь: округляй, форматируй.
6 merlin789
 
10.07.18
16:03
(5) СКД я не использую, формирую запросом таблицу, получаю общий макет и вывожу в него
7 dezss
 
10.07.18
16:03
(6) а как выводишь?
8 merlin789
 
10.07.18
16:04
Пока ВыборкаНоменклатура.Следующий() Цикл
        ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
        ОбластьНоменклатура.Параметры.ИтогКоличество=ВыборкаНоменклатура.Х+ВыборкаНоменклатура.С+ВыборкаНоменклатура.П;
        ТабДок.Вывести(ОбластьНоменклатура, ВыборкаНоменклатура.Уровень());
        ВыборкаСклады = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Склад");
        Пока ВыборкаСклады.Следующий() Цикл
            ОбластьСклад.Параметры.Заполнить(ВыборкаСклады);
            ТабДок.Вывести(ОбластьСклад, ВыборкаСклады.Уровень());
            ВыборкаДетальныеЗаписи=ВыборкаСклады.Выбрать();
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
            ОбластьДетальныхЗаписей.Параметры.ИтогКоличество=ВыборкаДетальныеЗаписи.Х+ВыборкаДетальныеЗаписи.С+ВыборкаДетальныеЗаписи.П;
            ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
            КонецЦикла;
        КонецЦикла;


    КонецЦикла;
9 RomanYS
 
10.07.18
16:05
(6) Формат ячейки в макете прекрасно решает твою проблему.
10 dezss
 
10.07.18
16:09
(8) ОбластьНоменклатура.Параметры.ЦенаХ = Цел(ВыборкаНоменклатура.ЦенаХ*100)/100
11 Малыш Джон
 
10.07.18
16:09
(9) +1

формат - он не в запросе, формат, он при выводе
12 merlin789
 
10.07.18
16:09
(9) Даже с указанием формата ячейки ситуация не меняется.
Вот результат одной из групповых ячеек собранной из 20 строк 18 739,596333333333333333333333333333333333
13 dezss
 
10.07.18
16:10
(10) + ну или округлять, если так будет кошерней
14 RomanYS
 
10.07.18
16:21
(12) Формат "ЧДЦ=2" будет показывать строго два знака после запятой независимо от того, что было в исходном значении.