Здравствуйте. Подскажите, как правильно присоединить область справа в макете, чтобы выводилось "как надо", а не "как получается"?
Пытаюсь так, Шапка2 выводится справа, но уже после строк:

```1c
    ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка1|ОблЛев");
    ТабДокумент.ВывестиОбласть(ОбластьШапка1);

    //...вывод циклом строки1... ТабДокумент.ВывестиОбласть(строка1|ОблЛев);

    ОбластьШапка2 = Макет.ПолучитьОбласть("Шапка2|ОблПрав");
    ТабДокумент.Присоединить(ОбластьШапка2);
```
---
Накропал пример. И, чудо, получилось!
- вывод в Таб1
- вывод в Таб2
- потом обе складываю в результирующую
---
Ну наверное

```1c
    Не ТабДокумент.ВывестиОбласть(ОбластьШапка1);
```

а

```1c
    ТабДокумент.Вывести(ОбластьШапка1);
```

Еще есть хитрость выводить/присоединять через 2 табличных документа.
Вот приводил пример другому челу

```1c
    &НаСервере
    Функция ПечатьНаСервере()

    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    ШапкаПраваяЧасть = Макет.ПолучитьОбласть("ШапкаПраваяЧасть|Колонка");
    СтрокаПраваяЧасть = Макет.ПолучитьОбласть("СтрокаПраваяЧасть|Колонка");
    ПодвалПраваяЧасть = Макет.ПолучитьОбласть("ПодвалПраваяЧасть|Колонка");

    ЛеваяЧасть = Макет.ПолучитьОбласть("ЛеваяЧасть|Колонка");
    ПраваяЧасть = Макет.ПолучитьОбласть("Таблица");
    ЛеваяЧасть = Макет.ПолучитьОбласть("Шапка");

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

    Для Сч = 1 По 5 Цикл
    Если Сч > 1 Тогда
    ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    ТабДокПраво = Новый ТабличныйДокумент;
    ТабДок.Вывести(ЛеваяЧасть);

    ТабДокПраво.Вывести(ШапкаПраваяЧасть);
    Для к = 1 По 15 Цикл
    ТабДокПраво.Вывести(СтрокаПраваяЧасть);
    КонецЦикла;
    ТабДокПраво.Вывести(ПодвалПраваяЧасть);
    ТабДок.Присоединить(ТабДокПраво);
    КонецЦикла;
    Возврат ТабДок;
    КонецФункции
```
---
Увы! Сие есть сложная задача - нарисовать на одном листе рядом два отчета.
Сразу скажу уверенно - работая с одним объектом ТД можно делать только так:
- вывел Область Шапка1
- присоединил Область Шапка2
вывод строк отчета в цикле:
- вывел Область Строка1
- присоединил Область Строка2
Т.е. как будто наращиваешь лист либо вниз, либо справа.
Поверь, как бы ты не сомневался в своих и моих знаниях, это так.

(2) Пытался разобрать пример и не понял его задумки.
- первое:
 ЛеваяЧасть = Макет.ПолучитьОбласть("ЛеваяЧасть|Колонка");
    ПраваяЧасть = Макет.ПолучитьОбласть("Таблица");
 ЛеваяЧасть = Макет.ПолучитьОбласть("Шапка");
переменная "ЛеваяЧасть" перезатирает себя

- роль "ТабДокПраво" неясна. В нее выводится правая часть. Но потом результат присоединяется к левой.
Но присоединится то, не ко всему документу, а к только что выведенной секции.
Так тоже самое, что сразу Присоединить!

- зачем ее создавать в цикле?
        ТабДокПраво = Новый ТабличныйДокумент;
---
в 2 Я набросал ответ на вопрос одного пользователя
Где. Левая часть Статичная информация, Правая часть таблица
---
Посмотрел Ваш отчет. Задача несколько простовата.
У Вас Левая часть Вся состоит из Одной области.
Сложнее, когда надо вывести левую с большим количеством строк (меняющимся).
Потом такая-же правая. Тоже меняющееся количество строк
---
// Сейчас работает такая схема:

```1c
    ТабДок1 = Новый ТабличныйДокумент();
    ТабДок2 = Новый ТабличныйДокумент();
    //... собираем оба документа как удобно ...

    ТабДок3 = Новый ТабличныйДокумент();

    ТабДок3.Присоединить(ТабДок1); // именно присоединить в пустой док, при "Вывести" будет не то
    ТабДок3.Присоединить(ТабДок2);
```
---
Спасибо тебе, добрый человек!
---
ТабДок1 должен быть Меньше либо равен ТабДок2. Это важный момент!
Иначе табдок2 не будет виден
---
Супер! Гораздо проще, не приходится перебирать все варианты присоединения/вывода
---
Накропал пример. И, чудо, получилось!
- вывод в Таб1
- вывод в Таб2
- потом обе складываю в результирующую
---
Это вариации на тему
---
Добавлю от себя,

что первая выводимая таблица должна быть МЕНЬШЕ или равна второй!
Иначе присоединяться таблица не будет!
Так что, первое вывести можно какую нибудь ячейку, а к ней присоединить первую и вторую таблицу.

А вообще, автор, спасибки большое за подняту тему! Благодарность тебе в карму!
---
Огромное спасибо, действительно рабочий вариант!
---
Возможно ли в 1С сделать такую штуку? (рисунок в прикреплении)
сверху самая широкая колонка
Ее ширина равна сумме ширин нижестоящих двух колонок(бежевым цветом отмечены)
Каждая бежевая колонка имеет ширину, равную сумме ширин нижестоящих зеленых колонок
количество и размер зеленых колонок в каждой бежевой колонке заранее неизвестен - макет будет динамический - в одной бежевой например, 4, во второй - 3 и так далее, макет должен "тянуть" соответственно все колонки
Есть такой метод:

```1c
    ОблТест = Макет.ПолучитьОбласть("Обл_тест|Обл_тест1");
    ОблТест.Область("R1:R1").ШиринаКолонки = 20;
```
 // в области одна ячейко
Все замечательно... но вывести на показ ты такую область больше не сможешь)))))))))
Метод

```1c
    ТабДокумент.Присоединить(ОблТест)
```

больше не работает!!!))))
Просто тупо перестает выводить колонки с измененным размером и все что после них
Бред но факт!!!
получается такой тд в 1С невозможно нарисовать???
---
Вам не ширину надо менять, а объединять ячейки у областей.
---
а что, так можно было???
вот жеж...
---
Попробуйте еще такой вариант.

```1c
    ТабличныйДокумент = Новый ТабличныйДокумент;

    Шапка = Новый ТабличныйДокумент;
    ЛеваяКолонка = Новый ТабличныйДокумент;
    ПраваяКолонка = Новый ТабличныйДокумент;

    ТабличныйДокумент.Вывести(Шапка);
    ТабличныйДокумент.Вывести(ЛеваяКолонка.ПолучитьОбласть(1, 1, ЛеваяКолонка.ВысотаТаблицы, ЛеваяКолонка.ШиринаТаблицы));
    ТабличныйДокумент.Присоединить(ПраваяКолонка.ПолучитьОбласть(1, 1, ПраваяКолонка.ВысотаТаблицы, ПраваяКолонка.ШиринаТаблицы));

    //Если требуется выровнять колонки по высоте - можно сделать так:
    Пока ПраваяКолонка.ВысотаТаблицы > ЛеваяКолонка.ВысотаТаблицы Цикл
    ЛеваяКолонка.Вывести(ОбластьРазрыв);
    КонецЦикла;
    Пока ЛеваяКолонка.ВысотаТаблицы > ПраваяКолонка.ВысотаТаблицы Цикл
    ПраваяКолонка.Вывести(ОбластьРазрыв);
    КонецЦикла;
```