Имя: Пароль:
1C
1С v8
Как открыть форму внешнего отчета?
0 Rizhij_Nikitos
 
29.10.17
12:53
Ситуация такая: нужно программно открыть форму внешнего отчета, но формы нет. Собственно исходные: УТ 11.2.3.84 на базе 8.3.8.1652. Получаю ссылку на внешний отчет, который уже добавлен в список дополнительных отчетов обработок, беру двоичные данные, пишу во временный файл, помещаю в хранилище, подключаю через

ВнешниеОтчеты.Подключить(АдресХранилища)

Беру имя обработки, открываю через

ОткрытьЗначение("ВнешняяОбработка."+ ИмяОбработки+".Форма.Форма")

Проблема в том, что форм в отчете нет, а в качестве основной формы выбрана общая форма отчетов конфы, соответственно при всех попытках получаю что имя формы невалидно. Как быть?
1 jsmith82
 
29.10.17
12:55
Скопируй основную форму отчёта в формы отчёта и назначь эту форму основной формой отчёта.
2 jsmith82
 
29.10.17
12:56
А в форме настроек укажи Форму настроек отчёта (типовую).
3 Rizhij_Nikitos
 
29.10.17
12:56
(1) тестирую, спасибо. Сейчас отпишусь
4 banco
 
29.10.17
12:58
(0)  а просто ОткрытьЗначение("ВнешняяОбработка."+ ИмяОбработки) не работает?
5 Rizhij_Nikitos
 
29.10.17
12:59
(4) показывает строку
6 Rizhij_Nikitos
 
29.10.17
13:01
(2) Тот же результат:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ПрайсЛист8.Форма"
7 Rizhij_Nikitos
 
29.10.17
13:03
Я не тот кусок в условии немного скопировал, открываю через
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки+".Форма");
8 jsmith82
 
29.10.17
13:04
Какая форма?!
9 jsmith82
 
29.10.17
13:04
Форма.ФормаОтчета
10 jsmith82
 
29.10.17
13:05
И почему подключаешь внеш. отчет, а открываешь обработку.
11 Rizhij_Nikitos
 
29.10.17
13:05
(9) Это уже последняя ошибка. Проверил с
Форма
Форма.Форма
ФормаОтчета.Форма
Форма.ФормаОтчета
12 Rizhij_Nikitos
 
29.10.17
13:06
(10)Глобальные перечисления существуют только "ВнешняяОбработка", я так понимаю это общее для отчетов и обработок
13 Rizhij_Nikitos
 
29.10.17
13:09
(10) Все, запустилось. Понял в чем косяк. Перечитал СП еще раз на ОткрытьФорму:

Для внешних отчетов и обработок имя формы задается следующим образом:
ВнешнийОтчет.<имя отчета>.Форма.<имя формы>;
ВнешнийОтчет.<имя отчета>.<имя стандартной формы>;
ВнешняяОбработка.<имя обработки>.Форма.<имя формы>;
ВнешняяОбработка.<имя обработки>.<имя стандартной формы>.
14 Rizhij_Nikitos
 
29.10.17
13:10
Огромное спасибо. Вот полный код паттерна, вдруг кто будет искать:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ИмяФайла=ПолучитьИмяФайлаОбработки();
    
    АдресХранилища="";
    Результат=ПоместитьФайл(АдресХранилища,ИмяФайла,,Ложь);
    
    ИмяОбработки=ПолучитьСсылкуНаОбработку(АдресХранилища);
        
    ОткрытьФорму("ВнешнийОтчет."+ ИмяОбработки+".Форма");
КонецПроцедуры


&НаСервере
Функция ПолучитьИмяФайлаОбработки()
    СсылкаНаОбъект = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Прайс-лист");
    
    ДвоичныеДанные = СсылкаНаОбъект.ХранилищеОбработки.Получить();
    
    ИмяФайла = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные.Записать(ИмяФайла);
    
    Возврат(ИмяФайла);
КонецФункции

&НаСервере
Функция ПолучитьСсылкуНаОбработку(АдресХранилища)
    Возврат ВнешниеОтчеты.Подключить(АдресХранилища);
КонецФункции