Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Разница вывода данных в отчет СКД и консоль запросов

Разница вывода данных в отчет СКД и консоль запросов
Я
   Веселый Джузеппе
 
17.03.21 - 20:06
Добрый вечер!
Никак не пойму в чем проблема
Есть запрос
...
ВЫБРАТЬ
    СУММА(врНаВыход.иКоличествоСтраховокВПервомПериоде) КАК иКоличествоСтраховокВПервомПериоде,
    СУММА(врНаВыход.иКоличествоСтраховокВоВторомПериоде) КАК иКоличествоСтраховокВоВторомПериоде,
    СУММА(ВЫБОР
            КОГДА врНаВыход.иКоличествоСтраховокВПервомПериоде <> 0
                    И врНаВыход.иКоличествоСтраховокВоВторомПериоде <> 0
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ) КАК иПовторноКупилиСтраховку
ИЗ
    врНаВыход КАК врНаВыход

В СКД выводит https://clip2net.com/s/4bllfjY
В консоли запросов этот же запрос с теми же параметрами - https://clip2net.com/s/4bllgNW

Почему в СКД считает не так же как в консоли? 4 часа просидел, помираю
Есть идеи?
   ДедМорроз
 
1 - 17.03.21 - 21:55
А в врНаВыход точно одно и тоже?
   ДедМорроз
 
2 - 17.03.21 - 22:01
Попробуй ради интереса поменять 0 и 1 местами и посмотреть,что получится.
   Sasha_H
 
3 - 17.03.21 - 22:29
что такое "врНаВыход" - представлен не весь запрос.
   Sasha_H
 
4 - 17.03.21 - 22:30
СКД - многое оптимизирует и если в каком-то из промежуточных ВТ протаскиваемое поле не используется он его отсекат совсем.
   ДедМорроз
 
5 - 17.03.21 - 22:45
Там скорее преобразование Null в ноль.
   TormozIT
 
6 - 18.03.21 - 01:13
Ставь расширение "Инструменты разработчика". Далее
Если отчет без программной обработки (события ПриКомпоновкеРезультата) то и вызывай через CTRL+ALT+~ глобальное меню прям в отчете и затем в нем команду "Отладить компоновку" https://www.hostedredmine.com/issues/879329
Если же отчет с программной обработкой (события ПриКомпоновкеРезультата), то смотри тут https://www.youtube.com/watch?v=-NJJP79TccI
   TormozIT
 
7 - 18.03.21 - 07:45
(6) Видимо уже засыпал. Правильный хоткей - CTRL+~ или CTRL+ALT+E. А CTRL+ALT+ - неправильный. https://infostart.ru/1c/articles/1273456/
   DrZombi
 
8 - 18.03.21 - 08:11
(0) Выложи полный запрос.
   Веселый Джузеппе
 
9 - 18.03.21 - 08:18
Доброе утро, вчера отрубило) 
(1) вот здесь видно, что данные корректны
https://clip2net.com/clip/m400553/bd6f9-clip-94kb.png?nocache=1

(6) установил расширение и вот что получается
ПОЛНЫЙ ЗАПРОС ПО СКД

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура
ПОМЕСТИТЬ врНоменклатура
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    (Номенклатура.Наименование ПОДОБНО "%Страховка%"
            ИЛИ Номенклатура.Наименование ПОДОБНО "%Страхование%")
    И НЕ Номенклатура.ПометкаУдаления
    И НЕ Номенклатура.ЭтоГруппа
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ЗаказКлиентаТовары.Количество КАК Количество1,
    0 КАК Количество2,
    ЗаказКлиентаТовары.СуммаСНДС КАК СуммаСНДС1,
    0 КАК СуммаСНДС2,
    ЗаказКлиентаТовары.Ссылка.Партнер КАК Партнер
ПОМЕСТИТЬ врОбъединение
ИЗ
    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
    ЗаказКлиентаТовары.Ссылка.Проведен
    И ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ &НачалоПериода1 И &ОкончаниеПериода1
    И ЗаказКлиентаТовары.Номенклатура В
            (ВЫБРАТЬ
                врНоменклатура.Номенклатура
            ИЗ
                врНоменклатура КАК врНоменклатура)
    И ЗаказКлиентаТовары.Ссылка.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    0,
    ЗаказКлиентаТовары.Количество,
    0,
    ЗаказКлиентаТовары.СуммаСНДС,
    ЗаказКлиентаТовары.Ссылка.Партнер
ИЗ

    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
    ЗаказКлиентаТовары.Ссылка.Проведен
    И ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ &НачалоПериода2 И &ОкончаниеПериода2
    И ЗаказКлиентаТовары.Номенклатура В
            (ВЫБРАТЬ
                врНоменклатура.Номенклатура
            ИЗ
                врНоменклатура КАК врНоменклатура)
    И ЗаказКлиентаТовары.Ссылка.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    врОбъединение.Партнер КАК иПартнер,
    СУММА(врОбъединение.Количество1) КАК иКоличествоСтраховокВПервомПериоде,
    СУММА(врОбъединение.Количество2) КАК иКоличествоСтраховокВоВторомПериоде,
    СУММА(врОбъединение.Количество1) <> 0
        И СУММА(врОбъединение.Количество2) <> 0 КАК П1
ПОМЕСТИТЬ врГруппировка
ИЗ
    врОбъединение КАК врОбъединение

СГРУППИРОВАТЬ ПО
    врОбъединение.Партнер

ИМЕЮЩИЕ
    СУММА(врОбъединение.Количество1) <> 0 И
    СУММА(врОбъединение.Количество2) <> 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    врГруппировка.иПартнер КАК иПартнер,
    врГруппировка.иКоличествоСтраховокВПервомПериоде КАК иКоличествоСтраховокВПервомПериоде,
    врГруппировка.иКоличествоСтраховокВоВторомПериоде КАК иКоличествоСтраховокВоВторомПериоде,
    врГруппировка.П1 КАК П1
{ВЫБРАТЬ
    иКоличествоСтраховокВПервомПериоде,
    иКоличествоСтраховокВоВторомПериоде,
    П1,
    иПартнер.*}
ИЗ
    врГруппировка КАК врГруппировка

Если я в итоговом пакете убираю поле Партнер и суммирую поля без него, СКД интерпретирует запрос на вид https://clip2net.com/s/4blzL1A
Естественно при таком выполнении данные неверны, но почему так делает я не понял...
   Веселый Джузеппе
 
10 - 18.03.21 - 08:22
выше битая ссылка, смотрите тут
https://clip2net.com/s/4blzOCZ
или
https://clip2net.com/clip/m400553/81b47-clip-102kb.png?nocache=1
   TormozIT
 
11 - 18.03.21 - 08:24
Ставь в конструкторе схемы компоновки флажок "Обязательное использование".
https://i.imgur.com/sRMi8sy.png
   Веселый Джузеппе
 
12 - 18.03.21 - 08:30
(11) поставил у П1 - оно попало в запрос
но у меня группируется по партнеру, но в итоговой выборке мне надо откинуть эту группировку и посчитать итоги, чтобы вывести одной строкой в таблицу, соответственно поля ПАРТНЕР нет в полях СКД на выход и я не могу задать обязательный вывод
https://clip2net.com/s/4blzYGV
   Веселый Джузеппе
 
13 - 18.03.21 - 08:50
попробовать на банальном запросе - та же история
если из итоговой выборки убирать партнета - СКД и в предыдущих пакетах "врГруппировка" убирает группировку по партнеру - https://clip2net.com/s/4blAm3i

ВЫБРАТЬ
    "Партнер1" КАК Партнер,
    5 КАК Число1,
    5 КАК Число2
ПОМЕСТИТЬ врОбъединение

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Партнер1",
    5,
    5
    ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Партнер2",
    15,
    5
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    врОбъединение.Партнер КАК Партнер,
    СУММА(врОбъединение.Число1) КАК Число1,
    СУММА(врОбъединение.Число2) КАК Число2
ПОМЕСТИТЬ врГруппировка
ИЗ
    врОбъединение КАК врОбъединение

СГРУППИРОВАТЬ ПО
    врОбъединение.Партнер
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    СУММА(врГруппировка.Число1) КАК Число1,
    СУММА(врГруппировка.Число2) КАК Число2,
    СУММА(ВЫБОР КОГДА врГруппировка.Число1 = врГруппировка.Число2 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК Сравнение
ИЗ
    врГруппировка КАК врГруппировка
   Веселый Джузеппе
 
14 - 18.03.21 - 08:52
   Веселый Джузеппе
 
15 - 18.03.21 - 09:20
Короче объяснения я не нашел, пришлось крутить костыль, отсекаю раньше и считаю количество партнеров

https://c2n.me/4blBoVA

если кто знает ответ пишите! тему буду проверять периодически
всем спасибо, сдаемсууууу
   toypaul
 
16 - 18.03.21 - 09:35
Я знаю. Устал уже повторять.

Если поле из запроса нигде не используется, то в список ВЫБРАТЬ его включать не надо (нельзя)

вместо

ВЫБРАТЬ ЕщеПоле, ПОЛЕ ИЗ Таблица СГРУППИРОВАТЬ ПО ПОЛЕ 

надо писать

ВЫБРАТЬ ЕщеПоле ИЗ Таблица СГРУППИРОВАТЬ ПО ПОЛЕ 

но нужно постоянно следить за тем, чтобы конструктор не добавлял ПОЛЕ в список ВЫБРАТЬ. а он это любит делать. хуже всего когда твой отчет будут дорабатывать те кот этого не знают
   toypaul
 
17 - 18.03.21 - 09:38
Более надежный способ (но не такой красивый), "протаскивать" все ненужные поля до последнего запроса в любом виде. Как МАКСИМУМ, например. И ставить им флажок "обязательное".

Хотя и здесь может получиться "шляпа". Если снять флажок "Автозаполнение" и потом его снова поставить, то вполне себе может быть, что флажок "Обязательное" потеряется.
   TormozIT
 
18 - 18.03.21 - 10:03
(13) Еще есть такой способ выявления изменений в тексте запроса https://www.hostedredmine.com/issues/851723
   TormozIT
 
19 - 18.03.21 - 10:16
(15) Анализатор СКД проверяет наличие ссылок на поле в финальном запросе пакета. В твоем случае их нет. Поэтому он его удалил из предыдущих запросов пакета. Действительно сложно назвать такое поведение правильным.
Чтобы этого не происходило, достаточно в последний запрос добавить нейтральное выражение с обращением к нужному полю. Например
ГДЕ НЕ врГруппировка.Партнер ЕСТЬ NULL
   TormozIT
 
20 - 18.03.21 - 11:29
Отправил описание проблемы в 1С https://www.hostedredmine.com/issues/923054
   Веселый Джузеппе
 
21 - 18.03.21 - 13:09
Спасибо за ответы, тему сохранил в закладки)
   TormozIT
 
22 - 31.03.21 - 15:28
Был уверен, что в 1С признают это поведение ошибкой. Но даже после более подробного обоснования своей позиции, я все же получил отказ в признании ошибкой:
"Такое поведение платформы является штатным. Пересматривать его нет необходимости. При разработке прикладных решений эту особенность необходимо учитывать"


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.