Имя: Пароль:
1C
1С v8
Регламентное задание. Запуск внешней обработки
,
0 БибиГон
 
11.10.11
11:53
Это возможно в УТ10.3 ?
Пишу так

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ВнешниеОбработки.Наименование,
       |    ВнешниеОбработки.Ссылка,
       |    ВнешниеОбработки.ХранилищеВнешнейОбработки
       |ИЗ
       |    Справочник.ВнешниеОбработки КАК ВнешниеОбработки
       |ГДЕ
       |    ВнешниеОбработки.ВидОбработки = &ВидОбработки
       |    И ВнешниеОбработки.Наименование = &Наименование";

   Запрос.УстановитьПараметр("ВидОбработки", Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка);
   Запрос.УстановитьПараметр("Наименование", Наименование);

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Если ВыборкаДетальныеЗаписи.Количество()=0 Тогда
       Возврат;
   КонецЕсли;
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Двоичныеданные=ВыборкаДетальныеЗаписи.ХранилищеВнешнейОбработки.Получить(); //ВыборкаДетальныеЗаписи.ХранилищеВнешнейОбработки.Получить;
       Если Двоичныеданные=неопределено Тогда
           продолжить;
       КонецЕсли;
       Если Не ВыборкаДетальныеЗаписи.Наименование="РегламентноеЗадание1" Тогда
           продолжить;
       КонецЕсли;
       Каталог="C:\New Folder";
       ИмяФайла = Каталог + "\" + ВыборкаДетальныезаписи.Ссылка.УникальныйИдентификатор() + ".epf";
       //ИмяФормы=
   попытка
       // Записать двоичные данные в файл
       ДвоичныеДанные.Записать( ИмяФайла );
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   КонецЦикла;
   ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
   Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла,"Форма");
 
   Если Не Форма = Неопределено Тогда
       Форма.Открыть();
   Иначе
       ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
   КонецЕсли;
   Форма.Закрыть();
   УдалитьФайлы(ИмяФайла);

В регламентом задании пишет  Ошибка при вызове метода контекста (ПолучитьФорму)
Сервер не в режиме отладки. Мне это не доступно. Где ошибка?
1 БибиГон
 
11.10.11
11:55
Этот код в регламентом задании в общем модуле.
2 simol
 
11.10.11
11:55
Дык на сервере недоступно ПолучитьФорму
3 simol
 
11.10.11
11:56
зачем этот кусок:

    ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
   Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла,"Форма");
 
   Если Не Форма = Неопределено Тогда
       Форма.Открыть();
   Иначе
       ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
   КонецЕсли;
   Форма.Закрыть();
4 БибиГон
 
11.10.11
11:56
А как можно извернуться тогда?
5 simol
 
11.10.11
11:57
(4)ответь на (3)
6 БибиГон
 
11.10.11
11:57
*зачем этот кусок:
а как запустить внешнюю обработку без формы то?
7 simol
 
11.10.11
11:58
зачем ее запускать?
8 simol
 
11.10.11
11:58
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
ВнешняяОбработка.ТвояМегаПроцедура(СМегаПараметрами);
9 БибиГон
 
11.10.11
12:00
(8) спасибо, попробую.
10 break
 
11.10.11
12:01
+ ТвояМегаПроцедура(СМегаПараметрами) вроде должна быть экспортной
11 simol
 
11.10.11
12:01
(9)Только ТвояМегаПроцедура в Модуле обработки ,а не в модуле формы и с Экспорт.

Но все же - нафига?
12 catena
 
11.10.11
12:02
(6)Тебе кнопочки нажимать или процедуры выполнять?
13 catena
 
11.10.11
12:03
(11)В смысле - нафига? у меня все мои регзадания в обработках...
14 break
 
11.10.11
12:04
(6) что мешает прописать код обработки в общем модуле?
15 catena
 
11.10.11
12:05
(14)Отлаживать удобнее в обработке. И менять на лету.
16 simol
 
11.10.11
12:06
(15)Надо так понимать ,что ты еще так не отлаживал.

Сервер у тебя не в Дебаге и пытаешься форму открыть
17 БибиГон
 
11.10.11
12:06
(15) +100
обновлять конфигурацию неохота каждый раз, тем более РИБ
18 simol
 
11.10.11
12:06
+(16)попутал с автором
19 БибиГон
 
11.10.11
12:07
(12) процедуры выполнять только
20 simol
 
11.10.11
12:07
Сервер все равно придется переводить в отладку
21 БибиГон
 
11.10.11
12:07
(16) прав, и не в дебаге и регзадания отключены у базы. )
22 БибиГон
 
11.10.11
12:08
(20) мне он не доступен
23 БибиГон
 
11.10.11
12:08
поэтому буду судить только по результату работы обработки.
24 simol
 
11.10.11
12:08
(22)Как же ты отлаживать будешь, Сообщениями?
25 simol
 
11.10.11
12:09
Тогда см (8)(11), но если часто вызывается, то тормозить будет
26 БибиГон
 
11.10.11
12:09
не часто, максимум 1 раз в день будет вызываться
27 БибиГон
 
13.10.11
00:46
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Двоичныеданные=ВыборкаДетальныеЗаписи.ХранилищеВнешнейОбработки.Получить();
       Если Двоичныеданные=неопределено Тогда
           продолжить;
       КонецЕсли;
       Если Не ВыборкаДетальныеЗаписи.Наименование="РегламентноеЗадание1" Тогда
           продолжить;
       КонецЕсли;

       ИмяФайла = ПолучитьИмяВременногоФайла("epf");

   попытка
       ДвоичныеДанные.Записать( ИмяФайла );

Ошибка при вызове метода контекста (Записать). Почему?
28 БибиГон
 
13.10.11
00:47
Это в регламентном задании
29 БибиГон
 
13.10.11
01:15
подскажите в чем может быть проблема?
30 catena
 
13.10.11
07:30
(27)А текст ошибки?
31 БибиГон
 
13.10.11
08:24
(30) нема :)
запускаю вручную фоновое задание, этот текст выходит в графе ошибки. Там так и написана ошибка. Я не могу отлаживать, режим не дебаг.

по другому пишу


       АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
       ИмяОбработки = Строка(ВыборкаДетальныезаписи.Ссылка.УникальныйИдентификатор() + ".epf");        
       //ИмяФайла = ПолучитьИмяВременногоФайла("epf");
       ИмяФайла = ВнешниеОбработки.Подключить(АдресХранилища, ИмяОбработки ,);
   попытка
       ДвоичныеДанные.Записать( ИмяФайла );
   Исключение
       Сообщить(ОписаниеОшибки());
       Возврат;
   КонецПопытки;
   КонецЦикла;
   ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
   ВнешняяОбработка.КнопкаВыполнитьНажатие0();
   УдалитьФайлы(ИмяФайла);

уже другая ошибка вылезла.
"Преобразование к типу число не может быть выполнено" :(

Подозреваю что обработка из временного хранилища всеже запустилась, теперь в ней править нужно чтото.
Когда текст из (1) запускаю внешней обработкой, то все нормально отрабатывало.
На сервере сохранять файл в каталог не получилось. )

Буду дальше гадать где ошибка вылезает...это все особенности выполнения кода на сервере.