Дано:
- Внешняя обработка
- в модуле объекта - экспортная процедура СделатьПоМоему()
Нужно: из модуля формы внешней обработки запустить фоновое задание метод которого находится в модуле объекта этой внешней обработке...
Т.е. из модуля формы внешней обработки можно вызвать экспортную процедуру модуля объекта так:
РеквизитФормыВЗначение("Объект").СделатьПоМоему(НужныеПараметры)
Задание = ФоновыеЗадания.Выполнить(
"ВнешняяОбработка.МояВнешняяОбработка.СделатьПоМоему",
НужныеПараметры, , "НаименованиеЗадания");
AnryMc @ Сегодня, 9:20
,
Я делал когда-то обработку в фоновом режиме "корректировка ответственных в документах РТиУ"
Может и не то что Вам надо, но делал так и подключал в 1с 8 в фоновых заданиях запуск обработки по времени(получилось, то что надо заказчику;
Функция СведенияОВнешнейОбработке() Экспорт
ВерсияБСП = СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ВерсияБСП);
ПараметрыРегистрации.Информация = НСтр("Корректировка Ответственных в документах");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "2.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("Корректировка Ответственных в документах");
Команда.Идентификатор = "КорректировкаОтветственныхВДокументах";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.ПоказыватьОповещение = Ложь;
Команда.Модификатор = "";
Возврат ПараметрыРегистрации;
КонецФункции
Процедура ВыполнитьКоманду(Идентификатор,ОбъектыНазначения) Экспорт
Если Идентификатор = "КорректировкаОтветственныхВДокументах" ТОгда
КорректировкаОтветственныхВДокументах();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КорректировкаОтветственныхВДокументах() Экспорт
//тут был текст запросов и т.д.
КонецПроцедуры
denis84 @ Сегодня, 10:52
,
Спасибо,
но у меня задача - без БСП :-(
и без регистрации внешней обработки в справочнике "Внешние отчеты и обработки"
AnryMc @ Сегодня, 11:20
,
вот такой вариант еще нащел:
//Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.
//Не буду растекаться мыслью по дереву и тянуть кота за все известные места, так как надеюсь, все согласятся, что фоновое выполнение это хорошо. Есть простой путь запускать любой код в фоне. Специалисты скорее //всего такой способ используют, но что-то в инете я описания не встретил, решил выложить.
//Перво-наперво создаем общий модуль с именем например "ФоновоеВыполнение" с галкой "Сервер". Добавим туда пару процедур:
Функция ЗапуститьФоновоеВыполнение(ТекстПроцедуры,СтруктураПараметров=Неопределено) Экспорт
УникальныйИдентификатор = Новый УникальныйИдентификатор;
ПараметрыВыполнения = Новый Массив;
ПараметрыВыполнения.Добавить(ТекстПроцедуры);
ПараметрыВыполнения.Добавить(СтруктураПараметров);
ФоновыеЗадания.Выполнить("ФоновоеВыполнение.ФоноваяПроцедура",ПараметрыВыполнения,УникальныйИдентификатор);
Возврат УникальныйИдентификатор;
КонецФункции
Процедура ФоноваяПроцедура(ТекстМодуля,ПараметрыВыполнения) Экспорт
ПолныйТекстМодуля = "";
Для Каждого ТекПараметр Из ПараметрыВыполнения Цикл
ПолныйТекстМодуля = ПолныйТекстМодуля+ТекПараметр.Ключ+"=ПараметрыВыполнения."+ТекПараметр.Ключ+";"+Символы.ПС;
КонецЦикла;
ПолныйТекстМодуля = ПолныйТекстМодуля + ТекстМодуля;
Выполнить(ПолныйТекстМодуля);
КонецПроцедуры
//И готово!
//Теперь для выполнения когда в любой момент мы можем поместить любую процедуру в текстовую переменную:
ТекстФоновойПроцедуры = "
|//Тут передаем текст фоновой процедуры, это может быть вызов каких то процедур или полноценный код
|//вызов процедур проще, т.к. тупо легче отлаживать, т.к. код в этой процедуре обычной отладке не поддастся,
|//а при вызове процедуры или функции мы ставим там точку останова и включаем в отладке автоматическое
|//подключение фоновых заданий. Запускать можно любые методы для выполнения на сервере.
|
|ОбщийМодульСервер.ВыполнитьНужнуюЗадачу(Парметр1,Парметр2);"
И вызывать ее выполнение:
ФоновоеВыполнение.ЗапуститьФоновоеВыполнение(ТекстФоновойПроцедуры,Новый Структура("Параметр1,Параметр2",Параметр1,Параметр2));
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua