Имя: Пароль:
1C
1С v8
Прием написания запроса
,
0 nesta sandro
 
18.05.17
17:54
Здравствуйте!
В ходе разработки столкнулся с такой подзадачей:

Справочник Номенклатура с иерархией
Справочник СпецификацияКДоговору с табличной частью Номенклатура. В табличной части два реквизита - "ВидСравнения"- тип "Перечисление.ВидыСравнения" - "Равно", "Не равно", "ВИерархии" и "НеВИерархии"
и
"Номенклатура" - элементы и группы справочника Номенклатура.

В документе "Заявка" есть реквизит табличной части "Товары" -  "СпецификацияКДоговору".
ПередЗаписью документа осуществляется проверка номенклатуры из табличной части причастности к спецификации.

Как запросом это сделать? Допустим кодом в модуле это сделать легко, но какой прием красиво одним запросом.

Учитывая, что в табличной части спецификациикдоговору номенклатура должна соответствовать всем условиям из табличной части одновременно. т.е. если "равно", то понятно - да или нет, а если "неравно" чему-то, "в иерархии" к одной группе и "не в иерархии" к другой группе одновременно.
1 Ц_У
 
18.05.17
18:10
выбери номенклатуру где равно и сравни с той что в заявке
2 Fragster
 
гуру
18.05.17
18:37
если хочется запросом, то нужно рядом со справочником номенклатуры положить данные для nested sets, иначе соединения типа "в иерархии" запросом не получить для неограниченного количества уровней.

Для ограниченного можно написать костыль типа ...Родитель.Родитель...
дальше соединяешь со спецификацией, получаешь плоский список с Истина для равно и Ложь для не равно, группируешь по МИНИМУМ или по разнице уровней иерархии в условиях спецификации (для определения если несколько условий на одну номенклатуру через разные уровни иерархии)
этот список соединяешь с товарами и смотришь, где Истина - ОК, где ЛОЖЬ и NULL - косяк.
3 azernot
 
18.05.17
18:42
ПередЗаписью...
запросом..

У тебя документ ещё не записан, ты запросом к номенклатуре документа всё равно не обратишься.. Всё равно придётся ТЧ в запрос через менеджер временных таблиц передавать.

Сделай кодом и не парься.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший