|   |   | 
| 
 | Программно формируемая СКД и итоговый запрос макета | ☑ | ||
|---|---|---|---|---|
| 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) Это понятно, просто у меня этих объединений дохрена и плодить временные таблицы как то не кошерно     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |