| 
    
            
         
         | 
    
  | 
Сложный поиск номенклатуры по нескольким доп. реквизитам | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        wms    
     10.03.20 
            ✎
    12:05 
 | 
         
        Типовая УТ 11.
 
        В справочнике номенклатура добавлено 7 доп. реквизитов разных типов. Нужно найти номенклатуру по этим 7 доп. реквизитам + артикул номенклатуры который может повторяться.- так давно сделано и работает.Понимаю что плохо. Интересует техническое решение. Создаю таблицу ТЗСвВаНом в которой колонки свойство и значение (типизировано характеристикой ПВХ) И запрос используя временную таблицу: МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("ВнешнийИсточник",ТЗСвВаНом); Запрос.Текст = "Выбрать | ВнешнийИсточник.Свойство, | ВнешнийИсточник.Значение | Поместить ТЗСвВаНом | ИЗ &ВнешнийИсточник КАК ВнешнийИсточник"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | Реквизиты.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК Реквизиты |ГДЕ | ИСТИНА | И НЕ Реквизиты.Ссылка.ПометкаУдаления | И Реквизиты.Ссылка.Артикул = &Артикул | И (Реквизиты.Свойство, Реквизиты.Значение) в (выбрать т.Свойство, Т.Значение из ТЗСвВаНом как Т) | |СГРУППИРОВАТЬ ПО | Реквизиты.Ссылка"; Запрос.УстановитьПараметр("Артикул",Стр.Артикул); Результат = Запрос.Выполнить(); но, вхожнение ВТ не отрабатывеет. возвращает 7 номенклатур по артикулу игнорируя значения свойств.  | 
|||
| 
    1
    
        Cyberhawk    
     10.03.20 
            ✎
    12:07 
 | 
         
        За такое имя переменной лучи добра в тебя точно не полетят)     
         | 
|||
| 
    2
    
        wms    
     10.03.20 
            ✎
    12:08 
 | 
         
        (1) поправлю:-)     
         | 
|||
| 
    3
    
        Cyberhawk    
     10.03.20 
            ✎
    12:10 
 | 
         
        Проверь на более простом запросе, где таблица из двух колонок с примитивными типами, ну и таблица-фильтр тоже с ними.     
         | 
|||
| 
    4
    
        catena    
     10.03.20 
            ✎
    12:14 
 | 
         
        (0)Этот запрос вернет каждую номенклатуру, у которой хоть одна пара свойство/значение имеет в отборе, а не по всем семи.     
         | 
|||
| 
    5
    
        Garykom    
     гуру 
    10.03.20 
            ✎
    12:17 
 | 
         
        (0) Там разве нет при добавлении/редактировании доп.реквизита снизу "Для разработчиков" и там "Имя"?
 
        УТ11.4 ПВХ ДополнительныеРеквизитыИСведения  | 
|||
| 
    6
    
        wms    
     10.03.20 
            ✎
    12:18 
 | 
         
        (3) попробовал см.ниже
 
        (4) да. так и работает  | 
|||
| 
    7
    
        wms    
     10.03.20 
            ✎
    12:26 
 | 
         
        а надо по всем семи + артикул.простого запроса не могу придумать только сильно навороченный получается     
         | 
|||
| 
    8
    
        wms    
     10.03.20 
            ✎
    12:30 
 | 
         
        Придется видимо программно составлять текст запроса и используя выбор формировать реквизиты Свойство1.... Свойство7
 
        и по значениям уже отбор. Всем спасибо!  | 
|||
| 
    9
    
        catena    
     10.03.20 
            ✎
    12:30 
 | 
         
        (7)Реквизитов жестко 7 или планируется в будущем изменение состава?     
         | 
|||
| 
    10
    
        FIXXXL    
     10.03.20 
            ✎
    12:30 
 | 
         
        (7) дык соединяй по всем полям     
         | 
|||
| 
    11
    
        wms    
     10.03.20 
            ✎
    12:37 
 | 
         
        (9) не жестко. 7 это пока максимально, но часть из них уже не обязательные     
         | 
|||
| 
    12
    
        pechkin    
     10.03.20 
            ✎
    12:38 
 | 
         
        нужно 7 левых/внутренних соединений     
         | 
|||
| 
    13
    
        catena    
     10.03.20 
            ✎
    12:42 
 | 
         
        (12)И каждый раз переписывать, когда состав будет меняться? Просто, но не красиво же.     
         | 
|||
| 
    14
    
        Cyberhawk    
     10.03.20 
            ✎
    13:05 
 | 
||||
| 
    15
    
        Cyberhawk    
     10.03.20 
            ✎
    14:14 
 | 
         
        Ну что, получилось способом из (14)?     
         | 
|||
| 
    16
    
        wms    
     11.03.20 
            ✎
    09:21 
 | 
         
        (15)нет, не отрабатывает внутреннее соединение, если ЗначениеСвойства имеет владельца, а у меня 2 таких свойства
 
        ВТ_Дано КАК ВТ_Дано ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Фильтры КАК ВТ_Фильтры ПО ВТ_Дано.ВидСвойства = ВТ_Фильтры.ВидСвойства И ВТ_Дано.ЗначениеСвойства = ВТ_Фильтры.ЗначениеСвойства или глюк платформы или такая фича.  | 
|||
| 
    17
    
        wms    
     11.03.20 
            ✎
    09:22 
 | 
         
        Пока сделал такой программно формируемый запрос, возможно еще оптимизирую:
 
        ВЫБРАТЬ РАЗЛИЧНЫЕ НоменклатураДополнительныеРеквизиты.Ссылка.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ГДЕ НЕ НоменклатураДополнительныеРеквизиты.Ссылка.ПометкаУдаления И НоменклатураДополнительныеРеквизиты.Ссылка.Артикул = &Артикул И НоменклатураДополнительныеРеквизиты.Свойство в (&МассивСвойств) И ВЫБОР КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &Свойство1 И НоменклатураДополнительныеРеквизиты.Значение = &Значение1 ТОГДА ИСТИНА КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &Свойство2 И НоменклатураДополнительныеРеквизиты.Значение = &Значение2 ТОГДА ИСТИНА КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &Свойство3 И НоменклатураДополнительныеРеквизиты.Значение = &Значение3 ТОГДА ИСТИНА КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &Свойство4 И НоменклатураДополнительныеРеквизиты.Значение = &Значение4 ТОГДА ИСТИНА КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &Свойство5 И НоменклатураДополнительныеРеквизиты.Значение = &Значение5 ТОГДА ИСТИНА КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &Свойство6 И НоменклатураДополнительныеРеквизиты.Значение = &Значение6 ТОГДА ИСТИНА КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &Свойство7 И НоменклатураДополнительныеРеквизиты.Значение = &Значение7 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ  | 
|||
| 
    18
    
        Cyberhawk    
     11.03.20 
            ✎
    11:49 
 | 
         
        (16) Ну а демо-пример-то ведет себя как нужно?     
         | 
|||
| 
    19
    
        Ёпрст    
     гуру 
    11.03.20 
            ✎
    11:54 
 | 
         
        (17) который не работает.. ибо проверяется одно свойство , а не 7 сразу.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |