|
Программно формируемая СКД и итоговый запрос макета | ☑ | ||
---|---|---|---|---|
0
YAGolova
14.08.19
✎
13:27
|
Вопрос к знатокам СКД. Формирую схему программно таким образом, что текст основного запроса выходит примерно такой:
ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура {ВЫБРАТЬ Номенклатура.* КАК Номенклатура} ИЗ Справочник.Номенклатура КАК Номенклатура {ГДЕ Номенклатура.Ссылка.* КАК Номенклатура1, Номенклатура.Ссылка.* КАК Номенклатура} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Номенклатура {ГДЕ Номенклатура.Ссылка.* КАК Номенклатура2, Номенклатура.Ссылка.* КАК Номенклатура} На платформе 8.3.7 из этого запроса при установке отборов на номенклатура1 и номенклатура2 выходил запрос ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура = &П ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура = &П1 Переставили платформу на 8.3.13 и выходит запрос: ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура = &П И NULL = &П1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ NULL = &П И Номенклатура = &П1 Что в итоге естественно никаких данных не возвращает. Это задекларированное поведение платформы? Обойти это как то возможно? |
|||
1
YAGolova
14.08.19
✎
13:35
|
Вот что нашел при описании изменений поведения платформы. Для 8.3.1 они прям писали:
При использовании в запросе набора данных системы компоновки данных с автоматическим заполнением доступных настроек конструкции ОБЪЕДИНИТЬ или ОБЪЕДИНИТЬ ВСЕ, и накладывании отбора на реквизит поля, отбор накладывается только в тех частях объединения, в которых данный реквизит существует. При применении отбора к полю отбор применяется только в тех частях, где выражение поля не равно NULL. Источник: https://dl03.1c.ru/content/Platform/8_3_15_1565/1cv8upd_8_3_15_1565.htm#55463269-77f0-11e1-b5d1-e61f135f174b |
|||
2
yavasya
14.08.19
✎
14:04
|
(0) бро, это шедевр
ГДЕ NULL = &П И Номенклатура = &П1 какая задача хть? |
|||
3
Конструктор1С
14.08.19
✎
14:42
|
(0) а зачем ты именуешь одно и то же поле по-разному?
{ГДЕ Номенклатура.Ссылка.* КАК Номенклатура1, Номенклатура.Ссылка.* КАК Номенклатура} {ГДЕ Номенклатура.Ссылка.* КАК Номенклатура2, Номенклатура.Ссылка.* КАК Номенклатура} |
|||
4
YAGolova
14.08.19
✎
15:11
|
(3) Т.к. хочу наложить разные отборы по номенклатуре в разных частях объединения. Там есть еще одно поле в это запросе, я просто сократил его. В каждой части запроса есть
ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, &Сегмент1 КАК Сегмент Соответственно таблица в итоге должна получиться где сегмент/номенклатура |
|||
5
YAGolova
14.08.19
✎
15:12
|
(2) Так как раз платформа делает - эти NULL мне и мешают. Раньше такого поведения не было
|
|||
6
kabanoff
14.08.19
✎
15:18
|
(0) Да, я тоже столкнулся с этим в 8.3.13.1644.
Вот мои наблюдения: https://forum.infostart.ru/forum9/topic203141/message2266395/ (1) Да, разработчики обещают исправить это в 8.3.14. |
|||
7
kabanoff
14.08.19
✎
15:20
|
(0) Вариант обхода - сформировать промежуточные временные таблицы и компоновочные отборы наложить именно в них.
|
|||
8
YAGolova
14.08.19
✎
15:25
|
(7) Это понятно, просто у меня этих объединений дохрена и плодить временные таблицы как то не кошерно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |