Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Разрядность числовой колонки ТЗ

Разрядность числовой колонки ТЗ
Я
   Гипервизор
 
12.08.21 - 14:50
Туплю, не дождавшись пятницы.

Имею 3 варианта запроса:
1) ВЫБРАТЬ КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад И Номенклатура = &Номенклатура)
2) ВЫБРАТЬ Количество ИЗ РегистрНакопления.ТоварыНаСкладах ГДЕ Склад = &Склад И Номенклатура = &Номенклатура
3) ВЫБРАТЬ СУММА(Количество) ИЗ РегистрНакопления.ТоварыНаСкладах ГДЕ Склад = &Склад И Номенклатура = &Номенклатура

Заполняю параметры, выгружаю в ТЗ, смотрю разрядность:
Таблица = Запрос.Выполнить().Выгрузить();
Разрядность = Таблица.Колонки[0].ТипЗначения.КвалификаторыЧисла.Разрядность;

Получаю следующие числа: 38, 15, 0.
Почему именно так? Как это вообще работает?
Прочитал на ИТС "Разрядность результатов выражений и агрегатных функций в языке запросов" (https://its.1c.ru/db/metod8dev/content/2665/hdoc), но понятней не стало, у меня это единственная запись в регистре. Кроме того, как тогда объяснить, почему именно в 3 варианте разрядность 0?
   lodger
 
1 - 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
   lodger
 
5 - 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).
   1Сергей
 
8 - 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

Список тем форума
 
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.