|   |   | 
| 
 | Разрядность числовой колонки ТЗ | ☑ | ||
|---|---|---|---|---|
| 0
    
        Гипервизор 12.08.21✎ 14:50 | 
        Туплю, не дождавшись пятницы.
 Имею 3 варианта запроса: 1) ВЫБРАТЬ КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад И Номенклатура = &Номенклатура) 2) ВЫБРАТЬ Количество ИЗ РегистрНакопления.ТоварыНаСкладах ГДЕ Склад = &Склад И Номенклатура = &Номенклатура 3) ВЫБРАТЬ СУММА(Количество) ИЗ РегистрНакопления.ТоварыНаСкладах ГДЕ Склад = &Склад И Номенклатура = &Номенклатура Заполняю параметры, выгружаю в ТЗ, смотрю разрядность: Таблица = Запрос.Выполнить().Выгрузить(); Разрядность = Таблица.Колонки[0].ТипЗначения.КвалификаторыЧисла.Разрядность; Получаю следующие числа: 38, 15, 0. Почему именно так? Как это вообще работает? Прочитал на ИТС "Разрядность результатов выражений и агрегатных функций в языке запросов" (https://its.1c.ru/db/metod8dev/content/2665/hdoc), но понятней не стало, у меня это единственная запись в регистре. Кроме того, как тогда объяснить, почему именно в 3 варианте разрядность 0? | |||
| 1
    
        lodger 12.08.21✎ 14:55 | 
        запись то приведи     | |||
| 2
    
        Жан Пердежон 12.08.21✎ 14:59 | 
        Какие числа от какого варианта? 
 38 от суммы должно быть по идее | |||
| 3
    
        Гипервизор 12.08.21✎ 15:03 | 
        (1) А что вам даст эта запись? Ну допустим склад: "Москва, ул. Селезневская", а номенклатура: "Патч Бармина универсальный".
 А, пардон, количество номенклатуры 1. Всё, одна запись с таким складом и номенклатурой. | |||
| 4
    
        Гипервизор 12.08.21✎ 15:05 | 
        (2) В порядке написания вариантов:
 1) 38, 2) 15, 3) 0 | |||
| 5
    
        lodger 12.08.21✎ 15:08 | 
        (3) Количество цифр дробной части результата равно количеству цифр дробной части операнда 1 = 0.     | |||
| 6
    
        Жан Пердежон 12.08.21✎ 15:09 | 
        (2) А не, там же остатки, так что всё норм. 
 (4) Разрядность у количества в регистре какая? | |||
| 7
    
        Гипервизор 12.08.21✎ 15:13 | 
        (5) Так я же смотрю Разрядность, а не РазрядностьДробнойЧасти. Количество 1,000.
 (6) Число(15,3). | |||
| 8
    
        1Сергей 12.08.21✎ 15:15 | 
        сколько записей в каждом из случаев?     | |||
| 9
    
        серый КТУЛХУ 12.08.21✎ 15:17 | 
        если не юзаешь "выразить" то функция/формула в запросе в результат возвращает ту разрядность, которая получается де-факто. если получается целое из оперции/функции хоть над стотыщточнотиразрядным ресурсом - возвращается резцльтат с разрядностью 0.
 юзай ВЫРАЗИТЬ для функций/формул в запросе | |||
| 10
    
        серый КТУЛХУ 12.08.21✎ 15:20 | 
        ЗЫ: попробуй чтобы сумма(количество) у тебя давало 1,1 - получишь разрядность не 0 а 1. если например 1,11 - получишь 2. а попробуешь чтобы среднее из 5  2 и 3 - получишь разрядность дофигища (3,33333...)     | |||
| 11
    
        Гипервизор 12.08.21✎ 15:54 | 
        (9) Ну попробовал использовать ВЫРАЗИТь, всё равно разрядность 0.
 (10) Вот, например: ВЫБРАТЬ СУММА(ВложенныйЗапрос.Поле1) ИЗ (ВЫБРАТЬ 1 КАК Поле1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 0.1) КАК ВложенныйЗапрос Результат будет 1,1. А разрядность снова 0. | |||
| 12
    
        серый КТУЛХУ 12.08.21✎ 16:28 | 
        (11): ох ё, да.
 просто потому что в результате запроса это - всегда(!) составной тип "Null,Число" выжечь оттуда тип "Null" через ЕСТЬNULL, ВЫРАЗИТЬ - у меня не получилось. | |||
| 13
    
        МихаилМ 12.08.21✎ 17:10 | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |