|
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) Спасибо, действительно ошибка была из-за того, что листы одинаково назывались
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |