|   |   | 
| 
 | Ошибка при закрытии месяца (УНФ) | ☑ | ||
|---|---|---|---|---|
| 0
    
        bestuzhev 16.05.23✎ 17:47 | 
        При закрытии месяца вылетает следующая ошибка:
 Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {Документ.ЗакрытиеМесяца.МодульОбъекта(1523)}: Ошибка при вызове метода контекста (ВыполнитьПакет) по причине: по причине: Ошибка выполнения запроса по причине: Ошибка при выполнении операции над данными: 22003: ERROR: numeric field overflow DETAIL: A field with precision 23, scale 10 must round to an absolute value less than 10^13. Гугл не помог. Смотрел отладкой, запрос выполняется несколько раз в цикле, и на одной из итераций валится с ошибкой. Может кто сталкивался или какой совет умный даст. | |||
| 1
    
        Волшебник 16.05.23✎ 17:49 | 
        Покажите запрос     | |||
| 2
    
        bestuzhev 16.05.23✎ 18:07 | 
        (1)
 // Следующая итерация расчета. Запрос.Текст = "ВЫБРАТЬ | УзлыКорректировкиСтоимостиСписания.НомерУзла КАК НомерУзла, | Сумма(ВЫРАЗИТЬ(ВЫБОР | КОГДА УзлыКорректировкиСтоимостиСписания.Количество <> 0 | ТОГДА ВЫРАЗИТЬ(ТаблицаРешений.СуммаБезНДС КАК ЧИСЛО(23, 10)) * ВЫБОР | КОГДА УчетЗатрат.Количество = 0 | ТОГДА ВЫРАЗИТЬ(УчетЗатрат.СуммаБезНДС КАК ЧИСЛО(23, 10)) | ИНАЧЕ ВЫРАЗИТЬ(УчетЗатрат.Количество КАК ЧИСЛО(23, 10)) | КОНЕЦ / ВЫРАЗИТЬ(УзлыКорректировкиСтоимостиСписания.Количество КАК ЧИСЛО(23, 10)) | ИНАЧЕ 0 | КОНЕЦ КАК ЧИСЛО(23, 10))) КАК СуммаБезНДС, | СУММА(ВЫРАЗИТЬ(ВЫБОР | КОГДА УзлыКорректировкиСтоимостиСписания.Количество <> 0 | ТОГДА ВЫРАЗИТЬ(ТаблицаРешений.Сумма КАК ЧИСЛО(23, 10)) * ВЫБОР | КОГДА УчетЗатрат.Количество = 0 | ТОГДА ВЫРАЗИТЬ(УчетЗатрат.Сумма КАК ЧИСЛО(23, 10)) | ИНАЧЕ ВЫРАЗИТЬ(УчетЗатрат.Количество КАК ЧИСЛО(23, 10)) | КОНЕЦ / ВЫРАЗИТЬ(УзлыКорректировкиСтоимостиСписания.Количество КАК ЧИСЛО(23, 10)) | ИНАЧЕ 0 | КОНЕЦ КАК ЧИСЛО(23, 10))) КАК Сумма |ПОМЕСТИТЬ ВременнаяТаблицаРешений |ИЗ | РегистрСведений.УзлыКорректировкиСтоимостиСписания КАК УзлыКорректировкиСтоимостиСписания | ЛЕВОЕ СОЕДИНЕНИЕ УчетЗатрат КАК УчетЗатрат | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРешений КАК ТаблицаРешений | ПО УчетЗатрат.НомерУзла = ТаблицаРешений.НомерУзла | ПО УзлыКорректировкиСтоимостиСписания.Организация = УчетЗатрат.Организация | И УзлыКорректировкиСтоимостиСписания.СтруктурнаяЕдиница = УчетЗатрат.СтруктурнаяЕдиница | И УзлыКорректировкиСтоимостиСписания.СчетУчета = УчетЗатрат.СчетУчета | И УзлыКорректировкиСтоимостиСписания.Номенклатура = УчетЗатрат.Номенклатура | И УзлыКорректировкиСтоимостиСписания.Характеристика = УчетЗатрат.Характеристика | И УзлыКорректировкиСтоимостиСписания.Партия = УчетЗатрат.Партия | И УзлыКорректировкиСтоимостиСписания.ЗаказПокупателя = УчетЗатрат.ЗаказПокупателя | И УзлыКорректировкиСтоимостиСписания.ЗаказНаПроизводство = УчетЗатрат.ЗаказНаПроизводство |ГДЕ | УзлыКорректировкиСтоимостиСписания.Регистратор = &Регистратор | |СГРУППИРОВАТЬ ПО | УзлыКорректировкиСтоимостиСписания.НомерУзла | |ИНДЕКСИРОВАТЬ ПО | НомерУзла |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СУММА((ЕСТЬNULL(ТаблицаРешений.СуммаБезНДС, 0) - (УзлыКорректировкиСтоимостиСписания.СуммаБезНДС + ЕСТЬNULL(ВременнаяТаблицаРешений.СуммаБезНДС, 0))) * (ЕСТЬNULL(ТаблицаРешений.СуммаБезНДС, 0) - (УзлыКорректировкиСтоимостиСписания.СуммаБезНДС + ЕСТЬNULL(ВременнаяТаблицаРешений.СуммаБезНДС, 0)))) КАК СуммаБезНДСКвадратовОтклонений, | СУММА((ЕСТЬNULL(ТаблицаРешений.Сумма, 0) - (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0))) * (ЕСТЬNULL(ТаблицаРешений.Сумма, 0) - (УзлыКорректировкиСтоимостиСписания.Сумма + ЕСТЬNULL(ВременнаяТаблицаРешений.Сумма, 0)))) КАК СуммаКвадратовОтклонений |ИЗ | РегистрСведений.УзлыКорректировкиСтоимостиСписания КАК УзлыКорректировкиСтоимостиСписания | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаРешений КАК ВременнаяТаблицаРешений | ПО (ВременнаяТаблицаРешений.НомерУзла = УзлыКорректировкиСтоимостиСписания.НомерУзла) | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРешений КАК ТаблицаРешений | ПО (ТаблицаРешений.НомерУзла = УзлыКорректировкиСтоимостиСписания.НомерУзла) |ГДЕ | УзлыКорректировкиСтоимостиСписания.Регистратор = &Регистратор"; | |||
| 3
    
        Волшебник 16.05.23✎ 18:09 | 
        (2) У Вас там какое-то деление на ноль и бесконечное число с 23 нулями. Ищите     | |||
| 4
    
        Гена 16.05.23✎ 19:01 | 
        Может немного увеличить целую часть? Например, ЧИСЛО(25, 10)     | |||
| 5
    
        Гена 16.05.23✎ 19:09 | 
        А вообще, СуммаКвадратовОтклонений вполне может в геометрической прогрессии расходиться вместо схождения, например при отрицательных остатках в каком-нибудь используемом РН. По арифметике. Раскачается +/- до бесконечности.     | |||
| 6
    
        Гена 16.05.23✎ 19:14 | 
        Поэтому лучше в этой приблуде суммы квадратов отклонений на всякий случай заложить не просто произведение двух слагаемых, а их модулей. 
 В 1С есть что-то вроде ABS()? | |||
| 7
    
        bestuzhev 16.05.23✎ 19:49 | 
        (5) Да, дело было именно в отрицательных остатках, запросом глянул что там с минусом, исправил проблему и все пошло.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |