|
Из внеш. обработки вызвать внеш. обработку получить печформу и сохранить в файл. | ☑ | ||
---|---|---|---|---|
0
SergVMV
13.04.17
✎
13:28
|
Есть внешняя обработка, в которой нужно открыть другую внешнюю обработку для выпуска отчета. Его сохранить и после получить путь к этому файлу.
Не могу понять как программно открыть внешнюю и как передать в нее параметры. И как получить путь к сформированному отчету. |
|||
1
lodger
13.04.17
✎
13:29
|
а вам бы все гланды через ж удалять )
отчет и макет перекопировать не вариант? |
|||
2
Гипервизор
13.04.17
✎
13:36
|
ВнешниеОбработки.Создать(ПолныйПутьКОбработке) не предлагать?
|
|||
3
anreko
13.04.17
✎
13:45
|
Вызвать внешнюю обработку(отчет):
&НаСервере Функция ПодключитьВнешнийОтчет(АдресХранилища) Возврат ВнешниеОтчеты.Подключить(АдресХранилища,,Ложь); //УстановитьБезопасныйРежим(Истина); КонецФункции &НаКлиенте Процедура Старт() //Помещаем обработку во временном хранилище АдресХранилища = ""; Оп = Новый ОписаниеОповещения("Континью", ЭтотОбъект); НачатьПомещениеФайла(Оп, АдресХранилища, "\\server\c$\Внешняя.erf", Ложь); КонецПроцедуры &НаКлиенте Процедура Континью(Результат, АдресХранилища, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт ИмяОбработки = ПодключитьВнешнийОтчет(АдресХранилища); // Откроем форму подключенной внешней обработки П = Новый Структура("Параметр", 2); ФормаОбработки = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма.ФормаОтчетаУправляемая",П); ФормаОбработки.Открыть(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Старт(); КонецПроцедуры |
|||
4
anreko
13.04.17
✎
13:48
|
А затем выполнение отчета:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Зашли в обработку, а параметр: "+Параметры.Свойство("Параметр"); Сообщение.Сообщить(); Если Параметры.Свойство("Параметр") Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Параметр 2: пошла обработка"; Сообщение.Сообщить(); Отчет.АвтоВыполнениеЗакрытие = Истина; ЗаполнитьСписокОбъектов(Истина); ТабДок = ПолучитьТабДокНаСервере(); ИмяФайла = Отчет.РабочийКаталог + "Протокол загрузки+".xls"; // удаление предыдущего файла Файл = Новый Файл(ИмяФайла); Если Файл.Существует() = Истина Тогда УдалитьФайлы(Отчет.РабочийКаталог,"portal.roscap.com - Протокол загрузки+"*"); КонецЕсли; // запись нового файла ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS); Если НЕ Отчет.НеОтправлятьПочту Тогда ОтправитьПочту(ИмяФайла); КонецЕсли; Иначе Отчет.АвтоВыполнениеЗакрытие = Ложь; КонецЕсли; КонецПроцедуры |
|||
5
anreko
13.04.17
✎
13:53
|
&НаКлиенте
Процедура ПриОткрытии(Отказ) Если Отчет.АвтоВыполнениеЗакрытие Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Параметр 2: пошло завершение работы"; Сообщение.Сообщить(); ЗавершитьРаботуСистемы(Ложь); КонецЕсли; КонецПроцедуры |
|||
6
SergVMV
17.04.17
✎
09:07
|
С 4 пунктом не совсем допонял. Как мне передать в форму параметр и запустить сам отчет?
Форму после выгрузки файла как закрыть? |
|||
7
anreko
17.04.17
✎
09:38
|
Я завершаю работу 1с.
Если тебе просто нужно закрыть форму, сделай в процедуре при открытии Отказ = Истина; и форма обработки открываться не будет. Как передать параметр я ж как раз и показал: П = Новый Структура("Параметр", 2); ФормаОбработки = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма.ФормаОтчетаУправляемая",П); А вот это условие как раз и проверяет наличие параметра, правда не значение, тут нужно чуть-чуть доработать: Если Параметры.Свойство("Параметр") Тогда ... КонецЕсли; Ну и наконец замечу, что это должен будет быть именно внешний отчет, для внешней обработки также нужно будет пару изменений. |
|||
8
SergVMV
18.04.17
✎
09:03
|
С параметром разобрался. Но, не смог понять как запустить сам отчет.
есть функция: Сформировать(ЛС). в ней как раз и должен формироваться отчет с сохранением в файл, где ЛС это параметр для формы отчета. Как мне воспользоваться Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |