Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Вызвать фоновое задание с методом в модуле внешней обработки          
AnryMc Подменю пользователя
сообщение 08.05.24, 8:20
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 410
Спасибо сказали: 116 раз
Рейтинг: 118.8

Дано:
- Внешняя обработка
- в модуле объекта - экспортная процедура СделатьПоМоему()

Нужно: из модуля формы внешней обработки запустить фоновое задание метод которого находится в модуле объекта этой внешней обработке...

Т.е. из модуля формы внешней обработки можно вызвать экспортную процедуру модуля объекта так:
РеквизитФормыВЗначение("Объект").СделатьПоМоему(НужныеПараметры)


но КАК это передать при вызове фонового задания
Задание = ФоновыеЗадания.Выполнить(
     "ВнешняяОбработка.МояВнешняяОбработка.СделатьПоМоему",
     НужныеПараметры, , "НаименованиеЗадания");


?????????????????????????????????????????????????????????????

denis84 Подменю пользователя
сообщение 08.05.24, 9:52
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 462
Из: Украина
Спасибо сказали: 151 раз
Рейтинг: 152.8

AnryMc @ Сегодня, 9:20 * ,
Я делал когда-то обработку в фоновом режиме "корректировка ответственных в документах РТиУ"
Может и не то что Вам надо, но делал так и подключал в 1с 8 в фоновых заданиях запуск обработки по времени(получилось, то что надо заказчику;
Функция СведенияОВнешнейОбработке() Экспорт
    ВерсияБСП = СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ВерсияБСП);
    ПараметрыРегистрации.Информация = НСтр("Корректировка Ответственных в документах");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Версия = "2.0";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("Корректировка Ответственных в документах");
    Команда.Идентификатор = "КорректировкаОтветственныхВДокументах";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    Команда.ПоказыватьОповещение = Ложь;
    Команда.Модификатор = "";
    
    Возврат ПараметрыРегистрации;
КонецФункции

Процедура ВыполнитьКоманду(Идентификатор,ОбъектыНазначения) Экспорт
    Если Идентификатор =   "КорректировкаОтветственныхВДокументах" ТОгда
        КорректировкаОтветственныхВДокументах();
    КонецЕсли;    
КонецПроцедуры

&НаСервере
Процедура КорректировкаОтветственныхВДокументах() Экспорт
              //тут был текст запросов и т.д.
КонецПроцедуры


Сообщение отредактировал denis84 - 08.05.24, 9:52

Спасибо сказали: AnryMc,

AnryMc Подменю пользователя
сообщение 08.05.24, 10:20
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 410
Спасибо сказали: 116 раз
Рейтинг: 118.8

denis84 @ Сегодня, 10:52 * ,

Спасибо,

но у меня задача - без БСП :-(
и без регистрации внешней обработки в справочнике "Внешние отчеты и обработки"

Сообщение отредактировал AnryMc - 08.05.24, 10:23

denis84 Подменю пользователя
сообщение 08.05.24, 10:39
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 462
Из: Украина
Спасибо сказали: 151 раз
Рейтинг: 152.8

AnryMc @ Сегодня, 11:20 * ,
вот такой вариант еще нащел:
//Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.
//Не буду растекаться мыслью по дереву и тянуть кота за все известные места, так как надеюсь, все согласятся, что фоновое выполнение это хорошо. Есть простой путь запускать любой код в фоне. Специалисты скорее //всего такой способ используют, но что-то в инете я описания не встретил, решил выложить.

//Перво-наперво создаем общий модуль с именем например "ФоновоеВыполнение" с галкой "Сервер". Добавим туда пару процедур:

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

Процедура ФоноваяПроцедура(ТекстМодуля,ПараметрыВыполнения) Экспорт
    ПолныйТекстМодуля = "";
    Для Каждого ТекПараметр Из ПараметрыВыполнения Цикл
        ПолныйТекстМодуля = ПолныйТекстМодуля+ТекПараметр.Ключ+"=ПараметрыВыполнения."+ТекПараметр.Ключ+";"+Символы.ПС;
    КонецЦикла;
    ПолныйТекстМодуля = ПолныйТекстМодуля + ТекстМодуля;
    Выполнить(ПолныйТекстМодуля);
КонецПроцедуры
//И готово!

//Теперь для выполнения когда в любой момент мы можем поместить любую процедуру в текстовую переменную:

ТекстФоновойПроцедуры = "
|//Тут передаем текст фоновой процедуры, это может быть вызов каких то процедур или полноценный код
|//вызов процедур проще, т.к. тупо легче отлаживать, т.к. код в этой процедуре обычной отладке не поддастся,
|//а при вызове процедуры или функции мы ставим там точку останова и включаем в отладке автоматическое
|//подключение  фоновых заданий. Запускать можно любые методы для выполнения на сервере.
|
|ОбщийМодульСервер.ВыполнитьНужнуюЗадачу(Парметр1,Парметр2);"
И вызывать ее выполнение:

ФоновоеВыполнение.ЗапуститьФоновоеВыполнение(ТекстФоновойПроцедуры,Новый Структура("Параметр1,Параметр2",Параметр1,Параметр2));

Спасибо сказали: AnryMc, kserg2012,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 01.11.24, 1:19
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!