Имя: Пароль:
1C
 
Ошибка переполнения в запросе
0 Momus
 
19.08.22
10:52
Есть три временные таблицы. В итоговом запросе выражение:
    ПартииМатериалов.МатериальныеУпр
        * НЗППоПродукции.Количество / ВыбытиеСводно.Количество
        * НЗППоПродукции.Числитель
        / НЗППоПродукции.Знаменатель
что соответствует
503500*159/159*3517610/3517610
Числа вроде небольшие, если даже убрать деление из выражения (15 знаков). Запрос "Выбрать 503500*159/159*3517610/3517610" нормально отрабатывает. Что не так?
1 Momus
 
19.08.22
10:56
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
2 6awkup_true
 
19.08.22
10:57
а вы уверены, что у вас переполнение именно тут? может у вас в вт супер вложенность "выбор когда выбор когда"? или скуль старый и происходит превышение на 256 таблиц в плане? составные типы приведены?
3 VS-1976
 
19.08.22
10:57
Скорее всего результат впихивается в меньший объем, посмотрите куда данные помещаются
4 VS-1976
 
19.08.22
10:58
Можно самому указать через выразить разрядность
5 Momus
 
19.08.22
11:04
(2) уверен. Я из большого запроса постепенно исключал строки. В конце написал
Выбрать Первые 1
...
ПартииМатериалов.МатериальныеУпр как п1,
НЗППоПродукции.Количество как п2,
ВыбытиеСводно.Количество как п3,
НЗППоПродукции.Числитель как п4,
НЗППоПродукции.Знаменатель как п5
Поместить ВТ;
Выбрать
п1 * п2 / п3 * п4 / п5    ;

Все равно ошибка
6 Momus
 
19.08.22
11:04
(4) Выбрать
Выразить(    п1 * п2 / п3 * п4 / п5        КАК Число(30,2))  ;

Ошибка
7 timurhv
 
19.08.22
11:05
(6) п1...п2 через выразить
8 Momus
 
19.08.22
11:09
(7) так работает. А другой вариант есть? Это типовой отчет фактической себестоимости продукции, не хотелось бы его править