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