|
СКД два необязательных параметра на поле Номенклатура как задать условие? | ☑ | ||
---|---|---|---|---|
0
e053nk
06.12.19
✎
13:21
|
Что то в ступор встал и решить не могу , вроде как все просто должно быть.
Полностью отчет приводить не буду-задача в предварительном отборе номенклатуры для дальнейшей обработки. Делаю запрос, в котором указываю необязательные параметры.Номенклатура должна отбираться так :если указали, из списка сегмента номенклатуры плюс, если указали, отдельные позиции из справочника номенклатуры. Т.е. возможно и из сегмента и из списка справочника попадание, возможно и не будет указаны параметры -тогда вся номенклатура выводиться. Кусок запроса из СКД: ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура ПОМЕСТИТЬ НоменклатураАкции ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента {ГДЕ (НоменклатураСегмента.Сегмент В (&СегментыНоменклатурыАкции)), (НоменклатураСегмента.Номенклатура.Ссылка В ИЕРАРХИИ (&Номенклатура))} отрабатывает так: 1) если параметры не указаны-выборка всей номенклатуры из базы;(это нормально работает) 2) Если указан только параметр &СегментыНоменклатурыАкции-берется только из сегмента(это правильно) 3) если указан только &Номенклатура-берется только отбор из справочника номенклатура (это правильно) 4) Если указан параметры &СегментыНоменклатурыАкции и &Номенклатура вместе -ничего не выводиться -И это НЕ ТО что нужно. Нужно объединить список из сегмента и отбор по справочнику. Пробовал указывать И, ИЛИ между условиями параметров- при попытки сформировать отчет выдает ошибку, если не указан один из параметров. Пробовал 2 запроса через ОБЪЕДИНИТЬ - либо ошибкувыдает либо выводить весь справочник (в зависимости от указания пустого параметра) Как реализовать чтобы параметры,когда они указаны,добавляли номенклатуру в общую выборку? |
|||
1
FIXXXL
06.12.19
✎
13:24
|
(0) это СКД или построитель? делай через Отборы, а не параметры
|
|||
2
FIXXXL
06.12.19
✎
13:26
|
(1) + ну или пиши ВЫБОР КОГДА &ТвойПараметр01 = &ПустойПараметр01 ТОГДА Ложь(если соединяешь параметры через ИЛИ) ИНАЧЕ НоменклатураСегмента.Сегмент В() и т.д.
|
|||
3
toypaul
гуру
06.12.19
✎
13:28
|
две выборки во временные таблицы и их объединение
|
|||
4
FIXXXL
06.12.19
✎
13:28
|
(2) +
ВЫБОР КОГДА &ТвойПараметр01 = &ПустойПараметр01 ТОГДА НоменклатураСегмента.Сегмент = &ПустойПараметр01 ИНАЧЕ НоменклатураСегмента.Сегмент В() и т.д. |
|||
5
e053nk
06.12.19
✎
13:40
|
Это СКД.
|
|||
6
e053nk
06.12.19
✎
13:52
|
(3) Попробовал так:
ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура ПОМЕСТИТЬ НоменклатураАкцииПром ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента {ГДЕ (НоменклатураСегмента.Сегмент В (&СегментыНоменклатурыАкции))} ; ВЫБРАТЬ НоменклатураСпр.Ссылка КАК Номенклатура ПОМЕСТИТЬ НоменклатураСправочник ИЗ Справочник.Номенклатура КАК НоменклатураСпр {ГДЕ (НоменклатураСпр.Ссылка В ИЕРАРХИИ (&Номенклатура))} ; ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура ПОМЕСТИТЬ НоменклатураАкции ИЗ НоменклатураАкцииПром КАК НоменклатураСегмента Объединить ВЫБРАТЬ НоменклатураСправочник.Номенклатура КАК Номенклатура ИЗ НоменклатураСправочник КАК НоменклатураСправочник ; Работате все равно криво но по другому:если не указать какой либо параметр(не важно какой) -в отчет попадает весь справочник Номенклатуры. (2) (4) Что то я эту конструкцию не понял...... |
|||
7
НЕА123
06.12.19
✎
14:01
|
(0)
может типа такого {ГДЕ ... , (НоменклатураСегмента.Сегмент В (&СегментыНоменклатурыАкцииКогдаОба))ИЛИ(НоменклатураСегмента.Номенклатура.Ссылка В ИЕРАРХИИ (&НоменклатураКогдаОба)) } ? |
|||
8
toypaul
гуру
06.12.19
✎
14:05
|
(6) а почему во второй таблице выборка из всего справочника. в (0) вся выборка из регистра
|
|||
9
toypaul
гуру
06.12.19
✎
14:08
|
я понял как надо. мой вариант не подходит
|
|||
10
toypaul
гуру
06.12.19
✎
14:12
|
может быть так попробовать каждую часть собрать
ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура ПОМЕСТИТЬ НоменклатураАкцииПром ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента {ГДЕ ЛОЖЬ ИЛИ (НоменклатураСегмента.Сегмент В (&СегментыНоменклатурыАкции))} |
|||
11
FIXXXL
06.12.19
✎
14:24
|
(6) эта конструкция работает в обязательных параметрах, без {}
|
|||
12
FIXXXL
06.12.19
✎
14:28
|
(3) тогда уж три выборки
1 - по сегменту 2 - по номенклатуре 3- если оба параметра пустые - вся номенклатура |
|||
13
e053nk
07.12.19
✎
02:18
|
Пока оставил так:
ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура ПОМЕСТИТЬ НоменклатураАкцииПром ИЗ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента {ГДЕ (НоменклатураСегмента.Сегмент В (&СегментыНоменклатурыАкции))} ; ВЫБРАТЬ НоменклатураСпр.Ссылка КАК Номенклатура ПОМЕСТИТЬ НоменклатураСправочник ИЗ Справочник.Номенклатура КАК НоменклатураСпр {ГДЕ (НоменклатураСпр.Ссылка В ИЕРАРХИИ (&Номенклатура))} ; ВЫБРАТЬ НоменклатураСегмента.Номенклатура КАК Номенклатура ПОМЕСТИТЬ НоменклатураАкции ИЗ НоменклатураАкцииПром КАК НоменклатураСегмента Объединить ВЫБРАТЬ НоменклатураСправочник.Номенклатура КАК Номенклатура ИЗ НоменклатураСправочник КАК НоменклатураСправочник работает более логичнее , но то же есть варианты с непонятками для пользователей.Отдал в тестирование |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |