![]() |
|
Выполнение процедуры внеш обработки в фоне | ☑ | ||
---|---|---|---|---|
0
SergDon
15.04.25
✎
15:38
|
Коллеги, добрый день!
Прошу помочь разобраться. Мне нужно выполнить процедуру, которая вызывается из внешней обработки после проведения документа. Я сделал так: &НаСервере &ИзменениеИКонтроль("ПослеЗаписиНаСервере") Процедура Н_ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) #Вставка ВызовМоейПроцедуры(); #КонецВставки КонецПроцедуры &НаСервере Процедура ВызовМоейПроцедуры() ПараметрыЗадания = Новый Структура; ПараметрыЗадания.Вставить("ИмяМетода", "МойМетод"); ПараметрыЗадания.Вставить("ПараметрыВыполнения", Новый Структура("Ссылка",Объект.Ссылка)); ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина); ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка", Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Некая обработка")); ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(Новый УникальныйИдентификатор); ПараметрыВыполнения.НаименованиеФоновогоЗадания = "Мое фоновое задание"; ВыполняемыйМетод = "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки"; Рез = ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗадания, ПараметрыВыполнения); КонецПроцедуры |
|||
1
SergDon
15.04.25
✎
15:40
|
Приходит ошибка, что слишком много фактических параметров
Хотя передаю всего один параметр, как и должно |
|||
2
Волшебник
15.04.25
✎
15:40
|
Зачем? Что делает эта процедура? Почему она во внешней обработке?
|
|||
3
SergDon
15.04.25
✎
15:49
|
Эта процедура создает документ/ты по алгоритму на основании данных в табличной части.
Т.к. в документе как правило много строк в ТЧ и он проводится долго, то была поставлена задача создавать документы в фоне после проведения |
|||
4
SergDon
15.04.25
✎
15:52
|
Можно конечно это делать интерактивно из внешней обработки, подобрав туда проведенный документ.
|
|||
5
Builder
15.04.25
✎
15:59
|
(0) Что мешает перетащить эту процедуру в это же расширение? Зачем внешняя обработка?
|
|||
6
SergDon
15.04.25
✎
16:02
|
(5) Так сложилось исторически.
Если иначе не получится, придется перетащить |
|||
7
Волшебник
15.04.25
✎
16:09
|
(3) Сделайте подписку на проведение документа
|
|||
8
Мультук
гуру
15.04.25
✎
16:11
|
(0)
1) Вероятно, нужно взять себя в руки, туда же отладчик и посмотреть в какой строке происходит ошибка. 2) Покажите объявление "МойМетод" в вашей обработке |
|||
9
SergDon
15.04.25
✎
16:34
|
(8)
Процедура МойМетод(Ссылка) Экспорт |
|||
10
SergDon
15.04.25
✎
16:37
|
Ошибка происходит в модуле ОбщегоНазначения
Процедура ВыполнитьМетодОбъекта(Знач Объект, Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт Во время выполнения этой команды: Выполнить "Объект." + ИмяМетода + "(" + ПараметрыСтрока + ")"; |
|||
11
СвинТуз
15.04.25
✎
16:42
|
Осталось немного.
Посмотреть строку команды после выполнить. Посмотреть что такое "Объект" |
|||
12
СвинТуз
15.04.25
✎
16:43
|
и посмотреть отдельно и внимательно на "ПараметрыСтрока"
|
|||
13
SergDon
15.04.25
✎
16:55
|
(12)
Уже смотрел. Параметры там не правильные, но дело в том, что я вызываю процедуру. В первом посте написал как ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗадания, ПараметрыВыполнения); Из одной из вложенных процедур вызывается Процедура ВыполнитьМетодОбъекта( И ее менять я не могу Поскольку она много откуда еще вызывается |
|||
14
АгентБезопасной Нацио
15.04.25
✎
17:02
|
Ошибка там же, где всегда...
|
|||
15
1Сергей
15.04.25
✎
17:33
|
ВыполняемыйМетод = "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки";
Это чо? |
|||
16
craxx
15.04.25
✎
21:53
|
(13) Позовите программиста
|
|||
17
Gucci76
15.04.25
✎
22:30
|
(0) Делал как то запуск в фоне для внешней обработки.
Код запуска похож. Только запуск в фоне происходил с клиента. И обработка была подключена как дополнительная внешняя обработка. |
|||
18
Franchiser
гуру
16.04.25
✎
00:07
|
(0)
АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено,УникальныйИдентификатор); ВыполняемыйМетод = "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки"; СтруктураПараметров = Новый Структура(); СтруктураПараметров.Вставить("Поток", НомерПотока);//многопоточно СтруктураПараметров.Вставить("ПериодЗаписи", 1); // Секунд СтруктураПараметров.Вставить("ПорцияДанных", ТаблицаСПорциями[НомерПотока-1].НаборДанных); // СтруктураПараметров.Вставить("АдресХранилища" , АдресХранилища); СтруктураПараметров.Вставить("Действие", ТекДействие); // Для каждого Стр из СтруктураРеквизитовФормы Цикл СтруктураПараметров.Вставить(Стр.Ключ,Стр.Значение); КонецЦикла; ПараметрыЗадания = Новый Структура; ПараметрыЗадания.Вставить("ИмяОбработки", ИмяОбработки); ПараметрыЗадания.Вставить("ИмяМетода", "МойМетод"); ПараметрыЗадания.Вставить("ПараметрыВыполнения", СтруктураПараметров); ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", Истина); ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка", ОбъектСсылка); ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания; РезультатФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗадания, ПараметрыВыполнения); Процедура МойМетод(ПараметрыВыполнения, РезультатАдресХранилища) Экспорт ... КонецПроцедуры |
|||
19
SergDon
16.04.25
✎
15:02
|
Получилось! Спасибо всем!
Подставил это: Процедура МойМетод(ПараметрыВыполнения, РезультатАдресХранилища) Экспорт И все заработало! В ПараметрыВыполнения передаю структуру ПараметрыВыполнения.Вставить("Ссылка", ОбъектСсылка) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |