Сохранить дерево значений в excel или табличный документ
Добрый день,
Подскажите есть ли простой способ вывести в табличный документ сформированное дерево значений на форме или сохранить напрямую это дерево в excel с сохранением иерархии без формирования табличного документа?
Например есть стандартная команда формы в командной панели "Вывести список", можно ли к ней обратится программно и получить на выходе табличный документ? а полученный табличный документ можно сохранить в формате xls.
Подскажите есть ли простой способ вывести в табличный документ сформированное дерево значений на форме или сохранить напрямую это дерево в excel с сохранением иерархии без формирования табличного документа?
Например есть стандартная команда формы в командной панели "Вывести список", можно ли к ней обратится программно и получить на выходе табличный документ? а полученный табличный документ можно сохранить в формате xls.
По теме из базы знаний
- PowerTools: Инструменты администратора 1С 8.3
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Консоль запросов 9000
- Сохранение данных табличных частей форм в Excel
- Консоль кода с поддержкой объявления процедур и функций, с дополнительными функциями отслеживания и вывода значений
Найденные решения
Задачу сделал так.
Перем ТабДок, Секция;
Процедура ПечатьДерева (СтрокаДерева,Уровень = 0,Колонки)
Для Каждого стр Из СтрокаДерева.Строки Цикл
НомерКолонки = 0;
отступ = "";
Для н = 1 По Уровень Цикл
отступ = отступ + " ";
КонецЦикла;
Для Каждого КЛ Из Колонки Цикл
НомерКолонки = НомерКолонки + 1;
Секция.Область(1, НомерКолонки).Текст = ?(НомерКолонки = 1, отступ+стр[КЛ.Имя], стр[КЛ.Имя]);
КонецЦикла;
ТабДок.Вывести(Секция,Уровень+1);
ПечатьДерева(стр,Уровень+1,Колонки);
КонецЦикла;
КонецПроцедуры
Процедура СформироватьТабДок()
ТабДок = Новый ТабличныйДокумент;
Секция = ТабДок.ПолучитьОбласть("R1");
ТабДок.НачатьАвтогруппировкуСтрок();
ПечатьДерева (Дерево,,Дерево.Колонки);
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ВременныйКаталог = КаталогВременныхФайлов();
ИмяФайла = "Журнал выгрузки " + Формат( ТекущаяДата(), "ДФ = 'гггг-ММ-дд_чч-мм-сс'") + ".xls";;
ИмяВременногоФайла = ВременныйКаталог + ИмяФайла;
ТабДок.Записать(ИмяВременногоФайла , ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Необходимо исключить действия пользователя, грубо говоря есть обработка, которая пошагово выполняет действия и заполняет журнал выполнения, который отображается в виде дерева значений на форме.
По завершению всех процедур необходимо данный журнал автоматически отправить на почту с сохранением иерархии.
Задачу сделал так.
Перем ТабДок, Секция;
Процедура ПечатьДерева (СтрокаДерева,Уровень = 0,Колонки)
Для Каждого стр Из СтрокаДерева.Строки Цикл
НомерКолонки = 0;
отступ = "";
Для н = 1 По Уровень Цикл
отступ = отступ + " ";
КонецЦикла;
Для Каждого КЛ Из Колонки Цикл
НомерКолонки = НомерКолонки + 1;
Секция.Область(1, НомерКолонки).Текст = ?(НомерКолонки = 1, отступ+стр[КЛ.Имя], стр[КЛ.Имя]);
КонецЦикла;
ТабДок.Вывести(Секция,Уровень+1);
ПечатьДерева(стр,Уровень+1,Колонки);
КонецЦикла;
КонецПроцедуры
Процедура СформироватьТабДок()
ТабДок = Новый ТабличныйДокумент;
Секция = ТабДок.ПолучитьОбласть("R1");
ТабДок.НачатьАвтогруппировкуСтрок();
ПечатьДерева (Дерево,,Дерево.Колонки);
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ВременныйКаталог = КаталогВременныхФайлов();
ИмяФайла = "Журнал выгрузки " + Формат( ТекущаяДата(), "ДФ = 'гггг-ММ-дд_чч-мм-сс'") + ".xls";;
ИмяВременногоФайла = ВременныйКаталог + ИмяФайла;
ТабДок.Записать(ИмяВременногоФайла , ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры
Показать
(6)
Спасибо за метод, заголовки тоже нужны, добавил
Спасибо за метод, заголовки тоже нужны, добавил
ТабДок = Новый ТабличныйДокумент;
СекцияЗаголовка = ТабДок.ПолучитьОбласть("R1");
НомерКолонки = 0;
Для Каждого КЛ Из ДанныеДерева.Колонки Цикл
НомерКолонки = НомерКолонки + 1;
СекцияЗаголовка.Область(1, НомерКолонки).Текст = КЛ.Имя;
КонецЦикла;
ТабДок.Вывести(СекцияЗаголовка);
Секция = ТабДок.ПолучитьОбласть("R2");
ТабДок.НачатьАвтогруппировкуСтрок();
ПечатьДерева (ДанныеДерева,,ДанныеДерева.Колонки);
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ВременныйКаталог = КаталогВременныхФайлов();
ИмяФайла = "Журнал выгрузки " + Формат( ТекущаяДата(), "ДФ = 'гггг-ММ-дд_чч-мм-сс'") + ".xls";;
ИмяВременногоФайла = ВременныйКаталог + ИмяФайла;
ТабДок.Записать(ИмяВременногоФайла , ТипФайлаТабличногоДокумента.XLS);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот