8.х СКД как не выводить элементы ниже определенного уровня

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем _Amator_, 30 дек 2013.

  1. TopicStarter Overlay
    _Amator_
    Offline

    _Amator_

    Регистрация:
    28 дек 2013
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    вопрос подымался много раз, но ответа не нашел
    надо иерархически выводить справочник до второго уровня (выводить и иерархию и элементы)
    вложенные уровни надо тоже в расчетах учитывать
    копался в ПриКомпоновкеРезультата

    Код:
    <span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">ПроцессорВывода.НачатьВывод();&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">Пока Истина Цикл&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">ЭлементРезультата = ПроцессорКомпоновки.Следующий();&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">Если ЭлементРезультата = Неопределено Тогда Прервать;&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">Иначе&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">Для каждого текПарам Из ЭлементРезультата.ЗначенияПараметров Цикл&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">// тут&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">//Если СокрЛП(текПарам.Имя) = "П2" И СокрЛП(текПарам.Значение) = "977" Тогда&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">// Сообщить(текПарам.Имя + " знач.: " + текПарам.Значение);&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">//КонецЕсли;&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">КонецЦикла;&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">КонецЕсли;&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">КонецЦикла;&nbsp;</span><br style="margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;"><span style="color: rgb(0, 0, 0); font-family: Verdana, sans-serif; font-size: 12px; line-height: 18px;">ПроцессорВывода.ЗакончитьВывод();</span>


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

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

    _Amator_

    Регистрация:
    28 дек 2013
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    сделал не совсем "красиво" но мне нужна универсальность...

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


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

    мож кому поможет...
    или предложите другой вариант, например, при выводе в табл.документ

Поделиться этой страницей