|
Разрядность для агрегатных функций | ☑ | ||
---|---|---|---|---|
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" будет показывать строго два знака после запятой независимо от того, что было в исходном значении.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |