|
Внешний отчет в регламентном задании | ☑ | ||
---|---|---|---|---|
0
C0mmander_Alex
03.08.16
✎
10:04
|
Добрый день! Есть такая задача: регламентном заданием должен формироваться внешний отчет и сохранять результаты на диск. Проблема в том, что при использовании метода ПолучитьФорму появляется ошибка "Интерактивные операции недоступны", т.к. задание выполняется на сервере. Есть ли какие-то еще варианты, как заставить отчет формироваться?
|
|||
1
C0mmander_Alex
03.08.16
✎
10:05
|
Процедура ВыполнитьЕжедневныеОтчеты() Экспорт
Для Каждого Стр Из Т_Отчеты Цикл ВнешняяФорма = Стр.Отчет; //Справочники.ВнешниеОбработки.НайтиПоНаименованию("План фактный анализ плана ТО"); ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); Попытка Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла); Исключение ЗаписьЖурналаРегистрации(ОписаниеОшибки(), УровеньЖурналаРегистрации.Предупреждение); КонецПопытки; Форма.ВыбТовар.Добавить(Стр.ГруппаТовара); Форма.НачПериода = Стр.ДатаНачала; Форма.КонПериода = Стр.ДатаОкончания; Форма.НачПериода1 = Стр.ДатаНачала - 86400; Форма.КонПериода1 = Стр.ДатаОкончания- 86400; Форма.НачПериода2 = ДобавитьМесяц(Стр.ДатаНачала, -12); Форма.КонПериода2 = ДобавитьМесяц(Стр.ДатаОкончания, -12); Форма.СформироватьУдаленно(); КаталогНаДиске = "\\SERVER-FILE5\Temp\!ОБМЕН\Ежедневные отчеты\" + Формат(ТекущаяДата(), "ДФ=dd.MM.yy"); Проверка = ПроверитьСуществованиеКаталога(КаталогНаДиске); Если Проверка Тогда Время = СтрЗаменить(Лев(СокрЛП(Формат(ТекущаяДата(),"ДЛФ=T")), 5),":","_"); ИмяФайла = КаталогНаДиске + "\" + СокрЛП(Стр.Менеджер)+ " " + Время + ".xlsx"; Форма.ЭлементыФормы.Результат.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
2
vicof
03.08.16
✎
10:05
|
Поместить во временное хранилище, потом показывать
|
|||
3
C0mmander_Alex
03.08.16
✎
10:31
|
(2) Сделал так
ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить(); //ДвоичныеДанные.Записать(ИмяФайла); //АдресХранилища = ""; АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные); ИмяОбработки = ВнешниеОбработки.Подключить(АдресВоВременномХранилище, , Ложь); Попытка Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяОбработки); Исключение ЗаписьЖурналаРегистрации(ОписаниеОшибки(), УровеньЖурналаРегистрации.Предупреждение); КонецПопытки; Не помогло( |
|||
4
ovrfox
03.08.16
✎
10:32
|
Никогда не пробовал, но скорее всего в самом отчете происходят какие-то операции, запрещенные на сервере.
Скорее всего для Вашего случая запуска они бесполезны. Поместите их между дерективами компилятора #Клиент |
|||
5
Lexey_
03.08.16
✎
10:35
|
(0) формировать ТабДок без использования формы
|
|||
6
C0mmander_Alex
03.08.16
✎
10:36
|
(4) Тогда при выполнении регламентного задания, он просто не увидит эту процедуру
|
|||
7
vicof
03.08.16
✎
10:52
|
(3) Ну а разделять код на клиентский и серверный кто будет?
|
|||
8
C0mmander_Alex
03.08.16
✎
12:28
|
Проблема решена. Пришлось переписать отчет, чтобы он формировался без использования данных с формы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |