|
Найти характеристику по дополнительным реквизитам | ☑ | ||
---|---|---|---|---|
0
Gera1t
01.08.20
✎
08:54
|
Есть набор дополнительных реквизитов характеристики, нужно характеристику по дополнительным реквизитам, если искать вот так:
ВЫБРАТЬ ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка КАК Ссылка ИЗ Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты ГДЕ ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = &Свойство И ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение = &Значение То ищет только по 1 допреквизиту. А как искать сразу например по 5 или 6? |
|||
1
Gera1t
01.08.20
✎
10:06
|
Если передать в &Свойство и &Значение список значений прокатит?
|
|||
2
acht
01.08.20
✎
10:17
|
(1) Придется еще написать "Свойство В (&Свойство)"
|
|||
3
ReaLg
01.08.20
✎
10:21
|
(0) Все несколько сложнее, как мне кажется. У разных характеристик могут быть повторяющиеся пары Свойство-Значение. Как бы ты ни выбирал - ты можешь получить много записей, среди которых есть разные характеристики. В общем случае могут быть даже ситуации, когда набор свойств и значений у разных характеристик вообще одинаковые. Надо придумать, как ты будешь из нескольких характеристик выбирать именно ту, что тебе нужна.
|
|||
4
ReaLg
01.08.20
✎
10:24
|
Лучше формировать запрос через или "(Свойство = &C1 И Значение = &З1) ИЛИ ((Свойство = &C2 И Значение = &З2))", иначе, если просто будешь писать В(&Список) можешь получить неправильные записи, когда значение относится к другому свойству.
|
|||
5
acht
01.08.20
✎
10:31
|
(4) зачем ты условие ИЛИ выдумал?
|
|||
6
ReaLg
01.08.20
✎
10:31
|
А еще лучше - через объединение нескольких запросов, если мне не изменяет павять, ИЛИ в ГДЕ работает медленно.
|
|||
7
ReaLg
01.08.20
✎
10:33
|
(5) Если просто Через 2 В() - то не факт, что значения будут относится к нужным свойствам.
|
|||
8
ReaLg
01.08.20
✎
10:35
|
Свойства Длина, Ширина, Высота
Нужно выбрать длина = 10 и ширина = 20 и высота = 30 В таблице 10 - 20 - 30 20 - 20 - 20 При двух В() вторая строка попадет в выборку, хотя не должна. |
|||
9
ReaLg
01.08.20
✎
10:41
|
(8) Таблицу - то неправильно нарисовал :)) Но суть в том, что при длине =20 эта строка попадет, хотя имелась ввиду ширина.
|
|||
10
ReaLg
01.08.20
✎
10:44
|
Нужно выбрать длина = 10 и ширина = 20 и высота = 30
В таблице: Х1 - Длина - 10 Х1 - Ширина - 20 Х1 - Высота - 30 Х2 - Длина - 20 Х2 - Ширина - 20 Х3 - Высота - 20 При запросе Свойство В(&С) И Значение В(&З) строки Х2 - Длина - 20 И Х2 - Высота - 20 попадут в выборку, хотя не должны. |
|||
11
RomanYS
01.08.20
✎
10:44
|
(2) так ты будешь искать элементы, у которых хотя бы одно свойство совпадет, а (0) нужно чтобы все совпали
|
|||
12
ReaLg
01.08.20
✎
10:46
|
(11) Ну, это не оговорено точно в (0) :)) Но даже в этом случае может быть несколько характеристик, о чем я писал в (3) Если нужна именно какая-то конкретная, то нужны еще условия.
|
|||
13
RomanYS
01.08.20
✎
10:49
|
(0) Засунуть набор входящих свойств с значениями в ТЗ. ТЗ передать параметром в запрос, соединить с ТЧ справочника. Сгруппировать по ссылке: посчитать количество совпадений. Взять ИМЕЮЩИЕ количество совпадение равное количеству исходных свойств.
|
|||
14
ReaLg
01.08.20
✎
10:52
|
(13) Красиво, я навскидку думал, что постобработка нужна будет :)
|
|||
15
RomanYS
01.08.20
✎
10:58
|
Кстати тут снова вопрос может всплыть что лучше(быстрее):
соединение По ТЧ.Свойство = ТЗ.Свойство и ТЧ.Значение = ТЗ.Значение или условие ГДЕ (ТЧ.Свойство, ТЧ.Значение) В (ВЫБРАТЬ ТЗ.Свойство, ТЗ.Значение ИЗ ТЗ) |
|||
16
Gera1t
02.08.20
✎
13:43
|
У меня получилось только через временные таблицы, условия по очереди задавать.
Если передаю в условие СписокЗначений, некорректно отбирает |
|||
17
RomanYS
02.08.20
✎
13:48
|
(16) список не прокатит. Или (13) или динамически формировать запрос с N соединениями
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |