Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ПакетОтображаемыхДокументов в платформе ниже 8.3.12

ПакетОтображаемыхДокументов в платформе ниже 8.3.12
Я
   Chameleon1980
 
25.04.19 - 11:33
Привет всем.
Встала задачка сохранить разные ТД на разные листы Excel.
быстро нашел объект "ПакетОтображаемыхДокументов", но он, вроде работает с платформы от 8.3.12 (у мну пока ниже - так нужно).
Чем можно воспользоваться?
Кто как делал?
 
 
   Chameleon1980
 
1 - 25.04.19 - 11:35
вроде как листы это области (если открыть файл ексель в табличный документ)
но тупое сохранение опять в ексель такого тд дает плоский ексель
   Chameleon1980
 
2 - 25.04.19 - 12:32
с просторов:


Процедура СохранитьОтчетыВФайлExcelСЛистами(СписокОтчетов, ИмяФайла) Экспорт
    
    Эксель    = New COMObject("Excel.Application");

    Первый = истина;

    //Для защиты от дублей имен

    СооИмена = Новый СписокЗначений();

    //Перебираем отчеты в MXL

    Для Каждого Элемент ИЗ СписокОтчетов Цикл
        ТабДок = Элемент.Значение;
        //ТабДок.Показать();

        ИмяВременногоФайла = ПолучитьИмяВременногоФайла("XLS");
        ТабДок.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLS);//Сохраняем в временный файл


        ТекКнига = Эксель.Workbooks.Open(ИмяВременногоФайла);
        Если Первый Тогда
            Книга = ТекКнига;//Первый файл и есть результат, чтобы сохранялись цвета

        Иначе
            ТекКнига.Sheets(1).Copy(, Книга.Sheets(Книга.Sheets.Count));//Copy(Before, After)

        КонецЕсли;

        //Защита от одинаковых ярлыков

        ТекБазаНаименование = Элемент.Представление;
        
        ТекНаименование = ТекБазаНаименование; СчНаименований = 2;
        
        Пока СооИмена.НайтиПоЗначению(ТекНаименование) <> Неопределено Цикл
            ТекНаименование = ТекБазаНаименование + "(" + СчНаименований + ")";
            СчНаименований = СчНаименований + 1;
        КонецЦикла;
        
        СооИмена.Добавить(ТекНаименование);
        Книга.Sheets(Книга.Sheets.Count).Name = ТекНаименование;//Переименовываем


        Если Первый Тогда
            //Делаем доступными ярлыки листов

            Эксель.ActiveWindow.DisplayWorkbookTabs = 1;
            Эксель.ActiveWindow.TabRatio = 0.6;
            Первый = ложь;
        Иначе
            ТекКнига.Close();
        КонецЕсли;

    КонецЦикла;

    //Удаляем, чтобы не переспрашивал

    Файл = Новый Файл(ИмяФайла);
    
    Если Файл.Существует() Тогда
        УдалитьФайлы(ИмяФайла);
    КонецЕсли;

    Книга.SaveAs(ИмяФайла, -4143);//xlWorkbookNormal -4143 Workbook normal


    Книга.Close();

КонецПроцедуры

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.