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