1С: Динамическое количество колонок в макете
Задача: создать отчет с динамическим количеством колонок (за ранее не известным). Обычно подобные задачи решаются при помощи СКД, но я его традиционно недолюбливаю и использовать избегаю, по причине того, что спустя пару месяцев боле-менее сложны отчет превращается в абракадабру, которую чтобы понять приходится тратить очень много времени. Потому так.
Решение:
В макете поименовать не только как обычно горизонтальные области, но и вертикальные. Примерно так:

И области тогда получаем соответственно через тег |, примерно так (как в морском бое):
ОбластьШапка=Макет.ПолучитьОбласть("Шапка | Общая");
Ну и сам код в конечном итоге сводится к такому:
МесяцГод1=Макет.ПолучитьОбласть("Шапка | МесяцГод");
МесяцГод1.Параметры.ном=7;
МесяцГод2=Макет.ПолучитьОбласть("Шапка | МесяцГод");
МесяцГод2.Параметры.ном=8;
ТабДок.Вывести(ОбластьШапка);
ТабДок.Присоединить(МесяцГод1);
ТабДок.Присоединить(МесяцГод2);
// заполняем тушку
Тушка=Макет.ПолучитьОбласть("Тушка | Общая");
ТабДок.Вывести(Тушка);
месгод=Макет.ПолучитьОбласть("Тушка | МесГод");
месгод.Параметры.месгод="Январь";
ТабДок.Присоединить(месгод);
месгод=Макет.ПолучитьОбласть("Тушка | МесГод");
месгод.Параметры.месгод="Февраль";
ТабДок.Присоединить(месгод);
возврат ТабДок;
Получаем:









