Имя: Пароль:
1C
1С v8
Запросы. Проверка на входимость в группу
, ,
0 LazyCamel
 
02.12.11
09:45
Есть таблица значений у которой одна из колонок имеет тип справочник номенклатура. Значением этой колонки может выступать как элемент так и группа. И есть произвольный элемент номенклатуры. Я хочу отобрать те записи из ТЗ в которых присутствует либо этот элемент либо группа в которую он входит. Строю такой запрос.

   "ВЫБРАТЬ Таблица.*
   |ИЗ
   |    &Таблица КАК Таблица
   |ГДЕ
   |    Таблица.Экземпляр = &Экземпляр
   |    ИЛИ &Экземпляр В ИЕРАРХИИ (Таблица.Экземпляр)"

и получаю ошибку "Неверные параметры "В ИЕРАРХИИ".
Что не так?
1 Axel2009
 
02.12.11
09:46
так незя
2 LazyCamel
 
02.12.11
09:46
это я уже понял:) а как можно?
3 Wobland
 
02.12.11
09:48
Таблица.Экземпляр В ИЕРАРХИИ (&ЭкземплярРодитель), не?
4 Axel2009
 
02.12.11
09:48
иерархия как организована?
5 LazyCamel
 
02.12.11
09:50
(3) Я заранее не знаю на каком уровне вложенности окажется проверяемый элемент
(4) Обычный справочник произвольной глубины
6 Ant1773
 
02.12.11
11:44
(0) У тебя получается по сути проверка на то, что экземпляр находится в иерархии самого себя.
(5) Если у тебя н.п. 5 вложений и элемент на 4-м уровне, по какому уровню ты хочешь проверить иерархию? По 3-му? По 1-му?
7 aleks-id
 
02.12.11
11:47
а в ВТ пушкин помещать будет?
8 LazyCamel
 
02.12.11
11:59
(7) да есть там помещение в ВТ, просто не написал чтобы не загромождать. К сути проблемы это какое отношение имеет?
(6) Не понял, как это в иерархии самого себя? В том то и дело, что я хочу получить универсальную проверку, не привязанную к уровню. Ведь есть же у справочника метод ПринадлежитЭлементу(), который просматривает всю иерархию. Неужели в данном случае нельзя что-то подобное сделать?
9 aleks-id
 
02.12.11
12:04
ВЫБРАТЬ Таблица.*
   ИЗ
       ВТаблица КАК Таблица
   ГДЕ
       ВТаблица.Экземпляр = &Экземпляр
ОБЪЕДИНИТЬ
ВЫБРАТЬ Таблица.*
   ИЗ
       ВТаблица КАК Таблица
   ГДЕ
       Таблица.Экземпляр.ЭтоГруппа И
       &Экземпляр В ИЕРАРХИИ (Таблица.Экземпляр)

а так?
10 aleks-id
 
02.12.11
12:04
в первом ГДЕ ВТаблица. = ГДЕ Таблица.
11 LazyCamel
 
02.12.11
12:37
(9) то же самое
Насколько понимаю не нравится сама конструкция &Экземпляр В ИЕРАРХИИ (Таблица.Экземпляр)
где параметр слева. Если написать наоборот Таблица.Экземпляр В ИЕРАРХИИ (&Экземпляр) синтаксис прокатывает, но это логическая белиберда.
12 hhhh
 
02.12.11
12:53
(11) ну так должно прокатить

 |ГДЕ
   |    Таблица.Экземпляр В (&СписокГруппЭкземпляра)
13 LazyCamel
 
02.12.11
13:05
(12) Таблица.Экземпляр это эталон с которым нужно сравнить входящий параметр.
14 LazyCamel
 
02.12.11
13:25
Пока сделал так. Выбираю все записи, где Экземпляр не пустой, затем бегу по выборке и сравниваю уже силами встроенного языка. Но мне это не очень нравится. Непроизводительно, имхо.