Имя: Пароль:
1C
1С v8
УФ. Как программно открыть внешний отчет с диска?
0 Sasha_1CK
 
27.06.13
13:55
Помогите плиз разобраться

&НаСервере
Функция ПолучитьОтчет()
   
   
   СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
   Если Найти(Врег(СтрокаСоединения), "FILE=") Тогда
       Каталог = СтрЗаменить(Сред(СтрокаСоединения,6),";","");
       Каталог = СтрЗаменить(Каталог,"""","");
       Путь = Каталог+ "\Внешние отчеты\МойОтчет.erf";
       Отчет = ВнешниеОтчеты.Создать(Путь);
       Возврат Отчет;
   Иначе
       Сообщить ("Не найден каталог ИБ");
   КонецЕсли;
   
   
Конецфункции

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   
   ФормаОтчета = ПолучитьОтчет();    
   ФормаОтчета.ОткрытьФорму();

КонецПроцедуры

Объект внешниеотчеты доступен на сервере
Однако на клиенты вот так в лоб естественно не передается и вываливается с ошибкой
Ошибка отображения типов:
Отсутствует отображение для типа 'ВнешнийОтчетОбъект.МойОтчет'.

Собственно как передать с сервера на клиент внешнийотчет что бы открыть на клиенте форму отчета?
1 Sasha_1CK
 
28.06.13
00:26
На всякий случай выложу найденное решение.
Вдруг кто то еще будет искать.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
     СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
   Если Найти(Врег(СтрокаСоединения), "FILE=") Тогда
       Каталог = СтрЗаменить(Сред(СтрокаСоединения,6),";","");
       Каталог = СтрЗаменить(Каталог,"""","");
       Путь = Каталог+ "\Внешние отчеты\МойОтчет.erf";
   Иначе
       Сообщить ("Не найден каталог ИБ");
   КонецЕсли;

   
   //Помещаем обработку во временном хранилище

   АдресХранилища = "";
   Результат = ПоместитьФайл(АдресХранилища, Путь, , Ложь);          
   ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
   
   // Откроем форму подключенной внешней обработки

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

КонецПроцедуры

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

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

КонецФункции
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший