Имя: Пароль:
1C
 
Отрезать верхнего родителя при выборке элементов справочника группой
0 НоваяВолна
 
27.06.19
07:51
Сегодня реально туплю... Надо вывести все элементы справочника из группы, (в том числе и подчиненных Родителю групп), при этом не выводя Родителей. Делаю так. При этом выводятся все элементы справочника, обрезаются Родители нижних уровней (не выводятся), но при этом самый верхний Родитель выводится в конце списка. Как избавится от него?

Процедура НоменклатураСписокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
        СтандартнаяОбработка = Ложь;
        Товары = Справочники.Номенклатура;
    Если ВыбранноеЗначение.ЭтоГруппа Тогда
        СписокВыборки = Товары.ВыбратьИерархически(ВыбранноеЗначение);
        Пока СписокВыборки.Следующий() Цикл
            Если СписокВыборки.ЭтоГруппа  Тогда
                Продолжить;
            КонецЕсли;
            НоваяСтрока = НоменклатураСписок.Добавить();
            НоваяСтрока.Номенклатура = СписокВыборки.Ссылка;
            НоваяСтрока.Артикул = СписокВыборки.Артикул;
        КонецЦикла;    
    КонецЕсли;    
......
......
......
КонецПроцедуры
1 Beduin
 
27.06.19
07:54
(0) Через с запрос, с отбором на этогруппа
2 НоваяВолна
 
27.06.19
07:57
(1) Буду делать запросом.... Интересно почему ВыбратьИерархически() не дает нужного результата... Вроде как верхний Родитель это тоже группа. Иначе бы этот цикл вообще не выполнялся.
3 ИУБиПовиц
 
27.06.19
08:11
Может у Вас иерархия групп и элементов, и самы верхний родитель - не группа?
добавте сообщить(СписокВыборки.Ссылка) и гляньте че там у вас, может вообще в другом месте где добавляется?
на крайняк найдите потом самый верхний родитель в списке номенклатуры и удалите его:)
П.С. но лучше запросом:)
4 НоваяВолна
 
27.06.19
08:15
(3) Да Иерархия групп и элементов
5 НоваяВолна
 
27.06.19
08:17
(3) Запросом сделал так, результат тот же. Все Родители нижнего уровня не выводятся, но родитель самого верхнего уровня есть

Если ВыбранноеЗначение.ЭтоГруппа Тогда
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
                           |    Номенклатура.Ссылка,
                           |    Номенклатура.Артикул
                           |ИЗ
                           |    Справочник.Номенклатура КАК Номенклатура
                           |ГДЕ
                           |    Номенклатура.Ссылка В ИЕРАРХИИ(&Папка)
                           |    И НЕ Номенклатура.ЭтоГруппа";        
            Запрос.УстановитьПараметр("Папка",ВыбранноеЗначение);
            
            РезультатЗапроса = Запрос.Выполнить();
            
            Выборка = РезультатЗапроса.Выбрать();
            Пока Выборка.Следующий() Цикл
                НоваяСтрока = НоменклатураСписок.Добавить();
                НоваяСтрока.Номенклатура = Выборка.Ссылка;
                НоваяСтрока.Артикул = Выборка.Артикул;
            КонецЦикла;
        КонецЕсли;
6 ИУБиПовиц
 
27.06.19
08:20
(5) Значит родитель верхнево уровня не группа:)
7 НоваяВолна
 
27.06.19
08:22
(6) Если он не группа то как он в условие вообще попадает? Сверху сразу условие
Если ВыбранноеЗначение.ЭтоГруппа Тогда
8 ИУБиПовиц
 
27.06.19
08:23
(7) Я наверное не понял.
ВЫбраноеЗначение = А;
родительВерхнегоУровня - Б-
ЕщеНиже - в
-элементы - Г.
попадает Б, или А?
9 НоваяВолна
 
27.06.19
08:25
Все!!!!!!!!!!!!!!!
Разобрался Сам ступил!  У меня ниже код, который добавляет значения по одному, если это не папка. Вот оттуда он и лезет. А так оба кода рабочие )))
10 ИУБиПовиц
 
27.06.19
08:26
:)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан