Имя: Пароль:
1C
1С v8
Как сохранить несколько разных листов в одной книге .xls программно из 1С?
0 vechiy
 
17.10.12
11:45
Встала вот такая задача. Вроде все описано в сабже.
Кто знает как давать имена листам в сохраняемом эксель-файле и добавлять новые листы?
1 Heckfy
 
17.10.12
11:48
2 vechiy
 
17.10.12
16:24
спасибо)
ещё нужно программно сохранить макет печатной формы в .xls, после заполнения и вывода самого макета
3 vechiy
 
17.10.12
16:27
это вроде нашел)
ТабДок.сохранить(йцу,xls)

но если у меня выводится 2 или более макетов, и все их нужно сохранить в одну книгу, на разные листы?
4 vechiy
 
17.10.12
17:29
и рраз
5 Asmody
 
17.10.12
17:46
Перем ТаблицыОтчетов;

Процедура ПоказатьТаблицу(ТабДок, Менеджер) Экспорт
   Если ТаблицыОтчетов.Количество()=0 Тогда
       ТекущаяСтраница=ЭлементыФормы.Панель1.Страницы[0];
   Иначе
       ТекущаяСтраница=ЭлементыФормы.Панель1.Страницы.Добавить();    
       ЭлементыФормы.Панель1.ТекущаяСтраница = ТекущаяСтраница;
   КонецЕсли;
   ТекущаяСтраница.Заголовок=Менеджер;
   ТекущаяСтраница.Значение=Менеджер;
   ИмяПоляТабДока = "ПолеТабличногоДокумента"+ТекущаяСтраница.Имя;
   ПолеТабДока = ЭлементыФормы.Добавить(Тип("ПолеТабличногоДокумента"), ИмяПоляТабДока, Истина, ЭлементыФормы.Панель1);
   ПолеТабДока.Верх = 6;
   ПолеТабДока.Лево = 6;
   ПолеТабДока.Ширина = ЭлементыФормы.Панель1.Ширина - 14;
   ПолеТабДока.Высота = ЭлементыФормы.Панель1.Высота - 30;
   ПолеТабДока.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементыФормы.Панель1, ГраницаЭлементаУправления.Право);
   ПолеТабДока.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭлементыФормы.Панель1, ГраницаЭлементаУправления.Низ);
   ПолеТабДока.Вывести(ТабДок);
   ТаблицыОтчетов.Вставить(Менеджер, ТабДок);
КонецПроцедуры

Процедура ДействияФормыСохранитьВКнигуExcel(Кнопка)
   Если ТаблицыОтчетов.Количество()>0 Тогда
       ДиалогВыбораФайла=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
       ДиалогВыбораФайла.ПолноеИмяФайла = "";
       ДиалогВыбораФайла.Фильтр="Файлы Microsoft Excel (*.xls)|*.xls|Все файлы (*.*)|*.*";
       ДиалогВыбораФайла.МножественныйВыбор=Ложь;
       ДиалогВыбораФайла.ПроверятьСуществованиеФайла=Истина;
       Если Не ДиалогВыбораФайла.Выбрать() Тогда
           Возврат;
       КонецЕсли;
               
       Попытка
           xlsApp=ПолучитьCOMОбъект("","Excel.Application");
       Исключение
           Предупреждение("Ошибка при получении объекта Excel. Возможно не установлен Microsoft Office.",15);
           Возврат;
       КонецПопытки;
       xlsApp.SheetsInNewWorkbook = 1;
       xlsApp.DisplayAlerts = 0;
       book = xlsApp.Workbooks.Add();
       delSheet = book.Sheets(1);
       Для Каждого Страница из ЭлементыФормы.Панель1.Страницы Цикл
           Менеджер=Страница.Значение;
           ТабДок=ТаблицыОтчетов[Менеджер];
           ИмяФайла=ПолучитьИмяВременногоФайла("xls");
           ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);
           tempBook=xlsApp.Workbooks.Open(ИмяФайла);
           tempBook.Sheets(1).Name=СокрЛП(Менеджер.Наименование);
           tempBook.Sheets(1).Copy(delSheet);
           tempBook.Close(0);
           
           УдалитьФайлы(ИмяФайла);
           //Сообщить("Записан "+Каталог+ИмяФайла);
       КонецЦикла;
       Попытка
           delSheet.Delete();
       Исключение
       КонецПопытки;
       book.SaveAs(ДиалогВыбораФайла.ПолноеИмяФайла,-4143);
       xlsApp.DisplayAlerts = 1;
       xlsApp.Workbooks.Close();
       xlsApp.Quit();
       //ЗапуститьПриложение( ДиалогВыбораФайла.ПолноеИмяФайла );
   КонецЕсли;
КонецПроцедуры

ТаблицыОтчетов = Новый Соответствие;
6 vechiy
 
17.10.12
18:20
это, я так понимаю, собственно, создание(копирование) листа?
tempBook.Sheets(1).Copy(delSheet);
7 vechiy
 
01.11.12
10:21
блеать не получается так. нельзя просто взять сохранить табдок в нужный лист книги?