Сохранить дерево значений в excel или табличный документ

1. Xamele0n88 07.02.17 13:25 Сейчас в теме
Добрый день,
Подскажите есть ли простой способ вывести в табличный документ сформированное дерево значений на форме или сохранить напрямую это дерево в excel с сохранением иерархии без формирования табличного документа?
Например есть стандартная команда формы в командной панели "Вывести список", можно ли к ней обратится программно и получить на выходе табличный документ? а полученный табличный документ можно сохранить в формате xls.
По теме из базы знаний
Найденные решения
6. Xamele0n88 11.02.17 11:21 Сейчас в теме
Задачу сделал так.

Перем ТабДок, Секция;

Процедура ПечатьДерева (СтрокаДерева,Уровень = 0,Колонки)
    Для Каждого стр Из СтрокаДерева.Строки Цикл
        НомерКолонки = 0;
        отступ = "";
        Для н = 1 По Уровень Цикл   
            отступ = отступ + " ";
        КонецЦикла;
        Для Каждого КЛ Из Колонки Цикл
            НомерКолонки = НомерКолонки + 1;
            Секция.Область(1, НомерКолонки).Текст = ?(НомерКолонки = 1, отступ+стр[КЛ.Имя], стр[КЛ.Имя]);
        КонецЦикла;
        ТабДок.Вывести(Секция,Уровень+1);
        ПечатьДерева(стр,Уровень+1,Колонки);
    КонецЦикла;
КонецПроцедуры

  
Процедура СформироватьТабДок()      
    ТабДок = Новый ТабличныйДокумент;
    Секция = ТабДок.ПолучитьОбласть("R1");
    ТабДок.НачатьАвтогруппировкуСтрок();
    ПечатьДерева (Дерево,,Дерево.Колонки);
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ВременныйКаталог = КаталогВременныхФайлов();
    ИмяФайла = "Журнал выгрузки " + Формат( ТекущаяДата(), "ДФ = 'гггг-ММ-дд_чч-мм-сс'") + ".xls";;
    ИмяВременногоФайла = ВременныйКаталог + ИмяФайла;                                                                  
    ТабДок.Записать(ИмяВременногоФайла , ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры
Показать
ir-ish-ka; SergeySol-82; vulli; clev; simgo83; Prad2002; Ravil_; It-developer; Jenya78; user1474628; hasp_x; nekit_rdx; curdate; bohdan-k; jane_de_rio; orfos; Legin; +17 Ответить
7. mickey.1cx 405 12.02.17 00:34 Сейчас в теме
Как и обещал, пример реализации на СКД
http://start1c.blogspot.ru/2017/02/blog-post.html
Dmitri93; ir-ish-ka; Ctrl P; Jenya78; hasp_x; jane_de_rio; Xamele0n88; antz; +8 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. John83 10.02.17 14:44 Сейчас в теме
Чем ТД не устраивает?
"Вывести список" через тот же ТД и выводится.
4. mickey.1cx 405 11.02.17 09:25 Сейчас в теме
(2) возможно, лишние действия
(3) здесь я рассматриваю вывод данных динамического списка формы, у ТС источником данных является дерево значений
(1) можно и компоновкой вывести, все довольно просто, если заранее правильно подготовить дерево значений. Вечером напишу пример.
8. user1055990 27.11.19 13:13 Сейчас в теме
(4) тем, что это в 1С нет ресурсов, чтобы "Вывести список" программно
5. Xamele0n88 11.02.17 11:14 Сейчас в теме

(2)Необходимо исключить действия пользователя, грубо говоря есть обработка, которая пошагово выполняет действия и заполняет журнал выполнения, который отображается в виде дерева значений на форме.
По завершению всех процедур необходимо данный журнал автоматически отправить на почту с сохранением иерархии.
6. Xamele0n88 11.02.17 11:21 Сейчас в теме
Задачу сделал так.

Перем ТабДок, Секция;

Процедура ПечатьДерева (СтрокаДерева,Уровень = 0,Колонки)
    Для Каждого стр Из СтрокаДерева.Строки Цикл
        НомерКолонки = 0;
        отступ = "";
        Для н = 1 По Уровень Цикл   
            отступ = отступ + " ";
        КонецЦикла;
        Для Каждого КЛ Из Колонки Цикл
            НомерКолонки = НомерКолонки + 1;
            Секция.Область(1, НомерКолонки).Текст = ?(НомерКолонки = 1, отступ+стр[КЛ.Имя], стр[КЛ.Имя]);
        КонецЦикла;
        ТабДок.Вывести(Секция,Уровень+1);
        ПечатьДерева(стр,Уровень+1,Колонки);
    КонецЦикла;
КонецПроцедуры

  
Процедура СформироватьТабДок()      
    ТабДок = Новый ТабличныйДокумент;
    Секция = ТабДок.ПолучитьОбласть("R1");
    ТабДок.НачатьАвтогруппировкуСтрок();
    ПечатьДерева (Дерево,,Дерево.Колонки);
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ВременныйКаталог = КаталогВременныхФайлов();
    ИмяФайла = "Журнал выгрузки " + Формат( ТекущаяДата(), "ДФ = 'гггг-ММ-дд_чч-мм-сс'") + ".xls";;
    ИмяВременногоФайла = ВременныйКаталог + ИмяФайла;                                                                  
    ТабДок.Записать(ИмяВременногоФайла , ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры
Показать
ir-ish-ka; SergeySol-82; vulli; clev; simgo83; Prad2002; Ravil_; It-developer; Jenya78; user1474628; hasp_x; nekit_rdx; curdate; bohdan-k; jane_de_rio; orfos; Legin; +17 Ответить 1
9. Simonov_NPM 02.10.20 08:44 Сейчас в теме
(6)
Спасибо за метод, заголовки тоже нужны, добавил
  
         ТабДок = Новый ТабличныйДокумент;
     СекцияЗаголовка = ТабДок.ПолучитьОбласть("R1");
     НомерКолонки = 0;
     Для Каждого КЛ Из ДанныеДерева.Колонки Цикл
            НомерКолонки = НомерКолонки + 1;
            СекцияЗаголовка.Область(1, НомерКолонки).Текст =  КЛ.Имя;
     КонецЦикла;
    ТабДок.Вывести(СекцияЗаголовка);     
    Секция = ТабДок.ПолучитьОбласть("R2");
    ТабДок.НачатьАвтогруппировкуСтрок();
    ПечатьДерева (ДанныеДерева,,ДанныеДерева.Колонки);
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ВременныйКаталог = КаталогВременныхФайлов();
    ИмяФайла = "Журнал выгрузки " + Формат( ТекущаяДата(), "ДФ = 'гггг-ММ-дд_чч-мм-сс'") + ".xls";;
    ИмяВременногоФайла = ВременныйКаталог + ИмяФайла;                                                                  
    ТабДок.Записать(ИмяВременногоФайла , ТипФайлаТабличногоДокумента.XLS);

Показать
simgo83; It-developer; +2 Ответить
7. mickey.1cx 405 12.02.17 00:34 Сейчас в теме
Как и обещал, пример реализации на СКД
http://start1c.blogspot.ru/2017/02/blog-post.html
Dmitri93; ir-ish-ka; Ctrl P; Jenya78; hasp_x; jane_de_rio; Xamele0n88; antz; +8 Ответить
10. пользователь 20.08.21 07:08
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот