1с розница ошибка деление на ноль

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

Запрос = Новый Запрос(»

    |ВЫБРАТЬ

    |    ВременнаяТаблицаТовары.Индекс                         КАК Индекс,

    |    ВременнаяТаблицаТовары.Номенклатура                   КАК Номенклатура,

    |    ВременнаяТаблицаТовары.Характеристика                 КАК Характеристика,

    |    ВременнаяТаблицаТовары.ВидЦены                        КАК ВидЦены,

    |    ВременнаяТаблицаТовары.Цена                           КАК Цена,

    |    ВременнаяТаблицаТовары.Упаковка                       КАК Упаковка,

    |    ВременнаяТаблицаТовары.ЦенаИзмененаВручную            КАК ЦенаИзмененаВручную

    |ПОМЕСТИТЬ

    |    ВременнаяТаблицаТовары

    |ИЗ

    |    &Товары КАК ВременнаяТаблицаТовары

    |ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, ВидЦены

    |;

    |ВЫБРАТЬ

    |    Товары.Индекс КАК Индекс,

    |    Товары.Номенклатура КАК Номенклатура,

    |    Товары.Характеристика КАК Характеристика,

    |    Товары.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,

    |    Товары.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,

    |    ВЫБОР

    |        КОГДА Товары.Номенклатура.ВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.ОбщиеДляВидаНоменклатуры)

    |            ТОГДА ИСТИНА

    |        КОГДА Товары.Номенклатура.ВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.ИндивидуальныеДляНоменклатуры)

    |            ТОГДА ИСТИНА

    |        ИНАЧЕ ЛОЖЬ

    |    КОНЕЦ КАК ХарактеристикиИспользуются,

    |    Товары.ВидЦены КАК ВидЦены,

    |    Товары.Цена КАК Цена,

    |    Товары.ЦенаИзмененаВручную КАК ЦенаИзмененаВручную,

    |    ВЫБОР

    |        КОГДА ЦеныНоменклатуры.Упаковка = Товары.Упаковка

    |            ТОГДА ЦеныНоменклатуры.Цена

    |        ИНАЧЕ ЦеныНоменклатуры.Цена / ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Коэффициент, 1) * ЕСТЬNULL(Товары.Упаковка.Коэффициент, 1)

    |    КОНЕЦ КАК ДействующаяЦена,

    |    ВЫРАЗИТЬ(ВЫБОР

    |            КОГДА ЦеныНоменклатуры.Цена <> 0

    |                ТОГДА 100 * (Товары.Цена — ВЫБОР

    |                        КОГДА ЕСТЬNULL(ЦеныНоменклатуры.Упаковка, &ПустаяУпаковка) = Товары.Упаковка

    |                            ТОГДА ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)

    |                        ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) / ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Коэффициент, 1) * ЕСТЬNULL(Товары.Упаковка.Коэффициент, 1)

    |                    КОНЕЦ) / ВЫБОР

    |                        КОГДА ЕСТЬNULL(ЦеныНоменклатуры.Упаковка, &ПустаяУпаковка) = Товары.Упаковка

    |                            ТОГДА ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)

    |                        ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) / ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Коэффициент, 1) * ЕСТЬNULL(Товары.Упаковка.Коэффициент, 1)

    |                    КОНЕЦ

    |            ИНАЧЕ 0

    |        КОНЕЦ КАК ЧИСЛО(19, 2)) КАК Процент,

    |    Товары.Упаковка КАК Упаковка

    |ИЗ

    |    ВременнаяТаблицаТовары КАК Товары

    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

    |        ПО (ЦеныНоменклатуры.ВидЦены = Товары.ВидЦены)

    |            И (ЦеныНоменклатуры.Характеристика = Товары.Характеристика)

    |            И (ЦеныНоменклатуры.Номенклатура = Товары.Номенклатура)

    |            И (ЦеныНоменклатуры.Период В

    |                (ВЫБРАТЬ

    |                    МАКСИМУМ(Цены.Период)

    |                ИЗ

    |                    РегистрСведений.ЦеныНоменклатуры КАК Цены

    |                ГДЕ

    |                    Цены.ВидЦены = Товары.ВидЦены

    |                    И Цены.Номенклатура = Товары.Номенклатура

    |                    И Цены.Характеристика = Товары.Характеристика

    |                    И Цены.Период <= &Дата))

    |

    |УПОРЯДОЧИТЬ ПО

    |    Индекс

    |ИТОГИ

    |    МИНИМУМ(ЕдиницаИзмерения)

    |ПО

    |    Номенклатура,

    |    Характеристика

    |»);

   I_learn_1c

20.06.18 — 09:44

Доброе утро,

посоветуйте пожалуйста что можно попробовать.

Розница 2.2, в нее конвертацией из 7.7 загружена Установка цен, пустых строк в ТЧ нет, заполнены цены, единицы измерения.

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

вот ошибка

{Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента.Форма(3665)}: Ошибка при вызове метода контекста (Выполнить)

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

по причине:

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

по причине:

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

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

по причине:

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

по причине:

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

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

Запрос = Новый Запрос(»

    |ВЫБРАТЬ

    |    ВременнаяТаблицаТовары.Индекс                         КАК Индекс,

    |    ВременнаяТаблицаТовары.Номенклатура                   КАК Номенклатура,

    |    ВременнаяТаблицаТовары.Характеристика                 КАК Характеристика,

    |    ВременнаяТаблицаТовары.ВидЦены                        КАК ВидЦены,

    |    ВременнаяТаблицаТовары.Цена                           КАК Цена,

    |    ВременнаяТаблицаТовары.Упаковка                       КАК Упаковка,

    |    ВременнаяТаблицаТовары.ЦенаИзмененаВручную            КАК ЦенаИзмененаВручную

    |ПОМЕСТИТЬ

    |    ВременнаяТаблицаТовары

    |ИЗ

    |    &Товары КАК ВременнаяТаблицаТовары

    |ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, ВидЦены

    |;

    |ВЫБРАТЬ

    |    Товары.Индекс КАК Индекс,

    |    Товары.Номенклатура КАК Номенклатура,

    |    Товары.Характеристика КАК Характеристика,

    |    Товары.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,

    |    Товары.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,

    |    ВЫБОР

    |        КОГДА Товары.Номенклатура.ВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.ОбщиеДляВидаНоменклатуры)

    |            ТОГДА ИСТИНА

    |        КОГДА Товары.Номенклатура.ВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыВеденияДополнительныхДанныхПоНоменклатуре.ИндивидуальныеДляНоменклатуры)

    |            ТОГДА ИСТИНА

    |        ИНАЧЕ ЛОЖЬ

    |    КОНЕЦ КАК ХарактеристикиИспользуются,

    |    Товары.ВидЦены КАК ВидЦены,

    |    Товары.Цена КАК Цена,

    |    Товары.ЦенаИзмененаВручную КАК ЦенаИзмененаВручную,

    |    ВЫБОР

    |        КОГДА ЦеныНоменклатуры.Упаковка = Товары.Упаковка

    |            ТОГДА ЦеныНоменклатуры.Цена

    |        ИНАЧЕ ЦеныНоменклатуры.Цена / ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Коэффициент, 1) * ЕСТЬNULL(Товары.Упаковка.Коэффициент, 1)

    |    КОНЕЦ КАК ДействующаяЦена,

    |    ВЫРАЗИТЬ(ВЫБОР

    |            КОГДА ЦеныНоменклатуры.Цена <> 0

    |                ТОГДА 100 * (Товары.Цена — ВЫБОР

    |                        КОГДА ЕСТЬNULL(ЦеныНоменклатуры.Упаковка, &ПустаяУпаковка) = Товары.Упаковка

    |                            ТОГДА ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)

    |                        ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) / ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Коэффициент, 1) * ЕСТЬNULL(Товары.Упаковка.Коэффициент, 1)

    |                    КОНЕЦ) / ВЫБОР

    |                        КОГДА ЕСТЬNULL(ЦеныНоменклатуры.Упаковка, &ПустаяУпаковка) = Товары.Упаковка

    |                            ТОГДА ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0)

    |                        ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) / ЕСТЬNULL(ЦеныНоменклатуры.Упаковка.Коэффициент, 1) * ЕСТЬNULL(Товары.Упаковка.Коэффициент, 1)

    |                    КОНЕЦ

    |            ИНАЧЕ 0

    |        КОНЕЦ КАК ЧИСЛО(19, 2)) КАК Процент,

    |    Товары.Упаковка КАК Упаковка

    |ИЗ

    |    ВременнаяТаблицаТовары КАК Товары

    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

    |        ПО (ЦеныНоменклатуры.ВидЦены = Товары.ВидЦены)

    |            И (ЦеныНоменклатуры.Характеристика = Товары.Характеристика)

    |            И (ЦеныНоменклатуры.Номенклатура = Товары.Номенклатура)

    |            И (ЦеныНоменклатуры.Период В

    |                (ВЫБРАТЬ

    |                    МАКСИМУМ(Цены.Период)

    |                ИЗ

    |                    РегистрСведений.ЦеныНоменклатуры КАК Цены

    |                ГДЕ

    |                    Цены.ВидЦены = Товары.ВидЦены

    |                    И Цены.Номенклатура = Товары.Номенклатура

    |                    И Цены.Характеристика = Товары.Характеристика

    |                    И Цены.Период <= &Дата))

    |

    |УПОРЯДОЧИТЬ ПО

    |    Индекс

    |ИТОГИ

    |    МИНИМУМ(ЕдиницаИзмерения)

    |ПО

    |    Номенклатура,

    |    Характеристика

    |»);

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

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

