Запись одной книги Excel на нескольких листах средствами 1С (без внешних компонент)

14.01.19

Интеграция - Загрузка и выгрузка в Excel

Пользователи часто просят сохранить им стопиццот отчетов в один файл Excel, чтобы отчеты были в одном файле. Ну или клиент хочет счет, накладную и счет-фактуру получить в одном документе. 1С умеет это делать без всяких там COM-объектов. Давайте разберемся, куда нажимать и что крутить.

Сохранение нескольких табличных документов в одну книгу Excel

ВВЕДЕНИЕ

В 1С миллион лет назад появилась возможность сохранять табличный документ в Excel. А с версии 8.3.какой-то там еще и читать Excel в этот самый табличный документ. При этом прочитать 1С может документ с произвольным количеством закладок (книг), а вот если записать табличный документ обратно, то все содержимое будет помещено в лист "TDSheet" (ну или как-то так).

Меня давно мучила мысль о том, почему 1С не может записать несколько листов в одну книгу. Оказалось, что может. Давайте разберемся, каким образом она это делает...

НОВЫЕ СТАРЫЕ ОБЪЕКТЫ

Уже давно в 1С существует такой объект, как "ПакетОтображаемыхДокументов". Если зайти в синтаксис-помощник, то толку от этого будет мало - скудность информации зашкаливает...

Что же делает этот объект? Он позволяет записать несколько файлов в один. Как оказалось, среди типов записываемых документов есть и Excel.

Познакомился я с этим замечательным объектом при осуществлении поддержки механизма автоматической печати документов, который прекрасно жил на моей прошлой работе до часа Х. Час Х настал тогда, когда сохраняемые 1С PDF перестали сохраняться в том виде, в котором они должны были бы быть напечатаны. До какого-то времени PDF из табличного документа сохранялись таким образом, что количество экземпляров для печати становилось количеством повторов в PDF-файле в соответствии с настройками печати конкретного табличного документа. И вот пришел час Х - обновили платформу и автопечать выплюнула все документы в одном экземпляре. Этакая подстава от 1С (кстати, последняя подстава от желтых была в последней версии, и связана она с тем, что теперь нельзя редактировать строку табличной части, если выделено более одной строки, а кое-кто пользовался редактированием выделенных строк для того, чтобы установить всем выделенным строкам отредактированное значение - это было очень удобно, спасибо что лишили нас этого), которую совсем не ждешь. Стали разбираться и нашли в документации, что теперь для сохранения PDF в том виде, в котором должен быть напечатан документ, следует использовать новый метод объекта "ПакетОтображаемыхДокументов", который пишет как раз PDF-файл (и никакой другой).

Вообще, на просторах желтого сайта есть пример использования данного объекта. Смотрите здесь. Давайте разберемся, как это поможет нам сохранить несколько табличных документов в одну книгу.

ОПИСАНИЕ ОБЪЕКТА

Сам по себе пакет отображаемых документов по большому состоит из коллекции "Состав", имеющей тип "ЭлементПакетаОтображаемыхДокументов", в который, как следует из информации по ссылке выше, можно поместить в том числе и пакет отображаемых документов. Т.е. возможности коллекции достаточно большие - можно поместить в нее несколько пакетов, для которых количество печатаемых экземпляров будет отличаться, в итоге можно напечатать 10 экземпляров для первого документа, и 3 для второго. Также у этого объекта есть парочка методов сохранения - для PDF и для всего на свете. Ну и их экземпляры для асинхронной работы тоже наличествуют.

Для создания объекта существует простой конструктор:

ОднаКнига = Новый ПакетОтображаемыхДокументов;

Создав объект "ОднаКнига", мы можем в его состав поместить несколько табличных документов каким-то таким образом:

Элт = ОднаКнига.Состав.Добавить();
Элт.Данные = ПоместитьВоВременноеХранилище(ТабличныйДокумент);

А сохранить в одну книгу все это хозяйство можно так:

ОднаКнига.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);

ЗАКЛЮЧЕНИЕ

Данный метод работает в Linux - у меня на скриншоте как раз конфигуратор, открытый на Ubuntu 18.4, в котором я и отлаживал тестовый примерчик. В итоге получилась замечательная обработка, которая создает столько закладок, сколько вам нужно, открывает в закладке файл Excel и сохраняет файлы со всех закладок в одну книгу. Реализовать данную обработку вы можете в качестве домашнего задания...

Excel Пакет Табличный Документ Одна Книга COM

См. также

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    234447    1062    898    

1003

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы преобразуете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, Детский мир, МагнитЭкспресс (быв.Казань-Экспресс), Леруа Мерлен, ЭНФАНТА (Акушерство), ЛаМода, Летуаль, Твой дом, Золотое Яблоко в документы "Отчет комиссионера (агента) о продажах" и другие. Работает в 1С:БП 3.0, 1С:БП 3.0 КОРП, 1С:УТ 11, 1С:УНФ, 1С:КА 2, 1С:ERP Управление предприятием. Возможность подключить любые маркетплейсы. Анализ продаж ОZON. 30 дней БЕСПЛАТНОГО пользования!

3600 руб.

12.08.2021    35541    348    68    

155

SALE! 30%

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Бухгалтер Пользователь Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    107124    313    173    

326

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 10.10.2024, версия 9.8 - 9.13)

15600 руб.

20.11.2015    156144    376    378    

513

Маркетплейсы Загрузка и выгрузка в Excel Программист Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Загрузка данных отчета о реализации и продаже товаров из сервиса Яндекс.Маркета «Беру» в 1С из Отчетов Excel для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3; Управление нашей фирмой, редакция 3.0 и Розница, редакция 3.0 в документ «Отчет комиссионера о продажах».

4800 руб.

09.12.2020    25379    251    1    

114

SALE! 15%

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

11100 9435 руб.

29.10.2014    216809    657    527    

456

Загрузка и выгрузка в Excel Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса "Детский мир" для конфигурации 1С: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3; Управление нашей фирмой, редакция 3.0 и Розница, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

23.01.2022    11144    52    0    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ibrogim 1327 14.01.19 14:28 Сейчас в теме
Кассно. Можно ещё с этим совместить https://infostart.ru/public/607750/
2. starik-2005 3088 14.01.19 14:32 Сейчас в теме
(1) а Вы, кстати, можете прикрутить туда этот вариант сохранения в Excel (ссылка на данную статью подразумевается) )))
12. Ibrogim 1327 15.01.19 11:49 Сейчас в теме
(2) Прикрутил Ссылку на вас вставил. Спасибо! Хорошая статья про хорошую технологию !
3. kote 537 14.01.19 17:25 Сейчас в теме
Свои названия листам можно давать?
4. starik-2005 3088 14.01.19 17:40 Сейчас в теме
20. m_o 54 29.04.19 16:13 Сейчас в теме
(4) подскажите, пожалуйста, как присвоить имена листам?
21. m_o 54 29.04.19 16:59 Сейчас в теме
(20) нашла сама -ЭлементПакетаОтображаемыхДокументов.Наименование
denissa; eViLL; Dima_Mazhor; Simonov_NPM; Mozgolom1988; starik-2005; +6 Ответить
5. script 128 14.01.19 23:42 Сейчас в теме
Капец. Как я мог это пропустить?
6. acanta 15.01.19 01:00 Сейчас в теме
Супер. А в стандартной пакетной печати счет фактура + счет + накладная сохранение в екселе отдельно каждый файл если не ошибаюсь.
9. starik-2005 3088 15.01.19 11:22 Сейчас в теме
(6)
А в стандартной пакетной печати счет фактура + счет + накладная сохранение в екселе отдельно каждый файл если не ошибаюсь.
Есть мнение, что разработчики типовых сами не знают весь функционал 1С.
EvgeTrofi; Albert_2008; ДимокШ; 7OH; wowik; izidakg; IgorS; rovenko.n; TShef; +9 Ответить
7. German_Tagil 43 15.01.19 05:40 Сейчас в теме
8. John_d 5891 15.01.19 10:23 Сейчас в теме
10. Ibrogim 1327 15.01.19 11:29 Сейчас в теме
(0),
ОднаКнига.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
Чтото я у этого объекта не вижу метода Записать() ...
Сорри, старая платформа )
11. starik-2005 3088 15.01.19 11:39 Сейчас в теме
(10)
Сорри, старая платформа )
Очень старая )))
13. Serega456 12 16.01.19 11:57 Сейчас в теме
К сожалению данный функционал доступен только с 8.3.12
14. starik-2005 3088 16.01.19 14:52 Сейчас в теме
(13) так 8.3.12 уже морально устарела. Для бухни типовой уже 8.3.13 нужна.
16. kirillkr 29 17.01.19 14:29 Сейчас в теме
15. kirillkr 29 17.01.19 14:27 Сейчас в теме
Спасибо, отличное рабочее решение. Если бы можно уже имеющийся многостраничный файл Excel загрузить в массив табличных документов, то можно было бы добавлять страницы в уже имеющийся файл Excel.
17. starik-2005 3088 17.01.19 14:35 Сейчас в теме
(15)
Если бы можно уже имеющийся многостраничный файл Excel загрузить в массив табличных документов, то можно было бы добавлять страницы в уже имеющийся файл Excel.
В действительности при загрузке Excel в табличный документ, в нем уже в коллекции областей содержатся поименованные области, соответствующие странице Excel. Можно вывести эти области по-одной в новый табличный документ и получить таким образом массив:
  МассивТабДокументов = Новый Массив;
  Для каждого Область ИЗ ТабличныйДокумент.Области Цикл
    НовыйТабДок = Новый ТабличныйДокумент;
    НовыйТабДок.Вывести(Область);
    МассивТабДокументов.Добавить(НовыйТабДок);
  КонецЦикла;


Не скажу, что вот именно такой код получится, но где-то тут.
18. kirillkr 29 18.01.19 11:16 Сейчас в теме
(17)
МассивТабДокументов = Новый Массив;
Для каждого Область ИЗ ТабличныйДокумент.Области Цикл
НовыйТабДок = Новый ТабличныйДокумент;
НовыйТабДок.Вывести(Область);
МассивТабДокументов.Добавить(НовыйТабДок);
КонецЦикла;


НовыйТабДок.ВставитьОбласть(Область);

К сожалению потерялась вся структура исходного листа. Да еще и съехала на несколько сот строк ниже. Интересно, можно ли как-нибудь прочитать многостраничный Excel с его группировками в Табличный документ без самого Excel или это фантастика?
22. СергейК 51 16.07.19 16:06 Сейчас в теме
(18) Подскажите так и не нашли способ прочитать многостраничный Excel ?
Нужно открыть Книгу Excel, прочитать данные, кое что изменить и записать обратно без порчи файла.
23. kirillkr 29 17.07.19 09:45 Сейчас в теме
(22) к сожалению, нет. В 14 и 15 платформе не проверял, но в 12 форматирование не сохраняется.
19. Oleg_nsk 279 23.01.19 05:38 Сейчас в теме
Если кто не знал еще одна фича пакета отображаемых документов: при сохранении нескольких табличных документов в Word можно добиться чередования книжной и альбомной ориентации страниц в одном документе
sorbo999; Flashill; user1143443; Merkalov; user774630; starik-2005; +6 Ответить
24. kraspila 95 25.10.19 14:13 Сейчас в теме
Полезная информация, плюс автору за раскрытие и минус справке 1С за примитивность
AllexSoft; ivprovotorov; +2 Ответить
25. NoMax 233 26.12.19 13:19 Сейчас в теме
Да все хорошо, но есть один момент, при сохранении в Excel все листы "Сгруппированы" и это как оказалось не очень удобно для дальнейшей работы с сохраненным файлом Excel.
26. 7OH 70 27.07.20 12:49 Сейчас в теме
А не подскажете, как при сохранении через ПакетОтображаемыхДокументов сделать так, чтобы при открытии файла был активен ОДИН конкретный лист, а не все имеющиеся сразу?
Поясню - сохраняем два листа, открываем файл - кнопка фильтр не работает, так как выделены оба листа. Приходится сначала клацать на один лист, потом на первый и тогда всё работает.
Infector; +1 Ответить
37. Infector 201 22.12.21 17:15 Сейчас в теме
(25)
(26)
как-то удалось победить? Есть способ разгруппировать программно методами Excel.Application?
38. 7OH 70 23.12.21 18:02 Сейчас в теме
(37) не удалось. Надо 1с просить.
Application не вариант. Я тогда и мимо 1с через него сделаю
39. starik-2005 3088 24.12.21 10:11 Сейчас в теме
(38)
не удалось
Пользователя напрягает жамкнуть на лист? Серьезно? Ну ок...
40. 7OH 70 24.12.21 10:38 Сейчас в теме
(39) серьезнее не бывает.
Вы бы сами попробовали
Открываешь файл
Пытаешься включить фильтр, а оно не даёт .
И сидишь как дурак.
Хорошо я знаю уже, что нужно выделение листа снять
А бух этого не запомнит
41. starik-2005 3088 24.12.21 10:40 Сейчас в теме
(40)
А бух этого не запомнит
Если он делает это раз в месяц - да, не запомнит. Но ради отчета, который он раз в месяц открывает, нужно ли его выгружать в ёксель?
42. 7OH 70 24.12.21 10:50 Сейчас в теме
(41) с такой логикой и 1С не нужна - можно сразу учет в экселике вести, но ведь хочется удобно - в 1С )))
зачем выгружают отчеты в эксель ?
чтобы что-то досчитывать и доделывать по другим данным.
И даже каждый день если пользоваться - обычно голова забита не одним приколом от 1С,а кучей других проблем и просто хочется, чтобы оно работало без костылей
43. starik-2005 3088 24.12.21 10:51 Сейчас в теме
(42)
1С не нужна
Это очень правильный вывод в действительности. Особенно исходя из сообщения в целом.

(42)
хочется, чтобы оно работало без костылей
Это не про 1С. Это вообще не про современный софт.
44. MrBisquit 11.05.22 10:33 Сейчас в теме
(26) Если распаковать xlsx и открыть \xl\worksheets\sheet2.xml, у тега sheetView будет атрибут tabSelected. Его нужно удалить:
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
Пакет.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);

// Распаковываем
Каталог = КаталогВременныхФайлов() + Строка(Новый УникальныйИдентификатор);
Архив = Новый ЧтениеZipФайла(ИмяФайла);
Архив.ИзвлечьВсе(Каталог);
Архив.Закрыть();
УдалитьФайлы(ИмяФайла); // Оригинал нам больше не нужен

НайденныеФайлы = НайтиФайлы(Каталог + "\xl\worksheets", "*.xml", Ложь); // Ищем файлы листов
Для Каждого Файл Из НайденныеФайлы Цикл
	Если Файл.ИмяБезРасширения = "sheet1" Тогда
		Продолжить; // Первый лист пропускаем
	КонецЕсли;
	ТекстовыйДокумент = Новый ТекстовыйДокумент;
	ТекстовыйДокумент.Прочитать(Файл.ПолноеИмя);
	ТекстXML = ТекстовыйДокумент.ПолучитьТекст();
	ТекстXML = СтрЗаменить(ТекстXML, "tabSelected=""true""", ""); // Снимаем с листа выделение раз
	ТекстXML = СтрЗаменить(ТекстXML, "tabSelected=""1""", ""); // Снимаем с листа выделение два
	ТекстовыйДокумент.УстановитьТекст(ТекстXML);
	ТекстовыйДокумент.Записать(Файл.ПолноеИмя);
КонецЦикла;

// Запаковываем файлы обратно
Архив = Новый ЗаписьZipФайла(ИмяФайла);
Архив.Добавить(Каталог + "/*", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
Архив.Записать();

// Подчищаем
УдалитьФайлы(Каталог);
Показать
igor63; Jokemas; +2 Ответить
46. Seeid 21.06.22 17:02 Сейчас в теме
(44)
+ дополню
Есть вариант побыстрее, если нужно обработать книгу через com-объект.
Например, для устранения проблемы программной установки защиты на лист (Protect).
После открытия книги com-объектом пишем подобное:

// Делаем тот самый перещелк по листам програмно, это быстрее чем распаковка, обработка запаковка
Для Сч = 1 По Книга.Worksheets.Count Цикл
  Книга.Worsheets(Сч).Select();
КонецЦикла;

27. user631630_al_kalacheva 09.09.20 13:39 Сейчас в теме
Очень помогло! Спасибо!
28. starik-2005 3088 18.12.20 16:46 Сейчас в теме
(0) Кстати, 1С-неги исправились и теперь в документации по сцылке все стало куда лучше.
29. blandinko 16.03.21 16:56 Сейчас в теме
Добрый день!
При использовании этого метода сохранения нескольких табличных документов в одну книгу Excel столкнулась с ошибкой:

Ошибка при вызове метода контекста (Записать): Ошибка экспорта табличного документа: Документ Excel 2007 не может содержать более 16384 колонок и 1048576 строк


Выгружается два табличных документа, каждый содержит не более 15 столбцов и 50 строк.
При этом каждый из них по отдельности прекрасно выгружается этим же методом. Также отрабатывает без ошибок, если один ТабДок заполнен, а второй пустой.

В чем проблема не могу понять.

Выполняемый код:

&НаКлиенте
Процедура СохранитьВКнигуExcel(Команда)
	
	Состояние("Выполняется сохранение файла...");
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");

	МассивДанных = Новый Массив;
		
	ТабДок = Новый ТабличныйДокумент;
	ПечатьФ4НаСервере(ТабДок);
	
	Соответствие = Новый Соответствие;
	Соответствие.Вставить("АдресВХранилище", ПоместитьВоВременноеХранилище(ТабДок));
	Соответствие.Вставить("Имя", "Ф4");
	
	МассивДанных.Добавить(Соответствие);
	
	ТабДок = Новый ТабличныйДокумент;
	ПечатьФ5НаСервере(ТабДок);
	
	Соответствие = Новый Соответствие;
	Соответствие.Вставить("АдресВХранилище", ПоместитьВоВременноеХранилище(ТабДок));
	Соответствие.Вставить("Имя", "Ф5");
	
	МассивДанных.Добавить(Соответствие);
	
	СформироватьФайлПакетом(ИмяВременногоФайла, МассивДанных);
	
КонецПроцедуры


&НаКлиенте
Процедура СформироватьФайлПакетом(ИмяФайла, МассивДанных)

	Пакет = Новый ПакетОтображаемыхДокументов;
  	Для Каждого ДанныеЛиста Из МассивДанных Цикл
		АдресВХранилище = ДанныеЛиста["АдресВХранилище"];
		ЭлементПакета = Пакет.Состав.Добавить();
		ЭлементПакета.Наименование = ДанныеЛиста["Имя"];
		ЭлементПакета.Данные = АдресВХранилище;
  	КонецЦикла;
 	Попытка
		Пакет.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
		ПоказатьПредупреждение(, "Файл выгружен в " + ИмяФайла);
  	Исключение
		ПоказатьПредупреждение(,"Ошибка выгрузки в " + ИмяФайла);
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры
Показать
30. starik-2005 3088 16.03.21 17:13 Сейчас в теме
(29)
В чем проблема не могу понять.
Скорее всего в платформе проблема. 1С-неги про пакет написали, что у них есть проблемы сохранения в ворд, видимо в эксель та же проблема. Но проявляется при достаточно большом количестве листов. У меня в эксель даже при сотне листов никаких проблем не было. Но я использую конструктор для добавления адреса - может это меня спасает...

	Т = Новый ТабличныйДокумент;
	Т.Область(1,1).Текст = 1;
	Т.Область(1,2).Текст = 2;
	
	П = Новый ПакетОтображаемыхДокументов;
	С = П.Состав.Добавить(ПоместитьВоВременноеХранилище(Т));
	
	Т = Новый ТабличныйДокумент;
	Т.Область(1,1).Текст = 3;
	Т.Область(1,2).Текст = 4;
	
	С = П.Состав.Добавить(ПоместитьВоВременноеХранилище(Т));
	ИФ = ПолучитьИмяВременногоФайла("xlsx");
	Сообщить( ИФ );
	П.Записать(ИФ, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
Показать
31. blandinko 16.03.21 17:52 Сейчас в теме
(29)
(30)

Внезапно помогло принудительное задание нового уникального идентификатора при помещении табличных документов во временное хранилище:

Соответствие.Вставить("АдресВХранилище", ПоместитьВоВременноеХранилище(ТабДок, Новый УникальныйИдентификатор));
eViLL; irtk; ДимокШ; sapervodichka; Ekovichev; +5 Ответить
32. starik-2005 3088 18.03.21 11:03 Сейчас в теме
(31)
задание нового уникального идентификатора при помещении табличных документов во временное хранилище
Да, у 1С есть время жизни, и оно без идентификатора может заканчиваться при смене контекста, а с идентификатором оно заканчивается только при закрытии формы с этим ИД.
50. Redempty 04.12.23 06:58 Сейчас в теме
(32) У меня возникла схожая проблема, только она не решается вышеуказанными методами, если сможете мне помочь в теме ниже, буду очень благодарен
https://forum.infostart.ru/forum15/topic306763/
33. Matveev_VS 166 13.04.21 17:15 Сейчас в теме
Очень полезно. Спасибо.
34. zorky80 18 01.09.21 12:34 Сейчас в теме
Спасибо! А кто подскажет, как вывести таким способом табДок - но с группировками (иерархией) справочника??? Сталкивался кто?
35. starik-2005 3088 01.09.21 13:17 Сейчас в теме
(34)
с группировками
А проблема в чем? В СКД можете группировку с иерархией сделать и записывайте в эксель.
36. 3dice 26 16.09.21 17:03 Сейчас в теме
Супер. Спасибо огромное!
45. pstrig 03.06.22 11:43 Сейчас в теме
Здорово!
Спасибо! Очень помогли с .xlsx
47. olbir 01.06.23 10:53 Сейчас в теме
Спасибо за статью!
Подскажите, а как на отдельном листе Excel вывести Титульный лист отчета, в котором содержатся и параметры СКД, например период отсчета?
48. olbir 01.06.23 14:44 Сейчас в теме
Разобралась сама.
starik-2005; +1 Ответить
49. 1395969 71 15.09.23 06:26 Сейчас в теме
Спасибо за подсказку
Немного развил Вашу идею
Была задача присвоить каждому листу конкретные наименования
Реализовал таким образом:
https://infostart.ru/1c/tools/1861758/
51. lastpioneer 235 23.02.24 13:38 Сейчас в теме
Что бы у каждого листа было своё имя нужно добавить 1 строку кода, к тому что автор статьи выложил:


ОднаКнига = Новый ПакетОтображаемыхДокументов;
	
	Элт = ОднаКнига.Состав.Добавить();
	Элт.Данные = ПоместитьВоВременноеХранилище(ТабДок1);

	Элт.Наименование = "ИмяЛиста1";
	
	Элт = ОднаКнига.Состав.Добавить();
	Элт.Данные = ПоместитьВоВременноеХранилище(ТабДок2);

	Элт.Наименование = "ИмяЛиста2";                                           
	
	ОднаКнига.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);
Показать
52. starik-2005 3088 23.02.24 13:41 Сейчас в теме
(51)
о бы у каждого листа было своё имя нужно добавить 1 строку кода, к тому что автор статьи вылож
https://forum.infostart.ru/forum15/topic207638/#message2205836
53. lastpioneer 235 24.02.24 15:41 Сейчас в теме
(52) Где же вы были раньше! Три раза перечитывал, уже решился 3 мани потратить и случайно в отладчике увидел "Элт.наименование". От радости написал. А на до было внимательнее читать :)

П.С. И всё таки автору советую в статью этот факт добавить....
54. starik-2005 3088 25.02.24 19:22 Сейчас в теме
(53)
добавить
Прокурор добавит.
Синтаксис-помощник надо читать.
Оставьте свое сообщение