Нужно объединить несколько типовых печатных форм документов (Счет и УПД) в один.
Пытаюсь с помощью
ОбластьЯчеек.СоздатьФорматСтрок();
объединить, но Формат строк едет...
Думаю из-за того, что в типовых печатных формах уже был использован этот метод.
Хочу пробежаться про типовой печатной форме (Табличному документу) и каким-то образом найти места где был применен метод СоздатьФорматСтрок(). На ум приходит построчно бежать и сравнивать ширину ячеек внутри строки со строкой выше.
Как-нибудь можно подругому определить что был применен метод СоздатьФорматСтрок() по готовому табличному документу?
(6)Выводит, но ширина колонок слетает после того как вывелся
(1)Вот такой процедурой корректно объединились два табличных документа
&НаСервере
Процедура ПрисоединитьТабличныйДокумент1(ОсновнойДокумент, Знач ПрисоединяемыйДокумент) Экспорт
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(ПрисоединяемыйДокумент);
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("НачальнаяСтрока",Новый ОписаниеТипов("Число",новый КвалификаторыЧисла(10)));
ТЗ.Колонки.Добавить("КонечнаяСтрока",Новый ОписаниеТипов("Число",новый КвалификаторыЧисла(10)));
IDКолонки="Пусто";
НачальнаяСтрока=0;
Для Каждого Строка из ОбъектXDTO.rowsItem Цикл
//Если Строка.row.columnsID заполнено,то применен другой формат колонок
Если не Строка.row.columnsID=IDКолонки Тогда
Если НЕ НачальнаяСтрока=0 Тогда
СтрокаТЗ=ТЗ.Добавить();
СтрокаТЗ.НачальнаяСтрока=НачальнаяСтрока;
СтрокаТЗ.КонечнаяСтрока=Строка.index;
Иначе
НачальнаяСтрока=Строка.index+1;
КонецЕсли;
НачальнаяСтрока=Строка.index+1;
IDКолонки=Строка.row.columnsID;
КонецЕслИ;
КонецЦикла;
СтрокаТЗ=ТЗ.Добавить();
СтрокаТЗ.НачальнаяСтрока=НачальнаяСтрока;
СтрокаТЗ.КонечнаяСтрока=ОбъектXDTO.rowsItem.Count();
ТЗ.Свернуть("НачальнаяСтрока,КонечнаяСтрока");
ТЗ.Сортировать("НачальнаяСтрока Возр");
Для Каждого СтрокаТЗ из ТЗ Цикл
ВставляемаяОбласть=ПрисоединяемыйДокумент.Область(СтрокаТЗ.НачальнаяСтрока,,СтрокаТЗ.КонечнаяСтрока);
ВставляемаяОбласть.СоздатьФорматСтрок();
ОбластьПриемник= ОсновнойДокумент.Область(ОсновнойДокумент.ВысотаТаблицы+1,,ОсновнойДокумент.ВысотаТаблицы+1+СтрокаТЗ.КонечнаяСтрока-СтрокаТЗ.НачальнаяСтрока);
ОсновнойДокумент.ВставитьОбласть(ВставляемаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоВертикали);
КонецЦикла;
КонецПроцедуры
(6)Выводит, но ширина колонок слетает после того как вывелся
(1)Вот такой процедурой корректно объединились два табличных документа
&НаСервере
Процедура ПрисоединитьТабличныйДокумент1(ОсновнойДокумент, Знач ПрисоединяемыйДокумент) Экспорт
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(ПрисоединяемыйДокумент);
ТЗ=Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("НачальнаяСтрока",Новый ОписаниеТипов("Число",новый КвалификаторыЧисла(10)));
ТЗ.Колонки.Добавить("КонечнаяСтрока",Новый ОписаниеТипов("Число",новый КвалификаторыЧисла(10)));
IDКолонки="Пусто";
НачальнаяСтрока=0;
Для Каждого Строка из ОбъектXDTO.rowsItem Цикл
//Если Строка.row.columnsID заполнено,то применен другой формат колонок
Если не Строка.row.columnsID=IDКолонки Тогда
Если НЕ НачальнаяСтрока=0 Тогда
СтрокаТЗ=ТЗ.Добавить();
СтрокаТЗ.НачальнаяСтрока=НачальнаяСтрока;
СтрокаТЗ.КонечнаяСтрока=Строка.index;
Иначе
НачальнаяСтрока=Строка.index+1;
КонецЕсли;
НачальнаяСтрока=Строка.index+1;
IDКолонки=Строка.row.columnsID;
КонецЕслИ;
КонецЦикла;
СтрокаТЗ=ТЗ.Добавить();
СтрокаТЗ.НачальнаяСтрока=НачальнаяСтрока;
СтрокаТЗ.КонечнаяСтрока=ОбъектXDTO.rowsItem.Count();
ТЗ.Свернуть("НачальнаяСтрока,КонечнаяСтрока");
ТЗ.Сортировать("НачальнаяСтрока Возр");
Для Каждого СтрокаТЗ из ТЗ Цикл
ВставляемаяОбласть=ПрисоединяемыйДокумент.Область(СтрокаТЗ.НачальнаяСтрока,,СтрокаТЗ.КонечнаяСтрока);
ВставляемаяОбласть.СоздатьФорматСтрок();
ОбластьПриемник= ОсновнойДокумент.Область(ОсновнойДокумент.ВысотаТаблицы+1,,ОсновнойДокумент.ВысотаТаблицы+1+СтрокаТЗ.КонечнаяСтрока-СтрокаТЗ.НачальнаяСтрока);
ОсновнойДокумент.ВставитьОбласть(ВставляемаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоВертикали);
КонецЦикла;
КонецПроцедуры
Изначальная задача запихнуть на один лист Счет и УПД, чтобы сэкономить бумагу.
Счета и УПД печатаются из Реестра (собственной разработки), которая получает табличные документы по стандартным алгоритмам, а потом либо кидает на принтер либо сохраняет в кучу файлов...
(6)
Предыдущий коммент не дописал.
Видимо в каждом табличном документе уже используется несколько форматов строк, при этом надо учесть, что есть исходный.
Вот здесь препарировали табличный документ, чтобы выявить области с новым форматом строк.
https://forum.infostart.ru/forum9/topic221584/