Имя: Пароль:
1C
1С v8
Создание печатных форм в макете Excel в цикле
0 fantomrik
 
23.08.13
17:25
Добрый день!
Пытаюсь программно заполнить и вывести N-ое число печатных форм Экселя, но выводится только 1, как я понимаю последняя. Подскажите, в чем ошибка?

Для Сч=0 по мКоличество Цикл
Макет = ПолучитьМакет("МойМакетВЭкселе");
MSExcel = Макет.Получить();
Книга = MSExcel;
Лист = Книга.Worksheets(1);
Диапазон = Лист.Cells;
//заполнение макета
................
MSExcel.Application.Visible = 1;
MSExcel.Windows(1).Visible = 1;
MSExcel.Activate();                    
КонецЦикла
1 Euguln
 
23.08.13
17:27
Лист = Книга.Worksheets(1);
В один и тот же лист выводишь
делай Лист = Книга.Worksheets.Add();
2 fantomrik
 
23.08.13
17:35
(1) В такой ситуации я создаю лист, а не помещаю данные в лист макета и все равно в итоге только последняя печатная форма выходит.
3 Euguln
 
23.08.13
17:49
Ну скопируй свой макет на новый лист
4 fantomrik
 
23.08.13
17:51
(3) "и все равно в итоге только последняя печатная форма выходит." то есть открывается 1 файл экселя...
5 Euguln
 
23.08.13
18:02
Макет = ПолучитьМакет("МойМакетВЭкселе");
MSExcel = Макет.Получить();
Книга = MSExcel;
Для Сч=0 по мКоличество Цикл

Лист = Книга.Worksheets.Add();
Диапазон = Лист.Cells;
//заполнение макета

................
                  
КонецЦикла
MSExcel.Application.Visible = 1;
MSExcel.Windows(1).Visible = 1;
MSExcel.Activate();

Выведет в один файл на разные листы.
6 Euguln
 
23.08.13
18:03
Если нужно открыть много файлов, то после
MSExcel.Activate();
попробуй вставить
MSExcel = Неопределено;
7 fantomrik
 
23.08.13
18:11
(5) Спасибо! а возможен вариант наплодить файлов Экселя с 1 листом в каждом?
8 Euguln
 
23.08.13
18:12
(7) пробуй (6)
9 fantomrik
 
23.08.13
18:16
(8) не катит. Ну буду в 1 выводить, спасибо!
10 fantomrik
 
26.08.13
12:17
Было найдено такое решение задачи, возможно кому то пригодится :

ActiveDocuments = Новый ТаблицаЗначений;
ActiveDocuments.Колонки.Добавить("Документ");

Для Сч=0 по мКоличество Цикл

ActiveDocument = ПолучитьМакет("МакетЭксель").Получить();
Книга = ActiveDocument;
Лист = Книга.Worksheets(1);
Диапазон = Лист.Cells;
//Заполнение макета Эксель
.....................
НоваяСтрока = ActiveDocuments.Добавить();
НоваяСтрока.Документ = ActiveDocument;
        
НоваяСтрока.Документ.Activate();
НоваяСтрока.Документ.Windows(1).Visible  = Истина;
НоваяСтрока.Документ.Application.Visible = Истина;

КонецЦикла;


Хотелось бы добавить что экселевские макеты будут находится в переменной, и как только она уничтожится, документы закроются, так как сохранение тут не предусмотрено (это задача пользователя в данном случае). Поэтому ActiveDocuments  у меня Глобальная переменная документа, и автоматом закроются доки Excel, при закрытии документа в котором производился вызов данной функции.
AdBlock убивает бесплатный контент. 1Сергей