При разработке печатных форм в среде 1С:Предприятие часто возникает задача объединения нескольких готовых макетов или сформированных табличных документов в один общий отчет. Рассмотрим, как программно соединить два файла формата ТабличныйДокумент, чтобы сохранить структуру данных и группировки.
Если ваша задача состоит в том, чтобы просто расположить одну форму под другой, не прибегая к сложным манипуляциям с областью ячеек, воспользуйтесь методом Вывести(). Это наиболее простой и надежный способ, который корректно переносит группировки строк из исходных документов.
Для реализации этого метода выполните следующие действия:
ТабличныйДокумент.Вывести() для каждого исходного документа.Разберем пример кода:
ДокРезультат = Новый ТабличныйДокумент;
ДокРезультат.Вывести(Док1);
ДокРезультат.Вывести(Док2);
ДокРезультат.Показать();
Этот подход идеален, когда макеты имеют схожую структуру колонок. Обратите внимание, что при таком выводе каждый документ начинается с новой строки, что позволяет сохранить логическую целостность разделов.
Если вам требуется более гибкое управление расположением фрагментов, например, вставка одной области в конкретное место другого документа или объединение форм с разным количеством колонок, используйте метод ВставитьОбласть(). Этот метод позволяет работать с конкретными диапазонами ячеек.
Синтаксис метода следующий: ВставитьОбласть(<ИсходнаяОбласть>, <ОбластьПриемник>, <Сдвиг>, <ЗаполнятьПараметры>).
Рассмотрим, как это работает на практике:
Область в исходном документе, которую необходимо перенести.ОбластьПриемник в итоговом документе, куда будут помещены данные.Сдвиг, чтобы определить, нужно ли раздвигать существующие строки или колонки в целевом документе.Важным преимуществом этого метода является возможность управления параметром ЗаполнятьПараметры. Если вы передадите Истина, все именованные параметры внутри вставляемой области сохранят свои имена, что позволит вам заполнить их данными уже после объединения документов.
При объединении таблиц часто возникает проблема «разрушения» группировок. Чтобы этого избежать, придерживайтесь следующих рекомендаций:
Вывести() группировки обычно сохраняются автоматически, так как 1С копирует объект целиком.ВставитьОбласть(), попробуйте предварительно создать структуру в новом документе или программно перенести настройки через свойства ГруппировкаСтрок и ГруппировкаКолонок у соответствующих областей ячеек.СоздатьФорматСтрок(). Это позволит привести структуру строк обоих документов к единому стандарту, предотвращая визуальные искажения при слиянии.Помните, что перед выполнением вставки стоит проверить соответствие колонок: если в одном макете 5 колонок, а в другом 10, метод вставки может сместить данные, что приведет к некорректному отображению печатной формы. В таких случаях мы рекомендуем сначала привести оба документа к единой ширине колонок или объединять данные на уровне источников (например, собирать все данные в одну ТаблицуЗначений перед генерацией итогового табличного документа).
Экспериментируйте с данными методами, и вы сможете создавать сложные и гибкие печатные формы, которые будут выглядеть профессионально и отвечать любым требованиям вашего учета.