Метод "Присоединить()"

1. Flashlike 12.08.13 23:47 Сейчас в теме
День добрый!
Пытаюсь разобраться с данным методом.
"Описание:
Присоединяет табличный документ к результирующему табличному документу, помещая его в следующей колонке правее самой правой выведенной колонки, начиная со строки, с которой выводился предыдущий табличный документ."

У меня выводится стабильно НИЖЕ, т.е. друг под другом два табличных документа. Макеты разные. Один содержится произвольное количество строк, второй имеет статический внешний вид.
Подумал что дело в разных макетах, сделал один макет, получаю нужную мне область, для второй таблицы. Тоже самое, выводится друг под другом.

Вопрос. Как вывести два разных макета, на печать на одном листе, не друг под другом, а рядом.
На картинке, как хочу сделать.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. GetNight 48 17.08.20 23:53 Сейчас в теме
(1) Сегодня разбирался с такой же проблемой.
Делать нужно так:
ТабличныйДокумент.Вывести(ОбластьМакет1);
ТабличныйДокумент.Присоединить(ОбластьМакет2);


Если делать так:
ТабличныйДокумент.Присоединить(ОбластьМакет1);
ТабличныйДокумент.Присоединить(ОбластьМакет2);


или так:
ОбластьМакет1.Присоединить(ОбластьМакет2);


то результат вам не понравится... он будет на две строки и искажён
2. perchik_ua 13.08.13 02:06 Сейчас в теме
А зачем использовать два макета?

Просто выделите свои таблички в разные области и выводите их с помощью присоединить().
3. Allexe8.1 13.08.13 03:42 Сейчас в теме
Можете использовать метод Табличного документа:

ВставитьОбласть(<ИсходнаяОбласть>, <ОбластьПриемник>, <Сдвиг>, <ЗаполнятьПараметры>)

То есть ОбластьПриемник - у Вас будет, вероятно, область фиксированного макета, который Вы вставляете в область первого табличного документа. Размеры исходной области и области-приемника должны совпадать, поэтому и адрес нужно четко указывать, т.е. не ТабДок.Область() , а ТабДок.Область(1, 5, 7, 5) , например.
4. Flashlike 13.08.13 09:52 Сейчас в теме
Первый макет это обычная накладная. В которой может быть любое количество строк. Разные секции, горизонтальные вертикальные. Опробовано уже и с разными макетами и с разными областями одного и того же макета, результат один, присоединение идет снизу, как метод "ВывестиОбласть".
Второй макет это таблица с определенными показателями. Которые конечные, скажем 10 строк.
В целях исключения ситуации "мы не заметили, мы потеряли, нам не привезли", надо все печатать на одном листе.
Как угадать область, для ВставитьОбласть, если табличный документ уже сформирован? Например в документе 2 строки, в макете1 печатаются 2 строки, а нужно добавить второй макет, где все равно 10 строк. Т.е. второй макет перекроет и строки и подвал первого макета.
Нашел похожую форму. Во вложении
Прикрепленные файлы:
5. Ягг 497 13.08.13 09:59 Сейчас в теме
(4) Flashlike,
1. Создаешь два табличных документа, в которые выводишь свои таблички (в каждую свой), но не показываешь их
2. Создаешь третий табличный документ. В него сначала методом Вывести выводишь ограничинную (по ширене) область первой таблицы. Ширину и высоту определяешь при помоши соотвествующих свойств табличного документа. Затем методом Присоединить выводишь второй табличный документ.
3. Показываешь пользователю готовый (тетий) табличный документ.

Как-то так.
6. Flashlike 13.08.13 10:01 Сейчас в теме
ага, идею понял. попробую сегодня. Спасибо
7. Flashlike 13.08.13 18:47 Сейчас в теме
Получилось. Спасибо всем откликнувшимся.
Все дело было именно в ширине области.
примерный код, который получился.
Общая = Новый ТабличныйДокумент;
НомерКолонкиДляВторойТаб=Таб.ШиринаТаблицы+1;
НомерПоследнейКолонкиВторойТаб=Таб.ШиринаТаблицы+Таб2.ШиринаТаблицы;
Общая.ВставитьОбласть(Таб.Область("R1C1:R"+Таб.ВысотаТаблицы+"C"+Таб.ШиринаТаблицы),Общая.Область("R1C1:R"+Таб.ВысотаТаблицы+"C"+Таб.ШиринаТаблицы),,);
Общая.ВставитьОбласть(Таб.Область("R1C1:R"+Таб2.ВысотаТаблицы+"C"+Таб2.ШиринаТаблицы),Общая.Область("R1C"+НомерКолонкиДляВторойТаб+":R"+Таб2.ВысотаТаблицы+"C"+НомерПоследнейКолонкиВторойТаб),,);


Остался один штрих. Большой штрих. При "ВставитьОбласть" не переносится форматирование, типа ширины и высоты. Нужен отдельный цикл, который поправит ширину и высоту ячеек.
11. TimoninD 21.02.24 01:50 Сейчас в теме
(7) Метод Присоединить() для горизонтальной области постоянно выводит ниже. Используйте Вериткальную облась или Пересечение областей.
8. Flashlike 13.08.13 20:53 Сейчас в теме
дополнение. Экспериментально выяснилось, что метод ВставитьОбласть(), не вставляет области, которые сформированы методом Присоединить()
ИЛИ не работает для строк, у которых изменен размер ячеек относительно общего.
10. user1293111 10.02.22 16:23 Сейчас в теме
12. Onwardv 66 21.02.24 10:19 Сейчас в теме
Тут надо четко понимать, что следует манипулировать именно прямоугольными областями табличного документа, четко ограниченными и по горизонтали и по вертикали.

Насколько понял, проблема у Вас была в том, что область "Макет1" не прямоугольная, а по всей длине строк.
Потому и Присоединить() добавляет снизу. Чтобы присоединение было сбоку, необходимо делать ограничение области не только по строкам, но и по столбцам.
Попробую пояснить подробнее:

Т.е. ПолучитьОбласть не всех строк, а пересечения имен области, разделенных знаком вертикальной черты "|".
см. код :

	Макет = ЭтотОбъект.ПолучитьМакет("Макет");
	ТабДок = Новый ТабличныйДокумент;
	ЛеваяОбласть = Макет.ПолучитьОбласть("Шапка|ЛеваяЧасть");
	ТабДок.Вывести(ЛеваяОбласть);
	ПраваяОбласть = Макет.ПолучитьОбласть("Шапка|ПраваяЧасть");
	ТабДок.Присоединить(ПраваяОбласть);
	ТабДок.Показать("Результат");
Показать

У Вас, скорее всего что-то вроде Макет.ПолучитьОбласть("Шапка"), если опираться на мой пример. Нет ограничения по столбцам, "|ЛеваяЧасть)". Т.е. вы берете строки с именем "Шапка" со всеми столбцами до конца документа. И, соответственно, платформа присоединяет снизу.
см. также скрин кода (1), макет(2) и результат работы кода по макету (3).
Также обратите внимание выделенные синим именованные области.
Прикрепленные файлы:
aeoHeKP; vladislav25_00; yura371; +3 Ответить
13. Onwardv 66 21.02.24 10:22 Сейчас в теме
(12) Я всё понятно пояснил? Если что-то непонятно - спрашивайте, уточню
14. user856012 14 21.02.24 10:55 Сейчас в теме
(13)
Если что-то непонятно - спрашивайте
Спрашиваю: вы кому поясняете (кроме себя самого любимого)?

Если автору темы, так он создал ее больше 10 лет назад, а последний раз был на форуме в 2021 году.

Не заметили?
Прикрепленные файлы:
15. Onwardv 66 21.02.24 11:24 Сейчас в теме
(14) Нет, не заметил. :) . Спасибо.
Оно же, если давно делал, сразу и не получается. Недавно делал - опять вспоминал, а тут в топе знакомая тема.
16. aeoHeKP 27.10.24 19:36 Сейчас в теме
(14) Давно, не давно, а актуально...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот