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

```1c
    Процедура ВывестиНаСервере()
    Результат.Очистить();
    ОО = РеквизитФормыВЗначение("Объект");
    М1 = ОО.ПолучитьМакет("М1");
    М2 = ОО.ПолучитьМакет("М2");
    М3 = ОО.ПолучитьМакет("М3");
    Результат.Присоединить(Новый ТабличныйДокумент);
    Результат.Присоединить(М1);
    Результат.Присоединить(М2);
    Результат.Присоединить(М3);
    КонецПроцедуры
```

Без пустышки в начале таблицы все расползается.
---
Остался невыясненным только один вопрос: я получу свои СМ? Они мне нужны. Как говорил Шарапов, "они мне душу согреют, когда под ментовские пули пойду".
---
"Мы вам позвоним" (с)
---
А что нужно сделать? нужны исходные данные и как нужно.
---
в приложенной обработке демо-пример. Нужно сделать, чтобы корректно присоединялось.
Ну, естестенно, не только на этих демо-примерах, а в целом. Но тестировать можно на них.
---
Мне этот демо пример не понятен.
Где исходные данные?
---
в обработке три макета. Код обработки к макету 1 присоединяет макеты 2 и 3 справа. 1С делает это криво.
---
Не понимаю эту технологию до конца, но вот в таком виде макеты сливаются в один нормально.

```1c
    Процедура ВывестиНаСервере()
    Результат.Очистить();
    ОО = РеквизитФормыВЗначение("Объект");
    М1 = ОО.ПолучитьМакет("М1");
    М2 = ОО.ПолучитьМакет("М2");
    М3 = ОО.ПолучитьМакет("М3");
    Результат.Присоединить(Новый ТабличныйДокумент);
    Результат.Присоединить(М1);
    Результат.Присоединить(М2);
    Результат.Присоединить(М3);
    КонецПроцедуры
```

Без пустышки в начале таблицы все расползается.
---
Интересная идея
---
интересное кино, попробую, проверю
---
Более-менее работает. Но вставляет первую колонку, если она широкая не смотрится.
Как бы ее убрать?
И да, чтобы сохранялась ширина, нужно создавать свой формат строк, причем даже в таблицу М0, если у нее не будет формата строк, то ширина ее колонок изменится. Но это думаю, излечимо.

Вот код:

```1c
    &НаСервере
    Процедура ВывестиНаСервере()
    Результат.Очистить();

    ОО = РеквизитФормыВЗначение("Объект");
    М = ОО.ПолучитьМакет("М0");
    Результат.Вывести(М);
    Т = Новый ТабличныйДокумент();
    Результат.Вывести(Т);
    Результат.Присоединить(Т);
    М = ОО.ПолучитьМакет("М1");
    Результат.Присоединить(М);
    М = ОО.ПолучитьМакет("М2");
    Результат.Присоединить(М);
    М = ОО.ПолучитьМакет("М3");
    Результат.Присоединить(М);
    КонецПроцедуры
```

Добавил макет М0.

Результат на картинке.
---
Первую колонку можно убрать элементарно, если знать размеры области. Для вашего примера:

```1c
    Область = Результат.Область("R4C1:R8C1");
    Результат.УдалитьОбласть(Область,ТипСмещенияТабличногоДокумента.ПоГоризонтали);
```
---
Да, действительно. Хорошо, сейчас потестирую на продакте, отпишусь.

```1c
    &НаСервере
    Процедура ВывестиНаСервере()
    Результат.Очистить();

    ОО = РеквизитФормыВЗначение("Объект");
    М = ОО.ПолучитьМакет("М0");
    Результат.Вывести(М);
    НачалоПодвала = Результат.ВысотаТаблицы + 1;
    Т = Новый ТабличныйДокумент();
    Результат.Вывести(Т);
    Результат.Присоединить(Т);
    М = ОО.ПолучитьМакет("М1");
    Результат.Присоединить(М);
    М = ОО.ПолучитьМакет("М2");
    Результат.Присоединить(М);
    М = ОО.ПолучитьМакет("М3");
    Результат.Присоединить(М);
    КонецПодвала = Результат.ВысотаТаблицы;

    Область = Результат.Область(НачалоПодвала,1, КонецПодвала, 1);
    Результат.УдалитьОбласть(Область,ТипСмещенияТабличногоДокумента.ПоГоризонтали);
    КонецПроцедуры
```
---
Что-то не вытанцовывается на продакте.
Есть два отчета Оплаты и Расходы, выдаются СКД, формат строк у них есть.
Но при выводе почему-то теряется...
Ширина колонок разъезжается.

И между Оплаты и Расходы большой промежуток появляется. Примеры макетов выложил в обработке.

```1c
    &НаСервере
    Процедура ВывестиНаСервере()
    Результат.Очистить();

    ОО = РеквизитФормыВЗначение("Объект");
    М = ОО.ПолучитьМакет("М0");
    Результат.Вывести(М);
    НачалоПодвала = Результат.ВысотаТаблицы + 1;
    Т = Новый ТабличныйДокумент();
    Результат.Вывести(Т);
    Результат.Присоединить(Т);
    М = ОО.ПолучитьМакет("М1");
    Результат.Присоединить(М);
    М = ОО.ПолучитьМакет("М2");
    Результат.Присоединить(М);
    М = ОО.ПолучитьМакет("М3");
    Результат.Присоединить(М);
    КонецПодвала = Результат.ВысотаТаблицы;

    Результат.Вывести(Т);
    Результат.Присоединить(Т);
    М = ОО.ПолучитьМакет("СКД1");
    Результат.Присоединить(М);
    М = ОО.ПолучитьМакет("СКД2");
    Результат.Присоединить(М);

    Область = Результат.Область(НачалоПодвала,1, КонецПодвала, 1);
    Результат.УдалитьОбласть(Область,ТипСмещенияТабличногоДокумента.ПоГоризонтали);
    КонецПроцедуры
```

Я на практике подкорректировал ширину кодом:

```1c
    ДокументРезультат.Область(НачалоПодвала + 4, 2).ШиринаКолонки = 20;
    ДокументРезультат.Область(НачалоПодвала + 4, 3).ШиринаКолонки = 15;
    ДокументРезультат.Область(НачалоПодвала + 4, 6).ШиринаКолонки = 20;
    ДокументРезультат.Область(НачалоПодвала + 4, 7).ШиринаКолонки = 15;
```

Но хотелось бы без этих бубнов.
---
Ну, компромиссы будут неизбежно. Если выводить все друг под дружкой, бубны не потребуются
---
если бы клиента устроило выводить друг под дружкой, не было бы этой ветки.
Наша задача - не сдаться на милость природы 1С, а взять от нее то, что нам нужно.
Сдаваться на компромисс не годится, ведь вручную кодом я могу скорректировать ширину колонок, значит, это можно сделать и универсально.
---
"Ширина колонок разъезжается..."

блоки формируются естественным образом.
Но ширина колонок она сквозная для всего документа. и если мы вставляем блок в уже существующий, то ширина берется из того который существуюет, а не та которая в прикрепляемом блоке.

ИМХА это очевидно.

И если мы хотим чтобы ширина была нужная - то надо эту ширину задать у исходного блока к которому мы клеим свою часть.
---
надо эту ширину задатьЭтот подход, кстати, прямо демонстируется в СП в описании метода СоздатьФорматСтрок. Но когнитивные способности гениев...
---
У вас удобный случай продемонстрировать свои когнитивные способности, написав работающий универсальный код по присоединению. Пока просто болтаете.
---
универсальный код по присоединениюНет такого. В силу того, что механика табличного документа позволяет создать формат строк, но не формат столбцов. Присоединение справа макета с другими высотами строки технически невозможно. Поэтому любое решение будет учитывать конкретный случай.

Странно, что гений этого не понимает.
Впрочем нет. Не странно.
---
мы про ширину строк, а не ее высоту. Следите за контекстом обсуждения.
---
Следите за контентом.Контекстом, геня, контекстом.

Тебе говорят, что общее универсальное решение невозможно.
Это то, к чему ты аппелировал в (17), если ты не понял.
---
я за универсальное решение по ширине колонок, а не за мир во всем мире и т.п. абстракным вещам.
---
я за универсальное решение по ширине колонокуниверсальность бывает разной степени визуализации и интерактивности.
---
если вы скачаете обработку, то увидите, что у макетов СКД1 и СКД2, созданных через СКД, для строк указан свой формат ширины. Логично ожидать, что свой формат будет поддерживаться и при присоединении.
Но этого не происходит.
Следовательно, для корректного присоединения нужно как-то дорабатывать ширину колонок. Поэтому я и дал поупражняться читателям, которым эта задача интересна.
---
не логично.
и совсем не понятно, чего вы ожидаете получить.

код обработки - написан тоже без явной логики. что допустимо для тестовой задачи.

у вас макеты такие... смысл которых ускользает от не посвященного пользователя.

могу предположить, что вы хотите сохранить некую "красивость" исходных форматов и этих форматов вместе.
но исходные форматы у вас максимально кривые... после объединения и/или присоединения эта кривость усогубляется.

общая логика объединения/ присоеденения доступна для любителей игры в тетрис.
ширина колонок и высота строк - сквозная для всего документа.
---
на этот вопрос могу дать простой ответ.
Есть макет СКД1 и СКД2.
Я хочу чтобы макет СКД2 присоединился справа с сохранением ширины колонок СКД1 и СКД2.
Сейчас ширина колонок нарушается, хотя у строк СКД1 и СКД2 создан свой формат строк (это создает СКД).
Думаю, предельно ясно изложил свое пожелание?
---
я и дал поупражняться читателям,В это тяжелое для страны время?
---
держи макет.

посмотри как работать с макетами, как с областями.
и как это все группировать в нужные конструкции.

ширина колонок регулируется отдельно.

PS. обычно шаблон формируют целиковый и уже правят только параметры, но можно и так поиграться.
---
И между Оплаты и Расходы большой промежуток появляется.
Промежуток появляется из-за того, что в макетах СКД в обработке есть формат строк для 12 колонок.
Можно удалить пустые колонки макета перед выводом.
---
Кстати, запишу еще одну мысль для общности.
Отдельные макеты можно сконвертировать в картинку (сохранить в PDF, далее командной строкой в JPEG) и идеально вставить рядом друг с другом.
Это, кстати, универсальное решение. Даже с разной высотой строк. Но не для моей конкретной задачи.
Там достаточно доработать ширину строк.
---
Это, кстати, универсальное решениеАга. Причем с рабочей расшифровкой.
---
универсальность бывает разной степени визуализации и интерактивности.
Кстати, по поводу высоты строк можно делать для одной широкой строки несколько узкой, как 1С подгоняет при выгрузке в Excel, было бы желание. Но в болшинстве задач такое не нужно.
---
универсальность бывает разной степени визуализации и интерактивности.О. Спасибо за формулировку.
---
В общем, пока окончательного решения нет.
Промотивирую всем, кто принимал решение, раздам СМ.