8.х Как дерево значений вывести в отчет?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем andyid, 25 окт 2010.

  1. TopicStarter Overlay
    andyid
    Offline

    andyid Новичок в 1С

    Регистрация:
    14 окт 2010
    Сообщения:
    27
    Симпатии:
    1
    Баллы:
    4
    Здравствуйте, всем доброго времени суток. Мысль мне покоя не дает. Уменя есть уже программно сформированное ДеревоЗначений (у него три колонки текстовые и одна колонка ТаблицаЗначений). Проблема как его вывести на форму, без разницы в поле табличного документа или табличное поле, но только, чтобы группировки выводились и таблица значений тоже выводилась (так же бы хотелось в виде плюсика :) )...
  2. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    В каждой строе дерева значений есть параметр "строки" - это массив подчинённых строк, у которых, в свою очередь, есть такой же параметр. Вывод? Выводить рекурсивно обращаясь к параметру строк. Вывод в табличную часть делается просто: важно,ч тобы табличная часть сама была "деревом", а вот в печформе надо вручную задавать группировку. Для этого в начале впендюрьте
    Код:
    ТабДокумент.НачатьАвтогруппировкуСтрок();
    
    А в конце отчёта -
    Код:
    ТабДокумент.ЗакончитьАвтогруппировкуСтрок();
    
    А в коде печати выводите
    Код:
    ТабДокумент.Вывести(ОбластьСтрока, УровеньГруппировкиВОтчёте, , Разворачивать);
    
  3. TopicStarter Overlay
    andyid
    Offline

    andyid Новичок в 1С

    Регистрация:
    14 окт 2010
    Сообщения:
    27
    Симпатии:
    1
    Баллы:
    4
    Спасибо, с полем табличного документа понятно. А вот попробывал в табличное поле(на форме размещаю, ставлю ДеревоЗначений), не получается, при группировки действительно выводятся, все нормально, но таблица значений выводится в виде "СтрокаТабличнойЧасти", а хотелось что бы выводилась поэлементно...
  4. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
  5. TopicStarter Overlay
    andyid
    Offline

    andyid Новичок в 1С

    Регистрация:
    14 окт 2010
    Сообщения:
    27
    Симпатии:
    1
    Баллы:
    4
    Ситуация значит такая:

    структура дерева значений такая:

    Код:
    ДЗРешение = Новый ДеревоЗначений;
    ДЗРешение.Колонки.Добавить("Значение",            Новый ОписаниеТипов("Строка"));
    ДЗРешение.Колонки.Добавить("Ячейка",            Новый ОписаниеТипов("Строка"));
    ДЗРешение.Колонки.Добавить("Метод",                Новый ОписаниеТипов("Число"));
    ДЗРешение.Колонки.Добавить("СитуацияДо",        Новый ОписаниеТипов("Строка"));
    ДЗРешение.Колонки.Добавить("СитуацияПосле",        Новый ОписаниеТипов("Строка"));
    
    ДЗРешение.Колонки.Добавить("ТЗЯчейки",            Новый ОписаниеТипов("ТаблицаЗначений"));
    
    //...
    
    ТекущаяСтрока.ТЗЯчейки.Колонки.Добавить("Значение",                Новый ОписаниеТипов("Строка"));
    ТекущаяСтрока.ТЗЯчейки.Колонки.Добавить("Ячейка",                Новый ОписаниеТипов("Строка"));
    
    
    
    на форме размещаю табличное поле ТабличноеПолеРезультат с типом значения "ДеревоЗначений". В этой же форме добавляю реквизит формы: Дерево с типом "ДеревоЗначений". У ТабличноеПолеРезультат в "Данные" указываю реквизит формы Дерево.
    Пишу обработчик кнопки:

    Код:
    Процедура ОсновныеДействияФормыКнопка(Кнопка)
    Дерево = ДЗРешение.Скопировать();
    ЭлементыФормы.ТабличноеПолеРезультат.СоздатьКолонки();
    КонецПроцедуры
    
    
    после этого в форме наблюдаю следующую картину: (в прикрепленном файле скриншот)

    Вложения:

    • Карт.bmp
      Размер файла:
      357,5 КБ
      Просмотров:
      165
  6. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Если уж вам заранее известна структура, зачем вам
    Код:
    ЭлементыФормы.ТабличноеПолеРезультат.СоздатьКолонки();
    
    Помнится, я обходился без подобной строки. Так или иначе, в крайнем случае, всегда можно заполнить таблицу аналогично тому,к ак вы выводили данные на печать.
  7. TopicStarter Overlay
    andyid
    Offline

    andyid Новичок в 1С

    Регистрация:
    14 окт 2010
    Сообщения:
    27
    Симпатии:
    1
    Баллы:
    4
    согласен, можно и без нее обойтись, но в табличное поле информация не выводится полностью, как хотелось бы... либо это невозможно с помощью описанного решения...
  8. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Не выводится полснотью? Но выводится, всё же. Предлагаю заранее задать структуру колонок в поле дерева.

    В противном случае, придётся вместо простого "скопировать()" (что, в принципе, должно копировать дерево целиком) рекурсивно построчно передавать данные.
  9. TopicStarter Overlay
    andyid
    Offline

    andyid Новичок в 1С

    Регистрация:
    14 окт 2010
    Сообщения:
    27
    Симпатии:
    1
    Баллы:
    4
    не спорю выводит, и выводит с группировками, но таблицу значений, которая я вляется колонкой дерева значений выводит как "ТаблицаЗначений", а хотелось что бы выводились колонки этой таблицы значений, но видимо тут так не получится сделать ,придется через макет и поле табличного документа...
    Спасиб:)

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