ОбъектМетаданных: РегламентноеЗадание.Ключ

Свойства · Key

Тип: Строка. Ключ регламентного задания. Два регламентных задания с одинаковым значением ключа могут быть выполнены только последовательно.

Полное описание, параметры и ограничения

ОбъектМетаданных: РегламентноеЗадание.Ключ (MetadataObject: ScheduledJob.Key)

ОбъектМетаданных: РегламентноеЗадание (MetadataObject: ScheduledJob)

Ключ (Key)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: Строка.
Ключ регламентного задания. Два регламентных задания с одинаковым значением ключа могут быть выполнены только последовательно.
Доступность:

Сервер, толстый клиент, внешнее соединение.

Примечание:
Максимальная длина 128 символов.
Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Проверить определения регламентных заданий, не запуская их

Составляем список настроек задания из конфигурации. Отличаем определение, повтор после ошибки и реальное расписание экземпляра.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.


Сообщить(СтрШаблон("Определений заданий: %1", Метаданные.РегламентныеЗадания.Количество()));
Для Каждого Задание Из Метаданные.РегламентныеЗадания Цикл
    Сообщить(СтрШаблон("%1 (%2): %3", Задание.Имя, Задание.Синоним, Задание.Наименование));
    Сообщить(Задание.Комментарий);
    Сообщить("Метод: " + Задание.ИмяМетода);
    Сообщить(СтрШаблон("Использование %1; предопределенное %2; ключ %3",
        Задание.Использование, Задание.Предопределенное, Задание.Ключ));
    Сообщить(СтрШаблон("Повторов после аварии %1; интервал %2 секунд",
        Задание.КоличествоПовторовПриАварийномЗавершении,
        Задание.ИнтервалПовтораПриАварийномЗавершении));
    Сообщить(Задание.Расписание = Неопределено);
КонецЦикла;

Разбор по шагам

  1. Читаем определения из Метаданные.РегламентныеЗадания. Никакие методы выполнения заданий не вызываются.

  2. ИмяМетода — строка имени обработчика, не готовая команда для выполнения внешнего текста.

  3. ИнтервалПовтораПриАварийномЗавершении измеряется в секундах и относится к повтору после аварии, не к обычной периодичности.

  4. В локальном API свойство метаданных Расписание имеет тип Неопределено. Реальное расписание экземпляра надо получать через отдельный API заданий, не из этой строки.

Как проверить результат

  1. Настройки метода и повторов совпадают со свойствами задания в Конфигураторе.

  2. Сравнение Расписание = Неопределено даёт Истина; пример не показывает мнимую дату следующего запуска.

  3. Если заданий нет, выведено количество 0; не создаётся новое задание.

Ожидаемый результат

Получен безопасный список определений заданий и их аварийных повторов.

На что обратить внимание

  1. Использование в метаданных не доказывает, что планировщик сейчас работает или что последний запуск был успешным.

  2. Фоновые задания, регламентные задания и история исполнения — разные объекты. Для диагностики исполнения нужны отдельные проверки.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Прочитать описание задания, не запуская рассылки

У шаблона АнализДанныхДляОповещенийКлиентам выключено использование, нет предопределённости, задано три повтора. Это сведения метаданных, не состояние runtime-задания.

Где и как запускать

Полный серверный модуль изолированной учебной копии КА2 Progress 2.5.20.75; только чтение.

Подготовка

  1. Отдельная учебная копия КА2 Progress 2.5.20.75 из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, платформа 8.5.1.1343. Создайте серверный общий модуль УчебныеКонтрактыОбработчиков.

  2. Вставьте полный модуль одного урока и вызовите УчебныеКонтрактыОбработчиков.ВыполнитьПример() из своей учебной серверной команды.

  3. Источники: Roles\ПолныеПрава.xml; EventSubscriptions\АктуализироватьСтруктуруПредприятия.xml; ScheduledJobs\АнализДанныхДляОповещенийКлиентам.xml и соответствующие CommonModules.

  4. Код только читает метаданные и признаки прав. Он не назначает роли, не меняет параметры сеанса, не записывает организацию и не вызывает обработчик подписки или задания.

  5. Учебная копия должна быть изолирована от рабочих фоновых заданий и внешних обменов её обычными средствами администрирования. Этот пример не выключает и не включает задания за пользователя.

  6. Диагностика расширений и доступных прав зависит от активной базы и пользователя. Не подгоняйте права рабочей базы под ожидаемые булевы результаты.

