Получение произвольной формы внешней обработки в управляемом приложении
В 8.2 1С подложила разработчикам достаточно большую свинью — получить одну форму внешнего отчета из другой напрямую не получается, т.к. необходимо указать полный путь к форме. Для решения проблемы требуется подключить отчет к конфигурации. Всю голову сломал, пока дошел до данной реализации, надеюсь кому-нибудь поможет…
- Описание
- Подробнее
Описание
Прописываем в форме следующий код:
&НаКлиенте
Функция ПолучитьФормуВнешнегоОтчета(ИмяФормы)
АдресХранилища = "";
ИмяОтчета = ПолучитьИмяВнешнегоОтчета();
Результат = ПоместитьФайл(АдресХранилища, ИмяОтчета, , Ложь);
ИмяВнешнегоОтчета = ПодключитьВнешнийОтчет(АдресХранилища);
Возврат ПолучитьФорму("ВнешнийОтчет."+ИмяВнешнегоОтчета +".Форма.ФормаСотрудника",,ЭтаФорма);
КонецФункции
&НаСервере
Функция ПолучитьИмяВнешнегоОтчета()
Возврат РеквизитФормыВЗначение("Отчет").ИспользуемоеИмяФайла;
КонецФункции
&НаСервере
Функция ПодключитьВнешнийОтчет(АдресХранилища)
Возврат ВнешниеОтчеты.Подключить(АдресХранилища);
КонецФункции
Затем получаем форму на клиенте вызовом процедуры ПолучитьФормуВнешнегоОтчета(ИмяФормы), где ИмяФормы — строка с именем нужной формы.
Форму требовалось вызывать единожды, поэтому проверку на повторное подключение не делал, выдает ошибку при повторном вызове, как вариант — подключение реализовывать при открытии данной формы, а полученное имя хранить в строковом реквизите.
Идея сыровата, но может кому поможет…

