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

1С:Предприятие :: 1С:Предприятие 8 общая

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

Из внеш. обработки вызвать внеш. обработку получить печформу и сохранить в файл.
Я
   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 человек.
Рекламное место пустует