gifts2017

Как получить ключ запущенного Регламентного Задания

Опубликовал Andrey Tey (Bitnikov) в раздел Программирование - Практика программирования

Представьте ситуацию:

Вы используете один метод (процедуру) для нескольких регламентных заданий. Процедура сработала, но как штатными средствами определить какое именно РЗ ее запустило?

Спросите зачем? В одной из конфигураций у меня, например, все РЗ не предопределенные! Каждое РЗ (созданное в конфигураторе) - лишь определенный МЕТОД обработки данных! А в консоле настройки РЗ в режиме Предприятия (шедуллере) уже создается немыслимое множество всевозможных РЗ для обработки разных ситуаций. Но количество методов обработки ограничено, оно описано Регламентными Заданиями (методами) в режиме конфигуратора.
Пример: В конфигураторе создано РЗ архивирования файлов. А в режиме Предприятия (шедуллере) пользователь создает несколько РЗ на архивирование и для каждого указывает каталоги откуда брать/куда выкладывать.

Вот Вам хитроумный способ получить ключ (т.е. уникальность) сработавшего Регламентного Задания в процедуре обработчике.

Что у нас есть в штатных средствах? Есть возможность только посмотреть список работающих Фоновых Заданий, отфильтровать его по времени запуска/имени метода и надеяться, что с этим же методом в данный момент не было запущено других РЗ с этим же методом.

ТАК ВОТ, есть ТОЧНЫЙ неописанный метод

Достаточно:

1. При записи Регламентного Задания (в режиме предприятия в шедуллере, в обработке редактирования Регламентных Заданий) заполнить параметры:

       мсПараметров = Новый Массив;
       мсПараметров.Добавить(Ключ);
       РегламентноеЗадание.Параметры = мсПараметров;

       В переменную Ключ передать уникальный ключ (имя) этого задания и он запишется в шаблон ДАННОГО РЕГЛАМЕНТНОГО ЗАДАНИЯ.

2. А в запускаемой РЗ процедуре (методе) поместить параметр "КлючРЗ" (например, имя неважно):

        Процедура ЗапускРегламентногоЗадания(КлючРЗ) Экспорт

        И при запуске этот параметр будет содержать Ключ, занесенный в параметры при записи РЗ в шедуллере, который можно использовать.

        Я, например, по Ключу нахожу соответствующую запись в Регистре сведений и забираю дополнительные настройки РЗ. Такие как Каталоги архивирования.

ЗЫ. Чтобы метод начал работать, ВСЕ РЗ в режиме предприятия нужно перезаписать (переинициализировать).

Метод найден Чтением/Думанием/Тыканием. Причины его работы науке неизвестны.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Yura Yura (YuraLu) 20.02.13 06:17
О как!?!
Легко и просто!
Теперь только фоновые победить. Может кто знает, как с фоновыми справиться?
Или у меня руки кривые - подскажите!
2. Andrey Tey (Bitnikov) 20.02.13 10:06
(1) YuraLu, дык, если я правильно понял вопрос, статья как раз это и описывает!
Фоновое - частный случай регламентного. Об этом и есть статья. Когда УЖЕ сработало регламентное (т.е. стало фоновым), вот тогда и есть проблема получить его ключ.
Или у Вас проблема в файловой базе? Если да, то увы, с ними не работаю, подсказать не могу.
3. Вячеслав (Tippa) 20.02.13 10:58
большой и жирный ПЛЮС не за публикацию, а за последнюю фразу :
Метод найден Чтением/Думанием/Тыканием. Причины его работы науке неизвестны.
:)
4. Andrey Tey (Bitnikov) 20.02.13 11:02
(3) Tippa, спасибо)))
Догадки, конечно, есть. Видимо, обращение к процедуре записывается вместе с элементом Регламентного Задания. Как только мы "проинициализировали" обращение с указанием параметра, дальше он при каждом запуске отрабатывает шаблоном.
5. bulpi bulpi (bulpi) 20.02.13 17:24
Хм... Это есть в синтакс-помошнике. Регламентное задание, свойство "Параметры".
6. Andrey Tey (Bitnikov) 20.02.13 17:29
(5) bulpi, Гуд поинт. Вот только нет прямого описания как использовать. И уж тем более нет упоминания с другой стороны баррикады - со стороны процедуры
7. Алексей Роза (DoctorRoza) 20.02.13 19:28
Ну если только в качестве информации такой способ и пойдет. Только автор правильно вопрос задал в начале статьи, но на него ответа так и не дал. И в самом деле- зачем? Применение одной процедуры для нескольких РЗ видимо связано с обязанностями пользователей, их правами. ИМХО, это изврат! :) Плодить то зачем? Может стоит переосмыслить логику работы.
8. VVV (V_V_V) 20.02.13 21:53
В пункте 1 - КлючРЗ. В пункте 2 - Ключ. Так и должно быть?
9. Andrey Tey (Bitnikov) 21.02.13 09:30
(8) V_V_V, Переменные в разных модулях. Если желаете, именуйте одинаково
10. Andrey Tey (Bitnikov) 21.02.13 09:36
(7) DoctorRoza,
Пример: Регламентное Задание в конфе (и процедура соответственно) настроены на выполнение определенных действий, например, на выборку файлов и выполнение определенных действий с ними, архивирование фор экзампл. Пользователь в режиме предприятия создает Регламентное Задание и настраивает Папку откуда брать файлы и Папку куда выкладывать архив. Подобных заданий может быть тысяча. А РЗ в Конфе ОДНА! Необходимо при запуске ФЗ определять по ключу РЗ настройки из Регистра сведений (как в примере, папки для архивирования).
Логику работы пересматривать не стоит, что-то мне мой опыт подсказывает, что это бесполезно)))
Я же максимально лаконично (чтобы не утомлять) написал причины в описание. Молодой человек, что ж Вы не додумываете сами, а заставляете работать пальцами других!

Да, для полноценного понимания нужно разделить термины РЗ в конфигурации и РЗ в пользовательском режиме. Я не стал на это акцентировать внимание в статье.
11. Игорь Х (HIgor) 23.12.15 09:25
Спасибо большое. То что нужно. То перебор фоновых заданий какие-то косяки периодически выдавал
12. Alexander Masson (mrmasson) 27.10.16 19:39
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа