Имя: Пароль:
1C
1С v8
Помогите составить запрос
0 Aleksey
 
14.05.14
00:11
Что то никак не соображу текст запроса

Дано В типовая ТиС есть справочник "Свойства номенклатуры" который подчинен справочнику Номенклатура и имеет 2 реквизита ВидСвойства (Справочник) и ЗначениеСвойства (Справочник)

Допустим в справочнике есть следующие записи
Владелец (Номенклатура) | Вид свойства | Значение
Ручка
- Группа - канцтовары
- Цвет - синий
Карандаш
- Группа - канцтовары
- Цвет - красный
Стол
- Группа - Мебель
Стул
- Группа - Мебель
- Цвет - синий
Маркер
- Группа - маркер
- Цвет - синий

Пользователь задает несколько значений свойств. в качестве фильтра. На выходе нужно получить список номенклатуры. При этом если пользователь задает значения свойств одного вида, то условие должно отрабатываться как ИЛИ, а если разного вида, то как И

Т.е. пользователь задал следующие условия
- Группа - канцтовары
- Группа - мебель
- Цвет - синий

В результате в выборе должно получится Ручка и Стул
Карандаш не подходит, так как цвет не синий. Стол тоже в пролёте, так как у него цвет вообще не указан, Маркер не входит в отбираемую группу


Вот что то никак в голову текст запроса не лезет, может кто поможет?
1 Aleksey
 
14.05.14
00:12
Блин тема по 7-ке, но по сути не важно, ибо буду юзать 1sqlite, т.е. текст запроса будет примерно одинаковый, что в 7-ке что в 8-ке
2 viktor_vv
 
14.05.14
00:20
Ну так при обработке фильтра загоняй значения свойств одинакового вида в отдельные списки, укладывай списки, а дальше

Или кучу внутренних соединений с временными таблицами (в sqlite вроде как лучше левое соединение с условием в Where на вторую таблицу), либо в Where ПолеЗначенияСвойства in (Select val From ВремТаблица) и все это через И .
Текст запроса таки придется динамически формировать.
3 Aleksey
 
14.05.14
00:27
Да вот тоже в голове крутится запрос в цикле с укладыванием результата во временную таблицу
4 viktor_vv
 
14.05.14
00:51
Только е запрос в цикле, а формирование текста запроса динамически, запрос один будет.
Ну и там ЗначениеСвойств наверное Справочник неопределенного вида, а в УложитьОбъекты будет ИД без вида char(9), надо будет еще вид добавлять в условие связи.
5 viktor_vv
 
14.05.14
00:51
*Только не запрос в цикле ...