Имя: Пароль:
1C
1С v8
ПакетОтображаемыхДокументов в платформе ниже 8.3.12
0 Chameleon1980
 
25.04.19
11:33
Привет всем.
Встала задачка сохранить разные ТД на разные листы Excel.
быстро нашел объект "ПакетОтображаемыхДокументов", но он, вроде работает с платформы от 8.3.12 (у мну пока ниже - так нужно).
Чем можно воспользоваться?
Кто как делал?
1 Chameleon1980
 
25.04.19
11:35
вроде как листы это области (если открыть файл ексель в табличный документ)
но тупое сохранение опять в ексель такого тд дает плоский ексель
2 Chameleon1980
 
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();

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