Нужно объединить несколько типовых печатных форм документов (Счет и УПД) в один.
Пытаюсь с помощью
ОбластьЯчеек.СоздатьФорматСтрок();
объединить, но Формат строк едет...
Думаю из-за того, что в типовых печатных формах уже был использован этот метод.
Хочу пробежаться про типовой печатной форме (Табличному документу) и каким-то образом найти места где был применен метод СоздатьФорматСтрок(). На ум приходит построчно бежать и сравнивать ширину ячеек внутри строки со строкой выше.
Как-нибудь можно подругому определить что был применен метод СоздатьФорматСтрок() по готовому табличному документу?
Пытаюсь с помощью
ОбластьЯчеек.СоздатьФорматСтрок();
объединить, но Формат строк едет...
Думаю из-за того, что в типовых печатных формах уже был использован этот метод.
Хочу пробежаться про типовой печатной форме (Табличному документу) и каким-то образом найти места где был применен метод СоздатьФорматСтрок(). На ум приходит построчно бежать и сравнивать ширину ячеек внутри строки со строкой выше.
Как-нибудь можно подругому определить что был применен метод СоздатьФорматСтрок() по готовому табличному документу?
По теме из базы знаний
- [COMMONITER] Коммонитер - объединение табличных частей любых доков
- [XLStoMXL] Конвертер документов MS Excel 2000 в формат табличного документа 1С:Предприятия
- Вывод различных табличных документов в один ("склеивание" печатных форм)
- Объединение нескольких печатных форм в один табличный документ
- Одинакова ли в табличном документе реальная ширина колонок с одинаковой номинальной шириной
Найденные решения
(6)Выводит, но ширина колонок слетает после того как вывелся
(1)Вот такой процедурой корректно объединились два табличных документа
(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)Вот такой процедурой корректно объединились два табличных документа
&НаСервере
Процедура ПрисоединитьТабличныйДокумент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+СтрокаТЗ.КонечнаяСтрока-СтрокаТЗ.НачальнаяСтрока);
ОсновнойДокумент.ВставитьОбласть(ВставляемаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоВертикали);
КонецЦикла;
КонецПроцедуры
Показать
Изначальная задача запихнуть на один лист Счет и УПД, чтобы сэкономить бумагу.
Счета и УПД печатаются из Реестра (собственной разработки), которая получает табличные документы по стандартным алгоритмам, а потом либо кидает на принтер либо сохраняет в кучу файлов...
Счета и УПД печатаются из Реестра (собственной разработки), которая получает табличные документы по стандартным алгоритмам, а потом либо кидает на принтер либо сохраняет в кучу файлов...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот