|
Запуск внешних обработок по регламентному заданию. Управляемые формы. | ☑ | ||
---|---|---|---|---|
0
MakaMaka
26.03.18
✎
08:32
|
Всем привет. Недавно тут ковырял запуск внешних обработок по регламентному заданию и столкнулся с проблемой. Что бы решить проблему, мне надо понять, откуда берутся некоторые параметры.
Итак: запуск регламентного задания начинается, с обращения к самому регламентному заданию, оно называется : - «ЗапускДополнительныхОбработок»; Это самое регламентное задание обращается к процедуре: - «Процедура ВыполнитьОбработкуПоРегламентномуЗаданию(ВнешняяОбработка, ИдентификаторКоманды) Экспорт». (Поискал глобальным поиском, больше вызовов процедуры ВыполнитьОбработкуПоРегламентномуЗаданию не нашел.) У меня вопрос к знатокам, где заполняются параметры процедуры? В каком месте конфигурации? Или это делается не программно, а на уровне платформы? |
|||
1
Cyberhawk
26.03.18
✎
08:34
|
У метода РЗ, представленного внешней обработкой, не может быть параметров
|
|||
2
MakaMaka
26.03.18
✎
08:39
|
(1) Параметры в процедуре ВыполнитьОбработкуПоРегламентномуЗаданию, там 2 параметра :
1. ВнешняяОбработка - ссылка на внешнюю обработку; 2. ИдентификаторКоманды - идентификатор выполняемой команды; |
|||
3
Cyberhawk
26.03.18
✎
08:43
|
Я вроде не спрашивал, чего ты там и где задаешь, так что зачем ты это мне написал - Я хз
|
|||
4
MakaMaka
26.03.18
✎
08:43
|
В общем суть в том, что в одной УТ обработка при выполнении, через регламентное задание отрабатывает, в другой УТ (старой версии, не отрабатывает).
В новой версии когда ставлю точку останова в процедуре ВыполнитьОбработкуПоРегламентномуЗаданию параметры заполнены правильно, т.е. 1. ВнешняяОбработка - ссылка на внешнюю обработку; 2. ИдентификаторКоманды - идентификатор выполняемой команды; В старой версии УТ, они перепутаны: 1. ВнешняяОбработка - идентификатор выполняемой команды; 2. ИдентификаторКоманды - ссылка на внешнюю обработку; А проблема, в том, что я не понимаю где заполняются параметры, т.к. на процедуру ссылается только Регл. Задание "ЗапускДополнительныхОбработок" и параметры в нее как то подставляются, а где происходит их определение я не понимаю. |
|||
5
Мимохожий Однако
26.03.18
✎
08:44
|
(0) "Столкнулся с проблемой".Так какая проблема?
|
|||
6
MakaMaka
26.03.18
✎
08:46
|
(5) см.(4)
|
|||
7
Мимохожий Однако
26.03.18
✎
08:50
|
УТ10?
|
|||
8
Мимохожий Однако
26.03.18
✎
08:51
|
Сравни процедуры регистрации в модулях обработок.
|
|||
9
MakaMaka
26.03.18
✎
08:51
|
(7) Нет, 11, управляемые формы.
|
|||
10
MakaMaka
26.03.18
✎
08:51
|
(8) Одна и та же обработка, процедуры регистрации идентичны.
|
|||
11
MakaMaka
26.03.18
✎
08:55
|
Есть вариант поменять местами параметры, т.е.
1. Так было: Процедура ВыполнитьОбработкуПоРегламентномуЗаданию(ВнешняяОбработка, ИдентификаторКоманды) Экспорт; 2. Так стало: Процедура ВыполнитьОбработкуПоРегламентномуЗаданию( ИдентификаторКоманды, ВнешняяОбработка) Экспорт Но очень хочется разобраться, понять, что же там все таки происходит. |
|||
12
Мимохожий Однако
26.03.18
✎
09:04
|
Если ты смог встать отладчиком и дойти до точки останова, то сможешь по стеку процедур выйти на точку запуска обработки, которая, скорее всего, размещена во временном файле. Описание сего "чуда" изложено в документации БСП. Выясни какое БСП у тебя в конфигурации и почитай.
|
|||
13
MakaMaka
26.03.18
✎
09:10
|
(12) Когда я встаю отладчиком на процедуру ВыполнитьОбработкуПоРегламентномуЗаданию, то мне не показано откуда она вызывается, он первая в стеке вызовов.
Где взять документацию на БСП? В комплекте поставки с сайта, юзерс? или на ИТС есть? |
|||
14
MakaMaka
26.03.18
✎
09:13
|
(12) Даже с БСП засада, в базе указан номер версии: 1.0.6.16, на сайте ИТС не нашел ничего про нее, на сайте юзерс такого тоже нету (
|
|||
15
MakaMaka
26.03.18
✎
09:16
|
Гугл о моей версии бсп выдает 2 ссылки:
https://www.forum.mista.ru/topic.php?id=504802 (датировано 2010 годом) И тему на варезнике, от 2013 года. Засада... |
|||
16
Мимохожий Однако
26.03.18
✎
09:34
|
Какая у тебя конфигурация УТ? Номер
|
|||
17
MakaMaka
26.03.18
✎
09:39
|
(16) Управление торговлей, редакция 11 (11.0.4.6)
|
|||
18
Мимохожий Однако
26.03.18
✎
09:52
|
(13) Файловая или клиент-серверная база. Дальше отладчиком не шагается? Включи отладку регламентного задания в конфигураторе.
|
|||
19
MakaMaka
26.03.18
✎
09:57
|
(18) База клиент серверная.
Кофигуратором могу прошагать следующий путь: 1. ВыполнитьОбработкуПоРегламентномуЗаданию 2. Процедура НачалоВыполненияОбработки(ДополнительнаяОбработкаСсылка, ИдентификаторКоманды) (в процедуре готовится текст сообщения, который будет записан в ЖР; 3. ЗаписатьСобытиеВЖурналРегистрации(ДополнительнаяОбработкаСсылка, ТекстСообщения) - тут ошибка, т.к. идет обращение к метаданным первого параметра, а это у меня строковый тип; Весь текст процедуры, где происходит ошибка: Процедура ЗаписатьСобытиеВЖурналРегистрации(ДополнительнаяОбработкаСсылка, ТекстСообщения) ЗаписьЖурналаРегистрации(НСтр("ru = 'Дополнительные отчеты и обработки'"), УровеньЖурналаРегистрации.Информация, ДополнительнаяОбработкаСсылка.Метаданные(), ДополнительнаяОбработкаСсылка, ТекстСообщения); КонецПроцедуры |
|||
20
MakaMaka
26.03.18
✎
09:58
|
(18) отладка фоновых заданий в конфигураторе включена.
|
|||
21
Мимохожий Однако
26.03.18
✎
10:00
|
Включи отладку на сервере. Параметр -debug в службе агента 1С
|
|||
22
MakaMaka
26.03.18
✎
10:01
|
Выполнение отваливается при обращении ДополнительнаяОбработкаСсылка.Метаданные(), т.к. параметры у меня перепутаны и тип параметра ДополнительнаяОбработкаСсылка - строка.
|
|||
23
MakaMaka
26.03.18
✎
10:03
|
(21) Тогда я увижу откуда вызывается процедура ВыполнитьОбработкуПоРегламентномуЗаданию ?
|
|||
24
MakaMaka
26.03.18
✎
10:13
|
Поправка, Версия БСП: 2.1.8.4. В РС Находится не корректная информация.
|
|||
25
MakaMaka
26.03.18
✎
10:36
|
Только это ничего не меняет. Откуда заполняется процедура не понятно.
|
|||
26
MakaMaka
26.03.18
✎
11:12
|
При ручном запуске регламентного задания, в недрах общих модулей, вызывается процедура
Процедура ОбработатьРегламентноеЗаданиеВручную(Знач Задание, МоментЗапуска = Неопределено, ИдентификаторФоновогоЗадания = "") Экспорт ВызватьИсключениеЕслиНетПраваАдминистрирования(); Задание = ?(ТипЗнч(Задание) = Тип("РегламентноеЗадание"), Задание, ПолучитьРегламентноеЗадание(Задание)); Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда ОбработатьРегламентноеЗадание(Задание, Истина, МоментЗапуска, ИдентификаторФоновогоЗадания); // Обновление состояния уже выполнено в вызванной процедуре. Иначе НачатьТранзакцию(); Попытка Состояние = ПолучитьСостояниеОбработкиРегламентныхЗаданий(Истина); НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Запуск вручную: %1'"), ПредставлениеРегламентногоЗадания(Задание)); ФоновоеЗадание = ФоновыеЗадания.Выполнить(Задание.Метаданные.ИмяМетода, Задание.Параметры, Задание.Ключ, НаименованиеФоновогоЗадания); ИдентификаторФоновогоЗадания = Строка(ФоновоеЗадание.УникальныйИдентификатор); Состояние.Соответствие_ИФЗ_ИРЗ_ЗапущенныеНаСервереВручную.Вставить( ИдентификаторФоновогоЗадания, Строка(Задание.УникальныйИдентификатор) ); МоментЗапуска = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ФоновоеЗадание.УникальныйИдентификатор).Начало; ОбновитьСостояниеОбработкиРегламентныхЗаданий(Состояние); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; КонецЕсли; КонецПроцедуры // ОбработатьРегламентноеЗаданиеВручную() Буду дальше рыть. |
|||
27
MakaMaka
26.03.18
✎
11:51
|
up
|
|||
28
Cyberhawk
26.03.18
✎
20:06
|
Сколько платят за решение вопроса?
|
|||
29
Мимохожий Однако
26.03.18
✎
20:19
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |