Имя: Пароль:
1C
1С v8
Arithmetic overflow error
0 seller7
 
06.04.16
00:14
При расчете себестоимости в УТ, в запросе появляется ошибка:
Microsoft SQL Server Native Client 11.0: Arithmetic overflow error converting numeric to data type numeric
Раньше документ проводился без проблем

Текст запроса:
УНИЧТОЖИТЬ ТаблицаПериодыПартий
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаУзлыКорректировки.Организация КАК Организация,
    ТаблицаУзлыКорректировки.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
    ТаблицаУзлыКорректировки.РазделУчета КАК РазделУчета,
    ТаблицаУзлыКорректировки.ВидЗапасов КАК ВидЗапасов,
    ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0) КАК Количество,
    ВЫБОР
        КОГДА ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0) = 0
            ТОГДА 0
        ИНАЧЕ (ТаблицаУзлыКорректировки.Стоимость * ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.СтоимостьОстаток, 0)) / (ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0))
    КОНЕЦ КАК Стоимость,
    ВЫБОР
        КОГДА ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0) = 0
            ТОГДА 0
        ИНАЧЕ (ТаблицаУзлыКорректировки.СтоимостьБезНДС * ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.СтоимостьБезНДСОстаток, 0)) / (ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0))
    КОНЕЦ КАК СтоимостьБезНДС,
    ВЫБОР
        КОГДА ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0) = 0
            ТОГДА 0
        ИНАЧЕ (ТаблицаУзлыКорректировки.ПостояннаяРазница * ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.ПостояннаяРазницаОстаток, 0)) / (ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0))
    КОНЕЦ КАК ПостояннаяРазница,
    ВЫБОР
        КОГДА ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0) = 0
            ТОГДА 0
        ИНАЧЕ (ТаблицаУзлыКорректировки.ВременнаяРазница * ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.ВременнаяРазницаОстаток, 0)) / (ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.КоличествоОстатокНаКонецПериода, 0) + ЕСТЬNULL(ТаблицаОстатков.КоличествоОстаток, 0))
    КОНЕЦ КАК ВременнаяРазница,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТаблицаУзлыКорректировки.Стоимость * ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.СтоимостьОстаток, 0) КАК ЧИСЛО(15, 3))) = 0
            ТОГДА 0
        ИНАЧЕ ТаблицаУзлыКорректировки.СтоимостьДопРасходы
    КОНЕЦ КАК СтоимостьДопРасходы,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТаблицаУзлыКорректировки.СтоимостьБезНДС * ТаблицаУзлыКорректировки.Количество - ЕСТЬNULL(ТаблицаОстатков.СтоимостьБезНДСОстаток, 0) КАК ЧИСЛО(15, 3))) = 0
            ТОГДА 0
        ИНАЧЕ ТаблицаУзлыКорректировки.СтоимостьДопРасходыБезНДС
    КОНЕЦ КАК СтоимостьДопРасходыБезНДС
ИЗ
    ТаблицаУзлыКорректировки КАК ТаблицаУзлыКорректировки
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОстатков КАК ТаблицаОстатков
        ПО ТаблицаУзлыКорректировки.АналитикаУчетаНоменклатуры = ТаблицаОстатков.АналитикаУчетаНоменклатуры
            И ТаблицаУзлыКорректировки.РазделУчета = ТаблицаОстатков.РазделУчета
            И ТаблицаУзлыКорректировки.ВидЗапасов = ТаблицаОстатков.ВидЗапасов
            И ТаблицаУзлыКорректировки.Организация = ТаблицаОстатков.Организация

Предлагаемое решение не помогло: http://www.gilev.ru/arithmeticoverflow/

Может кто сталкивался?
1 Тролль главный
 
06.04.16
00:39
непонятно что ТаблицаОстатков
2 ВРедная
 
06.04.16
01:05
(0) вы какой именно вариант из статьи пробовали?

С обновлением сервис пака или увеличением разрядов числа при округлении?
3 seller7
 
06.04.16
01:22
(2) Пробовал добавлять разряды вместо ВЫРАЗИТЬ КАК ЧИСЛО(15, 3) -> ВЫРАЗИТЬ КАК ЧИСЛО(16, 3) и т.п.
4 ВРедная
 
06.04.16
01:59
(3) можно попробовать с вариантом (18,3) если до него не дошло.
Но вообще цифр такой разрядности не должно быть при расчете себестоимости. По всей видимости где-то сбоит РАУЗ и гоняет туда-сюда миллиарды.
Если возможности проверить на другом (обновленном) сервере нет, попробуйте копать в сторону отрицательных остатков.
5 seller7
 
06.04.16
08:43
(4) вариант (18,3) не помог
6 seller7
 
06.04.16
10:17
up
7 Drac0
 
06.04.16
10:26
Выбери в запрос поля, которые участвуют в умножении и делении. И смотри, в каких из них неожиданные данные.