ЗУП 3.1 Не формируется внешний отчет. "Макет "" не существует. Операция прервана"

1. TODD22 18 13.05.19 13:01 Сейчас в теме
Добрый день.

Сохранил отчёт как внешний, добавил функции для подключения отчета.

Формирую отчёт, получаю сообщение "Макет "" не существует. Операция прервана".

Погуглив нашёл рекомендацию что нужно добавить строку в процедуру:

"РегистрационныеДанные.Вставить("ОпределитьНастройкиФормы", Истина); "

Но не помогло, может надо как то иначе делать?

Есть вариант скопировать запрос и макет и сделать свой отчет или менять код общего модуля в конфигурации.

Других вариантов нет?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VmvLer 13.05.19 13:07 Сейчас в теме
лучший вариант - прочесть статью о подключение внешних отчетов на ИТС.
худший вариант - продолжать забрасывать на форум чушь.
ваш вариант?
3. TODD22 18 13.05.19 13:07 Сейчас в теме
(2)
ваш вариант?

Если по теме сказать нечего ходи мимо....
5. TODD22 18 13.05.19 14:58 Сейчас в теме
(4)Ветку видел. Пробовал как написано в 24, не сработало.
6. user_2010 894 13.05.19 21:16 Сейчас в теме
7. TODD22 18 13.05.19 21:36 Сейчас в теме
(6)В кадрах, "Сверка сведений с военкоматом" или как то так... под рукой конфигурации нет.
Посмотрел отладчиком, в одной из процедур общего модуля заполняется коллекция списком названий макетов вида "Отчет.ИмяОтчета.НазваниеМакета".
Так вот "Отчет.ИмяОтчета" получается программно из имени объекта метаданных. Если имя отчёт внутренний то имя формируется правильно, а если внешний то имя имеет вид "ВнешнийОтчет.ИмяОтчета.НазваниеМакета", затем происходит поиск макета в коллекции... а в коллекции только имена вида "Отчет.Имя...".
12. EVKash 14 14.05.19 09:59 Сейчас в теме
(7)
Так вот "Отчет.ИмяОтчета" получается программно из имени объекта метаданных. Если имя отчёт внутренний то имя формируется правильно, а если внешний то имя имеет вид "ВнешнийОтчет.ИмяОтчета.НазваниеМакета", затем происходит поиск макета в коллекции... а в коллекции только имена вида "Отчет.Имя...".
Сделайте тогда через расширение. Делов-то?
В ЗУПе много где перемудрили, кмк
8. user_2010 894 13.05.19 21:43 Сейчас в теме
ясно - не сталкивалась с таким отчетом. А если посмотреть в коде - какой макет нужен отчету? на какой макет ругается?
Скорее всего в коде есть ссылка на макет - возможно вам нужно указать там макет из внешней обработки.
9. TODD22 18 14.05.19 00:08 Сейчас в теме
(8)В том и дело. Что получение макета происходит в общем модуле конфигурации и указать макет без изменения я не смог.
Задачу решил другим способом. Но решение узнать хотелось бы.....
10. user_2010 894 14.05.19 08:23 Сейчас в теме
(9) скопировать процедуру из общего модуля (если она одна требуется для получения макета) в свою обработку и там прописать свой макет
11. TODD22 18 14.05.19 09:26 Сейчас в теме
(10)Там как то всё сложнее. Всё заполнение и вся обработка идёт в этих общих модулях.
13. user_2010 894 14.05.19 10:05 Сейчас в теме
(11) ясно - тогда вам правильно рекомендуют выше - сделать свой отчет в расширении.
14. rinik88 31 14.05.19 11:58 Сейчас в теме
15. TODD22 18 14.05.19 13:40 Сейчас в теме
(14)
а как сделали то?

В итоге никак отчет не сделал. По другому решили задачу.
Самому интересно решение :)
Можно скопировать макет, запрос и сделать свой отчёт. Можно через расширение сделать, подменить название макета в одной из процедур. Может есть какие то ещё варианты.
16. rinik88 31 14.05.19 13:46 Сейчас в теме
(15) понятно, спасибо. я пока обошелся изменением макета в настройках макетов печатных форм, удобно конечно, но ограничен тем набором, который есть, то есть без изменения конфы этот набор данных не поменять)
17. milanSpb 12 03.10.22 15:08 Сейчас в теме
Перед компоновкой вставляем пользовательский параметр с указанием нужного макета.

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
..............

ИначеЕсли КлючВарианта = "СписокДляСверкиСВоенкоматом" Тогда

...........


ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("МакетПечатнойФормы", ЭтотОбъект.ПолучитьМакет("ПФ_MXL_СписокДляСверкиСВоенкоматом"));

РезультатКомпоновки = ЗарплатаКадрыОтчеты.РезультатКомпоновкиМакетаПечатнойФормы(ЭтотОбъект, ДанныеРасшифровки, НастройкиОтчета);
........
Показать
lucy2211; Highlander1981; +2 Ответить
18. milanSpb 12 03.10.22 17:51 Сейчас в теме
(17)
И продолжение....
подставляем макет из внешнего отчета
Все описанное делалось для варианта отчета "СписокДляСверкиСВоенкоматом"
все остальные можно сделать по аналогии.

Процедура ВывестиМакетСписокДляСверкиСВоенкоматом(ДокументРезультат, РезультатКомпоновки, ДатаОтчета)
	
............
	
	//Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокДляСверкиСВоенкоматом2021");
	//Если ДатаОтчета < '20170801' Тогда
	//	Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокДляСверкиСВоенкоматом");
	//ИначеЕсли ДатаОтчета < '20220108' Тогда 
	//	Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокДляСверкиСВоенкоматом2017");
	//КонецЕсли;
	
	Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_СписокДляСверкиСВоенкоматом2021");
	Если ДатаОтчета < '20170801' Тогда
		Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_СписокДляСверкиСВоенкоматом");
	ИначеЕсли ДатаОтчета < '20220108' Тогда 
		Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_СписокДляСверкиСВоенкоматом2017");
	КонецЕсли;

...............................

КонецПроцедуры
Показать
lucy2211; Highlander1981; +2 Ответить
19. Highlander1981 04.10.23 14:33 Сейчас в теме
(17) (18) Спасибо, работает!
Оставьте свое сообщение

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