Имя: Пароль:
1C
1С v8
1C и Excel
0 alex7six
 
11.10.11
21:27
Создаю файл Excel в 1С. В него мне нужно на разные страницы раскидать различные данные. Страниц в создаваемой книге по умолчанию 3, а у меня их может быть больше 3х. Каждую страницу нужно переименовать, при переименовании страниц, которые были в книге по умолчанию, все нормально, а при переименовании страниц, которые добавил программно, возникает ошибка:
{Форма.Форма.Форма(50)}: Ошибка при установке значения атрибута контекста (Name)
               Лист.Name = "Показатели " + ВыделеннаяСтрока.Регистратор.Проект;
по причине:
Произошла исключительная ситуация (Microsoft Office Excel): Нельзя присвоить листу имя, совпадающее с именем другого листа, библиотеки объектов или книги, на которую ссылается Visual Basic.


А вот код:

Попытка
       // Загрузка Microsoft Excel
       Состояние("Выгрузка данных из 1С в Microsoft Excel...");
       ExcelПриложение = Новый COMОбъект("Excel.Application");
   Исключение
       Сообщить("Ошибка при загрузке Microsoft Excel."
       + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
       Возврат;
   КонецПопытки;
   
   Книга = ExcelПриложение.WorkBooks.Add();
   
   // Используем первый лист книги Excel
   НомерЛиста = 1;
   
   КоличествоЛистов = ЭлементыФормы.ТабличноеПоле1.ВыделенныеСтроки.Количество()*3 - 3;
   
   Для л = 1 По КоличествоЛистов Цикл
       
       Книга.Sheets.add();
       
   КонецЦикла;
   
   // Сформировать шапку документа в первой строке листа
   
   Для Каждого ВыделеннаяСтрока из ЭлементыФормы.ТабличноеПоле1.ВыделенныеСтроки Цикл
       
       Версия = ВыделеннаяСтрока.Версия;
       
       СтруктураДляВыгрузки = РегистрыСведений.УтвержденныеВерсииБюджета.ПолучитьВерсиюБСО(Версия);
       
       Для Каждого КлючИЗначение из СтруктураДляВыгрузки Цикл
           
           Лист = Книга.WorkSheets(НомерЛиста);
           
           Лист.Cells(1, 1).Value = "Документ " + ВыделеннаяСтрока.Регистратор.Номер;
           Лист.Cells(1, 2).Value = "Время версии " + ВыделеннаяСтрока.Период;            
           
           ТаблицаВыгрузки = КлючИЗначение.Значение;
           
           Если ТипЗнч(ТаблицаВыгрузки) = Тип("ДеревоЗначений") Тогда
               
               Лист.Name = "График " + ВыделеннаяСтрока.Регистратор.Проект;
           ИначеЕсли ТаблицаВыгрузки.Колонки.Количество() = 2 Тогда
               
               Лист.Name = "Показатели " + ВыделеннаяСтрока.Регистратор.Проект;
           Иначе
               
               Лист.Name = "Строки " + ВыделеннаяСтрока.Регистратор.Проект;
           КонецЕсли;
....
1 MaxS
 
11.10.11
21:36
а если 1С-ом сохранить табличный документ как Excel по одному файлу на ТабДок
и потом экселом собрать ексел файл в один файл с несколькими страницами?
2 alex7six
 
11.10.11
21:38
как это сделать?
3 wade25
 
11.10.11
21:40
(2) Если над будет, завтра кину ссылку в которой оч хорошо все расписано...
4 alex7six
 
11.10.11
21:42
(3) буду очень благодарен Вам
5 Serg_1960
 
11.10.11
21:51
"огрызок" алгоритма (сорри за резкость) - текст "ни о чём"(с) Непонятно даже, где меняется НомерЛиста :( и меняется ли вообще :)

(по теме, предположение): Если "ВыделенныеСтроки" содержат строки с одинаковым значением "Проект" - Вы получаете "неуникальное" наименование листа Excel со всеми вытекающими... как-то так :)
6 Serg_1960
 
11.10.11
21:58
PSS: а если у регистратора проект не указан - то у Вас несколько листов с наименованием "Показатели" :)
7 alex7six
 
11.10.11
22:13
(5) Спасибо, действительно ошибка была из-за того, что листы одинаково назывались
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.