Имя: Пароль:
1C
1С v8
Язык запросов, функция СУММА: баг или особенность?
0 mike124
 
19.06.19
13:27
Исходные данные: 1С:Предприятие 8.3 (8.3.10.2252)
Обычное приложение, толстый клиент
Формирую отчет по данным некоего документа РаботаПроизводство (сами добавили)
Есть реквизит документа РаботаПроизводство.БезБрака - число из 4-х цифр.

Выполняю запрос:

ВЫБРАТЬ
  РаботаПроизводство.ТехническоеЗадание КАК ТехническоеЗадание,
  СУММА(РаботаПроизводство.БезБрака) КАК Отгрузка,
ИЗ
  Документ.РаботаПроизводство КАК РаботаПроизводство
ГДЕ
  РаботаПроизводство.ПометкаУдаления = ЛОЖЬ
  И РаботаПроизводство.Отгрузка = ИСТИНА
  И РаботаПроизводство.Дата >= НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
  И РаботаПроизводство.Дата <= КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
СГРУППИРОВАТЬ ПО
  РаботаПроизводство.ТехническоеЗадание

В результате запроса я не могу получить сумму более 9999. Т.е., получается, что 1С, для хранения результата функции СУММА, использует переменную того же формата, что и аргумент функции СУММА.

Увеличил размер реквизита БезБрака до 10 цифр, и результат стал нормальным. Но если сумма когда либо превысит  число 9999999999, то опять результат будет неверный.
1 Fragster
 
гуру
19.06.19
13:27
Так и задумано
2 mike124
 
19.06.19
13:31
Очень странно задумано. Я надеялся, что в ЯЗ как в SQL, а вот нет...
3 Вафель
 
19.06.19
13:36
а если выразить?
4 Asmody
 
19.06.19
14:48
(1) Да ладно?
5 dnab
 
19.06.19
15:01
странно что переполнение происходит
https://its.1c.ru/db/metod8dev/content/2665/hdoc/_top/язык запросов функция сумма
"При разработке конфигураций выбор разрядности полей объектов метаданных должен определяться возможной разрядностью хранимых в них данных и не должен учитывать возможное увеличение разрядности после выполнения арифметических операций и функций. "
"Агрегатная функция СУММА вычисляется по возможности точно. Количество цифр дробной части результата равно количеству цифр дробной части операнда. Количество цифр целой части увеличивается на 7 цифр. Если при этом общее количество цифр целой и дробной части превысит 38, то оно будет приведено к 38 за счет уменьшения числа цифр дробной части, но не менее, чем до 8. "
6 mikecool
 
19.06.19
15:06
где то настроено оформление вывода до 4х знаков
7 dnab
 
19.06.19
15:08
(5)+ вот более правильная ссылка
https://its.1c.ru/db/metod8dev#content:2665:hdoc
8 dezss
 
19.06.19
15:23
(0) а где выполняется этот запрос и просматривается результат?
Не в консоли запросов, случаем?
9 Fragster
 
гуру
19.06.19
15:54
(2) а в sql не так, разве?