Добрый день.
Разрабатываю печатную форму.
Задал области - Шапку, Данные, Подвал.
Основная печатная форма это область Данные. Заполняю параметры и вывожу построчно.

Но в одну из строк нужно вставить таблицу, причем таблицу с изначально неизвестным количеством строк.
Как я понимаю, в этом случае мне нужно в макете создать еще одну область, например, ДанныеСТаблицей. А внутри нее еще одну область Таблица, которую и буду программно заполнять. А уже после заполнения области Таблица выведу область ДанныеСТаблицей, и все данные выведутся разом.

Но как к области, которая в макете уже есть, добавить программно строку? Не могу же я вывести ее в этот момент. Метода в синтаксис помощнике не нашел.

Или мои размышления в корне неверны и надо делать как-то иначе?
---
Если во вложенной таблице всегда одинаковый набор колонок, создайте тогда 3 макета областей строки для общей таблицы:
- обычная строка;
- строка с шапкой вложенной таблицы;
- строка со строкой вложенной таблицы.

Где нужно выводите первый макет, а где нужно - второй и несколько третьих. Когда нужно будет выводить вложенную таблицу, запоминайте номер последней строки печатной формы. Когда заканчиваете вывод строк вложенной таблицы, объединяйте содержимое 1, 2 и 4 колонки общей таблицы, начиная с сохраненной ранее строки печатной формы и до конца.
---
Есть метод Присоединить - работа с областями отчета. Можно покопать в эту сторону.
---
Спасибо, сейчас покопаю.
---
А вариант с расшифровкой не пойдет?
---
Как я понимаю, "Присоединить" присоединяет фрагмент к ранее выведенному элементу. Мне это не подойдет.

А как с расшифровкой? Мне надо не чтобы таблица открывалась по нажатию, а чтобы она была в форме печатной.
---
Тогда, видимо, не вариант с расшифровкой. Тогда нужно создать область и выводить ее в случае наличия записей. Думаю, только так.
---
Я создал область.
В области одна строка, в каждой колонке параметр, который заполняю.
Но эта область часть строки основной таблицы, поэтому я не могу писать построчно табдок.вывести(область), так как в этом случае основная строка будет разбита.

В этом и вопрос, как не нарушая целостность строки основной таблицы внутри сделать таблицу с заранее неизвестным количеством строк.
---
Сам по себе макет - это табличный документ. Делайте с ним что хотите аналогично тому, как Вы работаете с табличным документом. Более того, когда Вы получаете область макета, в результате у Вас все тот же табличный документ. Так что если необходимо сгенерировать "налету" макет области, то просто создайте новый ТабличныйДокумент, обращаясь к его ячейкам с помощью метода "Область", подготовьте макет, а затем используйте где нужно.

Что касается задачи, то не понятно, что именно подразумевает под выражением "таблица в таблице". Не могли бы Вы привести пример? Желательно, не только в виде текстового описания, но и картинкой, нарисованной, скажем, в Excel.
---
Прикрепляю примерный вид таблицы, которую нужно превратить в печатную форму.
Во второй строчке на картинке как раз таблица, которую и нужно в печатную форму вывести, не нарушая целостность общей строки.
---
А количество столбцов во вставляемой части фиксированное?
---
Да, количество столбцов фиксированное.
---
Ну, тогда можно в макете расписать эти колонки в области строки табличной части:
---
С порядком вывода и заполнения макета пояснить или сами разберётесь?
---
Слишком мудреная задача получается в общем случае. Может есть хоть какие-нибудь ограничения?
---
Ограничений нет, но теоретически, наверное этих строк будет не больше чем 10.

Вероятно в создаваемой области можно создать 15 подобластей (одна область = одна строчка), а потом те, что не заполнили, удалить из макета?

Но какое-то корявое решение. Да и бог знает, может через год вместо 10 строчек будет 100.
---
Если во вложенной таблице всегда одинаковый набор колонок, создайте тогда 3 макета областей строки для общей таблицы:
- обычная строка;
- строка с шапкой вложенной таблицы;
- строка со строкой вложенной таблицы.

Где нужно выводите первый макет, а где нужно - второй и несколько третьих. Когда нужно будет выводить вложенную таблицу, запоминайте номер последней строки печатной формы. Когда заканчиваете вывод строк вложенной таблицы, объединяйте содержимое 1, 2 и 4 колонки общей таблицы, начиная с сохраненной ранее строки печатной формы и до конца.
---
Тоже не совсем понял.

 ОбластьДанные = Макет.ПолучитьОбласть("Данные");
 ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
 ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");

//////// выводим первую "обычную" строку
         Номер = 1;
 ОбластьДанные.Параметры.Номер = Номер;
 ОбластьДанные.Параметры.Наименование = "Какой-то текст";
 ОбластьДанные.Параметры.Содержание = "Какой-то текст";
 Табдок.Вывести(ОбластьДанные);
///////// начинаем выводить таблицу в строку
        Номер = Номер +1;
        ОбластьШапкаТаблицы.Параметры.Номер = Номер;
        ТабДок.Вывести(ОбластьШапкаТаблицы);
          Индекс = 0;
        Для Каждого СтрокаТЧ из ТЧ Цикл
            ОбластьСтрокаТаблицы.Параметры.НомерДоговора = СтрокаТЧ.НомерДоговора;
            ОбластьСтрокаТаблицы.Параметры.СуммаДоговора = СтрокаТЧ.СуммаДоговора;
            ОбластьСтрокаТаблицы.Параметры.Индекс = Индекс +1;
            ТабДок.Вывести(ОбластьСтрокаТаблицы);
        КонецЦикла;

И как объединить все эти уже выведенные области в одну строку?
---
Сделал как Вы и Healer предлагали, в конце объединил нужные строки.
И все получилось как и нужно.

Спасибо большое.
---
Мне видится, надо просто в ячейку значения через слэш вывести, а в расшифровку ячейки уже саму табличку с шапкой.
---
... если надо вывести таблицу в строке (например, "ВыводимДетальныеСведенияВСтроке = Истина"), выводим сначала строку с её шапкой, присвоив при этом значение переменно типа "ШапкаВСтрокеВыведена" = Истина, затем шуруем строки и в конце присваиваем "ШапкаВСтрокеВыведена" = Ложь.
---
Боюсь я не совсем понял.

После того как мы вывели строку с шапкой, у нас у общей таблицы строка вывелась. Соответственно, дальше я буду выводить область Таб2Строка, но ведь слева строка тоже будет разбита. Выходит у нас не 3 строки (где вторая строка таблица с тремя строками), а 5 строк.
---
... и в должных колонках этих пяти строк ячейки нужно объединить.
---
Вижу, Вы не поняли - поясняю. Вот "рыба" кода:
---
```1c
    //Получаем макет ...
    Макет = ПолучитьМакет("Макет");
    //Выводим заголовок таблицы ...
    ТекОбластьМакета = Макет.ПолучитьОбласть("ТабШапка");
    ТекОбластьМакета.Вывести();

    //Инициализируем вспомогательные переменные ...
    ДанныеДетализации = Неопределено;
    //Обходим данные и, при необходимости, выводим детализированные данные в таблице ...
    Для Каждого СтрокаДанных Из НашиДанные Цикл
    ДанныеДетализации = НеобходимоВывестиДетальныеСведения(); //Здесь пытаемся получить данные детализации. Если их нет - возвращаем "Неопределено".
    Если ДанныеДетализации <> Неопределено Тогда
    ТекОбластьМакета = Макет.ПолучитьОбласть("Таб2Шапка");
    ЗаполнитьЗначенияСвойств(ТекОбластьМакета, СтрокаДанных );
    ТекОбластьМакета.Вывести();
    //Выводим детализированные данные ...
    Для Каждого СтрокаДанныхДетально Из ДанныеДетализации Цикл
    ТекОбластьМакета = Макет.ПолучитьОбласть("Таб2Строка");
    ЗаполнитьЗначенияСвойств(ТекОбластьМакета, СтрокаДанныхДетально);
    ТекОбластьМакета.Вывести();
    КонецЦикла;
    Иначе
    //Выводим простую строку ...
    ТекОбластьМакета = Макет.ПолучитьОбласть("ТабСтрока");
    ЗаполнитьЗначенияСвойств(ТекОбластьМакета, СтрокаДанных );
    ТекОбластьМакета.Вывести();
    КонецЕсли;
    КонецЦикла;
```
---
Надеюсь, теперь понятно, что при фиксированном составе колонок всё просто и заморачиваться с присоединением областей нет необходимости :-)
---
Спасибо за помощь. Отпишусь как попробую.
---
Ну, в общем, строки вывелись, конечно, но линии никуда не делись между строками. Поэтому таки заморачиваться с присоединением пришлось. Но большое спасибо)
---
Я думал, уж отрисовку линий-то причесать не проблема и не стал на это время тратить %) Ну, сделали, и ладно.