Имя: Пароль:
1C
 
Как склеить несколько табличных документов в 1С
☑
0 Гений 1С
 
гуру
01.10.26
✎
12:13
Вывожу в один файл листы КУДИР.
В итоге последующие листы подгонятются под формат первого.
Как выводить каждый в своем формате?
Пробовал через вывести область, получаю пустой результат

    ТабДок = v8.NewObject("ТабличныйДокумент");
    Для Каждого Лист ИЗ СписокСформированныхЛистов Цикл
        ТабДок.Вывести(Лист.Значение);
        //Область = Лист.Значение.Область();
        //ТабДок.ВставитьОбласть(Область, ТабДок.Область(ТабДок.ВысотаТаблицы, 1, ТабДок.ВысотаТаблицы + Область.Низ - 1, Область.Право));
    КонецЦикла;
1 PLUT
 
гуру
01.10.26
✎
12:18
(0) старость от 2014 года


©пижжено отсюда
https://its.1c.ru/db/metod8dev/content/5792/hdoc

// Создаем пакет
Пакет = Новый ПакетОтображаемыхДокументов;

// Документы, находящиеся в этом пакете, печатаются в 5 экземплярах
Пакет.КоличествоЭкземпляров = 5;

// Добавляем документы в пакет
ЭлементПакета1 = Пакет.Состав.Добавить();
ЭлементПакета1.Данные = ПоместитьВоВременноеХранилище(ТабличныйДокумент1, УникальныйИдентификатор);
ЭлементПакета2 = Пакет.Состав.Добавить();
ЭлементПакета2.Данные = ПоместитьВоВременноеХранилище(ТабличныйДокумент2, УникальныйИдентификатор);

// Добавляем вложенный пакет для третьего документа
ВложенныйПакет = Новый ПакетОтображаемыхДокументов;
ЭлементПакета3 = Пакет.Состав.Добавить();
ЭлементПакета3.Данные = ВложенныйПакет;

// Документ во вложенном пакете печатается в 2 экземплярах
ВложенныйПакет.КоличествоЭкземпляров = 2;

// Добавляем документ во вложенный пакет
ЭлементВложенногоПакета1 = ВложенныйПакет.Состав.Добавить();
ЭлементВложенногоПакета1.Данные = ПоместитьВоВременноеХранилище(ТабличныйДокумент3, УникальныйИдентификатор);

// Печатаем пакет
Пакет.Напечатать();


Для вложенного пакета можно установить те же параметры печати, что и для всего пакета, при этом если какие-то параметры не установлены, то они определяются из параметров родительского пакета.

Пакет позволяет также экспортировать табличные документы в один PDF файл. Для этого предназначен метод пакета ЗаписатьФайлДляПечати(), которому передается полное имя файла.
2 Garykom
 
гуру
01.10.26
✎
12:22
(0) ТабДок в 1С это по сути один объект
Или разные объекты использовать как (1)

Или в одном использовать мелкую сетку (ширина и высота ячеек минимальная) для подгонки
Ориентация разных страниц аналогично извращаться с направлением текста
3 Гений 1С
 
гуру
01.10.26
✎
12:26
(1) мне нужно не в пакет, а сразу в файл
4 Гений 1С
 
гуру
01.10.26
✎
12:26
(2) по сути надо формат строк новый задать. Вроде была такая команда, не?
5 Garykom
 
гуру
01.10.26
✎
12:28
(4) Тебе СП продать?
6 Fedor-1971
 
01.10.26
✎
12:32
(4) СоздатьФорматСтрок в СП, т.е. фиксируем ширины колонок для каждого выводимого листа
7 Прохожий
 
01.10.26
✎
12:38
(3) На одном листе или на разных? Ладно, долой интриги. В конце этой ветки придут умные и скажут "делай PDF и склеивай листы в одну книжку" потом хоть на печать, хоть в почту, хоть на экран.
8 Fragster
 
гуру
01.10.26
✎
12:44
нужно в исходном документе не выводить область, а копировать. перед этим у того места, куда вставляешь область нужно сделать ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)
СоздатьФорматСтрок (CreateFormatOfRows)
Синтаксис:
СоздатьФорматСтрок()
Описание:
Создает у области новый формат строк. В новом формате строк размеры колонок будут соответствовать размерам колонок, которые были установлены в области.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:
// ТДПриемник - табличный документ, в кот. устанавливается новый формат

// Отчет - табличный документ, на основании кот. будет установлен новый формат

Процедура ДобавитьОтчет(ТДПриемник, Отчет)

    НачалоНовогоФорматаСтрок = ТДПриемник.ВысотаТаблицы + 1;
    ОбластьПрямоугольная = Отчет.Область(1, , Отчет.ВысотаТаблицы, );
    ТДПриемник.ВставитьОбласть(ОбластьПрямоугольная, ТДПриемник.Область(НачалоНовогоФорматаСтрок, 1));
    ТДПриемник.Область(НачалоНовогоФорматаСтрок, ,
        НачалоНовогоФорматаСтрок + Отчет.ВысотаТаблицы - 1, ).СоздатьФорматСтрок();
    // назначим ширину колонок у новой области формата строк

    Для Счетчик = 1 По Отчет.ШиринаТаблицы Цикл
        ТДПриемник.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = Отчет.Область(1, Счетчик).ШиринаКолонки;
    КонецЦикла;
    ТДПриемник.ВывестиГоризонтальныйРазделительСтраниц();

КонецПроцедуры // ДобавитьОтчет


Использование в версии:
Доступен, начиная с версии 8.2.
     Методическая информация
9 PLUT
 
гуру
01.10.26
✎
12:45
(3)
> мне нужно не в пакет, а сразу в файл

я х.з. что тебе нужно

ТипФайлаПакетаОтображаемыхДокументов (RepresentableDocumentBatchFileType)
Значения
DOCX (DOCX)
HTML4 (HTML4)
HTML5 (HTML5)
ODS (ODS)
PDF (PDF)
TXT (TXT)
XLS (XLS)
XLSX (XLSX)
Описание:
Типы файла для сохранения пакета отображаемых документов.
10 Fragster
 
гуру
01.10.26
✎
12:45
вон, в СП даже почти готовый код для (0)
2 + 2 = 3.9999999999999999999999999999999...