Вход | Регистрация

1С:Предприятие ::

Метки: 

Из внеш. обработки вызвать внеш. обработку получить печформу и сохранить в файл.

Я
   SergVMV
 
13.04.17 - 13:28
Есть внешняя обработка, в которой нужно открыть другую внешнюю обработку для выпуска отчета. Его сохранить и после получить путь к этому файлу.
Не могу понять как программно открыть внешнюю и как передать в нее параметры. И как получить путь к сформированному отчету.
 
 
   lodger
 
1 - 13.04.17 - 13:29
а вам бы все гланды через ж удалять )
отчет и макет перекопировать не вариант?
   Гипервизор
 
2 - 13.04.17 - 13:36
ВнешниеОбработки.Создать(ПолныйПутьКОбработке) не предлагать?
   anreko
 
3 - 13.04.17 - 13:45
Вызвать внешнюю обработку(отчет):

&НаСервере
Функция ПодключитьВнешнийОтчет(АдресХранилища)
    Возврат ВнешниеОтчеты.Подключить(АдресХранилища,,Ложь); 
    //УстановитьБезопасныйРежим(Истина);

КонецФункции 

&НаКлиенте
Процедура Старт()
    //Помещаем обработку во временном хранилище

    АдресХранилища = "";
    
    Оп = Новый ОписаниеОповещения("Континью", ЭтотОбъект);
    
    НачатьПомещениеФайла(Оп, АдресХранилища, "\\server\c$\Внешняя.erf", Ложь); 
    
КонецПроцедуры    

&НаКлиенте
Процедура Континью(Результат, АдресХранилища, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт     
    
    ИмяОбработки = ПодключитьВнешнийОтчет(АдресХранилища);
    
    // Откроем форму подключенной внешней обработки

    П = Новый Структура("Параметр", 2);
    ФормаОбработки = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма.ФормаОтчетаУправляемая",П);
    
    ФормаОбработки.Открыть();
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Старт();
КонецПроцедуры
   anreko
 
4 - 13.04.17 - 13:48
А затем выполнение отчета:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Зашли в обработку, а параметр: "+Параметры.Свойство("Параметр");
    Сообщение.Сообщить();

    Если Параметры.Свойство("Параметр") Тогда    
    
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Параметр 2: пошла обработка";
        Сообщение.Сообщить();
        Отчет.АвтоВыполнениеЗакрытие = Истина;
        
        ЗаполнитьСписокОбъектов(Истина);
    
        ТабДок = ПолучитьТабДокНаСервере();
        
         ИмяФайла = Отчет.РабочийКаталог + "Протокол загрузки+".xls";  
        // удаление предыдущего файла

        Файл = Новый Файл(ИмяФайла);
        Если Файл.Существует() = Истина Тогда
            УдалитьФайлы(Отчет.РабочийКаталог,"portal.roscap.com - Протокол загрузки+"*");
        КонецЕсли;
    
        // запись нового файла

        ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS);
        
        Если НЕ Отчет.НеОтправлятьПочту Тогда
            ОтправитьПочту(ИмяФайла);
        КонецЕсли;    

    Иначе    
        Отчет.АвтоВыполнениеЗакрытие = Ложь;
    КонецЕсли;

КонецПроцедуры
   anreko
 
5 - 13.04.17 - 13:53
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    Если Отчет.АвтоВыполнениеЗакрытие Тогда    
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Параметр 2: пошло завершение работы";
        Сообщение.Сообщить();
        ЗавершитьРаботуСистемы(Ложь);
    КонецЕсли;

КонецПроцедуры
   SergVMV
 
6 - 17.04.17 - 09:07
С 4 пунктом не совсем допонял. Как мне передать в форму параметр и запустить сам отчет?
Форму после выгрузки файла как закрыть?
   anreko
 
7 - 17.04.17 - 09:38
Я завершаю работу 1с.
Если тебе просто нужно закрыть форму, сделай в процедуре при открытии Отказ = Истина; и форма обработки открываться не будет.

Как передать параметр я ж как раз и показал:
  П = Новый Структура("Параметр", 2);
    ФормаОбработки = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма.ФормаОтчетаУправляемая",П);

А вот это условие как раз и проверяет наличие параметра, правда не значение, тут нужно чуть-чуть доработать:
  Если Параметры.Свойство("Параметр") Тогда    
  ...
  КонецЕсли;

Ну и наконец замечу, что это должен будет быть именно внешний отчет, для внешней обработки также нужно будет пару изменений.
   SergVMV
 
8 - 18.04.17 - 09:03
С параметром разобрался. Но, не смог понять как запустить сам отчет.
есть функция: Сформировать(ЛС). в ней как раз и должен формироваться отчет с сохранением в файл, где ЛС это параметр для формы отчета.
Как мне воспользоваться Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)?


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует