Деление на 0 в отчете Ведомость товаров по складам
В отчете Ведомость товаров по складам возникает ошибка: деление на ноль 0.
Сам отчет проверила, там где есть деление есть проверка на 0:
Больше деления нигде нет, отчет в консоли выполняется без ошибок.
данная ошибка выходит при любых настройках, при любом периоде. Кэш чистили. В отладчике по ошибке не останавливается.
С чем это может быть связано? Или как найти источник проблемы?
Сам отчет проверила, там где есть деление есть проверка на 0:
ВЫБОР
КОГДА &ЕдиницыКоличества = 0
ТОГДА ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток
КОГДА &ЕдиницыКоличества = 1
ТОГДА ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.Номенклатура.КоэффициентЕдиницыДляОтчетов <> 0
ТОГДА ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток / ТоварыНаСкладахОстаткиИОбороты.Номенклатура.КоэффициентЕдиницыДляОтчетов
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ ПоказатьБольше деления нигде нет, отчет в консоли выполняется без ошибок.
данная ошибка выходит при любых настройках, при любом периоде. Кэш чистили. В отладчике по ошибке не останавливается.
С чем это может быть связано? Или как найти источник проблемы?
По теме из базы знаний
- Сравнение остатков, оборотов по регистрам Товары на складах, Товары на складах в организации, Себестоимость. УТ 11.2, 11.4 и КА 2.4
- Ведомость по товарам на складах с разделением расхода на продажу и списание
- Исправление регистра сведений "Распределение запасов" по данным регистра накопления "Товары на складах" после перехода с ред. 2.4 на ред. 2.5 для конфигураций УТ, КА, ЕРП
- Лишние остатки в регистре Распределение запасов
- Автоматическое устранение отрицательных остатков: массовое создание документа «Оприходование излишков товаров» по складам и организации
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6)
В данном случае, проверка на NULL - абсолютно лишняя операция, т.к. соединений быть не должно (99%), а Номенклатура (99%) не может быть NULL,
но если уж (вдруг есть соединение) и добавлять, то вот так (при условии, что реквизит КоэффициентЕдиницыДляОтчетов у ном-ры тип число:
ПС: И в Запросе NULL+5 = NULL
(12) ПС2.
КОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Номенклатура.КоэффициентЕдиницыДляОтчетов, 0) <> 0
В данном случае, проверка на NULL - абсолютно лишняя операция, т.к. соединений быть не должно (99%), а Номенклатура (99%) не может быть NULL,
но если уж (вдруг есть соединение) и добавлять, то вот так (при условии, что реквизит КоэффициентЕдиницыДляОтчетов у ном-ры тип число:
ВЫБОР
КОГДА ТоварыНаСкладахОстаткиИОбороты.Номенклатура Есть NULL
Тогда 0
Иначе
ЕстьNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,0) / ТоварыНаСкладахОстаткиИОбороты.Номенклатура.КоэффициентЕдиницыДляОтчетов
КОНЕЦ
ПС: И в Запросе NULL+5 = NULL
(12) ПС2.
реквизит числового типа = null
Априори, такого не может быть! Реквизит числового типа = числу, но никак не NULL! NULL- Это отдельный тип!
(16)
Вы хоть сами понимаете, что пишите? Реквизиту числового типа можно присвоить только значение числового типа!
Другое дело, что в коде, если вы говорите о коде, платформа автоматическипреобразует патыется преобразовать пустые значения(типа NULL, неоперделено и любые другие не подходящие типы типа ссылки на справочник или документ) к Значению(в случае удачи, например Булево = 54515; //Истина), Пустому значению(Число = Справочники.Номенклатура.ПустаяСсылка(); // 0).
Т.е.
Реквизит = NULL абсолютно то же самое, что и Реквизит = неопределено, аналогично и Реквизит = ПустоеЗначениеТакогоЖеТипа.
Возвращаясь к вашей фразе, повторюсь, Реквизиту числового типаможно НЕ ВОЗМОЖНО присвоить Null, его можно только "обнулить"(привести к пустому значению данного типа) этой операцией
Вы хоть сами понимаете, что пишите? Реквизиту числового типа можно присвоить только значение числового типа!
Другое дело, что в коде, если вы говорите о коде, платформа автоматически
Т.е.
Реквизит = NULL абсолютно то же самое, что и Реквизит = неопределено, аналогично и Реквизит = ПустоеЗначениеТакогоЖеТипа.
Возвращаясь к вашей фразе, повторюсь, Реквизиту числового типа
Прикрепленные файлы:
(18)
как бы это не называлось...
Хорошо, если Вы так дотошны до буквы, тогда при присваивании Null, он автоматически приведется к 0.
Или будите спорить, что операция Реквизит = Null это не факт присваивания?
А вот с этим я никогда и не спорил. Домыслы?
Реквизиту числового типа можно НЕ ВОЗМОЖНО присвоить Null, его можно только "обнулить"(привести к пустому значению данного типа) этой операцией
как бы это не называлось...
Хорошо, если Вы так дотошны до буквы, тогда при присваивании Null, он автоматически приведется к 0.
Или будите спорить, что операция Реквизит = Null это не факт присваивания?
Реквизит = NULL абсолютно то же самое, что и Реквизит = неопределено, аналогично и Реквизит = ПустоеЗначениеТакогоЖеТипа.
А вот с этим я никогда и не спорил. Домыслы?
(19)
пример)
Просто это принципиально разные вещи.
Согласитесь, если Вам скажут "Я реквизиту присвоил NULL, обработай в запросе только строки с NULL отдельно.."
Звучит очень не однозначно..
А вот с этим я никогда и не спорил. Домыслы?
пример)
Хорошо, если Вы так дотошны до буквы
Просто это принципиально разные вещи.
Согласитесь, если Вам скажут "Я реквизиту присвоил NULL, обработай в запросе только строки с NULL отдельно.."
Звучит очень не однозначно..
(20)
Вот мое сообщение, которое было воспринято неоднозначно:
Присвоить Null это операция Реквизит = Null. И он сразу же приводится к 0. Ничего более. Это совсем не означает, что там будет храниться Null.
Согласитесь, если Вам скажут "Я реквизиту присвоил NULL, обработай в запросе только строки с NULL отдельно.."
Звучит очень не однозначно..
Звучит очень не однозначно..
Вот мое сообщение, которое было воспринято неоднозначно:
"Априори, такого не может быть! Реквизит числового типа = числу, но никак не NULL! NULL- Это отдельный тип!"
Реквизиту числового типа можно присвоить Null. Другое дело, что Null в данном случае приведется к 0.
Реквизиту числового типа можно присвоить Null. Другое дело, что Null в данном случае приведется к 0.
Присвоить Null это операция Реквизит = Null. И он сразу же приводится к 0. Ничего более. Это совсем не означает, что там будет храниться Null.
(23) там NULL - это определенная константа. Но, обычно, было не NULL, а nil - системная константа, равная нулю.
На самом деле, в контексте указателей применим как NULL, так и 0, ввиду того что первый — не более чем макрос-обёртка для второго:
#define NULL ((void *)0)
Однако не следует использовать NULL в качестве замены 0 в тех местах, где ноль — алгебраическое значение:
int c = b*a;
if (c != NULL) {
printf("Neither b nor a is equal to 0\n");
}
#define NULL ((void *)0)
Однако не следует использовать NULL в качестве замены 0 в тех местах, где ноль — алгебраическое значение:
int c = b*a;
if (c != NULL) {
printf("Neither b nor a is equal to 0\n");
}
Сдается мне, ошибка не в этом фрагменте (146%), а в каком-нибудь поле форматирования или в доп. полях или еще где.. раз уж в консоли все гуд.
Свой отчёт посмотрите в консоле отчётов и там же увидите какой отчёт выполняется и поймёте где идёт ошибка!
(12) не null + 5, а реквизит числового типа = null.
Есть реквизит числового типа Ревизит1.
То такой код даст 5:
Правда не уверен, что это работает в запросе. Там другая механика.
С запросом скорее всего не сработает. Тут согласен.
Есть реквизит числового типа Ревизит1.
То такой код даст 5:
Реквизит1 = Null;
Сообщить(Реквизит1 + 5);
Правда не уверен, что это работает в запросе. Там другая механика.
С запросом скорее всего не сработает. Тут согласен.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