Процедура ВыполнитьПример() Экспорт
    ОписаниеЗадания = Метаданные.РегламентныеЗадания.Найти("АнализДанныхДляОповещенийКлиентам");
    Если ОписаниеЗадания = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого описания задания";
    КонецЕсли;
    Сообщить(ОписаниеЗадания.Имя = "АнализДанныхДляОповещенийКлиентам");
    Сообщить(НЕ ОписаниеЗадания.Использование);
    Сообщить(НЕ ОписаниеЗадания.Предопределенное);
    Сообщить(ОписаниеЗадания.КоличествоПовторовПриАварийномЗавершении = 3);
    Сообщить(ОписаниеЗадания.ИнтервалПовтораПриАварийномЗавершении = 10);
    Сообщить(ПустаяСтрока(ОписаниеЗадания.Ключ));
    Сообщить(ПустаяСтрока(ОписаниеЗадания.Наименование));
    Сообщить(ОписаниеЗадания.Расписание = Неопределено);
    Части = СтрРазделить(ОписаниеЗадания.ИмяМетода, ".");
    Если Части.Количество() < 2 Тогда
        ВызватьИсключение "Имя метода не содержит модуль и процедуру";
    КонецЕсли;
    ИмяМодуля = Части[Части.Количество() - 2];
    ИмяПроцедуры = Части[Части.Количество() - 1];
    Сообщить(ИмяМодуля = "РассылкиИОповещенияКлиентам");
    Сообщить(ИмяПроцедуры = "АнализДанныхДляОповещенийКлиентам");
    Модуль = Метаданные.ОбщиеМодули.Найти(ИмяМодуля);
    Если Модуль = Неопределено Тогда
        ВызватьИсключение "Не найден модуль метода задания";
    КонецЕсли;
    Сообщить(Модуль.Сервер);
    Сообщить("Исходная процедура требует ВидОповещения. Создание/запуск задания без параметра здесь не выполняется.");
    Сообщить(ОписаниеЗадания.Синоним);
    Сообщить(ОписаниеЗадания.Комментарий);
    Сообщить(ОписаниеЗадания.ПолноеИмя());
    Сообщить(ОписаниеЗадания.Представление());
    Сообщить(ОписаниеЗадания.ПринадлежностьОбъекта);
    Сообщить(ТипЗнч(ОписаниеЗадания.ОбъектРасширяемойКонфигурации));
    Сообщить(ОписаниеЗадания.ЕстьИзмененияРасширениямиКонфигурации());
    Сообщить(ТипЗнч(ОписаниеЗадания.РасширениеКонфигурации()));
    Сообщить(ОписаниеЗадания.Родитель() = Метаданные);

КонецПроцедуры

Разбор по шагам

  1. Найти описание задания в Метаданные.РегламентныеЗадания, не в менеджере реальных заданий.

  2. Проверить свойства выгрузки: выключенное использование, непредопределённость, три повтора и интервал 10. Прочитать пустые ключ/наименование.

  3. Расписание метаданных всегда Неопределено по контракту. Чтобы получить расписание реального задания, сначала нужен соответствующий существующий runtime-экземпляр.

  4. Разобрать ИмяМетода, найти серверный модуль. В исходной экспортной процедуре обязателен ВидОповещения: одного имени метода для корректного запуска недостаточно.

  5. Вывести паспорт описания. Регламентные/фоновые задания не создаются и не исполняются, сообщения клиентам не отправляются.

Как проверить результат

  1. Двенадцать фиксированных проверок дают Истина; сведения происхождения диагностические.

  2. Наличие шаблона не говорит о количестве экземпляров и их успешном выполнении. Состояние рабочих заданий этот урок не опрашивает.

Ожидаемый результат

Полный разбор реального описания задания с понятными ограничениями запуска.

На что обратить внимание

  1. Расписание = Неопределено у метаданных не означает отсутствие расписания у реально созданного задания.

  2. Использование шаблона не является доказательством состояния каждого существующего экземпляра.

  3. Не вызывайте процедуру рассылок как учебный тест: она выполняет прикладную работу и требует параметр.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.