Сохранение из 1С в EXCEL несколько листов
Доброго времени суток.
Объясню ситуацию:
Есть печатная форма в форме которой есть команда "сохранить в EXCEL"
он сохраняет файл как положено, но в файле должно быть еще 2 листа,
создал еще 2 макета с данными, которые постоянные. их нужно добавить как отдельные листы файла Excel.
Вопрос: Как мне добавить остальные 2 макета к файлу в виде листов?
Объясню ситуацию:
Есть печатная форма в форме которой есть команда "сохранить в EXCEL"
Процедура ДействияФормыСохранитьВExcel(Кнопка)
диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
диалог.Фильтр = "Файл Excel (*.xls)|*.xls|Файл Excel 2007 (*.xlsx)|*.xlsx";
Если диалог.Выбрать() Тогда
файл = Новый Файл(диалог.ПолноеИмяФайла);
Если НРЕГ(файл.Расширение) = ".xlsx" Тогда
ЭлементыФормы.Результат.Записать(диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX)
Иначе
ЭлементыФормы.Результат.Записать(диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS)
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показатьон сохраняет файл как положено, но в файле должно быть еще 2 листа,
создал еще 2 макета с данными, которые постоянные. их нужно добавить как отдельные листы файла Excel.
Вопрос: Как мне добавить остальные 2 макета к файлу в виде листов?
По теме из базы знаний
- Отчет по продажам на нескольких вкладках
- Запись одной книги Excel на нескольких листах средствами 1С (без внешних компонент)
- Выгрузка зарплатной ведомости для Альфабанк: АЗОН или создаем файл xls с несколькими листами без использования Excel
- Универсальная загрузка данных формата Excel
- Выгрузка данных в формате NEON (НЕОН) в Excel, с разделением на несколько листов (из конфигураций: УТ 11, УТ 10.3)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(9)
Выдает ошибку:
В макете 16 колонок и 8 строк
диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
диалог.Фильтр = "Файл Excel (*.xls)|*.xls|Файл Excel 2007 (*.xlsx)|*.xlsx";
Если диалог.Выбрать() Тогда
ТабДок2Лист = ПолучитьВторойЛист();
ОднаКнига = Новый ПакетОтображаемыхДокументов;
Элт = ОднаКнига.Состав.Добавить();
Элт.Наименование = "Заказ";
Элт.Данные = ПоместитьВоВременноеХранилище(ЭлементыФормы.Результат.Данные);
Элт2 = ОднаКнига.Состав.Добавить();
Элт2.Наименование = "Образец заполнения";
Элт2.Данные = ПоместитьВоВременноеХранилище(ТабДок2Лист);
ОднаКнига.Записать(диалог.ПолноеИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
КонецЕсли;
ПоказатьВыдает ошибку:
{ВнешняяОбработка.ПечатьЗаказа.Форма.ФормаОтчета.Форма(32)}: Ошибка при вызове метода контекста (Записать)
ОднаКнига.Записать(диалог.ПолноеИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
по причине:
Ошибка экспорта табличного документа: Документ Excel 2007 не может содержать более 16384 колонок и 1048576 строк
В макете 16 колонок и 8 строк
(12) Добрый день, столкнулась с такой же ошибкой, как у Вас при попытке использовать ПакетОтображаемыхДокументов для выгрузки нескольких табличных документов в одну Excel-книгу:
Табличные документы так же, как и у Вас, содержат малое количество строк и столбцов и по отдельности этим же методом прекрасно выгружаются.
Вы случайно не нашли причину появления этой ошибки и как ее исправить?
Ошибка экспорта табличного документа: Документ Excel 2007 не может содержать более 16384 колонок и 1048576 строк
Табличные документы так же, как и у Вас, содержат малое количество строк и столбцов и по отдельности этим же методом прекрасно выгружаются.
Вы случайно не нашли причину появления этой ошибки и как ее исправить?
В макетах есть такая фишка: Двоичные данные, может как то закачать шаблон и с ним работать, только не пойму как.
(4) тут мне не понятно как заполнить из имеющихся макетов лист 2 и лист 3.
(4) тут мне не понятно как заполнить из имеющихся макетов лист 2 и лист 3.
Процедура ДействияФормыСохранитьВExcel(Кнопка)
диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
диалог.Фильтр = "Файл Excel (*.xls)|*.xls|Файл Excel 2007 (*.xlsx)|*.xlsx";
Если диалог.Выбрать() Тогда
файл = Новый Файл(диалог.ПолноеИмяФайла);
Если НРЕГ(файл.Расширение) = ".xlsx" Тогда
ЭлементыФормы.Результат.Записать(диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX)
Иначе
ЭлементыФормы.Результат.Записать(диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS)
КонецЕсли;
КонецЕсли;
Попытка
Эксель= СоздатьОбъект("Excel.Application");
Эксель.Visible = 0;
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
Книга=Эксель.WorkBooks.Open(диалог.ПолноеИмяФайла);
Лист = Книга.WorkSheets.Add();
Лист.Лист = Книга.WorkSheets(2);
Лист.Name = "Образец заполнения";
Попытка
Книга.SaveAs(диалог.ПолноеИмяФайла);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
Возврат;
КонецПопытки;
КонецПроцедуры
Показать
Ребят, подскажите как мне табличный документ полученый сохранить в эксель, не могу инфы найти нигде как сохранять несколько листов.
Выдает ошибку доступа к ComОбъект на строчке ЭлементыФормы.Результат.Записать(Лист);
Когда один лист нужно было, было проще: ЭлементыФормы.Результат.Записать(диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);
диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
диалог.Фильтр = "Файл Excel (*.xls)|*.xls|Файл Excel 2007 (*.xlsx)|*.xlsx";
Если диалог.Выбрать() Тогда
ТабДокЛист2 = Новый ТабличныйДокумент;
ТабДок2Лист = ПолучитьВторойЛист();
Попытка
Эксель= Новый COMОбъект("Excel.Application");
Эксель.Visible = 0;
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
Попытка
Книга = Эксель.WorkBooks.Add();
Лист = Книга.WorkSheets.Add();
Лист.Name = "Заказ";
ЭлементыФормы.Результат.Записать(Лист);
Лист = Книга.WorkSheets.Add();
Лист.Name = "Образец заполнения";
Лист = Книга.WorkSheets(2);
ТабДок2Лист.Записать(Лист);
Книга.SaveAs(диалог.ПолноеИмяФайла);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
Возврат;
КонецПопытки;
КонецЕсли;
ПоказатьВыдает ошибку доступа к ComОбъект на строчке ЭлементыФормы.Результат.Записать(Лист);
Когда один лист нужно было, было проще: ЭлементыФормы.Результат.Записать(диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);
диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
диалог.Фильтр = "Файл Excel (*.xls)|*.xls|Файл Excel 2007 (*.xlsx)|*.xlsx";
Если диалог.Выбрать() Тогда
файл = Новый Файл(диалог.ПолноеИмяФайла);
Если НРЕГ(файл.Расширение) = ".xlsx" Тогда
ЭлементыФормы.Результат.Записать(диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX)
Иначе
ЭлементыФормы.Результат.Записать(диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS)
КонецЕсли;
КонецЕсли;
ТабДокЛист2 = Новый ТабличныйДокумент;
ТабДок2Лист = ПолучитьВторойЛист();
Попытка
Эксель= Новый COMОбъект("Excel.Application");
Эксель.Visible = 0;
Исключение
Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
Возврат;
КонецПопытки;
Книга=Эксель.WorkBooks.Open(диалог.ПолноеИмяФайла);
Лист = Книга.WorkSheets.Add();
Лист.Name = "Образец заполнения";
ТабДокЛист2.Записать(Лист);
Попытка
Книга.SaveAs(диалог.ПолноеИмяФайла);
Исключение
Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
Возврат;
КонецПопытки;
ПоказатьПишет ошибку:
Ошибка при вызове метода контекста (Записать)
ТабДокЛист2.Записать(Лист);
по причине:
Ошибка доступа к файлу 'COMОбъект'
Я что то неправильно сделал?
Сделал так:
Теперь новая проблема, 3 лист у меня идет с группировками, а сохраняет безгруппировок
Функция получения макета такая:
диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
диалог.Фильтр = "Файл Excel (*.xls)|*.xls|Файл Excel 2007 (*.xlsx)|*.xlsx";
Если диалог.Выбрать() Тогда
ТабДок1Лист = ПечатьСчетаЗаказа("Заказ");
ТабДок2Лист = ПолучитьВторойЛист("ЛистОбразецЗаполнения");
ТабДок3Лист = ПолучитьВторойЛист("ЛистСправочник");
ОднаКнига = Новый ПакетОтображаемыхДокументов;
Элт = ОднаКнига.Состав.Добавить();
Элт.Наименование = "Заказ";
Элт.Данные = ПоместитьВоВременноеХранилище(ТабДок1Лист);
Элт = ОднаКнига.Состав.Добавить();
Элт.Наименование = "Образец заполнения";
Элт.Данные = ПоместитьВоВременноеХранилище(ТабДок2Лист);
Элт = ОднаКнига.Состав.Добавить();
Элт.Наименование = "Справочники";
Элт.Данные = ПоместитьВоВременноеХранилище(ТабДок3Лист);
ОднаКнига.Записать(диалог.ПолноеИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
КонецЕсли;
ПоказатьТеперь новая проблема, 3 лист у меня идет с группировками, а сохраняет безгруппировок
Функция получения макета такая:
Функция ПолучитьВторойЛист(НаименованиеМакета)
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет(НаименованиеМакета);
ОблЗаголовок = Макет.ПолучитьОбласть("Макет");
ОблЗаголовок.НачатьАвтогруппировкуСтрок();
ТабДокумент.Вывести(ОблЗаголовок);
Возврат ТабДокумент;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот