Как правильно найти элемент по значениям доп реквизитов?
Доброе утро.
У меня имеется Номенклатура, мне нужно найти программно в базе ее Характеристику. У характеристики есть некий набор дополнительных реквизитов, по которым мне и нужно ее искать.
Как правильно это сделать в запросе?
Пока я дошел только до уродливой конструкции, в которой я сначала ищу все характеристики, владельцем которых является моя номенклатура, помещаю во временную таблицу, затем результат временной таблицы я проверяю на значение первого доп реквизита, помещаю во временную таблицу, эту временную таблицу проверяю на результат второго доп реквизита и т д . Словом, получился большой запрос с множеством временных таблиц, который еще и приходится формировать динамически (в случае, если характеристики значение доп реквизита не заполнено, например) . Понимаю что это топорно и неправильно.
Но как сделать правильно?
У меня имеется Номенклатура, мне нужно найти программно в базе ее Характеристику. У характеристики есть некий набор дополнительных реквизитов, по которым мне и нужно ее искать.
Как правильно это сделать в запросе?
Пока я дошел только до уродливой конструкции, в которой я сначала ищу все характеристики, владельцем которых является моя номенклатура, помещаю во временную таблицу, затем результат временной таблицы я проверяю на значение первого доп реквизита, помещаю во временную таблицу, эту временную таблицу проверяю на результат второго доп реквизита и т д . Словом, получился большой запрос с множеством временных таблиц, который еще и приходится формировать динамически (в случае, если характеристики значение доп реквизита не заполнено, например) . Понимаю что это топорно и неправильно.
Но как сделать правильно?
По теме из базы знаний
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2
- Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"
- Множественные дополнительные реквизиты в УТ 11.5 (11.4)
- Использование дополнительных реквизитов и сведений в отчетах
- Расширяем возможности дополнительных обработок и настраиваем их отладку
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) (3)
Проблема заключается еще в том, что мне нужно все это сделать для табличной части. То есть запрос выходит для каждой характеристики свой (ведь некоторых доп реквизитов нет), а в цикле по ТЧ это делать не хочется. Надо сделать одним запросом.
Пока идея основная сделать еще доп реквизит, в который записывать в строку уникальные идентификаторы каждого значения доп реквизита. И при поиске просто по своему набору создавать строку и искать уже только по ней.
(4)
Ну об этом я и пишу в посте. Просто доп реквизитов много (предположим, 10), и выходит что надо делать 10 временных таблиц. Плюс запрос для каждой характеристики выходит разный, а мне надо сделать один запрос, куда направить всю ТЧ, а не в цикле по каждой строке.
(5)
Это не проблема вовсе
Проблема заключается еще в том, что мне нужно все это сделать для табличной части. То есть запрос выходит для каждой характеристики свой (ведь некоторых доп реквизитов нет), а в цикле по ТЧ это делать не хочется. Надо сделать одним запросом.
Пока идея основная сделать еще доп реквизит, в который записывать в строку уникальные идентификаторы каждого значения доп реквизита. И при поиске просто по своему набору создавать строку и искать уже только по ней.
(4)
Ну об этом я и пишу в посте. Просто доп реквизитов много (предположим, 10), и выходит что надо делать 10 временных таблиц. Плюс запрос для каждой характеристики выходит разный, а мне надо сделать один запрос, куда направить всю ТЧ, а не в цикле по каждой строке.
(5)
Это не проблема вовсе
вводная недостаточная
конфигурация? как заведены доп реквизиты характеристики?
полагаю, что если есть допы, то они связаны с владельцем
раз так, то можно сразу установить условие на них по владельцу или же выполнить это соединением, но тут зависит от системы хранения этих допов и связи с владельцем
в общем случае схема запроса может быть такой - отбор характеристик по условию допов и владельцу характерисики (т.е. номенклатуры)
в итоге и получите нужные\нужную вам характеристику
конфигурация? как заведены доп реквизиты характеристики?
полагаю, что если есть допы, то они связаны с владельцем
раз так, то можно сразу установить условие на них по владельцу или же выполнить это соединением, но тут зависит от системы хранения этих допов и связи с владельцем
в общем случае схема запроса может быть такой - отбор характеристик по условию допов и владельцу характерисики (т.е. номенклатуры)
в итоге и получите нужные\нужную вам характеристику
Добавить в соединение табличную часть характеристик "Дополнительные реквизиты", соединить или отобрать по необходимому свойству (доп.реквизиту). При этом, для элементов, у которых значение реквизита никогда не устанавливалось - в табличной части "Дополнительные реквизиты" не будет строки со значением этого дополнительного реквизита в реквизите табличной части "Свойство".
Выбрать
СправочникНоменклатура.Ссылка КАК Номенклатура,
ДопРеквизитТакойТо.Значение КАК ЗначениеТакогоТоДопРеквизита
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизитТакойТо
ПО СправочникНоменклатура.Ссылка = ДопРеквизитТакойТо.Ссылка
И ДопРеквизитТакойТо.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПредопределённыйРеквизитТакойТо)
Повторяешь левое соединение для каждого реквизита под отдельную колонку.
В условии не обозначена версия БСП, т.ч. адаптируй текст под себя.
СправочникНоменклатура.Ссылка КАК Номенклатура,
ДопРеквизитТакойТо.Значение КАК ЗначениеТакогоТоДопРеквизита
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизитТакойТо
ПО СправочникНоменклатура.Ссылка = ДопРеквизитТакойТо.Ссылка
И ДопРеквизитТакойТо.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПредопределённыйРеквизитТакойТо)
Повторяешь левое соединение для каждого реквизита под отдельную колонку.
В условии не обозначена версия БСП, т.ч. адаптируй текст под себя.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот