0
nesta sandro
18.05.17
✎
17:54
|
Здравствуйте!
В ходе разработки столкнулся с такой подзадачей:
Справочник Номенклатура с иерархией
Справочник СпецификацияКДоговору с табличной частью Номенклатура. В табличной части два реквизита - "ВидСравнения"- тип "Перечисление.ВидыСравнения" - "Равно", "Не равно", "ВИерархии" и "НеВИерархии"
и
"Номенклатура" - элементы и группы справочника Номенклатура.
В документе "Заявка" есть реквизит табличной части "Товары" - "СпецификацияКДоговору".
ПередЗаписью документа осуществляется проверка номенклатуры из табличной части причастности к спецификации.
Как запросом это сделать? Допустим кодом в модуле это сделать легко, но какой прием красиво одним запросом.
Учитывая, что в табличной части спецификациикдоговору номенклатура должна соответствовать всем условиям из табличной части одновременно. т.е. если "равно", то понятно - да или нет, а если "неравно" чему-то, "в иерархии" к одной группе и "не в иерархии" к другой группе одновременно.
|
|
2
Fragster
гуру
18.05.17
✎
18:37
|
если хочется запросом, то нужно рядом со справочником номенклатуры положить данные для nested sets, иначе соединения типа "в иерархии" запросом не получить для неограниченного количества уровней.
Для ограниченного можно написать костыль типа ...Родитель.Родитель...
дальше соединяешь со спецификацией, получаешь плоский список с Истина для равно и Ложь для не равно, группируешь по МИНИМУМ или по разнице уровней иерархии в условиях спецификации (для определения если несколько условий на одну номенклатуру через разные уровни иерархии)
этот список соединяешь с товарами и смотришь, где Истина - ОК, где ЛОЖЬ и NULL - косяк.
|
|