объединение табличных документов

1. AlexeyIsip 26 14.03.22 11:38 Сейчас в теме
Нужно объединить несколько типовых печатных форм документов (Счет и УПД) в один.
Пытаюсь с помощью
ОбластьЯчеек.СоздатьФорматСтрок();
объединить, но Формат строк едет...
Думаю из-за того, что в типовых печатных формах уже был использован этот метод.
Хочу пробежаться про типовой печатной форме (Табличному документу) и каким-то образом найти места где был применен метод СоздатьФорматСтрок(). На ум приходит построчно бежать и сравнивать ширину ячеек внутри строки со строкой выше.
Как-нибудь можно подругому определить что был применен метод СоздатьФорматСтрок() по готовому табличному документу?
По теме из базы знаний
Найденные решения
9. AlexeyIsip 26 16.03.22 07:44 Сейчас в теме
(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+СтрокаТЗ.КонечнаяСтрока-СтрокаТЗ.НачальнаяСтрока);
		ОсновнойДокумент.ВставитьОбласть(ВставляемаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоВертикали);		
	КонецЦикла;  
КонецПроцедуры
Показать
PlatonStepan; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. AlexeyIsip 26 16.03.22 07:44 Сейчас в теме
(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+СтрокаТЗ.КонечнаяСтрока-СтрокаТЗ.НачальнаяСтрока);
		ОсновнойДокумент.ВставитьОбласть(ВставляемаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоВертикали);		
	КонецЦикла;  
КонецПроцедуры
Показать
PlatonStepan; +1 Ответить
2. laperuz 47 14.03.22 11:42 Сейчас в теме
А задача-то изначально какая?
Зачем их в один документ объединять?
3. gudvin77 14.03.22 13:01 Сейчас в теме
В первый документ второй вставьте как область (с собственным форматом строк)
5. AlexeyIsip 26 14.03.22 15:00 Сейчас в теме
(3)
с собственным форматом строк

Пользуюсь вот этой функцией
https://infostart.ru/public/944987/
4. AlexeyIsip 26 14.03.22 14:58 Сейчас в теме
Изначальная задача запихнуть на один лист Счет и УПД, чтобы сэкономить бумагу.
Счета и УПД печатаются из Реестра (собственной разработки), которая получает табличные документы по стандартным алгоритмам, а потом либо кидает на принтер либо сохраняет в кучу файлов...
6. PlatonStepan 38 15.03.22 03:15 Сейчас в теме
Получили табдок1 и табдок2.
И не срабатывает
табдок_всё.Вывести(табдок1);
7. PlatonStepan 38 15.03.22 04:10 Сейчас в теме
(6)
Предыдущий коммент не дописал.
Видимо в каждом табличном документе уже используется несколько форматов строк, при этом надо учесть, что есть исходный.
Вот здесь препарировали табличный документ, чтобы выявить области с новым форматом строк.
https://forum.infostart.ru/forum9/topic221584/
8. AlexeyIsip 26 15.03.22 11:27 Сейчас в теме
(7) Спасибо за инфу, немного не то, тк мне нужно оставить форматирование, а не удалять, но попробую на основе этого найти границы областей
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот