0
mike124
19.06.19
✎
13:27
|
Исходные данные: 1С:Предприятие 8.3 (8.3.10.2252)
Обычное приложение, толстый клиент
Формирую отчет по данным некоего документа РаботаПроизводство (сами добавили)
Есть реквизит документа РаботаПроизводство.БезБрака - число из 4-х цифр.
Выполняю запрос:
ВЫБРАТЬ
РаботаПроизводство.ТехническоеЗадание КАК ТехническоеЗадание,
СУММА(РаботаПроизводство.БезБрака) КАК Отгрузка,
ИЗ
Документ.РаботаПроизводство КАК РаботаПроизводство
ГДЕ
РаботаПроизводство.ПометкаУдаления = ЛОЖЬ
И РаботаПроизводство.Отгрузка = ИСТИНА
И РаботаПроизводство.Дата >= НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)
И РаботаПроизводство.Дата <= КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
СГРУППИРОВАТЬ ПО
РаботаПроизводство.ТехническоеЗадание
В результате запроса я не могу получить сумму более 9999. Т.е., получается, что 1С, для хранения результата функции СУММА, использует переменную того же формата, что и аргумент функции СУММА.
Увеличил размер реквизита БезБрака до 10 цифр, и результат стал нормальным. Но если сумма когда либо превысит число 9999999999, то опять результат будет неверный.
|
|
5
dnab
19.06.19
✎
15:01
|
странно что переполнение происходит
запросов функция сумма
"При разработке конфигураций выбор разрядности полей объектов метаданных должен определяться возможной разрядностью хранимых в них данных и не должен учитывать возможное увеличение разрядности после выполнения арифметических операций и функций. "
"Агрегатная функция СУММА вычисляется по возможности точно. Количество цифр дробной части результата равно количеству цифр дробной части операнда. Количество цифр целой части увеличивается на 7 цифр. Если при этом общее количество цифр целой и дробной части превысит 38, то оно будет приведено к 38 за счет уменьшения числа цифр дробной части, но не менее, чем до 8. "
|
|