Ошибка при выполнении запроса из документа. В консоли ошибок нет. #744528


#0 by memogolik
КА 1.1, документ инвентаризация. По кнопке "Заполнить по остаткам на складе (упр. учет) выполняется обработка заполнения ТЧ. В результате выполнения обработки вылетает ошибка: {Документ.ИнвентаризацияТоваровНаСкладе.МодульОбъекта}: Ошибка при вызове метода контекста (Выполнить)     Выборка = Запрос.Выполнить.Выбрать; по причине: Ошибка выполнения запроса по причине: Ошибка при выполнении операции над данными: Microsoft SQL Server Native Client 10.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric. В отладчике получаем текст запроса и параметры. В консоле запросов воспроизводим ситуацию и ... все ок. Выдается результат без ошибок. Вот запрос: ВЫБРАТЬ     ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоэффициентЕдиницыХранения,     ОстаткиТоваров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент Заранее спасибо за помощь. P.S. из огромного списка номенклатуры ошибка вылетает только на одну позицию.
#1 by memogolik
вверх
#2 by 18_plus
може где-то NULL в агрегатную попадает?
#3 by memogolik
а в консоле запросов на тех же параметрах работает норм
#4 by 18_plus
а циферки большие получаются?
#5 by Любопытная
А она точно на этом запросе падает? У меня сегодня была такая беда, на там на число ограничивалось 5ю знаками, а в остатках сотни тысяч штук попались.
#6 by memogolik
Количество=150 в консоле
#7 by memogolik
точно на нем.
#8 by memogolik
Не понятно, почему в консоле ошибки нет, а в модуле документа есть.
#9 by memogolik
а как это проверить/понять? Ведь в консоле ошибок нет.
#10 by olegves
ты кэш чистил?
#11 by memogolik
кэш на сервере? не совсем понял вопрос и как это связано. Сервер физически перезагружали вчера, ошибка после перезагрузке не исчезла
#12 by D_E_S_131
Левое соединение с вложенным запросом, который использует виртуальную таблицу, в параметрах которой использован еще один запрос!!! ИМХО этой ошибкой SQL послал разработчика в "пешее эротическое"...
#13 by memogolik
это типовая конфа 1с)
#14 by 18_plus
а что в этом такого?
#15 by ИС-2
можно решить проблему костылем - у каждого числового поля сделать приведение к определенной разрядности. Выразить (Сумм как число (15,2) - например. Только вот данными могут быть не корректными
#16 by memogolik
почистил - не помогло во всем запросе или только в полях выбора?
#17 by D_E_S_131
А типовых код везде идеальный?
#18 by memogolik
что делать хз. самое интересное. другой элемент номенклатуры беру - всё норм. В консоле этот запрос спокойно выдает результат : 150. Все остальные запросы кроме основного дают пустой значение.
#19 by RomanYS
я бы начал с СУММА(ОстаткиПартий.СтоимостьОстаток) * СУММА(ОстаткиТоваров.КоличествоОстаток) / СУММА(ОстаткиПартий.КоличествоОстаток)
#20 by chigsrOck
Никто тебе точный ответ не даст, доступ к базе и ее данным есть только у тебя и в 35 лет это пора бы понимать:))) В таких случаях есть один выход: в серверной тестовой базе корежить запрос, т.е. постепенно упрощать до того момента, когда ошибки не будет. Для начала убрать "Выбор Когда" где есть деление на число, которое может быть нулем. Вместо этого вывести в запросе просто СУММА(название ресурса из РН) и смотреть что будет. Это нормально и программистам приходится периодически с этим геммороиться, особенно если в исходных данных косяк;)
#21 by memogolik
тык в консоле запросов все работает)))
#22 by Timon1405
Ставьте инструменты разработчика, там можно на ходу отлаживать
#23 by memogolik
ВЫРАЗИТЬ(СУММА(ОстаткиПартий.СтоимостьОстаток) * СУММА(ОстаткиТоваров.КоличествоОстаток) КАК ЧИСЛО(15,3)) / ВЫРАЗИТЬ(СУММА(ОстаткиПартий.КоличествоОстаток) КАК ЧИСЛО(15,3)) так?
#24 by memogolik
можно ссылочку?
#25 by Timon1405
#26 by RomanYS
#27 by НЕА123
может ОФФ нельзя в параметры вирт. таблиц Номенклатура В ИЕРАРХИИ (&Параметр1) ?
#28 by memogolik
не взлетело. в консоле запросов все работает же.
#29 by memogolik
и для других позиций номенклатуры тоже ошибка не выскакивает.
#30 by Timon1405
так вы номенклатуру проблемную нашли? Видимо что-то с коэффициентом в единице измерения или с самой единицей, попробуйте перепривязать единицу к номенклатуре/перезаписать у нее коэффициент
#31 by memogolik
позицию нашел. Зашел в единицы, перезаписал коэффициент. Не помогает(
#32 by Cyberhawk
Покажи как параметры в коде устанавливаешь
#33 by Cyberhawk
И держу пари, что если последнюю группировку убрать, то взлетает
#34 by denis_jj
Скорее всего тут проблема СУММА(ОстаткиПартий.СтоимостьОстаток) * СУММА(ОстаткиТоваров.КоличествоОстаток) / СУММА(ОстаткиПартий.КоличествоОстаток) Попробуйте в консоли вычислить значения из этого выражения для проблемной номенклатуры.
#35 by denis_jj
в консоли может работать, если в параметр(ы) &ДатаОстатков виртуальной таблицы в коде передаете момент времени, а в консоли дату.
#36 by memogolik
В консоле 0
#37 by denis_jj
а подзапрос ОстаткиПартий, СтоимостьОстаток и КоличествоОстаток какое выдает?
#38 by memogolik
КоличествоОстаток null
#39 by denis_jj
&ДатаОстатков в коде какого типа, Дата или МоментВремени?
#40 by memogolik
в коде МоментВремени, в консоле дата
#41 by memogolik
если делаю так:         |    КОНЕЦ                                  КАК Сумма т.е. комментирую рассчет суммы в запросе и ставлю константу 1, то в документ в качестве суммы именно 1 и подставляется, а не 0
#42 by denis_jj
Попробуйте в консоли указать +-1 секунду к точной дате документа из момента времени.
#43 by memogolik
Запрос.УстановитьПараметр("ДатаОстатковЗатрат", Новый Граница(КонецМесяца(Дата),ВидГраницы.Включая));
#44 by memogolik
в консоле 30.06.2015 23:59:59
#45 by denis_jj
это значит, у вас количество не NULL и не 0, а какая-то величина, предполагаю что очень маленькая. В этом и проблема. Вероятно зависли какие-то мелкие остатки (от округления может). Какой тип числа в количестве использован?
#46 by memogolik
причем                 ИЛИ СУММА(ОстаткиПартий.КоличествоОстаток) ЕСТЬ NULL     КОНЕЦ КАК Сумма в документе 1, а в консоле 0 ;) ппц какой то
#47 by denis_jj
документы 30.06.2015 23:59:59 есть какие-нибудь?
#48 by denis_jj
на 01.07.2015 00:00:00 что будет в консоли?
#49 by memogolik
в журнале "Документы контрагентов" нет ничего. посмотреть в РН Партии?
#50 by memogolik
тоже самое
#51 by denis_jj
В регистре посмотрите записи.
#52 by memogolik
Причем подзапрос ОстаткиПартий: Пустой. ВЫБРАТЬ             РегАналитикаУчетаЗатрат.Затрата КАК Номенклатура,             РегАналитикаУчетаЗатрат.ХарактеристикаЗатраты КАК ХарактеристикаНоменклатуры,
#53 by denis_jj
не может быть. Если был бы пустой, то в документе не срабатывало бы условие из .
#54 by memogolik
Блиинн. после проведения реализации от 01.06.15 Стоимость в РН УчетЗатрат улетела в -9 999 999 999 999,99
#55 by denis_jj
временно закомментируйте конструкцию с делением. Выведите данные КоличествоОстаток в документе.
#56 by denis_jj
:-) что и требовалось доказать.
#57 by memogolik
теперь осталось понять, из-за чего такое могло произойти? есть идеи?)
#58 by denis_jj
Но это значит, что уже на 01.05.2015 по этой номенклатуре были неправильные остатки (на момент проведения документа). А эта сумма -999999999999 это в регистр записали число меньшее, чем позволяет разрядность его ресурса.
#59 by denis_jj
смотрите запрос из расчета стоимости затрат документа Реализации. Там ключ к разгадке. Скорее всего что-то с остатками и округлением.
#60 by memogolik
спасибо Денис огромное,думаю, что еще не мало времени потребуется что докопаться до истины. ;)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С