|
Как задать квалификаторы числовой колонки результата запроса? | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
10.01.23
✎
08:54
|
8.3.22
Делаю так Запрос = Новый Запрос("ВЫБРАТЬ ВЫРАЗИТЬ(0 КАК ЧИСЛО(10, 2))"); Сообщить(Запрос.Выполнить().Выгрузить().Колонки[0].ТипЗначения.КвалификаторыЧисла.Разрядность); Получаю 0 |
|||
1
Ryzeman
10.01.23
✎
08:57
|
Возможно, какая-то приколюха с нулём. Создай ТЗ с нужной разрядностью и выгрузи в неё результат запроса, должно сработать.
А что вернёт Запрос = Новый Запрос("ВЫБРАТЬ ВЫРАЗИТЬ(1.1111 КАК ЧИСЛО(10, 2))"); Сообщить(Запрос.Выполнить().Выгрузить().Колонки[0].ТипЗначения.КвалификаторыЧисла.Разрядность); |
|||
2
TormozIT
гуру
10.01.23
✎
08:57
|
(1) 0
|
|||
3
Гипервизор
10.01.23
✎
08:58
|
(0) Вы ведь уже поднимали этот вопрос? В результате запроса отсутствуют квалификаторы числовых колонок из константных выражений
|
|||
4
Ryzeman
10.01.23
✎
08:59
|
(2) Значит, он игнорирует расчётные форматы в принципе и задаёт типы значений исключительно по типам полей таблиц)
|
|||
5
TormozIT
гуру
10.01.23
✎
08:59
|
(1) Преобразование ТЗ на клиенте - лишние затраты, зависящие от размеры таблицы. Это - очень неэффективное решение, но согласен работать будет.
(3) Спасибо. Че то подзабыл уже. |
|||
6
TormozIT
гуру
10.01.23
✎
09:02
|
Кстати из 1С мне так и не ответили. Зарегистрировали обращение и "положили на нижнюю полку"
|
|||
7
TormozIT
гуру
10.01.23
✎
09:10
|
Кстати проблема касается не только константных выражений, но и агрегатных функций
|
|||
8
Ryzeman
10.01.23
✎
09:11
|
(7) ну, это подтверждает мои догадки из (4). Не думаю, что это где-то описано, тут только эмпирическим путём выяснять.
|
|||
9
TormozIT
гуру
10.01.23
✎
09:16
|
Для запроса
ВЫБРАТЬ ВЫРАЗИТЬ(Константы.ГраницаПогрешностиСЛУ КАК ЧИСЛО(10, 2)) где константа имеет квалификаторы (15,2) тоже будет 0 |
|||
10
Ryzeman
10.01.23
✎
09:17
|
(9) ну это опять же расчётный формат. Теперь попробуй
ВЫБРАТЬ Константы.ГраницаПогрешностиСЛУ должно всё корректно быть |
|||
11
lodger
10.01.23
✎
09:18
|
(9) слово Выразить всё ломает.
платформа на постообработке подставляет (2): Null, Число(0,0) |
|||
12
lodger
10.01.23
✎
09:18
|
(10) так да
|
|||
13
lodger
10.01.23
✎
09:18
|
Запрос = Новый Запрос(
"ВЫБРАТЬ | КоэффициентОкругленияЦен.Значение |ИЗ | Константа.КоэффициентОкругленияЦен КАК КоэффициентОкругленияЦен | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВЫРАЗИТЬ(231.12345678 КАК ЧИСЛО(15, 8)) |"); Колонка = Запрос.Выполнить().Выгрузить().Колонки[0]; Сообщить(Колонка.ТипЗначения.КвалификаторыЧисла.Разрядность); вот так тоже ломает |
|||
14
lodger
10.01.23
✎
09:22
|
и дело даже не в преобразовании к ТЗ
резЗапроса = Запрос.Выполнить(); Колонка = резЗапроса.Колонки.Получить(0); Сообщить(Колонка.ТипЗначения.КвалификаторыЧисла.Разрядность); тут такая же петрушка. |
|||
15
VladZ
10.01.23
✎
09:59
|
(13) Поменяй местами выборку: сначала ВЫРАЗИТЬ(231.12345678 КАК ЧИСЛО(15, 8)) потом константу.
|
|||
16
lodger
10.01.23
✎
10:46
|
(15) без разницы.
|
|||
17
VladZ
10.01.23
✎
11:50
|
(16) Жаль, не удался фокус.
|
|||
18
lodger
10.01.23
✎
12:04
|
(17) положил в ВТ и выбрал из ВТ - то же.
сгруппировал в сумму типизированное и выраженное - то же. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |