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

21.02.13

Разработка - Универсальные функции

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

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

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

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

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

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

Достаточно:

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

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

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    5460    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    46470    dimanich70    83    

165

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6872    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    57576    atdonya    31    

68

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8644    ke.92@mail.ru    17    

68

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    22832    YA_418728146    8    

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

Да, для полноценного понимания нужно разделить термины РЗ в конфигурации и РЗ в пользовательском режиме. Я не стал на это акцентировать внимание в статье.
8. V_V_V 20.02.13 21:53 Сейчас в теме
В пункте 1 - КлючРЗ. В пункте 2 - Ключ. Так и должно быть?
9. Bitnikov 398 21.02.13 09:30 Сейчас в теме
(8) V_V_V, Переменные в разных модулях. Если желаете, именуйте одинаково
11. HIgor 21 23.12.15 09:25 Сейчас в теме
Спасибо большое. То что нужно. То перебор фоновых заданий какие-то косяки периодически выдавал
12. mrmasson 57 27.10.16 19:39 Сейчас в теме
первый пункт не понял
13. LordKim 21.01.22 22:38 Сейчас в теме
Статья неактуальна

В современной платформе фоновое задание по РЗ всегда формируется с ключом, равным уникальному идентификатору РЗ
Т.е. ФоновоеЗадание.Ключ = РегламентноеЗадание.УникальныйИдентификатор
Если ФЗ запускается через ФоновыеЗадания.Выполнить (не по расписанию РЗ), то УИД РЗ можно передать в метод (третьим параметром)

Не стоит забывать что два ФЗ с одинаковыми ключами и именами методов существовать не могут
15. RustIG 1931 29.11.24 10:33 Сейчас в теме
(13) не проверяли?
это наверное "по умолчанию", если ключ явно не задан
14. amyd 93 23.05.23 09:11 Сейчас в теме
пользуйтесь

ТекущийСеансИнформационнойБазы = ПолучитьТекущийСеансИнформационнойБазы();
ФоновоеЗадание = ТекущийСеансИнформационнойБазы.ПолучитьФоновоеЗадание();
УникальныйИдентификатор = ФоновоеЗадание.РегламентноеЗадание.УникальныйИдентификатор;
RustIG; artemusII; evkireev; Atom74; Windsor77; CaMoJleT; redtram; +7 Ответить
16. RustIG 1931 29.11.24 10:49 Сейчас в теме
(14) на основании одного регламентного задания, определенного в Конфигураторе, можно создать несколько регламентных заданий в пользовательском режиме 1С-Предприятие - при этом уиды у каждого будут свои уникальные.
Создаются или программно, или вручную интерактивно, например, через консоль регламентных заданий.

Автор статьи научился и показал другим, как разделять подобные регламентные задания по Ключу. Ключ имеет строковое представление - очень удобно разделять по смыслу те или иные операции. А вот знать уникальный идентификатор полезно в иных случаях....

В целом, ваш комментарий полезный в том плане. что расширяет понимание использования регл. заданий (заложенный в платформе 1С), но не заменяет идею и содержание статьи. Вот :)
Для отправки сообщения требуется регистрация/авторизация