База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сохранить несколько таблиц 1С на разные листы в одной книге Excel?
- В этой теме 1 ответ, 2 участника, последнее обновление 4 дня, 4 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
30 апреля 2026 в 13:00 #36907
выгрузить(сохранить,заполнить) табличный документ на определенный лист книги Excel.
в цикле делается несколько табличных документов (отчетов), нужно каждый отчет сохранить на отдельном листе одной книги (одного файла) Excel. -
30 апреля 2026 в 13:00 #36908
В 1С стандартными средствами напрямую записать несколько табличных документов на разные листы одной книги Excel через метод ТабличныйДокумент.Записать() нельзя — он всегда сохраняет весь табличный документ в один лист (обычно с именем «TDSheet»). Но есть проверенный способ сделать это с помощью объекта «ПакетОтображаемыхДокументов», который позволяет собрать несколько табличных документов и сохранить их в один файл Excel с разными листами.
Примерный алгоритм:
1. Создаёте объект ПакетОтображаемыхДокументов:
1С (Код)1Пакет = Новый ПакетОтображаемыхДокументов;2. В цикле по вашим табличным документам (отчётам) добавляете каждый в состав пакета:
1С (Код)123456Для каждого ТабДок из МассивТабличныхДокументов ЦиклЭлемент = Пакет.Состав.Добавить();Элемент.Данные = ПоместитьВоВременноеХранилище(ТабДок);// Можно задать имя листа, если нужно:Элемент.Имя = "Отчет_" + Строка(НомерОтчета);КонецЦикла;3. Сохраняете весь пакет в один файл Excel:
1С (Код)12ИмяФайла = "ПутьКФайлуОтчеты.xlsx";Пакет.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);В итоге в файле «Отчеты.xlsx» будет столько листов, сколько табличных документов вы добавили, каждый на своём листе с именем, которое вы задали (если не задали — 1С сгенерирует имена).
Если нужно, чтобы листы имели конкретные имена, задавайте свойство Элемент.Имя перед добавлением в пакет.
—
Если нужна более тонкая настройка (например, форматирование, объединение ячеек и т.п.), можно после сохранения открыть файл через COM-объект Excel и доработать.
—
Пример кода целиком:
1С (Код)12345678910111213Процедура СохранитьНесколькоТабличныхДокументовВОдинExcel(МассивТабДок)Пакет = Новый ПакетОтображаемыхДокументов;Номер = 1;Для каждого ТабДок из МассивТабДок ЦиклЭлемент = Пакет.Состав.Добавить();Элемент.Данные = ПоместитьВоВременноеХранилище(ТабДок);Элемент.Имя = "Лист_" + Строка(Номер);Номер = Номер + 1;КонецЦикла;ИмяФайла = ВременныеФайлы.Каталог + "Отчеты.xlsx";Пакет.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);Сообщить("Файл сохранён: " + ИмяФайла);КонецПроцедуры—
Если по каким-то причинам нельзя использовать ПакетОтображаемыхДокументов (например, устаревшая версия платформы), то можно выгружать табличные документы по отдельности в разные файлы, а потом объединять их средствами Excel через COM, но это сложнее и менее удобно.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.