Правильно присоединить область в макете

1. ewgos 29.06.19 08:04 Сейчас в теме
Здравствуйте. Подскажите, как правильно присоединить область справа в макете, чтобы выводилось "как надо", а не "как получается"?
Пытаюсь так, Шапка2 выводится справа, но уже после строк:
ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка1|ОблЛев");
ТабДокумент.ВывестиОбласть(ОбластьШапка1);

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

ОбластьШапка2 = Макет.ПолучитьОбласть("Шапка2|ОблПрав");
ТабДокумент.Присоединить(ОбластьШапка2);
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
6. Dnki 4 29.06.19 13:32 Сейчас в теме
Накропал пример. И, чудо, получилось!
- вывод в Таб1
- вывод в Таб2
- потом обе складываю в результирующую
Прикрепленные файлы:
ОтлДваОтчета.erf
asterisk; Balalamb; mrAxe; VirusB13; adhocprog; bronss18; AlexeyPapanov; Filkkore; yurrisu; +9 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tusv 211 29.06.19 11:49 Сейчас в теме
(1)Ну наверное
Не ТабДокумент.ВывестиОбласть(ОбластьШапка1);

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

Еще есть хитрость выводить/присоединять через 2 табличных документа.
Вот приводил пример другому челу
&НаСервере
Функция  ПечатьНаСервере()

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

	ЛеваяЧасть = Макет.ПолучитьОбласть("ЛеваяЧасть|Колонка");
	ПраваяЧасть = Макет.ПолучитьОбласть("Таблица");
	ЛеваяЧасть = Макет.ПолучитьОбласть("Шапка");
	
	ТабДок = Новый ТабличныйДокумент;
	
	Для Сч = 1 По 5 Цикл
		Если Сч > 1 Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;	
		ТабДокПраво = Новый ТабличныйДокумент;
		ТабДок.Вывести(ЛеваяЧасть);
		
		ТабДокПраво.Вывести(ШапкаПраваяЧасть);
		Для к = 1 По 15 Цикл
			ТабДокПраво.Вывести(СтрокаПраваяЧасть);
		КонецЦикла;
		ТабДокПраво.Вывести(ПодвалПраваяЧасть);
		ТабДок.Присоединить(ТабДокПраво);
	КонецЦикла;
	Возврат ТабДок;
КонецФункции
Показать
3. Dnki 4 29.06.19 13:03 Сейчас в теме
Увы! Сие есть сложная задача - нарисовать на одном листе рядом два отчета.
Сразу скажу уверенно - работая с одним объектом ТД можно делать только так:
- вывел Область Шапка1
- присоединил Область Шапка2
вывод строк отчета в цикле:
- вывел Область Строка1
- присоединил Область Строка2
Т.е. как будто наращиваешь лист либо вниз, либо справа.
Поверь, как бы ты не сомневался в своих и моих знаниях, это так.

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

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

- зачем ее создавать в цикле?
ТабДокПраво = Новый ТабличныйДокумент;
4. tusv 211 29.06.19 13:15 Сейчас в теме
(3) в 2 Я набросал ответ на вопрос одного пользователя
Где. Левая часть Статичная информация, Правая часть таблица
Прикрепленные файлы:
ПечатьМакетаВ2колонки.epf
5. Dnki 4 29.06.19 13:31 Сейчас в теме
(4) Посмотрел Ваш отчет. Задача несколько простовата.
У Вас Левая часть Вся состоит из Одной области.
Сложнее, когда надо вывести левую с большим количеством строк (меняющимся).
Потом такая-же правая. Тоже меняющееся количество строк
8. Nizmatek 19.01.21 02:41 Сейчас в теме
// Сейчас работает такая схема:

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

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

	ТабДок3.Присоединить(ТабДок1); // именно присоединить в пустой док, при "Вывести" будет не то
	ТабДок3.Присоединить(ТабДок2);
improg; BuryMeInVegas; Pavel791; user1114234; serko8547; GigaBit; d4rkmesa; user1244356; blandinko; +9 Ответить
9. blandinko 16.06.21 13:48 Сейчас в теме
(8) Спасибо тебе, добрый человек!
13. serko8547 110 30.03.22 16:59 Сейчас в теме
(8) ТабДок1 должен быть Меньше либо равен ТабДок2. Это важный момент!
Иначе табдок2 не будет виден
6. Dnki 4 29.06.19 13:32 Сейчас в теме
Накропал пример. И, чудо, получилось!
- вывод в Таб1
- вывод в Таб2
- потом обе складываю в результирующую
Прикрепленные файлы:
ОтлДваОтчета.erf
asterisk; Balalamb; mrAxe; VirusB13; adhocprog; bronss18; AlexeyPapanov; Filkkore; yurrisu; +9 Ответить
7. tusv 211 29.06.19 13:44 Сейчас в теме
12. serko8547 110 30.03.22 16:55 Сейчас в теме
(6)
Добавлю от себя,

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

А вообще, автор, спасибки большое за подняту тему! Благодарность тебе в карму!
16. Balalamb 08.08.23 16:29 Сейчас в теме
Огромное спасибо, действительно рабочий вариант!
10. lev6975 18.10.21 13:31 Сейчас в теме
Возможно ли в 1С сделать такую штуку? (рисунок в прикреплении)
сверху самая широкая колонка
Ее ширина равна сумме ширин нижестоящих двух колонок(бежевым цветом отмечены)
Каждая бежевая колонка имеет ширину, равную сумме ширин нижестоящих зеленых колонок
количество и размер зеленых колонок в каждой бежевой колонке заранее неизвестен - макет будет динамический - в одной бежевой например, 4, во второй - 3 и так далее, макет должен "тянуть" соответственно все колонки
Есть такой метод:
ОблТест = Макет.ПолучитьОбласть("Обл_тест|Обл_тест1");
ОблТест.Область("R1:R1").ШиринаКолонки = 20;
// в области одна ячейко
Все замечательно... но вывести на показ ты такую область больше не сможешь)))))))))
Метод
ТабДокумент.Присоединить(ОблТест) 

больше не работает!!!))))
Просто тупо перестает выводить колонки с измененным размером и все что после них
Бред но факт!!!
получается такой тд в 1С невозможно нарисовать???
Прикрепленные файлы:
11. Sashares 34 18.10.21 13:58 Сейчас в теме
(10) Вам не ширину надо менять, а объединять ячейки у областей.
serko8547; FatPanzer; +2 Ответить
14. serko8547 110 01.12.22 14:48 Сейчас в теме
(11) а что, так можно было???
вот жеж...
15. 1C_Casual 162 31.05.23 10:54 Сейчас в теме
Попробуйте еще такой вариант.

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

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

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

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

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