Макет табличного документа із заздалегідь заданими угрупованнями

Як вивести макет табличного документа, зберігши при цьому угруповання колонок

Зіткнувся допіру з проблемою: є друкована форма з макетом табличного документа (далі макет), з якого збирається результуючий ТабДок (далі результат). У макеті задана складна ієрархія угруповань колонок, при цьому кількість колонок результату не збільшується, тобто результат росте тільки в довжину (наприклад, додаються рядки табличній частини), а ширина обмежена шириною заздалегідь намальованого макета. У зв'язку з цим варто логічне запитання про те, як вивести в результат задані в макеті угруповання. Напевно багато хто знає, що якщо просто виводити області макета в результат, то угруповання, будуть губитися. А програмно прописувати рівні для кожної колонки і виводити їх окремо в циклі, в даному випадку абсолютно позбавлене необхідності.

Значить, прийшов час струшувати пил з бубна і якимось чином задобрювати богів 1С.

Не знайшовши відповіді в СП у колег і у яндекса. довелося попотіти і методом наукового тику знайти-таки заповітне рішення.

Процедура КнопкаВиполнітьНажатіе (Кнопка)

Макет = ПолучітьМакет ( "Макет");

ОбластьШапка = Макет. ПолучітьОбласть ( "Шапка");

ТабДок = новий ТаблічнийДокумент;

// Після виведення в ТабДок макета з угрупованнями, в ТабДоке встановлюються всі угруповання макета

// Якщо висновок не макет, а область макета, то угруповання не переносяться

//Т.е. при застосуванні методу "ПолучітьОбласть" угруповання в даній області не враховуються, як ніби їх не було

// Угруповання колонок в новому табличному документі встановлюються ПЕРШИМ виведеним в нього табдоком.

// в якому є хоча б один рядок, тому виводити макет з угрупуваннями обов'язково потрібно на самому початку

// і в макеті крім самого угруповання повинні бути рядки

ТабДок. Вивести (ПолучітьМакет ( "СохраненниеГрупіровкіКолонок"));

ТабДок. Вивести (ОбластьШапка);

// видалимо рядки макета "СохраненниеГрупіровкіКолонок", тому що вони нам потрібні були тільки для того,

// щоб встановити в новому табдоке потрібну нам угруповання колонок

// Важливо! - якщо після видалення рядків з документа видалити всі рядки, то угруповання колонок теж очиститься,

// тому видаляємо "зайві" рядки, тільки після того, як вивели в табдок. хоча б одну «не зайву" рядок

// обов'язково вказуємо тип зміщення відмінний від "БезСмещенія" інакше очищена від тексту область залишиться в нашому табдоке

ТабДок. УдалітьОбласть (ТабДок. Область (1. 1,), ТіпСмещеніяТаблічногоДокумента. ПоГорізонталі);

// про всяк випадок перевіримо що з угрупованням рядків теж все в порядку

ТабДок. Вивести (Макет. ПолучітьОбласть ( "Рядок"), 0);

ТабДок. Вивести (Макет. ПолучітьОбласть ( "Рядок"), 1);