Имя: Пароль:
1C
1С v8
ВыбратьИерархически() не работает
0 extrim-style
 
20.02.14
10:55
Выборка = Справочники.ИмяСправочника.Выбрать(,,Новый Структура("Реквизит1", "5")) - выбирает
Выборка = Справочники.ИмяСправочника.ВыбратьИерархически() - выбирает
Выборка = Справочники.ИмяСправочника.ВыбратьИерархически(,,Новый Структура("Реквизит1", "5")) - не выбирает ничего, почему?

Справочик иерархический с иерархией элементов без ограничения количества уровней. Отбор хочу сделать по реквизиту с включенным индексированием с доп. упорядочиванием, тип Строка250.
1 extrim-style
 
20.02.14
11:20
Ап
2 Wobland
 
20.02.14
11:22
читать до просветления: Формирует иерархическую выборку элементов справочника по заданным условиям
3 extrim-style
 
20.02.14
11:24
(2) что я в (2) не замечаю? мне и нужна как раз иерархическая выборка по условию равенства реквизита значению
4 extrim-style
 
20.02.14
11:32
Up
5 TARPV
 
20.02.14
11:40
Использовать для выборок данных объектные методы вместо запросов это дурной тон)) По крайней мере меня так учат в учебном центре 1С №1.
6 extrim-style
 
20.02.14
11:45
(5) разговор о выборках начинается после того, как задаешь вопрос из (0) )))?
ок. Давай через запрос - v8: Выбрать элементы верхнего уровня по определенному признаку
посмотрим, чему там учат
7 extrim-style
 
20.02.14
11:50
+(6) о "выборках запросом", конечно
8 hhhh
 
20.02.14
11:54
(7) у вас в элементах верхнего уровня реквизит1 точно равен "5"?
9 Wobland
 
20.02.14
11:55
(8) выборка будет формироваться при любом значении реквизита. главное, чтобы он был
10 hhhh
 
20.02.14
11:59
(9) а на "5" не будет проверять?
11 Wobland
 
20.02.14
12:00
(10) эмм... думаю, будет
12 Шапокляк
 
20.02.14
12:01
А у группы есть этот реквизит?
13 hhhh
 
20.02.14
12:02
(12) групп нет
14 extrim-style
 
20.02.14
12:06
(8) база клиент-серверная. На sql-сервере сделал проверку на NULL для реквизита этого справочника. Таких значений не нашлось. Или пустая строка, или значение.
15 extrim-style
 
20.02.14
12:14
платформа 8.2.17.153. Проверил на файловой 8.2.19.83 - та же история...
16 extrim-style
 
20.02.14
12:18
sql-запрос по значению этого реквизита отрабатывает нормально, выбирает все записи с таким значением:

SELECT *
FROM [BaseName].[dbo].[_Reference75]
where _Fld641 = '5'
17 extrim-style
 
20.02.14
12:31
Появилась мысль, что ВыбратьИерархически() с отбором, вероятно, работает только тогда, когда необходимое значение реквизита есть хотя бы в нулевом уровне. М.б. это действительно так? Или нет?
18 extrim-style
 
20.02.14
12:33
+(17) у меня, кстати, в нулевом уровне таких значений нет, только в первом.
19 extrim-style
 
20.02.14
12:38
(17)(18) проверил предположение. оно оказалось ошибочным.
20 extrim-style
 
20.02.14
13:03
Проверяю на другой конфе (бухгалтерия) - Справочник ПодразделенияОрганизаций, включил индексирование для реквизита КПП.
Выборка = Справочники.ПодразделенияОрганизаций.ВыбратьИерархически(,,Новый Структура("КПП", "111111111"));
ничего не выбирает. Почему?
21 hhhh
 
20.02.14
13:42
(20) на 0-вом уровне есть этот КПП?
22 extrim-style
 
20.02.14
14:24
(21) а зачем? я же проверил это в (19)
23 extrim-style
 
20.02.14
15:08
Ап для (20)
24 catena
 
20.02.14
15:55
(22)Плохо проверил. Я перепроверила, для первого уровня работает.
25 extrim-style
 
21.02.14
08:46
(24) спасибо. Действительно, видимо где-то ошибся во время проверки. Получается именно так и работает.

Подытожу: ВыбратьИерархически() с отбором выбирает только элементы, которые имеют данный отбор во всех родителях этих элементов.