Имя: Пароль:
1C
1С v8
Ошибка Microsoft SQL и 1С Arithmetic overflow error
0 MAPATNK2
 
naïve
28.07.17
11:25
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 10.0: Arithmetic overflow error converting numeric to data type numeric.
HRESULT=80004005, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
Добрый день. Эта ошибка преследует меня последнюю неделю. отчеты перестали формироваться, документы заполнятся. Просто бред какой-то.
При выполнении системного запроса

ПостроительОтчета.Текст =
        "ВЫБРАТЬ
        |    ОстаткиТоваров.Номенклатура,
        |    ОстаткиТоваров.ХарактеристикаНоменклатуры,"
        +?(УчитыватьСерии, "
        |    ОстаткиТоваров.СерияНоменклатуры,", "") + "
        |    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХранения,
        |    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоэффициентЕдиницыХранения,
        |    ОстаткиТоваров.ЦенаВРознице,
        |    ВЫБОР
        |        КОГДА (СУММА(ОстаткиПартий.КоличествоОстаток) = 0)
        |          ИЛИ (СУММА(ОстаткиПартий.КоличествоОстаток) ЕСТЬ NULL) ТОГДА
        |            0
        |        ИНАЧЕ
        |            СУММА(ОстаткиПартий.СтоимостьОстаток)*СУММА(ОстаткиТоваров.КоличествоОстаток)
        |            / СУММА(ОстаткиПартий.КоличествоОстаток)
        |    КОНЕЦ                                   КАК Сумма,
        |    СУММА(ОстаткиТоваров.КоличествоОстаток) КАК Количество
        |ИЗ
        |    РегистрНакопления.ТоварыВНТТ.Остатки(&МоментДокумента,
        |                                                       Склад = &Склад
        |//                                                     И ЦенаВРознице > 0
        |) КАК ОстаткиТоваров
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |    РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&МоментДокумента,
        |                                                      Склад = &ПартионныйСклад) КАК ОстаткиПартий
        |ПО
        |    ОстаткиТоваров.Номенклатура = ОстаткиПартий.Номенклатура
        |    И ОстаткиТоваров.ХарактеристикаНоменклатуры = ОстаткиПартий.ХарактеристикаНоменклатуры"
        +?(УчитыватьСерии, "
        |    И (ОстаткиТоваров.СерияНоменклатуры          = ОстаткиПартий.СерияНоменклатуры
        |        ИЛИ НЕ ОстаткиТоваров.Номенклатура.ВестиПартионныйУчетПоСериям)", "") + "
        |
        |{ГДЕ ОстаткиТоваров.Номенклатура КАК Номенклатура,
        |     ОстаткиТоваров.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа}
        |
        |СГРУППИРОВАТЬ ПО
        |    ОстаткиТоваров.Номенклатура,
        |    ОстаткиТоваров.ХарактеристикаНоменклатуры,"
        +?(УчитыватьСерии, "
        |    ОстаткиТоваров.СерияНоменклатуры,", "") + "
        |    ОстаткиТоваров.ЦенаВРознице";
    Иначе
        Если Склад.ВидСклада = Перечисления.ВидыСкладов.Оптовый Тогда
            РегОстатки = "ТоварыНаСкладах";
        Иначе
            РегОстатки = "ТоварыВРознице";
        КонецЕсли;

        ПостроительОтчета.Текст =
        "ВЫБРАТЬ
        |    ОстаткиТоваров.Номенклатура,
        |    ОстаткиТоваров.ХарактеристикаНоменклатуры,"
        +?(УчитыватьСерии, "
        |    ОстаткиТоваров.СерияНоменклатуры,", "") + "
        |    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХранения,
        |    ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоэффициентЕдиницыХранения,
        |    ОстаткиТоваров.Качество,
        |    СУММА(ОстаткиТоваров.КоличествоОстаток) КАК Количество,
        |    ВЫБОР
        |        КОГДА (СУММА(ОстаткиПартий.КоличествоОстаток) = 0)
        |          ИЛИ (СУММА(ОстаткиПартий.КоличествоОстаток) ЕСТЬ NULL) ТОГДА
        |            0
        |        ИНАЧЕ
        |            СУММА(ОстаткиПартий.СтоимостьОстаток)*СУММА(ОстаткиТоваров.КоличествоОстаток)
        |            / СУММА(ОстаткиПартий.КоличествоОстаток)
        |    КОНЕЦ                                  КАК Сумма
        |ИЗ
        |    РегистрНакопления." + РегОстатки + ".Остатки(&МоментДокумента, Склад = &Склад)
        |КАК ОстаткиТоваров
        |
        |ЛЕВОЕ СОЕДИНЕНИЕ
        |    РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&МоментДокумента,
        |                                                      Склад = &ПартионныйСклад) КАК ОстаткиПартий
        |ПО
        |    ОстаткиТоваров.Номенклатура = ОстаткиПартий.Номенклатура
        |    И ОстаткиТоваров.ХарактеристикаНоменклатуры = ОстаткиПартий.ХарактеристикаНоменклатуры"
        +?(УчитыватьСерии, "
        |    И (ОстаткиТоваров.СерияНоменклатуры          = ОстаткиПартий.СерияНоменклатуры
        |        ИЛИ НЕ ОстаткиТоваров.Номенклатура.ВестиПартионныйУчетПоСериям)", "") + "
        |    И ОстаткиТоваров.Качество                   = ОстаткиПартий.Качество
        |
        |{ГДЕ ОстаткиТоваров.Номенклатура КАК Номенклатура,
        |     ОстаткиТоваров.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа}
        |
        |СГРУППИРОВАТЬ ПО
        |    ОстаткиТоваров.Номенклатура,
        |    ОстаткиТоваров.ХарактеристикаНоменклатуры,"
        +?(УчитыватьСерии, "
        |    ОстаткиТоваров.СерияНоменклатуры,", "") + "
        |    ОстаткиТоваров.Качество";

    КонецЕсли;

    Запрос = ПостроительОтчета.ПолучитьЗапрос();

    Запрос.УстановитьПараметр("Склад",           Склад);
    Запрос.УстановитьПараметр("ПартионныйСклад", ВремСклад);
    Если ЭтоНовый() Тогда
        Запрос.УстановитьПараметр("МоментДокумента", КонецДня(Дата));
    Иначе
        Попытка
        Запрос.УстановитьПараметр("МоментДокумента", МоментВремени());
    исключение
        Запрос.УстановитьПараметр("МоментДокумента", МоментВремени().Дата);
    КонецПопытки;
    КонецЕсли;

    Выборка = Запрос.Выполнить().Выбрать();



Вылазит эта ошибка. Что делать? Кто сталкивался.
1 Ненавижу 1С
 
гуру
28.07.17
11:27
2 MAPATNK2
 
naïve
28.07.17
11:28
(1) Не подходит
3 MAPATNK2
 
naïve
28.07.17
11:29
(1) Нет у меня функций округления
4 Господин ПЖ
 
28.07.17
11:31
переполнение... какое-то поле вылезает за пределы размерности
5 MAPATNK2
 
naïve
28.07.17
11:32
(4) уже больше похоже на правду, спасибо
6 1dvd
 
28.07.17
11:32
Вылетает на новом или записанном документе?
7 1dvd
 
28.07.17
11:33
имхается мне, что проблема здесь:

    Если ЭтоНовый() Тогда
        Запрос.УстановитьПараметр("МоментДокумента", КонецДня(Дата));
    Иначе
        Попытка
        Запрос.УстановитьПараметр("МоментДокумента", МоментВремени());//<--- вот тута
    исключение
        Запрос.УстановитьПараметр("МоментДокумента", МоментВремени().Дата);
    КонецПопытки;
8 Йохохо
 
28.07.17
11:36
или КоличествоОстаток = 10Е-10
9 MAPATNK2
 
naïve
28.07.17
12:05
(7) Ну я ведь добавил попытку. тоже думал, что там
10 MAPATNK2
 
naïve
28.07.17
12:05
(8) А как это узнать?
11 1dvd
 
28.07.17
12:06
Почему бы не сделать просто?
Запрос.УстановитьПараметр("МоментДокумента", Дата);
12 Buster007
 
28.07.17
12:11
СУММА(ОстаткиПартий.СтоимостьОстаток)*СУММА(ОстаткиТоваров.КоличествоОстаток)
        |            / СУММА(ОстаткиПартий.КоличествоОстаток)
проблема здесь
13 Buster007
 
28.07.17
12:13
+(12) криво прочитал )
14 Йохохо
 
28.07.17
12:16
(10) в консоли выполни запрос по первой таблице убрав все деления
        |            СУММА(ОстаткиПартий.СтоимостьОстаток)*СУММА(ОстаткиТоваров.КоличествоОстаток) КАК СУммаСтоимость,
        |    ВЫБОР
        |        КОГДА (СУММА(ОстаткиПартий.КоличествоОстаток) = 0)
        |          ИЛИ (СУММА(ОстаткиПартий.КоличествоОстаток) ЕСТЬ NULL) ТОГДА
        |            0
        |        ИНАЧЕ
        |            СУММА(ОстаткиПартий.КоличествоОстаток)
        |    КОНЕЦ                                  КАК КоличествоОстаток
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn