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