Имя: Пароль:
1C
1С v8
Помощь с запросом СКД
,
0 seraf
 
12.04.21
14:32
Привет, подскажите, набросал в СКД простой вроде запрос. Сначала выбираю документы, потом транспорт и соединяю в текущем месяце. На тестовом куске выводит 90 строк, 5 с пустым документом. Всё ок пока в СКД на закладке Отбор не ставлю условие МаршрутныйЛист = "Пусто". В таком случае выводит те же 90 строк с "Пусто" . Хотя их всего 5. И в консоли запросов 5. И в консоли СКД тоже смотрел запрос, 5 строк. Где туплю, почему отбор так срабатывает.

ВЫБРАТЬ
    МаршрутныйЛист.Ссылка КАК МаршрутныйЛист,
    МаршрутныйЛист.Проведен КАК Проведен
ПОМЕСТИТЬ ВТ
ИЗ
    Документ.МаршрутныйЛист КАК МаршрутныйЛист
ГДЕ
    МаршрутныйЛист.Дата МЕЖДУ &ДатаНач И &ДатаКон
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Транспорт.Код КАК Код,
    Транспорт.Ссылка КАК Автомобиль,
    Транспорт.ДатаВвода КАК ДатаВвода,
    Транспорт.ГосНомер КАК ГосНомер,
    Транспорт.Модель КАК Модель,
    ЕСТЬNULL(ВТ.МаршрутныйЛист.Ссылка, "Пусто") КАК МаршрутныйЛист,
    ВТ.Проведен КАК Проведен
ИЗ
    Справочник.Транспорт КАК Транспорт
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ
        ПО Транспорт.Ссылка = ВТ.МаршрутныйЛист.ТранспортноеСредство.ОсновноеСредство.Ссылка
ГДЕ
    Транспорт.Актуальность = ЛОЖЬ
1 toypaul
 
гуру
12.04.21
14:44
не может "И в консоли СКД" работать правильно

наложенный отбор применился к ВТ, соот-но все строки стали "Пусто"
2 seraf
 
12.04.21
15:05
каким образом? в консоль СКД я выгруженную хмл отдал, там всё ок с такими же настройками или не вижу в чем дело.

ЕСТЬNULL(ВТ.МаршрутныйЛист.Ссылка, "Пусто") КАК МаршрутныйЛист появляется во второй части, отбор на результат, не понимаю какой отбор на ВТ упал, что исправить.
3 hhhh
 
12.04.21
15:07
(2) отбор вообще-то на все таблицы действует, не только на результат.
4 novichok79
 
12.04.21
15:12
надо посмотреть что какой запрос генерится в макете компоновщика СКД
5 seraf
 
12.04.21
15:18
так я смотрел макет компоновщика, запрос там не меняется, только опция отбора описана ниже. На что мой отбор действует в ВТ? это же просто отбор по полученным значениям относительно ВТ после объединения таблиц, разве нет? в ВТ никакого "Пусто" как строки. уж думал там нулл или еще что привел к строке для наглядности
6 toypaul
 
гуру
12.04.21
15:20
это смотря куда отбор добавить. в отчет или в группировку
7 toypaul
 
гуру
12.04.21
15:21
возможно что в отчете на уровне отчета. а в "консоли" для группировки.
8 novichok79
 
12.04.21
15:24
если косяк в запросе исключается, значит отбор применяется при выводе отчета, как и написали коллеги
9 seraf
 
12.04.21
15:28
вот текст запроса с закладки Макет для Табличного документа ХМЛ

<query>ВЫБРАТЬ
    МаршрутныйЛист.Ссылка КАК МаршрутныйЛист
ПОМЕСТИТЬ ВТ
ИЗ
    Документ.МаршрутныйЛист КАК МаршрутныйЛист
ГДЕ
    МаршрутныйЛист.Дата МЕЖДУ &amp;ДатаНач И &amp;ДатаКон
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Транспорт.Код КАК Код,
    Транспорт.Ссылка КАК Автомобиль,
    Транспорт.ГосНомер КАК ГосНомер,
    ЕСТЬNULL(ВТ.МаршрутныйЛист.Ссылка, "Пусто") КАК МаршрутныйЛист,
    Транспорт.Представление КАК ТранспортПредставление,
    ПРЕДСТАВЛЕНИЕССЫЛКИ(ЕСТЬNULL(ВТ.МаршрутныйЛист.Ссылка, "Пусто")) КАК МаршрутныйЛистПредставление
ИЗ
    Справочник.Транспорт КАК Транспорт
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ
        ПО Транспорт.Ссылка = ВТ.МаршрутныйЛист.ТранспортноеСредство.ОсновноеСредство.Ссылка
ГДЕ
    Транспорт.НеАктуален = ЛОЖЬ</query>

И отбор

    <template>
        <name>Макет4</name>
        <template xsi:type="dcsat:AreaTemplate">
            <dcsat:item xsi:type="dcsat:TableRow">
                <dcsat:tableCell>
                    <dcsat:item xsi:type="dcsat:Field">
                        <dcsat:value xsi:type="xs:string">Отбор: Маршрутный лист Равно "Пусто"</dcsat:value>
                    </dcsat:item>
10 hhhh
 
12.04.21
15:38
(9) походу ругается на ПРЕДСТАВЛЕНИЕССЫЛКИ. Туда же нельзя Пусто вставлять.
11 seraf
 
12.04.21
15:45
"Пусто" это я так добавил чтоб исключить что путаюсь с NULL, до этого был просто запрос, а в отборе ставил ЗначениеЗаполнено, но так же выводило лишнее и начал разбираться
12 novichok79
 
12.04.21
15:45
(5) приведите запрос отсюда: МакетКД.НаборыДанных.<ВашНаборДанных>.Запрос
13 novichok79
 
12.04.21
15:45
после применения отбора
14 seraf
 
12.04.21
15:58
не очень понял откуда, в наборе данных текст моего запроса. без отбора отлично выглядит, с ним какая-то херь, причем по другим полям нормально отбирает, явно что-то с этой ссылкой не понимаю
15 seraf
 
12.04.21
16:01
Поставил условие Содержит "П" - вывело 5 строк. Поставил Начинается с "Пу" - 5 строк) Условие же Равно "Пусто" - выводит полотно
16 seraf
 
12.04.21
16:03
Меня в принципе и Содержит удовлетворяет, но хотелось бы свою ошибку осознать
17 novichok79
 
12.04.21
16:14
(14) вроде как очевидно откуда - из обработчика ПриКомпоновкеРезультата в модуле объекта.
18 pasha_d
 
12.04.21
16:34
лови там свой макет как в (17) и смотри отладчиком, что в тексте запроса как в (12)
2 + 2 = 3.9999999999999999999999999999999...