![]() |
|
Разрядность числовой колонки ТЗ | ☑ | ||
---|---|---|---|---|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |