arithmetic overflow error converting numeric to data type numeric 1с

1. set5553 13.12.17 12:30 Сейчас в теме
Всем привет. УТ 11. Документ установка цен. В чем может быть причина?

{ОбщийМодуль.УстановкаЦенСервер.Модуль(3880)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Arithmetic overflow error converting numeric to data type numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. protexprotex 114 13.12.17 13:09 Сейчас в теме
Арифметическое переполнение на сервере при попытке записи в sql-ную базу данных. База у Вас типовая или переписанная? Если типовая - сделайте проверку в конфигураторе. Если не типовая - то сначала проверку, потом (если не наладится) посмотрите разрядность чисел в док-те установка цен. Ну, и запрос надо бы глянуть - что там?
+
3. set5553 13.12.17 13:12 Сейчас в теме
(2) Типовая. Арифметическое переполнение на сервере при попытке записи в sql-ную базу данных, при чем получается из за одной номенклатуры и цена в принципе допустимая, другие номенклатуры с такой ценой нормально устанавливаются. Тут связь именно идет с конкретной номенклатурой
+
4. spacecraft 13.12.17 13:40 Сейчас в теме
(3)
Арифметическое переполнение на сервере при попытке записи в sql-ную базу данных

Ошибка появляется при выполнении запроса, а не записи в базу данных.
Нужно смотреть сам запрос. Предположительно используется Выразить в запросе, с неправильной обработкой округления.
+
5. user797276 13.12.17 14:07 Сейчас в теме
(3)
Попробуйте сравнить данные по номенклатуре по которой нет ошибок с номенклатурой по которой есть ошибка
+
6. user797276 13.12.17 14:07 Сейчас в теме
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft OLE DB Provider for SQL Server: Arithmetic overflow error converting numeric to data type numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
Если данная ошибка появляется под управлением MS SQL 2000, то рекомендуется проверить и установить обновление SP до SP4.
Но для SQL 2005 и 2008 появление такой ошибки не решается обновлением сервиспака.
Вообще появление указанной ошибки вызвано ошибкой в MS SQL при выполнении операции округления, например:
ROUND(9.5,0)
ROUND(9.6,0)
ROUND(99.5,0)
ROUND(999.5,0)
ROUND(9999.5,0)
ROUND(-9.5)
Более подробно про ошибки операции округления https://connect.microsoft.com/SQLServer/feedback/details/364387/using-round-function-with-passing-numeric-expression-to-9-5-and-length-0
. касательно 1С и запросов выполняемых в ней, указанная ошибка может появляться при выполнении команды: ВЫРАЗИТЬ(ЕСТЬNULL(ВремяПоГрафикуВЧасахНорма, 0) КАК ЧИСЛО(5, 2)) КАК WorkingHours
Если в качестве операнда будет число со значением после запятой .5, в этом случае SQL считает/разбирает значение как литерал х.5 и преобразует к данным типа Numeric(2,1). Функция ROUND (округления) отрабытывает правильно получая округленный результат и затем пытается сохранить как данные в формате Numeric(2,1), что не правильно и мы получаем сообщение «arithmetic overflow».
Если у Вас возникает такая ошибка, то попробуете использвать преобразование:
ВЫРАЗИТЬ(ЕСТЬNULL(ВремяПоГрафикуВЧасахНорма, 0) КАК ЧИСЛО( {НОВОЕ значение} , 2)) КАК WorkingHours
, ГДЕ
{НОВОЕ значение} — Это увеличенное на один (несколько) разряд значение, в это случае ошибки не будет возникать.
hottion; Matematik; strah4; +3
7. protexprotex 114 13.12.17 15:17 Сейчас в теме
Ну да, прочитал по диагонали - и не посмотрел что просто запрос, а не запись в БД. Тогда нужно запрос смотреть.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот