Имя: Пароль:
1C
1С v8
Необязательные параметры СКД и ВЫБОР КОГДА
0 salvator
 
14.02.20
15:28
Всем привет.
С СКД сто лет не работал. Нужно в секции ГДЕ поставить необязательные условия.
Пишу:
...
{ГДЕ
    (ХозрасчетныйОстатки.Организация = &Организация),
    (ВЫБОР
            КОГДА &ОтборПоПодразделению
                ТОГДА ХозрасчетныйОстатки.Подразделение = &Подразделение
            ИНАЧЕ НЕ ХозрасчетныйОстатки.Подразделение В
                        (ВЫБРАТЬ
                            ПодразделенияОрганизаций.Ссылка
                        ИЗ
                            Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
                        ГДЕ
                            ПодразделенияОрганизаций.ОбособленноеПодразделение
                            И ПодразделенияОрганизаций.Владелец = &Организация)
        КОНЕЦ)}
...

Если не заполнить параметр "Подразделение", то выдается ошибка, что параметр не указан.
Как написать конструкцию ГДЕ, чтобы параметры "Организация", "Подразделение" могли быть незаполненными?
Параметр "ОтборПоПодразделению" рассчитываю ПриКомпоновкеРезультата.
1 vicof
 
14.02.20
15:41
Убрать галку у параметра на вкладке параметры
2 DrWatson
 
14.02.20
15:44
(0) Может убрать ВЫБОР, сделать отдельные необязательные условия, и уже в ПриКомпоновкеРезультата задавая те или иные параметры управлять какой отбор будет присутствовать в итоговом запросе.
3 salvator
 
14.02.20
15:45
(1) Какую, "Запрет незаполненных"? Она не стоит
(2) Поподробнее можно? Как "управлять какой отбор будет"?
4 DrWatson
 
14.02.20
15:51
(3) Если нужен отбор по подразделению - задаёшь параметр Подразделение, если по организации - Организация.
Не надо усложнять всё это конструкцией ВЫБОР.
5 salvator
 
14.02.20
16:03
(4) ВЫБОР нужен для того, чтобы в зависимости от того, что указано в отборе по подразделению, формировать свой отбор. Там видно, что в конструкции ВЫБОР указано.
6 toypaul
 
гуру
14.02.20
16:11
извращение какое-то. если ты сумел в модуле заполнить один параметр то почему бы не заполнить другой?

{ГДЕ
    (ХозрасчетныйОстатки.Организация = &Организация),
    (ХозрасчетныйОстатки.Подразделение = &Подразделение),
    (ХозрасчетныйОстатки.Подразделение В &СписокПодразделений),
}

СписокПодразделений - сам понимаешь как заполнить ...
7 toypaul
 
гуру
14.02.20
16:12
если положить болт на оптимизацию то можно и вовсе оставить только

{ГДЕ
    (ХозрасчетныйОстатки.Организация = &Организация),
    (ХозрасчетныйОстатки.Подразделение В &СписокПодразделений)
}
8 toypaul
 
гуру
14.02.20
16:13
да и кстати. если ты подумал про оптимизацию, то ВЫБОР тут вообще ни к месту
9 toypaul
 
гуру
14.02.20
16:14
а если еще раз вспомнить про оптимизацию, то почему все условия в ГДЕ, а не в параметрах таблицы.

у нас за такое не принимают на работу :)
10 salvator
 
14.02.20
16:16
Не, мне нужно как:
Если параметр пустая ссылка, то в качестве параметра брать все, кроме обособок.
Если указано, то брать его.
Не нужны несколько параметров с подразделениями, нужен один.
В результате решил ПриКомпоновкеРезультата изменять текст запроса, работает.
11 pechkin
 
14.02.20
16:19
(7) а что разве В делается медленне чем = ?
Независимо от того, куда вы едете — это в гору и против ветра!