Имя: Пароль:
1C
 
Открыть форму внешнего отчета из Дополнительных отчетов и обработок
0 pumba055
 
19.04.21
17:05
Коллеги, добрый день!
Интересная штука. У меня есть отчет во внешних отчетах и обработках.

Я его вызываю программно с передачей параметров-->

    УсловияОтбора = Новый Структура;
    УсловияОтбора.Вставить("Сотрудник", Объект.Сотрудник);
    УсловияОтбора.Вставить("ДатаСреза", Объект.ДатаСреза);
    ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина);
    
    ОткрытьФорму("ВнешнийОтчет.ЦветаСотрудника.Форма.ФормаОтчета" , ПараметрыФормы);

Все хорошо, он открывается, но только если я заново перезаходу в предприятие, то он уже не открывается --> не известное имя формы пишет...
Приходится заново заходить во внешние отчеты и его заново перевыбирать и перерегистрировать, тогда он заработает, но это же не выход...
1 polosov
 
19.04.21
17:26
Общий модуль ДополнительныеОтчетыИОбработки смортел?
2 acht
 
19.04.21
17:27
Потому что при регистрации он подключается (не в базу, а в платформе, при помощи ВнешниеОтчеты.Подключить) с именем по умолчанию, которое берется из его метаданных. Это приводит к "кэшированию" и неявно позволяет работать твоему изврату с "ОткрытьФорму("ВнешнийОтчет.ЦветаСотрудника" без подключения внешнего отчета. При новом сеансе, оно естественно ничего про соответствие имени "ЦветаСотрудника" и тушки отчета не знает.

Так что давай, делай все по человечески - тушку отчета на диск, подключение самостоятельно, открытие формы самостоятельно.

Ну и (1) где в потрохах тоже самое
3 Kassern
 
19.04.21
17:35
попробуй так.
ПараметрыЗапуска = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаВнешнийОтчет, "БезопасныйРежим, ХранилищеОбработки");
ИмяОтчета = ВнешниеОтчеты.Подключить(АдресВоВременномХранилище, , БезопасныйРежим);
ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".Форма", ПолученныеДанные.ПараметрыФормы, ЭтаФорма);
4 Kassern
 
19.04.21
17:52
(3) строчку пропустил)
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ПараметрыЗапуска.ХранилищеОбработки.Получить())
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.