Ошибка при выполнении операции над данными 22012 error division by zero

Обновлено: 07.07.2024

Есть конфигурация ЗиК непосредственно правкой конфы занимается другой человек, я только админю SQL сервер. После внесения очередных изменений в конфу при закрытии месяца SQL сервер матерится: "Microsoft OLE DB Provider for SQL Server: Divide by zero error encountered.", при этом если база лежит в dbf месяц закрывается без проблем! Разработчик конфы все валит на меня, я в свою очередь уверен что со стороны сервера все ок! Считаю что разработчик заранее не предусмотрел деление на 0 что-то типо <br><br>"ВЫБОР КОГДА ЕСТЬNULL(Таблица.Количество,0) = 0 ТОГДА 0 <br> ИНАЧЕ Таблица.Сумма/Таблица.Количество<br>КОНЕЦ КАК Цена"<br><br>Помогите разрешить спор! <br>Как доказать главбуху что проблема вызвана именно ошибкой в конфигурации?<br>Есть ли внутри 1с платформы проверка арифметических операций, может ее там нет, поэтому dbf вариант работает без проблем?<br><br><br>

Бухия 8.1 1.6(1.6.11.7), скульная.
При проведении некоторых доков выскакивает ошибка:
: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса "Ошибка при выполнении операции над данными:
Microsoft OLE DB Provider for SQL Server: Divide by zero error encountered.
HRESULT=80040E14, SQLSrvr: Error state=1, Severity=10, native=8134, line=1

Может кто-нибудь сталкивался? Заранее спасибо.

деление на ноль.. запрос нужно смотреть

В запросе нашел:
КОНЕЦ * ТаблицаПлатежей.КурсВзаиморасчетов / ТаблицаПлатежей.КратностьВзаиморасчетов

Блин, только что попробовал провести, теперь пишет:

Ошибка при выполнении обработчика - ': Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса "Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: Error state=38, Severity=10, native=1222, line=1
"'
по причине:
: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса "Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: Error state=38, Severity=10, native=1222, line=1
"

по причине:
Ошибка выполнения запроса "Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: Error state=38, Severity=10, native=1222, line=1
"
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: Error state=38, Severity=10, native=1222, line=1

"Возврат Запрос.Выполнить;" - ставь точку останова и смотри какие вычислительные операции у тебя в запросе.

Проблема кроется тут, когда создается сам запрос: " Для Каждого Реквизит Из СтруктураПолей Цикл " Как, в таком запросе, сделать проверку на ноль, чтобы SQL отвязался?

не может тут быть деления на ноль, смотри на сформированный текст запроса в целом да и запрос по реквизитам вроде не должен ничего делить, если не дописано уже отдельно

Текст запроса, вытащенный из обработчика. Запрос.Текст "ВЫБРАТЬ Док.НомерСтроки , Док.Номенклатура КАК Номенклатура, Док.Количество * Коэффициент /Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Количество, Док.Сумма КАК Сумма, Док.СтавкаНДС КАК СтавкаНДС, Док.СуммаНДС КАК НДС, Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, Док.СерияНоменклатуры КАК СерияНоменклатуры, Док.Номенклатура.ВестиПартионныйУчетПоСериям КАК ВестиПартионныйУчетПоСериям, Док.Номенклатура.Услуга КАК Услуга, Док.Номенклатура.Набор КАК Набор, Док.Номенклатура.Комплект КАК Комплект, Док.Заказ КАК Заказ, Док.Заказ.СкладГруппа КАК СкладЗаказаПокупателя, Док.Заказ.ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей КАК ОбособленныйУчетТоваровПоЗаказамПокупателей, Док.ЕдиницаИзмерения КАК ЕдиницаИзмерения, Док.Ссылка.СкладОрдер КАК Склад, Док.Ссылка.СкладОрдер.ВидСклада КАК ВидСкладаРазмещения, Док.ПриходныйОрдер КАК ДокументПолучения, Док.ПриходныйОрдер.Организация КАК ОрганизацияДокументаПолучения, Док.ПриходныйОрдер.БезПраваПродажи КАК БезПраваПродажи, Док.Цена КАК Цена, Док.Коэффициент КАК Коэффициент, Док.ПриходныйОрдер.Склад КАК ПриходныйОрдерСклад, Док.Номенклатура.ВестиУчетПоСериям КАК УчетПоСериям, Док.СерияНоменклатуры.СтранаПроисхождения КАК СтранаПроисхождения, Док.СерияНоменклатуры.НомерГТД КАК НомерГТД, Док.ЗаказПоставщику КАК ЗаказПоставщику ИЗ

Смотри где у тебя по тексту / и оборачивай делитель в Выбор когда Делитель=0 Тогдв Делимое/1 Иначе Делимое/Делитель Колнец

вот тут имхо собака порылась Док.Количество * Коэффициент /Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Количество,

Ну нет..Мало ли почему там коэффициент=0. Я бы не стал

Что посоветуете дописать . Как лучше всего обернуть?

Выбор Конда Номенклатура.ЕдиницаХраненияОстатков.Коэффициент =0 Тогда КАК КАК Количество

а я бы стал. на каком основании цифиль должна быть без учета коэффициента? так и получаются 2000 м куб

На том например что забыли поставить. И что теперь обнулять количество?

Беру свои слова обратно в карточке товара не были проставлены коэффиценты.

: Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Обнаружена ошибка: деление на ноль.
HRESULT=80040E14, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1

Произошло после перехода из 8.3.10(ошибки не было) на 8.3.13.
Версия 1с серверная. Документов сотни тысяч, просматривать руками каждый - не вариант.

Тестово перевел из серверной в файловую базу - на удивление все заработало БЕЗ Ошибок.

Я писал. Мне говорят проверить все документы (а их огромное количество с незапамятных времен).

Отчет не формируется даже за сегодняшнюю дату, при условии что ни одного действия с документами не было произведено.
На 8.3.12 не могу проверить, так как нет этой платформы. я обновлялся с 8.3.10 напрямую до 8.3.13.Но суть в том, что в 8.3.10 все работало.

Читайте также: