Имя: Пароль:
1C
1С v8
v8 СКД как не выводить элементы ниже определенного уровня
0 __Amator__
 
30.12.13
17:58
вопрос подымался много раз, но ответа не нашел
надо иерархически выводить справочник до второго уровня (выводить и иерархию и элементы)
вложенные уровни надо тоже в расчетах учитывать

копался в ПриКомпоновкеРезультата

ПроцессорВывода.НачатьВывод();
Пока Истина Цикл
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Если ЭлементРезультата = Неопределено Тогда Прервать;
Иначе
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
Для каждого текПарам Из ЭлементРезультата.ЗначенияПараметров Цикл
// тут
//Если СокрЛП(текПарам.Имя) = "П2" И СокрЛП(текПарам.Значение) = "977" Тогда
//    Сообщить(текПарам.Имя + " знач.: " + текПарам.Значение);
//КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();

но пока безуспешно...

в условном оформлении можно установить
Максимальная высота = 1
Текст = ""
тогда с расчетами гуд, но это не то... хочется правильно сделать

документ результат можно править после вывода, не это тоже не совсем правильно

возможно можно как-то посмотреть расшифровку при выводе отчета?

помогите разобраться
1 fisher
 
30.12.13
19:34
Чтобы считало, но не выводило - знаю только один способ.
Фильтры по группировке.
Попробуй поиграться фильтрами в группировках на системные поля "Уровень" и "УровеньВГруппировке"
2 __Amator__
 
30.12.13
19:37
неа... так нельзя... пробовал
3 __Amator__
 
30.12.13
19:54
если добавить условный фильтр то получим
"Ошибка при вызове метода контекста (Вывести)"
"Выражение не может быть вычислено "LevelInGroup""
4 __Amator__
 
31.12.13
11:41
сделал не совсем "красиво" но мне нужна универсальность...

в условном оформлении выставляю фиксированною высоту строки (можно и другой флаг использовать, например: цвет), при окончании вывода в табличный документ удаляю эти области


    УдалитьВысотаСтроки = 3;
    СворачиватьУровень = Настройки.ПараметрыДанных.Элементы.Найти("Уровень").Значение;
    Если ДокументРезультат.КоличествоУровнейГруппировокСтрок() > СворачиватьУровень Тогда
        счСтрок = 1;
        Для счСтрок = 1 По ДокументРезультат.ВысотаСтраницы Цикл
            ОбластьТабл = ДокументРезультат.Область("R"+счСтрок);
            Если ОбластьТабл.ВысотаСтроки = УдалитьВысотаСтроки Тогда
                ДокументРезультат.УдалитьОбласть(ОбластьТабл, ТипСмещенияТабличногоДокумента.ПоВертикали);
                счСтрок = счСтрок - 1;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;

мож кому поможет...
или предложите другой вариант, например, при выводе в табл.документ
5 fisher
 
03.01.14
11:13
(3) Ну, тогда в запросе определять уровень. Сабжевый случай простой. Принадлежность первым двум уровням иерархии легко определить в запросе условием на пустого родителя и на пустого родителя родителя. И потом фильтр в группировке.
6 __Amator__
 
29.01.14
11:54
+ можно создать собственную иерархию, с помощью соединения таблиц в СКД
так будет самое то...

надо сразу читать литературу...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан