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

Универсальная процедура для запуска фоноого задания

Универсальная процедура для запуска фоноого задания
Я
   Aydar
 
13.02.20 - 12:46
Добрый день!

Необходимо написать код для запуска процедуры обработки в фоновом режиме, но обработка может быть 3 видов:
1. Внешняя обработка (не добавлена ни в конфигуратор, ни в справочник "дополнительные отчеты и обработки")
2. Внутренняя, которая добавлена в конфигуратор
3. Внешняя, которая добавлена в справочник "дополнительные отчеты и обработки"

Необходимо написать код, которая будет работать не зависимо от вида обработки.
Есть ли какие-либо идеи или примеры?
 
 
   Fish
 
1 - 13.02.20 - 12:50
А что именно не получается?
   vicof
 
2 - 13.02.20 - 12:51
(1) Он же написал) 
"Необходимо написать код"
   Ненавижу 1С
 
3 - 13.02.20 - 12:56
(0) зачем?
   Aydar
 
4 - 13.02.20 - 12:58
(3) что бы обработка не ломалась при изменении типа обработки
   Aydar
 
5 - 13.02.20 - 13:52
ни у кого нет такого примера?
   Fish
 
6 - 13.02.20 - 13:53
(4) Т.е. обработка уже есть?
   Aydar
 
7 - 13.02.20 - 14:12
(6) есть, работает только когда добавляю во "внешние отчеты и обработки"
   ДНН
 
8 - 13.02.20 - 14:15
(0) Сначала ищешь в метаданных, потом во внешних обработках, потом на диске
   Franchiser
 
9 - 13.02.20 - 14:17
В БСП все есть
   Franchiser
 
10 - 13.02.20 - 14:18
Только для реализации 1-го пункта возможно придется свое писать.
   Franchiser
 
11 - 13.02.20 - 14:24
С 1-м пунктом нужно перемещать обработку на сервер, а если в кластере более 1 сервера, то не понятно на каком она окажется.
   FIXXXL
 
12 - 13.02.20 - 16:02
(11) в ХЗ ее, двоично
   Franchiser
 
13 - 13.02.20 - 16:07
(12) В БСП не реализовано нормально выполнение процедур модулей обработки внешней через файл-открыть в фоне. Это только если свои процедуры писать.
   unenu
 
14 - 13.02.20 - 16:08
(9) запуска внешней обработки в фоне в БСП нет, 
встроенные можно
методы общих модулей можно

чтобы использовать типовые механизмы для запуска 
в фоне внешних обработок, необходимо делать общий модуль-обертку.
Это  модуль и вызывать в фоне, а в качестве "хитрого" параметра в этот
модуль должен заехать объект внешней обработки, которые регистрируется в системе
при первом запуске обработки.

код приводит не буду - все что нужно я написал.
   Franchiser
 
15 - 13.02.20 - 16:13
Вот у меня так сделано:
//ВНИМАНИЕ! Обработка должна лежать на общем ресурсе доступного с 2-х серверов иначе может возникнуть ошибка

                //Имя обработки необходимо подправить на путь к обработке на общем ресурсе...

                СтруктураПараметров = Новый Структура;
                СтруктураПараметров.Вставить("ИмяОбработки",                     ИмяОбработки);//это обработка переданная с клиента во врем. папку на 1-м из серверов

                СтруктураПараметров.Вставить("ИмяМетода",                         ВыполняемаяПроцедура);
                СтруктураПараметров.Вставить("ПараметрыВыполнения",             ПараметрыДлительнойОперации);
                СтруктураПараметров.Вставить("ЭтоВнешняяОбработка",             ЭтоВнешняяОбработка); 
                СтруктураПараметров.Вставить("ДополнительнаяОбработкаСсылка",     Неопределено); 
                
                //Сообщить("Т3");

                
                //Фоновое выполнение внешней обработки: но иногда фоновое запускается на другом сервере клсатера, тогда юудет ошибка, нужен общий каталог

                РезультатФоновогоЗадания = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
                УникальныйИдентификатор,
                "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки",
                СтруктураПараметров, 
                НСтр("ru = 'Выполнение длительной операции на сервере (демо)'"));

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.