Путь к макету

1. ahmeda 19.03.19 10:55 Сейчас в теме
Добрый день!

Подскажите пожалуйста, как получить путь к макету внешнего отчета.

Так - "ОбщийМакет.ПФ_MXL_РасчетныйЛистокНастраиваемый" путь к общему макету
"Отчет.ПечатнаяФормаТ11.ПФ_MXL_Т11а" путь к макету отчета

А как к внешнему отчету?

"ВнешнийОтчет.АнализНачисленийИУдержаний.ПФ_MXL_РасчетныйЛисток" - не работает!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SedovSU@mail.ru 297 19.03.19 11:01 Сейчас в теме
Ну по логите будет ВнешнийОтчет.ИмяОтчета.ИмяМакета. У вас макет отчета во внешнем отчете вставлен? может так надо ВнешнийОтчет.ИмяОтчета.Макеты.ИмяМакета
7. ahmeda 19.03.19 11:28 Сейчас в теме
3. EVKash 14 19.03.19 11:07 Сейчас в теме
(1) А где он нужен? Если в модуле самого отчета, то просто Макет = ПолучитьМакет("ИмяМакета").
Если в Форме отчета, то типа того
&НаСервере
Функция ПолучитьМакетНаСервере()
ОтчетОбъект = РеквизитФормыВЗначение(«Отчет»);
Макет = ОтчетОбъект.ПолучитьМакет(«Макет»);
Возврат Макет;
КонецФункции

Если вне отчета, то сложнее.
5. ahmeda 19.03.19 11:22 Сейчас в теме
(3) Через ПолучитьМакет() мы получаем сам макет, т.е ТабличныйДокумент, а мне нужен путь
8. Octopus 337 19.03.19 11:33 Сейчас в теме
(5) А пути, аналогичного вышеперечисленным, нет, только относительный от самого внешнего отчета, т.е. по сути само имя макета. Далее при получении самого макета в коде уже либо вызывается макет по полному пути, либо создается объект внешнего отчета и макет тащится оттуда
12. EVKash 14 19.03.19 11:59 Сейчас в теме
(5) Простого пути у внешних отчетов в принципе нет. Внешние отчеты находятся в хранилище.
Путь к хранилищу в Справочник.ДополнительныеОтчетыИОбработки.
Получив отчет из хранилища, вы можете получить из него макет.

Если нужен только макет, то можно его создать в расширении в общих макетах.
4. Octopus 337 19.03.19 11:08 Сейчас в теме
ВнешнийОтчетОбъект.ПолучитьМакет("ИмяМакета") - только так, т.е. через вызов самого объекта
6. ahmeda 19.03.19 11:22 Сейчас в теме
(4)Через ПолучитьМакет() мы получаем сам макет, т.е ТабличныйДокумент, а мне нужен путь
9. SedovSU@mail.ru 297 19.03.19 11:41 Сейчас в теме
Вы скажите за чем вам нужно получить путь к макету. Возможно из за того что мы не понимаем зачем вам это мы и предлагаем стандартные решения чтобы получить именно макет а не путь
10. SedovSU@mail.ru 297 19.03.19 11:45 Сейчас в теме
Вот смотрите что сделал. сделал внешнюю обработку, добавил макет. через метаданные получил полное имя

ЭтотОбъект.Метаданные().Макеты.ИмяМакете.ПолноеИмя() - вернуло "Макет.ИмяМакета"
То есть если имя макета будет РасчетныйЛист, то для внешней обработки вернет Макет.РасчетныйЛист

Может это поможет
11. SedovSU@mail.ru 297 19.03.19 11:47 Сейчас в теме
То есть у любого объекта можно получить ОбъектМетаданных а по нему и полное имя - ПолноеИмя(). Для макета обработки будет "Макет.ИмяМакета"
13. ahmeda 19.03.19 15:42 Сейчас в теме
(11)Создал внешний отчет РасчетныйЛист, там есть код:


		МакетыВариантовОтчетов = МакетыВариантовОтчетовПечатныхФорм();
		ПолноеИмяОбъекта = ЭтотОбъект.Метаданные().ПолноеИмя();
			
		
		ПутьКМакету = МакетыВариантовОтчетов.Получить(ПолноеИмяОбъекта + "." +       РезультатКомпоновкиМакета.КлючВарианта);
		 
		МакетПечатнойФормы = УправлениеПечатью.МакетПечатнойФормы(ПутьКМакету);
		
Показать


МакетыВариантовОтчетовПечатныхФорм() это соответствие, которое выглядит так:
МакетыВариантовОтчетов.Вставить("Отчет.ПечатнаяФормаТ1.Т1", "ОбщийМакет.ПФ_MXL_Т1");
	МакетыВариантовОтчетов.Вставить("Отчет.ПечатнаяФормаТ5.Т5", "ОбщийМакет.ПФ_MXL_Т5");
	МакетыВариантовОтчетов.Вставить("Отчет.ПечатнаяФормаТ6.Т6", "ОбщийМакет.ПФ_MXL_Т6");
	МакетыВариантовОтчетов.Вставить("Отчет.ПечатнаяФормаТ8.Т8", "ОбщийМакет.ПФ_MXL_Т8");
// и т д

Возврат МакетыВариантовОтчетов;


хотел сюда вставить путь к макету внешней обработки.
В общем решил по другому.
Спасибо
14. bimy22 01.04.19 15:09 Сейчас в теме
(13) В итоге какое решение у вас было не подскажите? Была бы благодарна.
15. romulanin 01.08.19 15:52 Сейчас в теме
(14) ЭтотОбъект.ПолучитьМакет("Макет");
16. NadyaB 20.03.22 06:26 Сейчас в теме
У меня получилось так: ЭтотОбъект.Метаданные().ПолноеИмя().Наименование макета. Это именно путь, а не сам макет.
17. NadyaB 19.04.22 04:55 Сейчас в теме
Все-таки правильно ЭтотОбъект.ПолучитьМакет("Макет");
18. oleg-x 26 17.10.23 13:12 Сейчас в теме
(16) Почти, правильно так:
""+ЭтотОбъект.Метаданные().ПолноеИмя()+".Макет.ИмяМакета"
Оставьте свое сообщение

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