Имя: Пароль:
1C
1С v8
Как получить внешнюю обработку из встроенной обработки
0 _Natsha_
 
21.03.12
11:19
Суть вот в чем: есть регл задание, в модуле которого вызывается обработка выгрузки данных (в общем модуле стоят галки Сервер, Клиент,Внешнее соединение):
ОбработкаВыгрузки = Обработки.ВыгрузкаДанных.Создать();
ОбработкаВыгрузки.ВыполнитьВыгрузку();

В процедуре ВыполнитьВыгрузку() происходит поиск другой внешней обработки в справочнике и затем выгрузка данных:

Процедура ВыполнитьВыгрузку() Экспорт

Обработка= Справочники.ВнешниеОбработки.НайтиПоНаименованию("Выгрузка в CSV");
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = Обработка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
ФормаОбработки = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);

   ФормаОбработки.ЗаполнитьЕдиницыИзмерения();
   ФормаОбработки.ЗаполнитьСклады();
.....
.....далее идет выгрузка в csv из этой обработки и отправка файлов по почте

не могу получить ФормуОбработки. Надо видимо разделить &НаСервере,&НаКлиенте, но никак не получается...
Подскажите...
1 sanja26
 
21.03.12
11:21
ВыполнитьВыгрузку() процедура обработки ведь
2 Axel2009
 
21.03.12
11:21
ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)
Создать (Create)
Вариант синтаксиса: По имени файла

Синтаксис:

Создать(<ПолноеИмяФайла>, <БезопасныйРежим>)
Параметры:

<ПолноеИмяФайла> (обязательный)

Тип: Строка.
Полное имя файла внешней обработки.
<БезопасныйРежим> (необязательный)

Тип: Булево.
Признак создания внешней обработки в безопасном режиме. Если параметр не указан, внешняя обработка будет работать в безопасном режиме.
Значение по умолчанию: Истина
Вариант синтаксиса: По имени обработки

Синтаксис:

Создать(<Имя>)
3 _Natsha_
 
21.03.12
11:24
(1)Да, это процедура во встроенной обработке
4 sanja26
 
21.03.12
11:26
(3)и форму обработки ты получаешь в модуле объекта?
5 _Natsha_
 
21.03.12
11:28
(4)да, в модуле объекта встроенной обработки получаю ещё форму внешней обработки
6 m-serg74
 
21.03.12
11:48
(21) >ФормаОбработки = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
а вот это правильно "ИмяФайла", там же случайный темповский файло будет?
7 m-serg74
 
21.03.12
11:48
(6) для (0)
8 _Natsha_
 
21.03.12
11:53
(6)если я обработку ВыгрузкаДанных встроенную сохраняю как внешнюю и запускаю, то все норм проходит. но как только запускается регл задание и вызывает уже встроенную обработку, то программа не может получить форму внешней обработки
9 m-serg74
 
21.03.12
11:58
(8) ну
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
ФормаОбработки = ВнешняяОбработка.ПолучитьФорму();
дальше ....
10 Axel2009
 
21.03.12
12:00
прав нет на файловые операции
11 _Natsha_
 
21.03.12
12:01
(9)ПОлучитьФорму() не срабатывает
12 m-serg74
 
21.03.12
12:02
(11) ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
у тебя этого нет а получить форму из файла 1Сина не умеет
13 Axel2009
 
21.03.12
12:04
(12) хы.. умеет.. =) сам тока что увидел
14 m-serg74
 
21.03.12
12:07
извиняюсь был не прав...
15 m-serg74
 
21.03.12
12:35
может проблема в том что регл. задания выполняются на сервере, а там Формы нельзя использовать, кстати непонятно зачем ТСу форма, если пользовать ее будет регл. задание?
16 БибиГон
 
21.03.12
12:42
(15) +100

в форме находятся нужные процедуры. Нужно перенести их в модуль объекта и вызывать их из модуля.
17 _Natsha_
 
21.03.12
12:43
написала вот так:

ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = Обработка.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
ФормаОбработки = ВнешняяОбработка.ПолучитьФорму("Форма");

ошибок никаких при выполнении регл задания не выдается, пишет , что задагние выполнено
но при этом ничего не происходит, хотя если опять как внешнюю запускаю, то все выгружается

вот код, который написан далее, каталог не создается(:

МассивПУтейФайлов = Новый Массив;
   
Каталог = СокрЛП("D:\Bases1С8\Vigruzka\"+ Строка(Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd")));
ФормаОбработки.ЭлементыФормы.ВыборПапки.Значение = Каталог;    
СоздатьКаталог(ФормаОбработки.ЭлементыФормы.ВыборПапки.Значение);
КнопкаВыполнить = ФормаОбработки.ЭлементыФормы.ОсновныеДействияФормы.Кнопки.ОсновныеДействияФормыВыполнить;
18 _Natsha_
 
21.03.12
12:43
(15)наверное, именно из-за этого, но как по другому сделать не знаю(
19 m-serg74
 
21.03.12
12:46
ну как (16) сказал все из формы перенести в модуль... попробуй обработку свою выложить, если не замороченная помогу...
20 m-serg74
 
21.03.12
12:47
а лучше обе
21 _Natsha_
 
21.03.12
12:50
22 m-serg74
 
21.03.12
13:05
тестовое задание что ли? извини убивать время на разбор чего там ваще происходит не тема(((
23 _Natsha_
 
21.03.12
13:13
(22)нет, не тестовое
24 m-serg74
 
21.03.12
13:28
непонятно что из того что есть в этой обработке нужно что нет, в смысле выгружать если все что там заполняется, то не 5 минутное дело переделать ее
25 m-serg74
 
21.03.12
13:31
легче подключиться в нужное время и запустить вручную)))
26 Axel2009
 
21.03.12
13:40
(23) что из слов в (10) не понятно?
27 _Natsha_
 
21.03.12
14:00
(24)выгружать все, что там есть, получается 7 отчетов
28 m-serg74
 
21.03.12
14:18
значит надо Выгрузку не через регл. задание, а через какую нить реализацию "По таймеру" запускать от имени "живого" пользователя, т.е. интерактивно... или внимательно (значит не быстро) переделать в чистый код без Форм...
29 Axel2009
 
21.03.12
14:27
(28) при чем тут это?
30 m-serg74
 
21.03.12
14:33
(29) в серверном модуле можно создавать Формы, Открывать их, нажимать им кнопки? если можно то я не прав)
31 m-serg74
 
21.03.12
15:32