Ошибка при выполнении обработчика деление на 0

   falselight

11.06.20 — 10:50

Создаю программно документ ПриходнаяНакладная. При записи происходит ошибка, на строке, —

ДокПриходнаяНакладная.Записать(РежимЗаписиДокумента.Проведение);

http://joxi.ru/8AnQDeGs74Ky72

ИЗ ЗА ЧЕГО ПРОИСХОДИТ ДАННАЯ ОШИБКА ПРИ ПРОВЕДЕНИИ ДОКУМЕНТА И КАК ЕЕ УСТРАНИТЬ? Подскажите пожалуйста.

Деление на 0 значения типа Numeric

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(802)}:        ДокПриходнаяНакладная.Записать(РежимЗаписиДокумента.Проведение);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(616)}:        СоздатьДокумент(ТипЗагрузки,СумЛогистика);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(809)}:    ЗагрузитьОтчетВайлдберризНаСервере(«Комиссия»);

по причине:

Ошибка при выполнении обработчика — ‘ОбработкаПроведения’

по причине:

Деление на 0 значения типа Numeric

{Документ.ПриходнаяНакладная.МодульМенеджера(3962)}:    Запрос.ВыполнитьПакет();

{Документ.ПриходнаяНакладная.МодульОбъекта(1834)}:    Документы.ПриходнаяНакладная.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(802)}:        ДокПриходнаяНакладная.Записать(РежимЗаписиДокумента.Проведение);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(616)}:        СоздатьДокумент(ТипЗагрузки,СумЛогистика);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(809)}:    ЗагрузитьОтчетВайлдберризНаСервере(«Комиссия»);

по причине:

Ошибка выполнения запроса

по причине:

Ошибка при выполнении операции над данными:

Ошибка SQL: Деление на 0

по причине:

Ошибка SQL: Деление на 0

по причине:

Деление на 0 значения типа Numeric

   ДенисЧ

1 — 11.06.20 — 10:53

ПОТОМУ ЧТО У ТЕБЯ В ЗАПРОСЕ ВОЗНИКАЕТ ДЕЛЕНИЕ НА 0!

Так понятно? )))

Заходи в модуль, лови запрос и смотри его результаты…

   Ненавижу 1С

2 — 11.06.20 — 10:56

вот этот запрос анализировать:

{Документ.ПриходнаяНакладная.МодульМенеджера(3962)}:    Запрос.ВыполнитьПакет();

смотреть где есть деления и в каком случае в знаменателе появляется 0

   falselight

3 — 11.06.20 — 10:56

(1) Да вот не понятно где оно возникает!

Сейчас изменил проведение на запись. Документ записался но при проведении выдал что не заполнены ряд полей.

Поле «Валюта документа» не заполнено

Поле «Дата вх. документа» не заполнено

Поле «Налогообложение» не заполнено

Поле «№ вх. документа» не заполнено

Постараюсь программно их заполнить.

Я проверял свой код создания. Там нет деления на 0. Он происходит не понятно где и из за чего!

   fisher

4 — 11.06.20 — 10:56

Если при интерактивном проведении такого нет, значит чего-то ты недозаполняешь.

Сравни заполнение реквизитов у штатно созданного документа и у программно созданного.

   falselight

5 — 11.06.20 — 10:56

(2) Может есть какое то радикальное решение?

Я же правильно заполняю документ и провожу его. делаю приход.

   falselight

6 — 11.06.20 — 10:57

(4) Сейчас буду программно дозаполнять реквизиты что выдались при проведении документа.

   ДенисЧ

7 — 11.06.20 — 10:57

(5) Радикальное решение есть. Я тебе предлагал его, если мне эклер не изменяет, ещё с год назад, а то и больше…

   fisher

8 — 11.06.20 — 10:58

(7) Т.е. стаж уже больше года?

   NorthWind

9 — 11.06.20 — 11:01

(5) канеш есть. Бросить заниматься этой фигней и заняться чем-то, с чем есть хотя бы минимальное желание разбираться.

   fisher

10 — 11.06.20 — 11:07

(3) Что угодно может быть. Например, какой-нить курс пересчета у тебя не заполнен при программном создании, а алгоритм расчета этого не ожидает (потому что при штатном вводе его заполнение гарантируется) и ничтоже сумняшеся на него делит.

   falselight

11 — 11.06.20 — 11:07

У меня температура второй день держится (((( Кое что не усмотрел.

Такой код. нормально отработал:

            Если ШапкаЗаполнена = 0 Тогда

                ДокПриходнаяНакладная                          = Документы.ПриходнаяНакладная.СоздатьДокумент();

                ДокПриходнаяНакладная.Дата                     = ТекущаяДата();

                ДокПриходнаяНакладная.ВидОперации              = Перечисления.ВидыОперацийПриходнаяНакладная.ПоступлениеОтПоставщика;

                ДокПриходнаяНакладная.Контрагент               = Контрагент;

                ДокПриходнаяНакладная.Договор                  = Договор;

                ДокПриходнаяНакладная.Организация              = Организация;

                ДокПриходнаяНакладная.СтруктурнаяЕдиница       = ВиртуальныйСклад;

                ДокПриходнаяНакладная.Подразделение            = Подразделение;

                ДокПриходнаяНакладная.Ответственный            = Справочники.Сотрудники.НайтиПоНаименованию(«Склад», 1);

                ДокПриходнаяНакладная.Курс                    = 1;

                ДокПриходнаяНакладная.Кратность               = 1;

                ДокПриходнаяНакладная.СуммаВключаетНДС        = Истина;

                ДокПриходнаяНакладная.НалогообложениеНДС      = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДС;

                ДокПриходнаяНакладная.ВалютаДокумента         = Константы.ВалютаУчета.Получить();

                ДокПриходнаяНакладная.НомерВходящегоДокумента = «—«;

                ДокПриходнаяНакладная.ДатаВходящегоДокумента  = ТекущаяДата();

                //                

                ШапкаЗаполнена                             = 1;

                //

                НоваяСтрока                  = ДокПриходнаяНакладная.Запасы.Добавить();

                НоваяСтрока.Номенклатура     = Стр.Номенклатура2;

                НоваяСтрока.Характеристика   = Стр.Характеристика2;

                НоваяСтрока.ЕдиницаИзмерения = НоваяСтрока.Номенклатура.ЕдиницаИзмерения;

                НоваяСтрока.Количество       = Стр.Количество;

                НоваяСтрока.Цена             = Стр.ЦенаРозничная;

                НоваяСтрока.Сумма            = Стр.Количество * Стр.ЦенаРозничная;

                НоваяСтрока.СтавкаНДС        = Справочники.СтавкиНДС.НайтиПоНаименованию(«20%», Истина);

                НоваяСтрока.СуммаНДС         = НоваяСтрока.Сумма — НоваяСтрока.Сумма / 1.2;

                НоваяСтрока.Всего            = НоваяСтрока.Сумма;

            Иначе

                НоваяСтрока                  = ДокПриходнаяНакладная.Запасы.Добавить();

                НоваяСтрока.Номенклатура     = Стр.Номенклатура2;

                НоваяСтрока.Характеристика   = Стр.Характеристика2;

                НоваяСтрока.ЕдиницаИзмерения = НоваяСтрока.Номенклатура.ЕдиницаИзмерения;

                НоваяСтрока.Количество       = Стр.Количество;

                НоваяСтрока.Цена             = Стр.ЦенаРозничная;

                НоваяСтрока.Сумма            = Стр.Количество * Стр.ЦенаРозничная;

                НоваяСтрока.СтавкаНДС        = Справочники.СтавкиНДС.НайтиПоНаименованию(«20%», Истина);

                НоваяСтрока.СуммаНДС         = НоваяСтрока.Сумма — НоваяСтрока.Сумма / 1.2;

                НоваяСтрока.Всего            = НоваяСтрока.Сумма;

            КонецЕсли;

   Ненавижу 1С

12 — 11.06.20 — 11:15

(11) за что я люблю незамутненный разум:

НоваяСтрока.СтавкаНДС        = Справочники.СтавкиНДС.НайтиПоНаименованию(«20%», Истина);

НоваяСтрока.СуммаНДС         = НоваяСтрока.Сумма — НоваяСтрока.Сумма / 1.2;

   такт

13 — 11.06.20 — 11:18

(11) чувствуется рука семерошника )

  

fisher

14 — 11.06.20 — 11:47

(13) Не надо грязи. Эти заветы универсальны: http://catalog.mista.ru/public/966234/

 +3 

   

Распечатать

Это сообщение возникает в том случае, если в алгоритме конфигурации Используется деление и не выполняется проверка значения делителя. Обычно эта ошибка возникает из-за того, что не заполнены какие-либо данные (сумма, количество, коэффициенты и т.п.). Необходимые для работы алгоритма данные должны быть заполнены, например, в документе или справочнике, элемент которого выбран в документе. Обычно эта проблема решается вводом необходимых для работы алгоритма данных и повторным запуском алгоритма (формирования отчета или проведения документов).

Решение:
в коде

Код 1C v 8.х

 //Просто проверка на то что Делитель не равен 0
Если Число(ШиринаБумаги) <> 0 Тогда
КолвоБумСПриладкой = КолвоБумаги / Число(ШиринаБумаги);
КонецЕсли;

в запросе:

Код 1C v 8.х

 ВЫБОР 
КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток = 0 ТОГДА 0
ИНАЧЕ ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток, 0)
КОНЕЦ КАК Себестоимость

Деление на 0: как исправить ошибку в программах 1С?

Опубликовано 25.01.2022 16:09
Автор: Administrator
Просмотров: 10928

Совсем скоро предстоит начислять зарплату за январь в программах 1С. И большинство расчетчиков и бухгалтеров столкнутся с такой ошибкой в базах как «Деление на 0». Почему это происходит и как самостоятельно, не прибегая к помощи программистов, исправить самую частую ошибку января любого года расскажем в данной публикации. 

 Итак, ошибка выглядит следующим образом:

Возникает она потому, что не указана норма дней на новый календарный год.

Есть несколько причин почему так происходит:

1. Не заполнены графики работы на новый календарный год – это самая популярная ситуация.

В 1С: ЗУП ред. 3.1 они находятся в разделе «Настройка» – «Предприятие» — «Графики работы сотрудников», в 1С: Бухгалтерии предприятия ред. 3.0 — в разделе «Зарплата и кадры» — «Справочники и настройки» — «Графики работы».

По кнопке «Заполнить» сформируется график и ошибка уйдет.

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

2. Неверно заполнен производственный календарь

В вышеуказанных разделах 1С есть производственные календари. Редко, но бывает, что ошибка деления на 0 происходит из-за некорректно заполненного календаря.

На скриншоте приведен календарь на следующий 2023 год. Видите, он полностью красный? Именно так и выглядит эта ошибка. Разработчики к концу 2022 года ее поправят, и норма дней будет считаться корректно.

3. В графике работ все дни помечены как выходные

Да, такое тоже бывает. Иногда пользователи вводят индивидуальные графики сотрудникам, «играются» с их заполнением, но не всегда программа это понимает и порой выдает ошибку деления на 0.

4. Ошибка в формуле расчета

Иногда пользователю необходимо считать зарплату по своим индивидуальным формулам расчета. Но зачастую формула вводится неверно, отсюда и возникает эта ошибка. В этом случае мы рекомендуем обращаться к консультантам 1С. Возможно вашу формулу можно настроить штатными механизмами 1С.

Тут же стоит сказать еще об одной вытекающей из этого пункта ошибке — не верно настроен приоритет видов начислений. Именно в случае когда создается много начислений со своими формулами расчета они начинают конфликтовать со стандартным начислением оплаты по окладу.
Так что, друзья, не выдумываем велосипед там, где его давно изобрели, а обращаемся к специалистам 1С.

5. В редких случаях такая ошибка возникает в следствие экстренного отключения электроэнергии, аварийного завершения 1С. В этом случае необходимо почистить кэш и прибегнуть к тестированию базы 1С.

Автор статьи: Ирина Плотникова

Text.ru - 100.00%

Понравилась статья? Подпишитесь на рассылку новых материалов

Добавить комментарий

1

2

Показывать по
10
20
40
сообщений

Новая тема

Ответить

АленаКачаева

Дата регистрации: 19.01.2009
Сообщений: 48

Добрый день! При проведении авансового отчета программа пишет Деление на 0 и не проводит док-т.Однако при проведении той же самой операции в демо версии все в порядке.1С:Предприятие 8.1 (8.1.12.101)Бухгалтерия предприятия, редакция 1.6 (1.6.11.7). Подскажите, пожалуйста, в чем может быть причина? Спасибо

Vladko

Дата регистрации: 27.08.2007
Сообщений: 2643

это значит, что число в знаменателе у деления равно нулю. Это всё что можно сказать по данной информации.<br>А если напишите подробнее ошибку(всё что пишет комп), то можно и по-конкретнее сказать где смотреть

EAX88

Дата регистрации: 23.06.2008
Сообщений: 159

Советую в посике сообщений набрать «ошибка деления на ноль» совсем недавно эта тема очень-очень подробно разбиралась и были найдены решения! В итоге это ошибка 1С-ников, в следующем релизе, который уже не за горами, обещали поправить!!!

Prikum

активный пользователь

онлайн

Дата регистрации: 18.02.2002
Сообщений: 20834

Тут другая ошибка, тут авансовый отчет, а не декларации

АленаКачаева

Дата регистрации: 19.01.2009
Сообщений: 48

При проведении док-та так и пишет «Деление на 0». Подробно:Ошибка при выполнении обработчика — ‘{Документ.АвансовыйОтчет(856)}: Деление на 0′<br>по причине:<br>{Документ.АвансовыйОтчет(856)}: Деление на 0<br>Спасибо!

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Там происходит пересчет по курсу — либо курс валюты равен нулю, либо кратность валюты документа равна нулю.

АленаКачаева

Дата регистрации: 19.01.2009
Сообщений: 48

Спасибо огромное! Получилось!

Bezimyashka

Дата регистрации: 15.06.2010
Сообщений: 4

«При формировании отчета «Накопительная ведомость по расходу продуктов питания» выдает ошибку: Деление на 0.<br>Подробно:<br>{Отчет.НакопительнаяВедомостьПоРасходуПродуктовПитания0504038.МодульОбъекта(816)}: Деление на 0<br>Макет.Параметры.пЦена = Данные.Сумма / Данные.Количество;<br><br>Подскажите, что делать. Заранее спасибо»

Prikum

активный пользователь

онлайн

Дата регистрации: 18.02.2002
Сообщений: 20834

Конфигурация какая? Хотя судя по отчету, это бюджетка!?

Bezimyashka

Дата регистрации: 15.06.2010
Сообщений: 4

Бухгалтерия бюджетного учреждения, редакция 1.0 (1.0.15.5)

  

falselight

11.06.20 — 10:50

Создаю программно документ ПриходнаяНакладная. При записи происходит ошибка, на строке, —

ДокПриходнаяНакладная.Записать(РежимЗаписиДокумента.Проведение);

http://joxi.ru/8AnQDeGs74Ky72

ИЗ ЗА ЧЕГО ПРОИСХОДИТ ДАННАЯ ОШИБКА ПРИ ПРОВЕДЕНИИ ДОКУМЕНТА И КАК ЕЕ УСТРАНИТЬ? Подскажите пожалуйста.

Деление на 0 значения типа Numeric

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(802)}:        ДокПриходнаяНакладная.Записать(РежимЗаписиДокумента.Проведение);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(616)}:        СоздатьДокумент(ТипЗагрузки,СумЛогистика);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(809)}:    ЗагрузитьОтчетВайлдберризНаСервере(«Комиссия»);

по причине:

Ошибка при выполнении обработчика — ‘ОбработкаПроведения’

по причине:

Деление на 0 значения типа Numeric

{Документ.ПриходнаяНакладная.МодульМенеджера(3962)}:    Запрос.ВыполнитьПакет();

{Документ.ПриходнаяНакладная.МодульОбъекта(1834)}:    Документы.ПриходнаяНакладная.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(802)}:        ДокПриходнаяНакладная.Записать(РежимЗаписиДокумента.Проведение);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(616)}:        СоздатьДокумент(ТипЗагрузки,СумЛогистика);

{ВнешняяОбработка.ВыгрузкаЗагрузкаWildBerries.Форма.Форма.Форма(809)}:    ЗагрузитьОтчетВайлдберризНаСервере(«Комиссия»);

по причине:

Ошибка выполнения запроса

по причине:

Ошибка при выполнении операции над данными:

Ошибка SQL: Деление на 0

по причине:

Ошибка SQL: Деление на 0

по причине:

Деление на 0 значения типа Numeric

  

ДенисЧ

1 — 11.06.20 — 10:53

ПОТОМУ ЧТО У ТЕБЯ В ЗАПРОСЕ ВОЗНИКАЕТ ДЕЛЕНИЕ НА 0!

Так понятно? )))

Заходи в модуль, лови запрос и смотри его результаты…

  

Ненавижу 1С

2 — 11.06.20 — 10:56

вот этот запрос анализировать:

{Документ.ПриходнаяНакладная.МодульМенеджера(3962)}:    Запрос.ВыполнитьПакет();

смотреть где есть деления и в каком случае в знаменателе появляется 0

  

falselight

3 — 11.06.20 — 10:56

(1) Да вот не понятно где оно возникает!

Сейчас изменил проведение на запись. Документ записался но при проведении выдал что не заполнены ряд полей.

Поле «Валюта документа» не заполнено

Поле «Дата вх. документа» не заполнено

Поле «Налогообложение» не заполнено

Поле «№ вх. документа» не заполнено

Постараюсь программно их заполнить.

Я проверял свой код создания. Там нет деления на 0. Он происходит не понятно где и из за чего!

  

fisher

4 — 11.06.20 — 10:56

Если при интерактивном проведении такого нет, значит чего-то ты недозаполняешь.

Сравни заполнение реквизитов у штатно созданного документа и у программно созданного.

  

falselight

5 — 11.06.20 — 10:56

(2) Может есть какое то радикальное решение?

Я же правильно заполняю документ и провожу его. делаю приход.

  

falselight

6 — 11.06.20 — 10:57

(4) Сейчас буду программно дозаполнять реквизиты что выдались при проведении документа.

  

ДенисЧ

7 — 11.06.20 — 10:57

(5) Радикальное решение есть. Я тебе предлагал его, если мне эклер не изменяет, ещё с год назад, а то и больше…

  

fisher

8 — 11.06.20 — 10:58

(7) Т.е. стаж уже больше года?

  

NorthWind

9 — 11.06.20 — 11:01

(5) канеш есть. Бросить заниматься этой фигней и заняться чем-то, с чем есть хотя бы минимальное желание разбираться.

  

fisher

10 — 11.06.20 — 11:07

(3) Что угодно может быть. Например, какой-нить курс пересчета у тебя не заполнен при программном создании, а алгоритм расчета этого не ожидает (потому что при штатном вводе его заполнение гарантируется) и ничтоже сумняшеся на него делит.

  

falselight

11 — 11.06.20 — 11:07

У меня температура второй день держится (((( Кое что не усмотрел.

Такой код. нормально отработал:

            Если ШапкаЗаполнена = 0 Тогда

                ДокПриходнаяНакладная                          = Документы.ПриходнаяНакладная.СоздатьДокумент();

                ДокПриходнаяНакладная.Дата                     = ТекущаяДата();

                ДокПриходнаяНакладная.ВидОперации              = Перечисления.ВидыОперацийПриходнаяНакладная.ПоступлениеОтПоставщика;

                ДокПриходнаяНакладная.Контрагент               = Контрагент;

                ДокПриходнаяНакладная.Договор                  = Договор;

                ДокПриходнаяНакладная.Организация              = Организация;

                ДокПриходнаяНакладная.СтруктурнаяЕдиница       = ВиртуальныйСклад;

                ДокПриходнаяНакладная.Подразделение            = Подразделение;

                ДокПриходнаяНакладная.Ответственный            = Справочники.Сотрудники.НайтиПоНаименованию(«Склад», 1);

                ДокПриходнаяНакладная.Курс                    = 1;

                ДокПриходнаяНакладная.Кратность               = 1;

                ДокПриходнаяНакладная.СуммаВключаетНДС        = Истина;

                ДокПриходнаяНакладная.НалогообложениеНДС      = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДС;

                ДокПриходнаяНакладная.ВалютаДокумента         = Константы.ВалютаУчета.Получить();

                ДокПриходнаяНакладная.НомерВходящегоДокумента = «—«;

                ДокПриходнаяНакладная.ДатаВходящегоДокумента  = ТекущаяДата();

                //                

                ШапкаЗаполнена                             = 1;

                //

                НоваяСтрока                  = ДокПриходнаяНакладная.Запасы.Добавить();

                НоваяСтрока.Номенклатура     = Стр.Номенклатура2;

                НоваяСтрока.Характеристика   = Стр.Характеристика2;

                НоваяСтрока.ЕдиницаИзмерения = НоваяСтрока.Номенклатура.ЕдиницаИзмерения;

                НоваяСтрока.Количество       = Стр.Количество;

                НоваяСтрока.Цена             = Стр.ЦенаРозничная;

                НоваяСтрока.Сумма            = Стр.Количество * Стр.ЦенаРозничная;

                НоваяСтрока.СтавкаНДС        = Справочники.СтавкиНДС.НайтиПоНаименованию(«20%», Истина);

                НоваяСтрока.СуммаНДС         = НоваяСтрока.Сумма — НоваяСтрока.Сумма / 1.2;

                НоваяСтрока.Всего            = НоваяСтрока.Сумма;

            Иначе

                НоваяСтрока                  = ДокПриходнаяНакладная.Запасы.Добавить();

                НоваяСтрока.Номенклатура     = Стр.Номенклатура2;

                НоваяСтрока.Характеристика   = Стр.Характеристика2;

                НоваяСтрока.ЕдиницаИзмерения = НоваяСтрока.Номенклатура.ЕдиницаИзмерения;

                НоваяСтрока.Количество       = Стр.Количество;

                НоваяСтрока.Цена             = Стр.ЦенаРозничная;

                НоваяСтрока.Сумма            = Стр.Количество * Стр.ЦенаРозничная;

                НоваяСтрока.СтавкаНДС        = Справочники.СтавкиНДС.НайтиПоНаименованию(«20%», Истина);

                НоваяСтрока.СуммаНДС         = НоваяСтрока.Сумма — НоваяСтрока.Сумма / 1.2;

                НоваяСтрока.Всего            = НоваяСтрока.Сумма;

            КонецЕсли;

  

Ненавижу 1С

12 — 11.06.20 — 11:15

(11) за что я люблю незамутненный разум:

НоваяСтрока.СтавкаНДС        = Справочники.СтавкиНДС.НайтиПоНаименованию(«20%», Истина);

НоваяСтрока.СуммаНДС         = НоваяСтрока.Сумма — НоваяСтрока.Сумма / 1.2;

  

такт

13 — 11.06.20 — 11:18

(11) чувствуется рука семерошника )

  

fisher

14 — 11.06.20 — 11:47

(13) Не надо грязи. Эти заветы универсальны: http://catalog.mista.ru/public/966234/

Хочу сделать чтобы системы при отсутствии какого либо товара выдавала ошибку и запрещала проведение документа Расходная,  а так же при проведении формировала движение документа и рассчитывала стоимость по этой формуле


Движение.Стоимость = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;

Сам код модуля объекта документ расходная


Процедура ОбработкаПроведения(Отказ, РежимПроведения)



Движения.ОстаткиТоваров.Записывать = Истина;
Движения.ОстаткиТоваров.Очистить(); // очищать при перепроведении
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл

Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не хватает товара" + Выборка.Номенклатура + """, из необходимых " + Выборка.КоличествоОстаток;
Сообщение.Сообщить();

Отказ = Истина;
Движения.ОстаткиТоваров.Записывать = Ложь;

КонецЕсли;

Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Количество = Выборка.Количество;
Движение.Стоимость = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;

КонецЦикла;

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


КонецПроцедуры

В итоге при проведении документа расходная вылезает ошибка «Деление на 0»
До этого в приходной сделал поступление товара с количеством 1000шт, в расходной пытаюсь списать 1 и вылетает ошибка. В регистре остатков есть запись по приходной, что пришло 1000шт.
В чем может быть проблема?

Ошибка при проведении строки выписки банка

Добрый день. Работаю в 1С Предприятие, Конфигурация: Бухгалтерия предприятия 2.0 (2.0.49.10). ИП на ОСНО, Помогите пожалуйста в решении следующей проблемы: при проведении строки выписки банка (оплата поставщику) выходит ошибка «Деление на 0». Служебное сообщение:

{ОбщийМодуль.ДоходыИРасходыПредпринимателя.Модуль(1789)}: Деление на 0
Оплачено.Количество = Окр(ПартияМПЗ.Количество * (Оплачено.Сумма + Оплачено.НДС) / (ПартияМПЗ.Сумма + ПартияМПЗ.НДС), 3, 1);

Причем это происходит при перечислении поставщикам, товар которых используется в недавно начатом производстве продукции. Данная продукция в основном используется для СМР (хозспособ) и не наблюдается как таковых доходов по ней. Может ли это стать причиной выдаваемой ошибки? На закладке Учет доходов и расходов Уч. политики стоит галочка «Для признания расходов не требуется получение дохода».
Почитала много в интернете, но ничего похожего не нашла.Очень сильно надеюсь на Вашу помощь. Заранее спасибо.

Доброго времени суток!
Причина , конечно, не в том, что вы оплату проводите поставщикам, товары которых где-то используете. А скорее, в какой-то неточности в заполнении документа выписки банка (в пр-ме). Скажите, вы случайно, не на основании документов поступления (от поставщиков) вносите строки выписки-банка?
Расчетный счет -рублевый или в валюте?

Заполнить и подать уведомление об исчисленных суммах налогов и взносов

Добрый день, Алена. Вношу строку выписки банка НЕ на основании документов поступления. Сама несколько раз проверяла, может где, что не так делаю, но увы…. Когда меняю контрагента по той же сумме все нормально проводится, единственное когда выбираю второго контрагента по поставке материала для производства той же продукции, опять появляется «Деление на 0». Производим бетон, именно не проводится строка выписки банка по оплате щебня, песка одному контрагенту и цемента — второму. Расчетный счет рублевый…Не понимаю, в чем может быть причина….

Да, причина пока не ясна…
Скажите: 1.вид операции «оплата поставщику» в «списании с р/сч», верно же..? 2. вид договора укажите подробно, все заполненные поля.
Я жду про «договор» по контрагенту в пр-ме подробной информации.

Да, все верно:
1.вид операции «оплата поставщику» в «списании с р/сч»
2.Договор: контрагент — …….
наименование -Договор поставки № 100
вид договора — С поставщииком
валюта расчетов — руб.
ничего более не заполнено.
Дело в том, что я ранее уже несколько раз проводила перечисления контрагенту в 1С, все было замечательно. Просто странно, почему именно по этим контрагентам программа «не хочет» производить оплату.

Заполняйте платежки с актуальными на сегодня КБК, кодами дохода и другими обязательными реквизитами

Сюда на форум частенько заглядывают программисты. Особенно просматривают темы технического толка, в том числе и про ошибки.
Может, вам напишут.

Если ждать не можете, то советую вам обратится в специалистам фирм-партнеров 1с.

Цитата (Гая):Добрый день. Работаю в 1С Предприятие, Конфигурация: Бухгалтерия предприятия 2.0 (2.0.49.10). ИП на ОСНО, Помогите пожалуйста в решении следующей проблемы: при проведении строки выписки банка (оплата поставщику) выходит ошибка «Деление на 0». Служебное сообщение:

{ОбщийМодуль.ДоходыИРасходыПредпринимателя.Модуль(1789)}: Деление на 0
Оплачено.Количество = Окр(ПартияМПЗ.Количество * (Оплачено.Сумма + Оплачено.НДС) / (ПартияМПЗ.Сумма + ПартияМПЗ.НДС), 3, 1);

Причем это происходит при перечислении поставщикам, товар которых используется в недавно начатом производстве продукции. Данная продукция в основном используется для СМР (хозспособ) и не наблюдается как таковых доходов по ней. Может ли это стать причиной выдаваемой ошибки? На закладке Учет доходов и расходов Уч. политики стоит галочка «Для признания расходов не требуется получение дохода».
Почитала много в интернете, но ничего похожего не нашла.Очень сильно надеюсь на Вашу помощь. Заранее спасибо.

Добрый день!
А Вы когда в последний раз делали обновление? Если я не ошибаюсь, то версия последняя 52. Попробуйте обновить базу. У меня программа как-то выдавала ошибки, но стоило обновиться и всё стало работать нормально.
Соглашусь с Аленой, что помощь следует ждать от программистов.

Добрый день! Обновлялась в октябре. Спасибо за уделенное мне внимание и время 😀 Обращусь обязательно по приезду на работу. Дело в том, что нахожусь в командировке, думала обойдусь без программистов….. 😀 До свидания!

Сформировать платежки на уплату НДФЛ и взносов с актуальными реквизитами

Страница 1 из 2

  1. Здравствйте! Помогите пож! Выскакивает ошибка деления на 0,хоть деления впринципе не должно быть! Я создаю в УТ документ с перемещением,создаю к нему ордера и делаю обмен с Розницей,после чего данные не выгружаются,ордера не созддаются,а вдок перемещения вот эта ошибка:

    Ошибка при выполнении обработчика — ‘{ОбщийМодуль.УправлениеЗапасами(72)}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса «Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0″‘
    по причине:
    {ОбщийМодуль.УправлениеЗапасами(72)}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса «Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0″

    по причине:
    Ошибка выполнения запроса «Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0″
    по причине:
    Ошибка при выполнении операции над данными:


  2. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    Конфигурацию правили? Деление происходит при вычислении себестоимости единицы номенклатуры на складе.

  3. не правил,после того как сделал ордер,сделал обмен! Как можно исправить?

    — Объединение сообщений, 11 фев 2015

    Может еще что нибудь прислать?Чтобы понятнее было в чем проблема?


  4. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    Да собственно, лично мне понятно, что с этим делать — решать вам.
    В тексте ошибки указано место возникновения, необходимо устранить, если умеете сами, если нет, то обращайтесь в службу поддержки разработчика конфигурации.

  5. Вот что конфигуратор выдал

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

    пользуйтесь тегами

    Последнее редактирование модератором: 11 фев 2015

  6. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Вангую что где-то не задана единица измерения или коэффициент единицы измерения.

    — Объединение сообщений, 11 фев 2015

    З.Ы. По тем позициям номенклатуры, что пришли с обменом проверьте что у единицы хранения остатков задан коэффициент.

  7. Если бы было все так просто…везде проставлена ед хранения и в Рознице и в УТ


  8. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Смотрите в той конфе, где ошибка.
    Не саму единицу измерения, а коэффициент.

  9. Извините, а где его смотреть?


  10. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    В карточке номенклатуры.
    У вас же прописана там единица хранения остатков. На закладке «Единицы» для этой единицы хранения (столбик «К.», ну или «Содержит (шт)» в форме единицы)

    — Объединение сообщений, 11 фев 2015

    upload_2015-2-11_14-51-53.png

  11. ПРОСМОТРЕЛ ВСЕ НОРМАЛЬНО ТАМ!

    выдает

    Процедура СоздатьФорму(ДокументОбъект, Склад, Действие = "Приход", Форма = "") Экспорт
    
       ЭтотОбъект.ДокументОбъект = ДокументОбъект;
       ЭтотОбъект.Склад  = Склад;
       ЭтотОбъект.Действие  = Действие;
       ДокументСсылка  = ДокументОбъект.Ссылка;
     
       Магазин = Склад.Магазин;
       Форма = ПолучитьФорму("Форма");
       ДокументОбъектМетаданные  = ДокументОбъект.Метаданные();
       ЕстьСерийныеНомера = ОбщегоНазначения.ЕстьТабЧастьДокумента("СерийныеНомера", ДокументОбъектМетаданные) = Истина;
       Если РежимПроверки Тогда
       
         Товары.Загрузить(ДокументОбъект.Товары.Выгрузить());
       
         Колонка = Товары.ВыгрузитьКолонку("Количество");
         Товары.ЗагрузитьКолонку(Колонка, "КоличествоПроверка");
       
         Форма.Открыть();
       
         Возврат;
       КонецЕсли;
       Если (Действие = "Приход"
        И  ДокументСсылка.ПоступлениеПоОрдернойСхеме)
        ИЛИ (Действие = "Расход"
        И  ДокументСсылка.РеализацияПоОрдернойСхеме) Тогда
     
         Запрос = Новый Запрос;
         Запрос.Текст = "ВЫБРАТЬ
         |   Товары.НомерСтроки, " + ?(ЕстьСерийныеНомера," Товары.КлючСтроки,","") + "
         |   Товары.Номенклатура,
         |   Товары.ХарактеристикаНоменклатуры,
         |   Товары.ЕдиницаИзмерения,
         |   Товары.Коэффициент,
         |   Товары.Цена
         |ПОМЕСТИТЬ ТабДокТовары
         |ИЗ
         |   &Товары КАК Товары
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |   ВЫБРАТЬ
         |   *
         |   ИЗ
         |   (ВЫБРАТЬ
         |     МИНИМУМ(Товары.НомерСтроки) КАК НомерСтроки, " + ?(ЕстьСерийныеНомера,"МИНИМУМ(Товары.КлючСтроки) КАК КлючСтроки, ","") + "
         |     Товары.Номенклатура,
         |     Товары.ХарактеристикаНоменклатуры,
         |     Товары.ЕдиницаИзмерения,
         |     Товары.Коэффициент,
         |     СРЕДНЕЕ(Товары.Цена) КАК Цена,
         |     &ВЫБОРКА_КОЛИЧЕСТВО
         |   ИЗ
         |     (ВЫБРАТЬ
         |       ЕСТЬNULL(ТабДокТовары.НомерСтроки, 0) КАК НомерСтроки, " + ?(ЕстьСерийныеНомера," ЕСТЬNULL(ТабДокТовары.КлючСтроки, 0) КАК КлючСтроки,","") + "
         |       ЕСТЬNULL(ТабДокТовары.Номенклатура,  ТоварыКПоступлениюРеализацииОстатки.Номенклатура) КАК Номенклатура,
         |       ЕСТЬNULL(ТабДокТовары.ХарактеристикаНоменклатуры,  ТоварыКПоступлениюРеализацииОстатки.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатуры,
         |       ЕСТЬNULL(ТабДокТовары.Номенклатура.ЕдиницаХраненияОстатков,  ТоварыКПоступлениюРеализацииОстатки.Номенклатура.ЕдиницаХраненияОстатков) КАК ЕдиницаИзмерения,
         |       ЕСТЬNULL(ТабДокТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, ТоварыКПоступлениюРеализацииОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК Коэффициент,
         |       ТабДокТовары.Цена * ТабДокТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЕСТЬNULL(ТабДокТовары.Коэффициент, 1) КАК Цена,
         |       ЕСТЬNULL(ТоварыКПоступлениюРеализацииОстатки.КоличествоОстаток, 0) * ЕСТЬNULL(ТоварыКПоступлениюРеализацииОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент, 0) КАК КоличествоПоРегистру
         |     ИЗ
         |       ТабДокТовары КАК ТабДокТовары
         |         ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПоступлениюРеализации.Остатки(, ДокументОснование = &ДокументСсылка И Склад = &Склад) КАК ТоварыКПоступлениюРеализацииОстатки
         |         ПО ТабДокТовары.Номенклатура = ТоварыКПоступлениюРеализацииОстатки.Номенклатура
         |           И ТабДокТовары.ХарактеристикаНоменклатуры = ТоварыКПоступлениюРеализацииОстатки.ХарактеристикаНоменклатуры
         |     ГДЕ
         |       ЕСТЬNULL(ТабДокТовары.Номенклатура.Услуга, ТоварыКПоступлениюРеализацииОстатки.Номенклатура.Услуга) = ЛОЖЬ) КАК Товары
         |     
         |     СГРУППИРОВАТЬ ПО
         |       Товары.Номенклатура,
         |       Товары.ХарактеристикаНоменклатуры,
         |       Товары.ЕдиницаИзмерения,
         |       Товары.Коэффициент) КАК Товары
         | 
         |   УПОРЯДОЧИТЬ ПО
         |   Товары.НомерСтроки";
       
         Запрос.УстановитьПараметр("Товары", ДокументСсылка.Товары);
         Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
       
         Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
           Если Действие = "Приход" Тогда
             Запрос.УстановитьПараметр("Склад", ДокументСсылка.СкладПолучатель);
           Иначе
             Запрос.УстановитьПараметр("Склад", ДокументСсылка.СкладОтправитель);
           КонецЕсли;
         Иначе
           Запрос.УстановитьПараметр("Склад", ДокументСсылка.Склад);
         КонецЕсли;
       
         Если Действие = "Приход" Тогда
           Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ВЫБОРКА_КОЛИЧЕСТВО", "МАКСИМУМ(Товары.КоличествоПоРегистру / Товары.Коэффициент) КАК Количество");
         Иначе
           Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ВЫБОРКА_КОЛИЧЕСТВО", "МАКСИМУМ(Товары.КоличествоПоРегистру / Товары.Коэффициент) * -1 КАК Количество");
         КонецЕсли;
       
         ТабЗначТовары = Запрос.Выполнить().Выгрузить();
       
       Иначе
       
         ТабЗначТовары = ДокументОбъект.Товары.Выгрузить();
       
       КонецЕсли;
     
     
       Запрос = Новый Запрос;
     
       Если ТипЗнч(ДокументОбъект) = Тип("ДокументСсылка.ПоступлениеТоваров")
         ИЛИ ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.ПоступлениеТоваров")Тогда
       
         Запрос.УстановитьПараметр("Товары",  ТабЗначТовары);
         Запрос.УстановитьПараметр("Магазин", Магазин);
         Запрос.УстановитьПараметр("ТипЦен",  Магазин.ТипЦенРозничнойТорговли);
         Запрос.УстановитьПараметр("ДокументПоступления",  ДокументОбъект.Ссылка);
         Запрос.УстановитьПараметр("Дата", ДокументОбъект.Дата);
         
         Запрос.Текст ="ВЫБРАТЬ
         |   ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура," + ?(ЕстьСерийныеНомера,"Товары.КлючСтроки,","") + "
         |   ВЫРАЗИТЬ(Товары.ХарактеристикаНоменклатуры КАК Справочник.ХарактеристикиНоменклатуры) КАК ХарактеристикаНоменклатуры,
         |   ВЫРАЗИТЬ(Товары.ЕдиницаИзмерения КАК Справочник.ЕдиницыИзмерения) КАК ЕдиницаИзмерения,
         |   Товары.НомерСтроки,
         |   Товары.Коэффициент,
         |   Товары.Цена,
         |   Товары.Количество
         | ПОМЕСТИТЬ ТабДокТовары
         |ИЗ
         |   &Товары КАК Товары
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |ВЫБРАТЬ
         |   ДанныеДляРасчетов.Номенклатура, " + ?(ЕстьСерийныеНомера," ДанныеДляРасчетов.КлючСтроки,","") + "
         |   ДанныеДляРасчетов.ХарактеристикаНоменклатуры,
         |   ДанныеДляРасчетов.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
         |   ДанныеДляРасчетов.ДатаУстановкиЦеныВРознице,
         |   ВЫБОР
         |     КОГДА ДанныеДляРасчетов.СебестоимостьПрошлойЗакупки = 0
         |       ТОГДА 0
         |     ИНАЧЕ (ДанныеДляРасчетов.ЦенаВРозницеСтарая / ДанныеДляРасчетов.СебестоимостьПрошлойЗакупки - 1) * 100
         |   КОНЕЦ КАК Наценка,
         |   ВЫБОР
         |     КОГДА ДанныеДляРасчетов.Номенклатура.ПодарочныйСертификат
         |       ТОГДА ДанныеДляРасчетов.Номенклатура.Номинал
         |     ИНАЧЕ 0
         |   КОНЕЦ КАК Цена,
         |   ДанныеДляРасчетов.Себестоимость КАК ЦенаДокумента,
         |   ДанныеДляРасчетов.СебестоимостьПрошлойЗакупки ,
         |   ДанныеДляРасчетов.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
         |   ДанныеДляРасчетов.Количество,
         |   ДанныеДляРасчетов.Коэффициент,
         |   ИСТИНА КАК Пометка,
         |   ДанныеДляРасчетов.ЦенаВРозницеСтарая КАК ЦенаВРознице
         |ИЗ
         |   (ВЫБРАТЬ
         |     ТабДокТовары.Номенклатура КАК Номенклатура," + ?(ЕстьСерийныеНомера," ТабДокТовары.КлючСтроки,","") + "
         |     ТабДокТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
         |     ТабДокТовары.Коэффициент КАК Коэффициент,
         |     ТабДокТовары.Цена КАК ЦенаДокумента,
         |     ТабДокТовары.Количество КАК Количество,
         |     ЕСТЬNULL(ЦеныНоменклатурыМагазиновСХарактеристиками.Цена, ЕСТЬNULL(ЦеныНоменклатурыМагазиновБезХарактеристик.Цена, 0)) КАК ЦенаВРозницеСтарая,
         |     ЕСТЬNULL(ТоварыПрошлойЗакупки.СебестоимостьПрошлойЗакупки * ТоварыПрошлойЗакупки.ЕдиницаИзмерения.Коэффициент, 0) КАК СебестоимостьПрошлойЗакупки,
         |     ВЫБОР
         |       КОГДА ЕСТЬNULL(ТабДокТовары.Коэффициент, 0) <> 0
         |         ТОГДА ТабДокТовары.Цена * ТабДокТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ТабДокТовары.Коэффициент
         |       ИНАЧЕ ТабДокТовары.Цена
         |     КОНЕЦ КАК Себестоимость,
         |     ТабДокТовары.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
         |     ВЫБОР
         |       КОГДА ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент ЕСТЬ NULL
         |         ТОГДА 0
         |       ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * ТабДокТовары.Коэффициент / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент
         |     КОНЕЦ КАК ЦенаПоТипуЦен,
         |     ЕСТЬNULL(ЦеныНоменклатурыМагазиновСХарактеристиками.Период, ЦеныНоменклатурыМагазиновБезХарактеристик.Период) КАК ДатаУстановкиЦеныВРознице,
         |     ИСТИНА КАК Пометка,
         |     ТабДокТовары.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа
         |   ИЗ
         |     ТабДокТовары КАК ТабДокТовары
         |       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
         |         ПрошлаяЗакупка.Номенклатура КАК Номенклатура,
         |         ПрошлаяЗакупка.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
         |         ПрошлаяЗакупка.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
         |         ЦеныПрошлойЗакупки.СебестоимостьПрошлойЗакупки КАК СебестоимостьПрошлойЗакупки
         |       ИЗ
         |         (ВЫБРАТЬ
         |           ТоварыПрошлойЗакупки.Номенклатура КАК Номенклатура,
         |           ТоварыПрошлойЗакупки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
         |           ТоварыПрошлойЗакупки.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
         |           МАКСИМУМ(ТоварыПрошлойЗакупки.Ссылка.Дата) КАК Дата
         |         ИЗ
         |           Документ.ПоступлениеТоваров.Товары КАК ТоварыПрошлойЗакупки
         |         ГДЕ
         |           ТоварыПрошлойЗакупки.Ссылка <> &ДокументПоступления
         |           И ТоварыПрошлойЗакупки.Ссылка.Проведен
         |           И ТоварыПрошлойЗакупки.Ссылка.Дата <= &Дата
         |       
         |         СГРУППИРОВАТЬ ПО
         |           ТоварыПрошлойЗакупки.Номенклатура,
         |           ТоварыПрошлойЗакупки.ХарактеристикаНоменклатуры,
         |           ТоварыПрошлойЗакупки.ЕдиницаИзмерения) КАК ПрошлаяЗакупка
         |           ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
         |             ЦеныПрошлойЗакупки.Цена КАК СебестоимостьПрошлойЗакупки,
         |             ЦеныПрошлойЗакупки.Номенклатура КАК Номенклатура,
         |             ЦеныПрошлойЗакупки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
         |             ЦеныПрошлойЗакупки.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
         |             ЦеныПрошлойЗакупки.Ссылка.Дата КАК ДатаДокумента
         |           ИЗ
         |             Документ.ПоступлениеТоваров.Товары КАК ЦеныПрошлойЗакупки
         |           ГДЕ
         |             ЦеныПрошлойЗакупки.Ссылка <> &ДокументПоступления
         |             И ЦеныПрошлойЗакупки.Ссылка.Дата <=&Дата) КАК ЦеныПрошлойЗакупки
         |           ПО ПрошлаяЗакупка.Номенклатура = ЦеныПрошлойЗакупки.Номенклатура
         |             И ПрошлаяЗакупка.ХарактеристикаНоменклатуры = ЦеныПрошлойЗакупки.ХарактеристикаНоменклатуры
         |             И ПрошлаяЗакупка.ЕдиницаИзмерения = ЦеныПрошлойЗакупки.ЕдиницаИзмерения
         |             И ПрошлаяЗакупка.Дата = ЦеныПрошлойЗакупки.ДатаДокумента) КАК ТоварыПрошлойЗакупки
         |       ПО ТабДокТовары.Номенклатура = ТоварыПрошлойЗакупки.Номенклатура
         |         И ТабДокТовары.ХарактеристикаНоменклатуры = ТоварыПрошлойЗакупки.ХарактеристикаНоменклатуры
         |         И ТабДокТовары.ЕдиницаИзмерения = ТоварыПрошлойЗакупки.ЕдиницаИзмерения
         |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
         |           ,
         |           (Номенклатура, ХарактеристикаНоменклатуры) В
         |               (ВЫБРАТЬ
         |                 СписокНоменклатурыИХарактеристик.Номенклатура,
         |                 СписокНоменклатурыИХарактеристик.ХарактеристикаНоменклатуры
         |               ИЗ
         |                 ТабДокТовары КАК СписокНоменклатурыИХарактеристик)
         |             И Магазин = &Магазин
         |             И ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК ЦеныНоменклатурыМагазиновБезХарактеристик
         |       ПО ТабДокТовары.Номенклатура = ЦеныНоменклатурыМагазиновБезХарактеристик.Номенклатура
         |       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
         |         ЦеныНоменклатурыМагазинов.Номенклатура КАК Номенклатура,
         |         ЦеныНоменклатурыМагазинов.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
         |         ЦеныНоменклатурыМагазинов.Цена КАК Цена,
         |         ЦеныНоменклатурыМагазинов.Период КАК Период
         |       ИЗ
         |         РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
         |             &Дата,
         |             Магазин = &Магазин
         |               И (НЕ ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
         |               И Номенклатура В
         |                 (ВЫБРАТЬ
         |                   СписокНоменклатуры.Номенклатура
         |                 ИЗ
         |                   ТабДокТовары КАК СписокНоменклатуры)) КАК ЦеныНоменклатурыМагазинов) КАК ЦеныНоменклатурыМагазиновСХарактеристиками
         |       ПО ТабДокТовары.Номенклатура = ЦеныНоменклатурыМагазиновСХарактеристиками.Номенклатура
         |         И ТабДокТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазиновСХарактеристиками.ХарактеристикаНоменклатуры
         |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
         |           ,
         |           Номенклатура В
         |               (ВЫБРАТЬ
         |                 СписокНоменклатуры.Номенклатура
         |               ИЗ
         |                 ТабДокТовары КАК СписокНоменклатуры)
         |             И ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
         |       ПО ТабДокТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
         |         И ТабДокТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры) КАК ДанныеДляРасчетов";
       
       Иначе
       
         Запрос.Текст = "ВЫБРАТЬ
         |   Товары.Номенклатура, " + ?(ЕстьСерийныеНомера," Товары.КлючСтроки,","") + "
         |   Товары.ХарактеристикаНоменклатуры,
         |   Товары.ЕдиницаИзмерения,
         |   Товары.Коэффициент,
         |   Товары.Цена,
         |   Товары.Количество
         |ПОМЕСТИТЬ ТабДокТовары
         |ИЗ
         |   &Товары КАК Товары
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |ВЫБРАТЬ
         |   ТабДокТовары.Номенклатура, " + ?(ЕстьСерийныеНомера," ТабДокТовары.КлючСтроки,","") + "
         |   ТабДокТовары.ХарактеристикаНоменклатуры,
         |   ТабДокТовары.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
         |   ТабДокТовары.ЕдиницаИзмерения,
         |   ТабДокТовары.Коэффициент,
         |   ТабДокТовары.Цена КАК ЦенаДокумента,
         |   ТабДокТовары.Цена,
         |   ТабДокТовары.Количество,
         |   ЦеныНоменклатурыМагазиновСрезПоследних.Цена * ТабДокТовары.Коэффициент / ТабДокТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЦенаВРознице,
         |   ЦеныНоменклатурыСрезПоследних.Цена  * ТабДокТовары.Коэффициент / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент  КАК ЦенаПоТипуЦен,
         |   ЦеныНоменклатурыМагазиновСрезПоследних.Период КАК ДатаУстановкиЦеныВРознице,
         |   ИСТИНА КАК Пометка
         |ИЗ
         |   ТабДокТовары КАК ТабДокТовары
         |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(
         |         ,
         |         Номенклатура В (&СписокНоменклатуры)
         |         И ХарактеристикаНоменклатуры В (&СписокХарактеристикНоменклатуры)
         |           И Магазин = &Магазин) КАК ЦеныНоменклатурыМагазиновСрезПоследних
         |     ПО ТабДокТовары.Номенклатура = ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура
         |       И ТабДокТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыМагазиновСрезПоследних.ХарактеристикаНоменклатуры
         |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
         |         ,
         |         Номенклатура В (&СписокНоменклатуры)
         |           И ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
         |     ПО ТабДокТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
         |       И ТабДокТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры";
       
         Запрос.УстановитьПараметр("Товары",  ТабЗначТовары);
         Запрос.УстановитьПараметр("Магазин", Магазин);
         Запрос.УстановитьПараметр("ТипЦен",  Магазин.ТипЦенРозничнойТорговли);
         Запрос.УстановитьПараметр("СписокНоменклатуры", ТабЗначТовары.ВыгрузитьКолонку("Номенклатура"));
         Запрос.УстановитьПараметр("СписокХарактеристикНоменклатуры", ТабЗначТовары.ВыгрузитьКолонку("ХарактеристикаНоменклатуры"));
       
       КонецЕсли;
       
       ТабЗначТовары = Запрос.Выполнить().Выгрузить();
       Товары.Загрузить(ТабЗначТовары);
    
       ЗаполнитьКолонку(Склад, "Склад", Ложь);
     
       Если ЕстьСерийныеНомера Тогда
         МассивКлючей = ТабЗначТовары.ВыгрузитьКолонку("КлючСтроки");
       
         Запрос = Новый Запрос;
         Запрос.Текст = "ВЫБРАТЬ
         |   СерийныеНомера.СерийныйНомер,
         |   СерийныеНомера.КлючСтроки
         |ПОМЕСТИТЬ ТабСерийныеНомера
         |ИЗ
         |   &СерийныеНомера КАК СерийныеНомера
         |;
         |
         |////////////////////////////////////////////////////////////////////////////////
         |ВЫБРАТЬ
         |   ТабСерийныеНомера.СерийныйНомер,
         |   ТабСерийныеНомера.КлючСтроки
         |ИЗ
         |   ТабСерийныеНомера КАК ТабСерийныеНомера
         |ГДЕ
         |   ТабСерийныеНомера.КлючСтроки В(&МассивКлючей)";
       
         Запрос.УстановитьПараметр("МассивКлючей", МассивКлючей);
         Запрос.УстановитьПараметр("СерийныеНомера", ДокументСсылка.СерийныеНомера);
       
         Результат = Запрос.Выполнить();
         ТаблицаЗапроса = Результат.Выгрузить();
         СерийныеНомера.Загрузить(ТаблицаЗапроса);
       КонецЕсли;
     
       Форма.Открыть();
    
    КонецПроцедуры
    Последнее редактирование модератором: 12 фев 2015

  12. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    В чем помочь-то? Найти за вас где все же происходит деление на 0 в запросе?
    Посмотрите полный текст «проблемного» запроса все станет понятно.
    Все эти портянки кода, приведнные вами — не понятно для кого и зачем.

  13. Что там может быть понятно, я не задрот,чтобы понимать эту херь


  14. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    Ух, спасибо, конечно, на добром слове…..
    Если не умеете программировать вообще, для чего вы вообще полезли внутрь конфигурации?
    Я еще в своем сообщении #4 объяснил, что нужно вам сделать.

  15. Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО = ПеремещениеТоваров
    ТипОбъекта = Документ ссылка: Перемещение товаров
    Объект = Перемещение товаров УТ000000141 от 11.02.2015 18:52:19
    Обработчик = ПослеЗагрузкиОбъекта
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘{ОбщийМодуль.УправлениеЗапасами(72)}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса «Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0″‘
    ПозицияМодуля = (41)
    КодСообщения = 21
    Ошибка при загрузке объектов. Было загружено: 0

    Техническая информация:
    {Обработка.ОбменДаннымиXML(1597)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта


  16. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    За такое общение нет смысла вам бесплатно помогать, все-таки придется вам стать задротом.

  17. Помогите пожалуйста,неведомая ошибка

    Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО = ПеремещениеТоваров
    ТипОбъекта = Документ ссылка: Перемещение товаров
    Объект = Перемещение товаров УТ000000141 от 11.02.2015 18:52:19
    Обработчик = ПослеЗагрузкиОбъекта
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Помеченный на удаление документ не может быть проведен!
    ПозицияМодуля = (41)
    КодСообщения = 21
    Ошибка при загрузке объектов. Было загружено: 2

    Техническая информация:
    {Обработка.ОбменДаннымиXML(1597)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта


  18. LordMaverick

    Online

    LordMaverick
    Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    4.003
    Симпатии:
    465
    Баллы:
    104

    ну и в чём сложность? оно ведь прямым текстом кричит -«ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Помеченный на удаление документ не может быть проведен!»

  19. Сорри,не то куинул! Вот эта ошибка

    Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО = ПеремещениеТоваров
    ТипОбъекта = Документ ссылка: Перемещение товаров
    Объект = Перемещение товаров УТ000000150 от 12.02.2015 16:59:39
    Обработчик = ПослеЗагрузкиОбъекта
    ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘{ОбщийМодуль.УправлениеЗапасами(72)}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса «Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0″‘
    ПозицияМодуля = (41)
    КодСообщения = 21
    Ошибка при загрузке объектов. Было загружено: 1

    Техническая информация:
    {Обработка.ОбменДаннымиXML(1597)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта

    — Объединение сообщений, 12 фев 2015

    Создал док перемещения-провел,создал к нему ордера-создались! Выполнил обмен Ут с Розницей,в рознице не хочет принимать загрузку! Док перемещения появился,проведенный! Нажимаю провести его еще раз,выдает

    Ошибка при выполнении обработчика — ‘{ОбщийМодуль.УправлениеЗапасами(72)}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса «Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0″‘
    по причине:
    {ОбщийМодуль.УправлениеЗапасами(72)}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса «Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0″

    по причине:
    Ошибка выполнения запроса «Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0″
    по причине:
    Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0
    по причине:
    Ошибка SQL: Деление на 0
    по причине:
    Деление на 0 значения типа Numeric

Страница 1 из 2


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Содержание

  1. Divide by zero error encountered. 1С УТ
  2. Ошибка при выполнении операции над данными 22012 error division by zero
  3. Ошибка Обнаружена Ошибка, деление на ноль
  4. ЗиК SQL Divide by zero
  5. Thread: ERROR:22012 division by zero
  6. ERROR:22012 division by zero

Divide by zero error encountered. 1С УТ

Доброго времени суток, уважаемые Мастера.
Проблема немного не понятная. В УТ 10.3.12.3, при проведении документа «Поступление товаров и услуг» возникает ошибка:
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
<ОбщийМодуль.ОбщегоНазначения(4191)>: Ошибка при вызове метода контекста (Выполнить)

по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 10.0: Divide by zero error encountered.
HRESULT=80040E14, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1

Знаю, что программа делит на «0», но вот где . Ошибка ссылается на следующую функцию.

Функция СформироватьЗапросПоТабличнойЧасти(ДокументОбъект, ИмяТабличнойЧасти, СтруктураПолей,
СтруктураСложныхПолей = Неопределено) Экспорт

Для Каждого Реквизит Из СтруктураПолей Цикл

ТекстЗапроса = ТекстЗапроса + «,
|Док.» + Реквизит.Значение +
» КАК » + СокрЛП(Реквизит.Ключ);

Запрос = Новый Запрос;

Если ТипЗнч(СтруктураСложныхПолей) = Тип(«Структура») Тогда // Добавим к запросу конструкции.

Для Каждого Элемент Из СтруктураСложныхПолей Цикл

ТекстЗапроса = ТекстЗапроса + «,
| » + Элемент.Значение +
» КАК » + СокрЛП(Элемент.Ключ);

Если СтруктураСложныхПолей.Свойство(«Проект») Тогда

Запрос.УстановитьПараметр(«ДатаДок»,ДокументОбъект.Дата);
КонецЕсли;
КонецЕсли;

Запрос.Текст = «ВЫБРАТЬ
| Док.НомерСтроки » + ТекстЗапроса + »
| ИЗ
| Документ.» + ДокументМетаданные.Имя + «.»+ СокрЛП(ИмяТабличнойЧасти) +
» КАК Док»+ТекстСоединение+»
| ГДЕ Док.Ссылка = &ДокументСсылка»;

// Установим параметры запроса.
Запрос.УстановитьПараметр(«ДокументСсылка» , ДокументОбъект.Ссылка);

Если ДокументОбъект[ИмяТабличнойЧасти].Количество() = 0 Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, «ГДЕ Док.Ссылка = &ДокументСсылка», «ГДЕ ЛОЖЬ»);
КонецЕсли;

Источник

Есть конфигурация ЗиК непосредственно правкой конфы занимается другой человек, я только админю SQL сервер. После внесения очередных изменений в конфу при закрытии месяца SQL сервер матерится: «Microsoft OLE DB Provider for SQL Server: Divide by zero error encountered.», при этом если база лежит в dbf месяц закрывается без проблем! Разработчик конфы все валит на меня, я в свою очередь уверен что со стороны сервера все ок! Считаю что разработчик заранее не предусмотрел деление на 0 что-то типо

«ВЫБОР КОГДА ЕСТЬNULL(Таблица.Количество,0) = 0 ТОГДА 0
ИНАЧЕ Таблица.Сумма/Таблица.Количество
КОНЕЦ КАК Цена»

Помогите разрешить спор!
Как доказать главбуху что проблема вызвана именно ошибкой в конфигурации?
Есть ли внутри 1с платформы проверка арифметических операций, может ее там нет, поэтому dbf вариант работает без проблем?

Бухия 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 все работало.

Источник

Ошибка Обнаружена Ошибка, деление на ноль

Здравствуйте, помогите пожалуйста с ошибкой. Пытаюсь сформировать : Отчеты — Анализ учета по НДС

<ОбщийМодуль.ДлительныеОперации.Модуль(376)>: Ошибка при выполнении операции над данными:
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 работает. Здесь ясно, что это — глюк платформы. Если ошибка повторится, то напишите на горячую линию 1С сообщение об ошибке.

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

Вот ответ от v8 V8@1c.ru

При формировании отчета «Анализ учета по НДС» выдается сообщение об ошибке «Обнаружена ошибка: деление на ноль» если в информационной базе присутствуют документы следующих видов: -Поступление на расчетный счет, -Списание с расчетного счета, -Операция по платежной карте -Поступление наличных со значением кратности взаиморасчетов равной нулю.

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

Источник

ЗиК SQL Divide by zero

Есть конфигурация ЗиК непосредственно правкой конфы занимается другой человек, я только админю SQL сервер. После внесения очередных изменений в конфу при закрытии месяца SQL сервер матерится: «Microsoft OLE DB Provider for SQL Server: Divide by zero error encountered.», при этом если база лежит в dbf месяц закрывается без проблем! Разработчик конфы все валит на меня, я в свою очередь уверен что со стороны сервера все ок! Считаю что разработчик заранее не предусмотрел деление на 0 что-то типо

«ВЫБОР КОГДА ЕСТЬNULL(Таблица.Количество,0) = 0 ТОГДА 0
ИНАЧЕ Таблица.Сумма/Таблица.Количество
КОНЕЦ КАК Цена»

Помогите разрешить спор!
Как доказать главбуху что проблема вызвана именно ошибкой в конфигурации?
Есть ли внутри 1с платформы проверка арифметических операций, может ее там нет, поэтому dbf вариант работает без проблем?

К сожалению эта ошибка происходит именно на сервере, поэтому сделать проверку в 1С не предоставляеться возможным. Посмотрите на каком запросе валиться 1с и что включаеться в запрос, возможно ошибка именно там. Что говорит профайлер?

Источник

Thread: ERROR:22012 division by zero

Thread Tools
Display

ERROR:22012 division by zero

Ive just updated to 1.12.10. Ive got 3 DB`s, one current one and 2 old ones. I ran the update but now on one of the old ones i get this error on some of the report screens when i filter for my player name. Ive tried setting up a new DB and importing my hands from the Archive folder but i still get the same problem.

Im running Windows Vista 64 on a Intel i7 CPU 920@2.67ghz and 8GB Ram if that helps at all.

Is there anyway to save my DB`s, any help would be appreciated.

Please clear your filters (Filters->clear) one time although it seems like no filters are defined.

Hey Im not on my home comp at the moment but i did a search last night and someone mentioned clearing the filters so i tried it but it didnt seem to work. I will retry it tonight when i get home though.

Yeah just to confirm clearing the Filters did not work.

the HM1 update will perform a big database update when you run it.
So ignore any «not responding» error but wait for the program to unfreeze and the database update to finish.
Make sure you have enough free diskspace.
If you have a 40 GB database—> the database update would like 10 GB of free space (to use temporarily)
Run dbcontrolpanel.exe and create a new database, if you get an error upon startup.

If that doesn’t resolve it, create a new database and reimport your hands.

Participate in the Beta release of the newest Hold’em Manager version: HM Cloud. Sign-up HERE.

If you would like to leave some feedback to help us improve the quality of the solutions, and/or the support quality you received, — you can do this here

Yeah tried the update with no luck. Like i mentioned i already tried creating a new DB and importing the hands from the Archive folder with the same result, is there another way i should export my hands or any other ideas? Thanks.

Which PostgreSQL version are you using?
If you use 8.4.x update to 8.4.11 from PostgreSQL: Welcome

Participate in the Beta release of the newest Hold’em Manager version: HM Cloud. Sign-up HERE.

If you would like to leave some feedback to help us improve the quality of the solutions, and/or the support quality you received, — you can do this here

Yeah im using 8.4but when i try and update its asks for my user account password for postgres but when i enter it it is saying that it is the incorrect password.

I also tried to re-inport the hands in to a new DB again just to double check and after a long time optimizing and starting up i just ended up with the same error unfortunatley. One thing i noticed is that when i re-inported the hands from the archive folder it only imported approx 700K hands although i know in my 3 DB`s combined ive got well over 1M played hands so im not sure whats happening there also.

I tried following the instructions below but didnt have any success getting passed the password stage.

click on Start and go to Programs -> Accessories -> Command Prompt

* If you are on Vista, rightclick and choose «Run as Administrator».

A black box should appear. Type ‘net user postgres /delete’ (without the quotes) and press enter.

The user is now deleted and you can (re)install PostgreSQL and it should accept any password.

Right i think i figured out why i have less hands, this is due to me purging some of the hands at some point isnt it so although the results show the actual HH is no longer there.

Is there any way to transfer these hands to a new DB or do they have to stay in the one they are in?

Not sure if its helpful or not but if i run date filters on the hands i can go from July 2008(my earliest hand) to Jan 1st 2011 without getting the error, which is nearly all my FT hands. As soon as i go past there i get the error. I can also filter Jan 2011 and Feb 2011 as individual months without getting the error. After that though i get the errors.

Would it work trying to export the hands from that point and then deleting the old hands and reinporting to try and get it working as i still want to keep records of the old hands.

Источник

  

Avtokrator

03.06.13 — 12:03

Доброго времени суток, уважаемые Мастера.

Проблема немного не понятная…. В УТ 10.3.12.3, при проведении документа  «Поступление товаров и услуг» возникает ошибка:

Ошибка при выполнении обработчика — ‘ОбработкаПроведения’

по причине:

{ОбщийМодуль.ОбщегоНазначения(4191)}: Ошибка при вызове метода контекста (Выполнить)

по причине:

Ошибка выполнения запроса

по причине:

Ошибка при выполнении операции над данными:

Microsoft SQL Server Native Client 10.0: Divide by zero error encountered.

HRESULT=80040E14, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1

Знаю, что программа делит на «0», но вот где ??? Ошибка ссылается на следующую функцию.

Функция СформироватьЗапросПоТабличнойЧасти(ДокументОбъект, ИмяТабличнойЧасти, СтруктураПолей,

                                          СтруктураСложныхПолей = Неопределено) Экспорт

   ТекстЗапроса = «»;

   
   ДокументМетаданные = ДокументОбъект.Метаданные();

   Для Каждого Реквизит Из СтруктураПолей Цикл

       ТекстЗапроса  = ТекстЗапроса + «,

       |Док.» + Реквизит.Значение +

       » КАК » + СокрЛП(Реквизит.Ключ);

   КонецЦикла;

   
   ТекстСоединение=»»;

   
   Запрос = Новый Запрос;

   Если ТипЗнч(СтруктураСложныхПолей) = Тип(«Структура») Тогда // Добавим к запросу конструкции.

       
       Для Каждого Элемент Из СтруктураСложныхПолей Цикл

           

           ТекстЗапроса  = ТекстЗапроса + «,

           | » + Элемент.Значение +

           » КАК » + СокрЛП(Элемент.Ключ);

           
       КонецЦикла;

       
       Если СтруктураСложныхПолей.Свойство(«Проект») Тогда

           

           ТекстСоединение=»

           |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УстановкаПроектовДляНоменклатуры.СрезПоследних(&ДатаДок, НоменклатураПроекта В (ВЫБРАТЬ Номенклатура ИЗ Документ.» + ДокументМетаданные.Имя + «.»+ СокрЛП(ИмяТабличнойЧасти) + » ГДЕ Ссылка = &ДокументСсылка)) КАК ПроектыНоменклатуры

           |ПО Док.Номенклатура=ПроектыНоменклатуры.НоменклатураПроекта»;

           

           Запрос.УстановитьПараметр(«ДатаДок»,ДокументОбъект.Дата);

       КонецЕсли;

   КонецЕсли;

       

   Запрос.Текст = «ВЫБРАТЬ

               | Док.НомерСтроки » + ТекстЗапроса + »

               | ИЗ

               |      Документ.» + ДокументМетаданные.Имя + «.»+ СокрЛП(ИмяТабличнойЧасти) +

               » КАК Док»+ТекстСоединение+»

               |     ГДЕ Док.Ссылка = &ДокументСсылка»;

   // Установим параметры запроса.

   Запрос.УстановитьПараметр(«ДокументСсылка» , ДокументОбъект.Ссылка);

   

   Если ДокументОбъект[ИмяТабличнойЧасти].Количество() = 0 Тогда

       Запрос.Текст = СтрЗаменить(Запрос.Текст, «ГДЕ Док.Ссылка = &ДокументСсылка», «ГДЕ ЛОЖЬ»);

   КонецЕсли;

   Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросПоТабличнойЧасти()

  

Avtokrator

4 — 03.06.13 — 12:13

Проблема кроется тут, когда создается сам запрос:

»

Для Каждого Реквизит Из СтруктураПолей Цикл

       ТекстЗапроса  = ТекстЗапроса + «,

       |Док.» + Реквизит.Значение +

       » КАК » + СокрЛП(Реквизит.Ключ);

   КонецЦикла;

»

Как, в таком запросе, сделать проверку на ноль, чтобы SQL отвязался?

  

Avtokrator

6 — 03.06.13 — 12:18

Текст запроса, вытащенный из обработчика.

Запрос.Текст    «ВЫБРАТЬ

Док.НомерСтроки ,

Док.Номенклатура КАК Номенклатура,

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

Док.Сумма КАК Сумма,

Док.СтавкаНДС КАК СтавкаНДС,

Док.СуммаНДС КАК НДС,

Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,

Док.СерияНоменклатуры КАК СерияНоменклатуры,

Док.Номенклатура.ВестиПартионныйУчетПоСериям КАК ВестиПартионныйУчетПоСериям,

Док.Номенклатура.Услуга КАК Услуга,

Док.Номенклатура.Набор КАК Набор,

Док.Номенклатура.Комплект КАК Комплект,

Док.Заказ КАК Заказ,

Док.Заказ.СкладГруппа КАК СкладЗаказаПокупателя,

Док.Заказ.ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей КАК ОбособленныйУчетТоваровПоЗаказамПокупателей,

Док.ЕдиницаИзмерения КАК ЕдиницаИзмерения,

Док.Ссылка.СкладОрдер КАК Склад,

Док.Ссылка.СкладОрдер.ВидСклада КАК ВидСкладаРазмещения,

Док.ПриходныйОрдер КАК ДокументПолучения,

Док.ПриходныйОрдер.Организация КАК ОрганизацияДокументаПолучения,

Док.ПриходныйОрдер.БезПраваПродажи КАК БезПраваПродажи,

Док.Цена КАК Цена,

Док.Коэффициент КАК Коэффициент,

Док.ПриходныйОрдер.Склад КАК ПриходныйОрдерСклад,

Док.Номенклатура.ВестиУчетПоСериям КАК УчетПоСериям,

Док.СерияНоменклатуры.СтранаПроисхождения КАК СтранаПроисхождения,

Док.СерияНоменклатуры.НомерГТД КАК НомерГТД,

Док.ЗаказПоставщику КАК ЗаказПоставщику

ИЗ

     Документ.ПоступлениеТоваровУслуг.Товары КАК Док

    ГДЕ Док.Ссылка = &ДокументСсылка»

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Марат

Дата регистрации: 28.01.2019
Сообщений: 6

Здравствуйте, помогите пожалуйста с ошибкой. Пытаюсь сформировать : Отчеты — Анализ учета по НДС

{ОбщийМодуль.ДлительныеОперации.Модуль(376)}: Ошибка при выполнении операции над данными:
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с серверная. Документов сотни тысяч, просматривать руками каждый — не вариант.

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

Vladko

Дата регистрации: 27.08.2007
Сообщений: 2643

Марат,посмотрите как на последней 8.3.12 работает. Здесь ясно, что это — глюк платформы. Если ошибка повторится, то напишите на горячую линию 1С сообщение об ошибке.

Марат

Дата регистрации: 28.01.2019
Сообщений: 6

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

Вот ответ от v8 V8@1c.ru

При формировании отчета «Анализ учета по НДС» выдается сообщение об ошибке «Обнаружена ошибка: деление на ноль» если в информационной базе присутствуют документы следующих видов: -Поступление на расчетный счет, -Списание с расчетного счета, -Операция по платежной карте -Поступление наличных со значением кратности взаиморасчетов равной нулю.

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

Марат

Дата регистрации: 28.01.2019
Сообщений: 6

Ошибку исправил. Сделал универсальный отчет, установил на все документы условие: Кратность = 0.
Поправил все документы — Внимание, учитываются даже НЕ проведенные документы.

Vladko

Дата регистрации: 27.08.2007
Сообщений: 2643

Марат,в универсальном отчете можно тоже добавить в отбор условие на проведённость документа

Марат

Дата регистрации: 28.01.2019
Сообщений: 6

Vladko, Спасибо, буду знать. Дальше копать в отчете не стал, проблема нашлась и решилась.

EvJ2019

Дата регистрации: 13.03.2019
Сообщений: 1

Марат пишет:

Цитата

              Ошибку исправил. Сделал универсальный отчет, установил на все документы условие: Кратность = 0. Поправил все документы — Внимание, учитываются даже НЕ проведенные документы.

Добрый день. А какие документы вы поправляли, скажите, пожалуйста?
Такая же ошибка. Но в документах Поступление на расчетный счет, Списание с расчетного счета, Операция по платежной карте, Поступление наличных нет реквизита Кратность взаиморасчетов.

Valentin46

Дата регистрации: 10.02.2011
Сообщений: 1041

Марат пишет:

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

А это как понимать, нельзя ли пояснить?

Показывать по
10
20
40
сообщений

12. Ошибки при выполнении программы. Опции компилятора

Умея пользоваться массивами, условными операторами и операторами цикла, вы можете писать довольно серьезные программы. При выполнении этих программ неизбежно будут возникать критические ошибки, приводящие к аварийному завершению программы. Такие ошибки по английски называются Run-time errors — ошибки времени выполнения. Рассмотрим пока только наиболее часто встречающиеся арифметические ошибки:

Division by zero — код ошибки 200;

Arithmetic overflow — код ошибки 215;

Range check error — код ошибки 201;

Floating point overflow — код ошибки 205;

Invalid floating point operation — код ошибки 207.

Ошибка Division by zero — деление на ноль — возникает при выполнении операций DIV, MOD и /, когда делитель равен нулю.

Ошибка Arithmetic overflow — целочисленное переполнение — возникает при выполнении арифметической операции над целыми числами, когда результат операции выходит за границы соответствующего типа. Такая ошибка произойдет, например, при выполнении программы

Math ERROR — Why can’t you divide by Zero?

VAR a,b : Word; c : Integer; BEGIN a:=100; b:=200; c:=a-b; END.

Ошибка произошла, когда вычислилось значение выражения a-b, равное -100. Мы знаем, что при выполнении операции над операндами типа Word результат будет иметь тип Word, а -100 не является допустимым значением этого типа. То обстоятельство, что это значение мы собирались присвоить переменной типа Integer, не имеет значения, т.к. ошибка произошла до присваивания. Интересно, что, если описать a и b как Byte, то ошибки не будет (см. таблицу 2 в главе 5).

Ошибка Range check error — ошибка проверки диапазона — происходит в двух случаях. Во-первых, при попытке присвоить целочисленной переменной недопустимое значение, и, во-вторых, при использовании недопустимого индексного выражения для элемента любого массива. Проиллюстрируем оба эти случая на простых примерах.

VAR a,b,c : Word; BEGIN a:=$FFFF; b:=1; c:=a+b; END.

Мы попытались присвоить переменной типа Word значение 65536, которое не является допустимым для этого типа.

VAR x : ARRAY[2..8] OF Real; i : Byte;

BEGIN FOR i:=8 DOWNTO 1 DO x[i]:=Sqrt(i); END.

Ошибка произошла при обращении к первому элементу массива, который не существует. Фактически этот второй случай полностью аналогичен первому — мы попытались «присвоить» индексу массива, тип которого-2..8, значение 1.

Ошибка Floating point overflow — вещественное переполнение — возникает при выполнении операции над вещественными числами, когда результат операции слишком велик, или при попытке присвоить вещественной переменной слишком большое значение. Когда речь идет о вещественных числах, термин «слишком большое» следует понимать как большое по абсолютной величине — знак числа не имеет значения. Приведем пример программы, содержащей такую ошибку.

VAR r : Real; BEGIN r:=-1E20; r:=Sqr(r); END.

При возведении в квадрат величины r мы получим слишком большое для типа Real число 1E40.

sql division by zero error

Ошибка Invalid floating point operation возникает в трех случаях:

1) при вычислении корня из отрицательного числа;

2) при вычислении логарифма неположительного числа;

3) при вычислении функций Trunc и Round от слишком большого (по абсолютной величине) вещественного числа. Эта ошибка довольно очевидна, и мы не станем ее иллюстрировать.

Как же должен поступать программист, когда при выполнении его программы возникают ошибки? Прежде всего нужно локализовать ошибку, то есть найти оператор, в котором она произошла. В этом вам может помочь среда Turbo Pascal, если в ней правильно установлены опции компилятора.

Опции компилятора позволяют изменять режим компиляции и задаются в подменю Compiler меню Options среды Turbo Pascal. Пока нас будут интересовать лишь пять опций: Range checking, Stack cheking, I/O checking, Overflow checking, Debug information. Если они включены, то настройка среды благоприятна для отладки вашей программы. Если они выключены, то их обязательно следует включить, а еще лучше задать их непосредственно в тексте своей программы. Опции записываются в программе в виде:

Каждой опции соответствует своя буква (эти буквы выделены в подменю Compiler цветом), символ «+» означает включить, а символ «-» — выключить. В программе можно задать одну опцию, например, или несколько опций — . Некоторые опции можно записывать только в самом начале программы, другие могут размещаться в любом ее месте.

Опция Range checking (R) отвечает за контроль ошибок Range check error, Overflow checking (C) — за контроль ошибок Ariphmetic overflow, I/O cheking (I) — за контроль ошибок ввода-вывода. Смысл опции Stack cheking (S) будет объяснен несколько позже, а опция Debug information (D) включает в код программы отладочную информацию, что позволяет среде Turbo Pascal при аварийном завершении программы показать курсором оператор, в котором произошла ошибка. Позаботьтесь, чтобы при отладке программы перед первым ее оператором была строка — это поможет вам найти и устранить все ошибки. Некоторые неопытные программисты выключают эти опции, тогда программа не прерывается при некоторых ошибках, а продолжает выполняться, на этом основании делается вывод, что программа верна. Это самообман — программа выполняется, но выполняется неправильно и никак не сообщает об ошибках.

Источник: studfile.net

Ошибка формирования стандартного отчета

1c8 ошибка формирования отчета, помогите разобраться
Пожалуйста помогите разобраться. Вижду что проблема с сиквелом но не знаю в какую сторону копать -.

Ошибка формирования отчета в СКД: ошибка при попытке вычисления значения агрегатной функции
Решая свою задачку, нарыла формулу, в которой вылазит ошибка. И не могу понять.. Вот формула.

Ошибка формирования отчета: поле не найдено.
Всем доброе утро! Столкнулась с ошибкой формирования отчёта — Поле не найдено «Поле1». Самое.

Разница структуры и имён полей стандартного отчёта и сформированного пользователем.
Всем добрый день!:) Мистика! Сделала клиенту небольшие доработки — добавила реквизит и сделала.

Регистрация: 03.12.2019
Сообщений: 52

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

1. Убери вообще из отбора периодичность итогов;
2. В другом периоде не совпадающим с этим тоже ошибка вылазит?
3. Попробуй убрать Показатели.

Если не поможет, то можно через конфу в режиме отладки посмотреть какие данные передаются.

Конфа типовая? Доработки были?

Регистрация: 06.10.2015
Сообщений: 81

Aleksei2020, Переодичность итогов добавляется сама после ошибки, если делаю отчет по другому пользователю, и нет ошибки то она не появляется, период вообще мне не нужен в отборе, у меня период стоит в самом отчете. Также добавляются автоматически «дополнительный поля» (скрин

). Конфа типовая, доработки были, но этих отчетов не касались. Смущает именно то, что только по некоторым пользователям отчет не работает.

Регистрация: 06.10.2015
Сообщений: 81
P.s. Еще смущает меня, что это, судя по всему, происходит при выводе отчета

Ошибка при вызове метода контекста (Вывести)

, а не вычислениях. Вроде как при выводе он считает только ширину столбцов, но там посмотрел, деление на 0 не получается)

Эксперт 1С

841 / 604 / 211
Регистрация: 24.07.2013
Сообщений: 2,101

Ошибка возникает при выполнении запроса для получения нужных отчету данных.
Проанализируйте текст запроса, и где используется операция деления.
Возможно, для этих пользователей нет каких данных (или они нулевые).

Регистрация: 03.12.2019
Сообщений: 52
Еще смущает меня, что это, судя по всему, происходит при выводе отчета

Для того, чтобы точно понять где это происходит и почему, запусти конфигуратор и в режиме отладки с помощью точек останова и анализа передаваемых данных посмотри когда вылетает ошибка. Посмотри как заполнился Табличный документ.

Источник: www.cyberforum.ru

Валовая прибыль по оплате (для УТ 10.3)

Отчет «Валовая прибыль по оплате по менеджерам» (для УТ 10.3) с группировками по менеджерам, видам оплаты, контрагентам, документам отгрузки и оплаты. Отчет позволяет оценить рентабельность работы каждого менеджера, каждой отгрузки.

Отчет «Валовая прибыль по оплате» (для УТ 10.3)

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

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

Можно увидеть отгрузки, по которым не поступила еще полная оплата.

Структура отчета

Порядок полей в отчете следующий:

  1. Менеджер
  2. Вид оплаты
  3. Контрагент
  4. Реализация товаров и услуг
  5. Платежное поручение входящее
  6. Номенклатура

Особенности отчета «Валовая прибыль по оплате»

1. Код отчета открыт, отчет реализован на СКД по готовому шаблону (с удобными кнопками настроек).

2. Период отчета нужно заполнять обязательно.

3. Отчет работает на типовой конфигурации УТ 10.3.32. Также тестировался на некоторых старых релизах УТ 10.3. Так как используются только регистры, то доработки УТ 10.3 как правило не рушат этот отчет — он продолжает работать даже на нетиповых конфигурациях и даже на старых релизах.

По сравнению с отчетами-аналогами, данная разработка имеет очень дружественный интерфейс. Без дополнительных настроек сразу можно видеть информацию об эффективности работы менеджеров. Содержится много необходимых группировок. Результаты деятельности сразу видны вплоть до документа.

При анализе работы менеджеров отчет принесет пользу, позволит сделать выводы о результатах работы менеджеров, рассчитать премию сотрудников. Этот отчет станет удобным ежедневным инструментом для руководителя торговой компании.

Источник: open-budget.ru

Почему появляется ошибка Divide by zero error encountered?

В чем может быть ошибка и почему несмотря на ошибку код дальше все равно выполнился?

  • Вопрос задан более двух лет назад
  • 612 просмотров

Комментировать

Решения вопроса 0

Ответы на вопрос 1

tsklab

Здесь отвечаю на вопросы.

Не будет «всё равно выполняться»:

SET ARITHABORT ON SET ANSI WARNINGS OFF

Или не будет появляться ошибка:

Ответ написан более двух лет назад

Источник: qna.habr.com

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

Ошибка при выполнении операции над данными: Microsoft SQL Server Native Client 10.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.

Описание ошибки:
Случилось, что в один момент отчет, который несколько лет работал без ошибок, при очередном формировании выдал ошибку: : Ошибка при вызове метода контекста (Выполнить) мРезЗапроса = ОбъектЗапрос.Выполнить(); по причине: Ошибка выполнения запроса по причине: Ошибка при выполнении операции над данными: Microsoft SQL Server Native Client 10.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric. HRESULT=80004005, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1

1c 8 Ошибка выполнения запроса по причине: Ошибка при выполнении операции над данными:

1C 8 Ошибка при выполнении операции над данными: Microsoft SQL Server Native Client 10.0: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric. HRESULT=80004005, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1

Исчерпывающее описание ошибки дало понять, что проблема скрывается в теле запроса. А формулировка «ошибка арифметического переполнения при преобразовании numeric к типу данных numeric» подсказывала, что проблема с числовыми данными, собираемых запросом. Внимательно присмотревшись к тексту запроса а так же благодаря заметке на сайте helpf.pro было выдвинуто предположение, что числа, получаемые запросом в результате арифметической операции, и приводимые с помощью функции языка запросов к числу с пятью знаками до запятой, стали длинее, чем указанная длина.

Ошибка выполнения запроса в 1С 8.3 8.2 Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric

Увеличение длины знаков до запятой решило проблему.

Источник: www.azhur-c.ru

Содержание

  1. Divide by zero error encountered. 1С УТ
  2. Divide ByZero Exception Класс
  3. Определение
  4. Примеры
  5. Комментарии
  6. Конструкторы
  7. Свойства
  8. Методы
  9. События
  10. ЗиК SQL Divide by zero

Divide by zero error encountered. 1С УТ

Доброго времени суток, уважаемые Мастера.
Проблема немного не понятная. В УТ 10.3.12.3, при проведении документа «Поступление товаров и услуг» возникает ошибка:
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
<ОбщийМодуль.ОбщегоНазначения(4191)>: Ошибка при вызове метода контекста (Выполнить)

по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 10.0: Divide by zero error encountered.
HRESULT=80040E14, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1

Знаю, что программа делит на «0», но вот где . Ошибка ссылается на следующую функцию.

Функция СформироватьЗапросПоТабличнойЧасти(ДокументОбъект, ИмяТабличнойЧасти, СтруктураПолей,
СтруктураСложныхПолей = Неопределено) Экспорт

Для Каждого Реквизит Из СтруктураПолей Цикл

ТекстЗапроса = ТекстЗапроса + «,
|Док.» + Реквизит.Значение +
» КАК » + СокрЛП(Реквизит.Ключ);

Запрос = Новый Запрос;

Если ТипЗнч(СтруктураСложныхПолей) = Тип(«Структура») Тогда // Добавим к запросу конструкции.

Для Каждого Элемент Из СтруктураСложныхПолей Цикл

ТекстЗапроса = ТекстЗапроса + «,
| » + Элемент.Значение +
» КАК » + СокрЛП(Элемент.Ключ);

Если СтруктураСложныхПолей.Свойство(«Проект») Тогда

Запрос.УстановитьПараметр(«ДатаДок»,ДокументОбъект.Дата);
КонецЕсли;
КонецЕсли;

Запрос.Текст = «ВЫБРАТЬ
| Док.НомерСтроки » + ТекстЗапроса + »
| ИЗ
| Документ.» + ДокументМетаданные.Имя + «.»+ СокрЛП(ИмяТабличнойЧасти) +
» КАК Док»+ТекстСоединение+»
| ГДЕ Док.Ссылка = &ДокументСсылка»;

// Установим параметры запроса.
Запрос.УстановитьПараметр(«ДокументСсылка» , ДокументОбъект.Ссылка);

Если ДокументОбъект[ИмяТабличнойЧасти].Количество() = 0 Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, «ГДЕ Док.Ссылка = &ДокументСсылка», «ГДЕ ЛОЖЬ»);
КонецЕсли;

Источник

Divide ByZero Exception Класс

Определение

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Исключение, которое возникает при попытке деления целого значения или значения Decimal на ноль.

Примеры

В следующем примере обрабатывается DivideByZeroException исключение в целочисленном делении.

Комментарии

Попытка деления целого числа или Decimal числа на ноль вызывает DivideByZeroException исключение. Чтобы предотвратить исключение, убедитесь, что знаменатель в операции деления с целым числом или Decimal значениями не равен нулю.

Деление значения с плавающей запятой на ноль не приводит к возникновению исключения; это приводит к положительной бесконечности, отрицательной бесконечности или не числу (NaN), согласно правилам арифметики IEEE 754. Так как в следующем примере используется деление с плавающей запятой, а не целочисленное деление, операция не создает DivideByZeroException исключение.

Дополнительные сведения см. в разделах Single и Double.

Приведенные ниже инструкции msIL создают следующие DivideByZeroExceptionинструкции microsoft:

DivideByZeroException использует COR_E_DIVIDEBYZERO HRESULT, имеющий значение 0x80020012.

Список начальных значений свойств для экземпляра DivideByZeroException, см. в разделе DivideByZeroException конструкторы.

Конструкторы

Инициализирует новый экземпляр класса DivideByZeroException.

Инициализирует новый экземпляр класса DivideByZeroException с сериализованными данными.

Инициализирует новый экземпляр класса DivideByZeroException с указанным сообщением об ошибке.

Инициализирует новый экземпляр класса DivideByZeroException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.

Свойства

Возвращает коллекцию пар «ключ-значение», предоставляющую дополнительные сведения об исключении.

(Унаследовано от Exception) HelpLink

Получает или задает ссылку на файл справки, связанный с этим исключением.

(Унаследовано от Exception) HResult

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.

(Унаследовано от Exception) InnerException

Возвращает экземпляр класса Exception, который вызвал текущее исключение.

(Унаследовано от Exception) Message

Возвращает сообщение, описывающее текущее исключение.

(Унаследовано от Exception) Source

Возвращает или задает имя приложения или объекта, вызывавшего ошибку.

(Унаследовано от Exception) StackTrace

Получает строковое представление непосредственных кадров в стеке вызова.

(Унаследовано от Exception) TargetSite

Возвращает метод, создавший текущее исключение.

(Унаследовано от Exception)

Методы

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object) GetBaseException()

При переопределении в производном классе возвращает исключение Exception, которое является первопричиной одного или нескольких последующих исключений.

(Унаследовано от Exception) GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object) GetObjectData(SerializationInfo, StreamingContext)

При переопределении в производном классе задает объект SerializationInfo со сведениями об исключении.

(Унаследовано от Exception) GetType()

Возвращает тип среды выполнения текущего экземпляра.

(Унаследовано от Exception) MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object) ToString()

Создает и возвращает строковое представление текущего исключения.

(Унаследовано от Exception)

События

Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.

Источник

ЗиК SQL Divide by zero

Есть конфигурация ЗиК непосредственно правкой конфы занимается другой человек, я только админю SQL сервер. После внесения очередных изменений в конфу при закрытии месяца SQL сервер матерится: «Microsoft OLE DB Provider for SQL Server: Divide by zero error encountered.», при этом если база лежит в dbf месяц закрывается без проблем! Разработчик конфы все валит на меня, я в свою очередь уверен что со стороны сервера все ок! Считаю что разработчик заранее не предусмотрел деление на 0 что-то типо

«ВЫБОР КОГДА ЕСТЬNULL(Таблица.Количество,0) = 0 ТОГДА 0
ИНАЧЕ Таблица.Сумма/Таблица.Количество
КОНЕЦ КАК Цена»

Помогите разрешить спор!
Как доказать главбуху что проблема вызвана именно ошибкой в конфигурации?
Есть ли внутри 1с платформы проверка арифметических операций, может ее там нет, поэтому dbf вариант работает без проблем?

К сожалению эта ошибка происходит именно на сервере, поэтому сделать проверку в 1С не предоставляеться возможным. Посмотрите на каком запросе валиться 1с и что включаеться в запрос, возможно ошибка именно там. Что говорит профайлер?

Источник

Ошибка при проведении

Автор Poltev86, 10 ноя 2014, 12:10

0 Пользователей и 1 гость просматривают эту тему.

1С:Предприятие 8.2 (8.2.18.61) Управление производственным предприятием, редакция 1.3 (1.3.51.3) Всем добрый день! Подскажите пожалуйста.как с этим бороться?!

Ошибка при создании Отчет производства за смену:  Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ОбработкаПроведения’: {ОбщийМодуль.УправлениеПроизводствомДвиженияПоРегистрам.Модуль(3672)}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса: Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 10.0: Обнаружена ошибка: деление на ноль.
HRESULT=80004005, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1


Посмотрите где там в запросе операции деления и поставьте нужные проверки.



В запросе операции деления не где не вижу(( Документ с самого начала провелся..и еще несколько раз его редактировали..а сейчас вот такая с ним беда!


Распределение материалов производится вручную или автоматически? Т.е. закладка Распределение материалов как заполняется: скрыта или сами заполняете и корректируете?


Распределение происходит автоматически


А что именно корректировалось после последнего удачного проведения?


Количество выпущенной продукции


Проверьте все аналитики на всякий случай.
Я бы попробовал на свежем бэкапе тупо выбрасывать по очереди строки методом исключения.


Спасибо за советы! Разобрался сам! Была ошибка в коде, врятли кому то поможет так как отчет этот переделывал прошлый программист :^454^:


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Ошибка при проведении

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

w1ld32

1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

1

1C 8.x

Ошибка формирования стандартного отчета

04.12.2019, 13:03. Показов 4546. Ответов 10

Метки отчет, продажи (Все метки)


УТ 10.3 Толстый клиент.
Доброго. Помогите разобраться, сломал всю голову. Стандартный отчет «Продажи» отбор по менеджеру не работает с некоторыми менеджерами. Ошибка

1C
1
2
3
4
5
6
7
8
{Отчет.УниверсальныйОтчет.МодульОбъекта(86)}: Ошибка при вызове метода контекста (Вывести)
        ПостроительОтчета.Вывести(ТабличныйДокумент);
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Обнаружена ошибка: деление на ноль.
HRESULT=80004005, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1

При этом при формирование добавляется еще один параметр отбора «Периодичность итогов» со значением «Период», при выборе другого менеджера отчет формируется без проблем. Куда рыть?
Скриншот

Ошибка формирования стандартного отчета

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

14 / 13 / 1

Регистрация: 03.12.2019

Сообщений: 52

04.12.2019, 15:37

2

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

1. Убери вообще из отбора периодичность итогов;
2. В другом периоде не совпадающим с этим тоже ошибка вылазит?
3. Попробуй убрать Показатели.

Если не поможет, то можно через конфу в режиме отладки посмотреть какие данные передаются.

Конфа типовая? Доработки были?

1

1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

04.12.2019, 16:39

 [ТС]

3

Aleksei2020, Переодичность итогов добавляется сама после ошибки, если делаю отчет по другому пользователю, и нет ошибки то она не появляется, период вообще мне не нужен в отборе, у меня период стоит в самом отчете. Также добавляются автоматически «дополнительный поля» (скрин

Ошибка формирования стандартного отчета

). Конфа типовая, доработки были, но этих отчетов не касались. Смущает именно то, что только по некоторым пользователям отчет не работает.

0

w1ld32

1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

04.12.2019, 16:45

 [ТС]

4

P.s. Еще смущает меня, что это, судя по всему, происходит при выводе отчета

1C
1
Ошибка при вызове метода контекста (Вывести)

, а не вычислениях. Вроде как при выводе он считает только ширину столбцов, но там посмотрел, деление на 0 не получается)

0

Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

04.12.2019, 21:58

5

Ошибка возникает при выполнении запроса для получения нужных отчету данных.
Проанализируйте текст запроса, и где используется операция деления.
Возможно, для этих пользователей нет каких данных (или они нулевые).

1

14 / 13 / 1

Регистрация: 03.12.2019

Сообщений: 52

05.12.2019, 08:34

6

Цитата
Сообщение от w1ld32
Посмотреть сообщение

Еще смущает меня, что это, судя по всему, происходит при выводе отчета

Для того, чтобы точно понять где это происходит и почему, запусти конфигуратор и в режиме отладки с помощью точек останова и анализа передаваемых данных посмотри когда вылетает ошибка. Посмотри как заполнился Табличный документ.

1

1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

05.12.2019, 11:00

 [ТС]

7

Aleksei2020, Как и написано в ошибке вылетает на строчке с выводом отчета, до этого все нормально, но методом исключения нашел документ который ломает отчет, это корректировка реализации, есть несколько строк где остаток уходит в 0 но только одна из них ломает отчет. С чем это связано не могу понять.

Ошибка формирования стандартного отчета

При чем если убрать отражать в товарном учете то все работает хорошо.

0

14 / 13 / 1

Регистрация: 03.12.2019

Сообщений: 52

05.12.2019, 12:06

8

При убранных Показателях из отчета ошибка остается?

0

1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

05.12.2019, 13:30

 [ТС]

9

Aleksei2020, Да ошибка остается, стоит только в документе Корректировки, в этой строке кол-во изменить на другое число все снова работает.

0

Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

05.12.2019, 20:04

10

w1ld32, Выполняемый запрос не смотрел?

0

1 / 1 / 0

Регистрация: 06.10.2015

Сообщений: 81

06.12.2019, 09:36

 [ТС]

11

Tklwegsd, нет, прошел по отладке от нажатия кнопки до ошибки, запроса не нашел, установил точку останова на ошибках, результат

Ошибка формирования стандартного отчета

0

Понравилась статья? Поделить с друзьями:
  • Ошибка при выполнении обновления сервера
  • Ошибка при выполнении нападающего удара является касание рукой сетки
  • Ошибка при выполнении нападающего удара является касание мячом сетки
  • Ошибка при выполнении нападающего удара в волейболе является
  • Ошибка при выполнении над данными ошибка арифметического переполнения