Совсем скоро предстоит начислять зарплату за январь в программах 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%

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

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

Проблема

При формировании документа Расчет и установка себестоимости в Розница 2.2.7.39 летит ошибка, в серверном варианте:

{ОбщийМодуль.ЗапасыСервер.Модуль(437)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Деление на 0

В файловом варианте:

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

Решение

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

СУММА(СебестоимостьПоПоступлениям.СуммаОборот) / СУММА(СебестоимостьПоПоступлениям.Количество) КАК Стоимость

Решение есть, идём в конфигуратор в общий модуль ЗапасыСервер.
Нас интересует Функция СформироватьУзлыКорректировкиСписанияСтоимости
В ней ищем Запрос:

СГРУППИРОВАТЬ ПО
СебестоимостьПоПоступлениям.Магазин,
СебестоимостьПоПоступлениям.Номенклатура,
СебестоимостьПоПоступлениям.Характеристика,
СебестоимостьПоПоступлениям.МагазинОтправитель

Никакой проверки 1Сниками на нулевые значения не написано, поэтому допишем её:

СГРУППИРОВАТЬ ПО
СебестоимостьПоПоступлениям.Магазин,
СебестоимостьПоПоступлениям.Номенклатура,
СебестоимостьПоПоступлениям.Характеристика,
СебестоимостьПоПоступлениям.МагазинОтправитель

ИМЕЮЩИЕ
СУММА(СебестоимостьПоПоступлениям.Количество) <> 0

Все, теперь деления на ноль не будет и себестоимость будет корректно формироваться.

 +3 

   

Распечатать

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

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

Код 1C v 8.х

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

в запросе:

Код 1C v 8.х

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

Позвонил клиент с ошибкой расчета себестоимости в 1с Розница 2.2.7.39

Сама ошибка

Цитата:

{ОбщийМодуль.ЗапасыСервер.Модуль(437)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Деление на 0
по причине:
Ошибка SQL: Деление на 0
по причине:
Деление на 0 значения типа Numeric

Посмотрел в конфигуратор.
В общем модуле ЗапасыСервер в процедуре
СформироватьУзлыКорректировкиСписанияСтоимости используется следующий запрос:

Даже простой взгляд видит, что нет проверки на 0 для СУММА(СебестоимостьПоПоступлениям.Количество) в выражении

Код:

	СУММА(СебестоимостьПоПоступлениям.СуммаОборот) / СУММА(СебестоимостьПоПоступлениям.Количество) КАК Стоимость,

Обходится через расширение.
В расширении изменяем эту строчку на

Код:

ВЫБОР КОГДА СУММА(СебестоимостьПоПоступлениям.Количество)  = 0 ТОГДА 0
ИНАЧЕ СУММА(СебестоимостьПоПоступлениям.Количество) КОНЕЦ КАК Стоимость,

Или изменить (добавить) условие (наверное, это даже правильнее)
Было:

Код:

СГРУППИРОВАТЬ ПО
	СебестоимостьПоПоступлениям.Магазин,
	СебестоимостьПоПоступлениям.Номенклатура,
	СебестоимостьПоПоступлениям.Характеристика,
	СебестоимостьПоПоступлениям.МагазинОтправитель

Стало:

Код:

СГРУППИРОВАТЬ ПО
	СебестоимостьПоПоступлениям.Магазин,
	СебестоимостьПоПоступлениям.Номенклатура,
	СебестоимостьПоПоступлениям.Характеристика,
	СебестоимостьПоПоступлениям.МагазинОтправитель

ИМЕЮЩИЕ
	СУММА(СебестоимостьПоПоступлениям.Количество) <> 0

Само исправление, не снимая конфигурации с поддержки, делается через расширение (во вложении — расширение, в котором для строк с нулевым количество ставится нулевая себестоимость, кто захочет под себя переделать на неучитывание таких строк — решение так же описано в данном топике).
При подключении расширения снимаем «птичку» безопасного режима, перезапускаем 1с.

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

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

    с вот таким текстом:
    «{Отчет.УниверсальныйОтчет.МодульОбъекта(86)}: Ошибка при вызове метода контекста (Вывести)
    ПостроительОтчета.Вывести(ТабличныйДокумент);
    по причине:
    Ошибка выполнения запроса
    по причине:
    Ошибка при выполнении операции над данными:
    Ошибка SQL: Деление на 0
    по причине:
    Ошибка SQL: Деление на 0
    по причине:
    Деление на 0 значения типа Numeric
    «

    Буду очень благодарна, если кто-нибудь сможет оказать помощь :unsure:

    Наверняка нужно добавить проверку, да вот только я не пойму в каком месте о.о»
    Прикреплю кусок кода, если кто-либо сможет глянуть :unsure:


  2. mialord

    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.460
    Симпатии:
    53
    Баллы:
    54

    Проверку нужно добавлять в запросе
    Пример:

    ВЫБОР КОГДА Регистр.Количество = 0 ТОГДА
    0
    ИНАЧЕ
    //тут расчет
    
    КОНЕЦ

    Это не конкретно к Вашему отчету, это принцип исключения ошибки

  3. Спасибо, сейчас попробую.
    Не понятно что вообще эту ошибку вызывает о.о
    Не заполненная строка типа цены, присваивается к нулю, и при делении на нее происходит ошибка, может быть такое?


  4. leemuar

    Offline

    leemuar
    Опытный в 1С

    Регистрация:
    21 окт 2010
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    Вы же сами написали — «берется ноль и на него делится», как думаете, такое может быть? :)

  5. я имела ввиду когда поле не заполнено оно присваивается к нулю, или же нет и где-то в коде указано это присваивание


  6. leemuar

    Offline

    leemuar
    Опытный в 1С

    Регистрация:
    21 окт 2010
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    Да, конечно. В вашем случае это происходит в запросе. Посмотрите текст выполняемого запроса, найдите там операции деления и перепишите их как указал mialord.

  7. :unsure: Сейчас посмотрим

  8. Операций деления больше 15 продублированные по 3 раза :unsure:


  9. x_under

    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    16
    Баллы:
    29

    А сделайте просто отчет «Ведомость по партиям товаров на складах» и посмотрите нет ли в нем строк, где количество нулевое, а сумма — нет.
    возможно там захотели сделать вывод цены, а ситуацию с делением (как я указал выше) не отловили.

  10. Да, действительно в конечном остатке не было указанно количество товара в некоторых строках, а стоимость была.
    Ошибка происходила при расчете Наценки единицы товара.
    Большое спасибо, все получилось *-*


  11. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    Доброго времени суток. У меня точно такая же ошибка при создании отчета валовая прибыль. Перечитал уже этот пост несколько раз и не могу понять куда дописать что бы все заработало.

    Проверку нужно добавлять в запросе
    Пример:

    ВЫБОР КОГДА Регистр.Количество = 0 ТОГДА
    0
    ИНАЧЕ
    //тут расчет

    КОНЕЦ

    Можете написать поподробней куда нужно этот код дописать?
    Буду очень благодарен.


  12. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    надо посмотреть, какое поле в запросе может быть 0 (раз ошибка возникает «деление на 0», тогда смотрите именно то поле, на которое делите). Наугад трудно сказать куда вам проверку в запросе поставить

    З.Ы. пользуйтесь тегами для оформления кода — удобнее для чтения


  13. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    Не подскажете, как можно посмотреть какое поле в запросе может быть 0? Где запрос смотреть? Отчет, валовая прибыль и там в модуле объекта Процедура УстановитьНачальныеНастройки? или я вообще не там ищу? А если там то как правильно все сделать?


  14. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    а в модуле больше никаких процедур нет? по идее должен быть какой-то алгоритм выборки данных


  15. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

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

    извиняюсь… если это тут где то надо вставить проверку не подскажете где


  16. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    для начала, оформляйте код тегом КОД1С — удобнее читать

    вы отладчиком умеете пользоваться?


  17. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1


  18. Tiger86

    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    очень жаль, если кратко, то вот принцип: запускаете в конфигураторе, ищите «проблемное» по вашему мнению место, устанавливаете точку останова (напротив нужной строки слева можно щелкнуть, можно через меню установить), затем запускайте через F5 отладку, выполняете в реиме предприятия нужные действия, когда выполнение код адойдет до той самой строки, вас выбросит в конфигуратор и можно будет передвигаться по коды и смотреть изменения значений переменных (типа онлайн) Попробуйте так выяснить где у вас косячит, может дело то и не в запросе?


  19. tonatiuh

    Offline

    tonatiuh

    Регистрация:
    19 ноя 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1

    почитаю пока как пользоваться отладчиком


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

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • 1с розница ошибка 46h
  • 1с регистрация ошибок конфигурации
  • 1с рарус ошибка 12045
  • 1с рарус облако ошибка 12002

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии