Всем привет. Столкнулся со странным поведением запроса в СКД при группировки данных, хотя в консоли запросов все отрабатывает как нужно.
Вот для начала первоначальные данные, которые я тяну из временной таблицы, которая тоже получена на основе виртуальной таблицы регистра.
Результаты в СКД и Консоли соответственно рис 1.png и 1_1.png.Здесь все верно.
Хочу просуммировать сколько дней не было остатков по номенклатуре запросом
Результаты в СКД и Консоли соответственно рис 3.png и 3_3.png. Консоль все правильно расчитывает, а СКД вообще как будто не видит ни каких данных.
В чем может быть проблема и как это победить? Кто-нибудь с таким сталкивался?
Вот для начала первоначальные данные, которые я тяну из временной таблицы, которая тоже получена на основе виртуальной таблицы регистра.
ВЫБРАТЬ
Таб.Номенклатура,
Таб.ДатаКалендаря,
Таб.КоличествоКонечныйОстаток
ИЗ
ТаблицаОстатковПоДням КАК Таб
Результаты в СКД и Консоли соответственно рис 1.png и 1_1.png.Здесь все верно.
Хочу просуммировать сколько дней не было остатков по номенклатуре запросом
ВЫБРАТЬ
Таб.Номенклатура,
СУММА(ВЫБОР
КОГДА Таб.КоличествоКонечныйОстаток <= 0
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоДнейОтсутсвия
ИЗ
ТаблицаОстатковПоДням КАК Таб
СГРУППИРОВАТЬ ПО
Таб.Номенклатура
;
ПоказатьРезультаты в СКД и Консоли соответственно рис 3.png и 3_3.png. Консоль все правильно расчитывает, а СКД вообще как будто не видит ни каких данных.
В чем может быть проблема и как это победить? Кто-нибудь с таким сталкивался?
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
(1) Хорошо бы посмотреть полный запрос. Что видно из представленных снимков: в конечном запросе не используется поле "ДатаКалендаря". Для консоли запросов это не имеет значения, но для СКД это важно. Раз поле не используется, СКД вероятнее всего посчитало его ненужным, и посему "выкинуло" из всех запросов пакета, где оно использовалось. Такое решение СКД могло исказить результаты запроса, из-за чего и отчет получился пустой.
Самое простое решение - не отказываться от использования даты. Например, для подсчета количества дней отсутствия добавить новое вычисляемое поле:
Самое простое решение - не отказываться от использования даты. Например, для подсчета количества дней отсутствия добавить новое вычисляемое поле:
// Выражение:
ВЫБОР КОГДА КоличествоКонечныйОстаток <= 0
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ
// Ресурс:
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ
ВЫБОР КОГДА КоличествоКонечныйОстаток <= 0
ТОГДА ДатаКалендаря
КОНЕЦ)
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Хорошо бы посмотреть полный запрос. Что видно из представленных снимков: в конечном запросе не используется поле "ДатаКалендаря". Для консоли запросов это не имеет значения, но для СКД это важно. Раз поле не используется, СКД вероятнее всего посчитало его ненужным, и посему "выкинуло" из всех запросов пакета, где оно использовалось. Такое решение СКД могло исказить результаты запроса, из-за чего и отчет получился пустой.
Самое простое решение - не отказываться от использования даты. Например, для подсчета количества дней отсутствия добавить новое вычисляемое поле:
Самое простое решение - не отказываться от использования даты. Например, для подсчета количества дней отсутствия добавить новое вычисляемое поле:
// Выражение:
ВЫБОР КОГДА КоличествоКонечныйОстаток <= 0
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ
// Ресурс:
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ
ВЫБОР КОГДА КоличествоКонечныйОстаток <= 0
ТОГДА ДатаКалендаря
КОНЕЦ)
Показать
Сталкивалась с таким поведение: в консоли запросов все работает - в компоновщике этот же самый запрос работает по-другому.
Насколько я поняла, компоновщик делает оптимизацию запроса - на свое усмотрение, и выполняемый запрос становится другим!!!
Вам нужно разделить на 2 запроса вот этот ваш запрос:
Сначала без суммы - просто сформируейте поле
а уже в следующем запросе ВЫБРАТЬ примените СУММА() к этому полю!
Насколько я поняла, компоновщик делает оптимизацию запроса - на свое усмотрение, и выполняемый запрос становится другим!!!
Вам нужно разделить на 2 запроса вот этот ваш запрос:
ВЫБРАТЬ
Таб.Номенклатура,
СУММА(ВЫБОР
КОГДА Таб.КоличествоКонечныйОстаток <= 0
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоДнейОтсутсвия
ИЗ
ТаблицаОстатковПоДням КАК Таб
СГРУППИРОВАТЬ ПО
Таб.Номенклатура
;
ПоказатьСначала без суммы - просто сформируейте поле
ВЫБОР
КОГДА Таб.КоличествоКонечныйОстаток <= 0
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК КоличествоДнейОтсутсвия,
а уже в следующем запросе ВЫБРАТЬ примените СУММА() к этому полю!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот