Тип: Число. Количество повторов при аварийном завершении задания.
Полное описание, параметры и ограничения
РегламентноеЗадание.КоличествоПовторовПриАварийномЗавершении (ScheduledJob.RestartCountOnFailure)
РегламентноеЗадание (ScheduledJob)
КоличествоПовторовПриАварийномЗавершении (RestartCountOnFailure)
Доступен, начиная с версии 8.1.
Использование:
Чтение и запись.
Описание:
Тип: Число.
Количество повторов при аварийном завершении задания.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Возможность чтения и записи доступны только для администратора.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Создать свой выключенный план, увидеть настоящий запуск и удалить только свою непредопределённую запись
Жизненный цикл одного регламентного задания на отдельном стенде: настоящий менеджер и метаданные, фактический UUID, сохранённые настройки и параметры, явное включение, реальные фоновые сообщения, отключение и адресное удаление. Отдельное выключенное предопределённое задание только читается.
Где и как запускать
Полный модуль собственной обычной формы УчебныеРегламентныеЗадания85.Пульт; толстый клиент8.5.1.1343 в режиме Обычное приложение, эксклюзивный новый клиент-серверный стенд и именованный администратор.
Подготовка
Создайте с нуля отдельную клиент-серверную учебную базу УчебныеРегламентныеЗадания85 на платформе8.5.1.1343. Один администратор, один клиент и одно окно; без расширений, подписок, разделителей, прикладных объектов и чужих фоновых задач. Не переименовывайте рабочую базу.
Режим запуска — толстый клиент, Обычное приложение. В конфигураторе создайте Обработки → УчебныеРегламентныеЗадания85 → Формы → Пульт, тип Обычная. Основной блок ниже — полный модуль именно этой формы, не управляемой.
Создайте именованного пользователя стенда с административными правами и войдите под ним. Имя берётся из настоящего ТекущийПользователь, не задано строкой Администратор. Пустое имя означало бы административного пользователя по умолчанию, поэтому запрещено.
Общие модули → УчебныеЗадания85: Сервер=Истина, Глобальный=Ложь, Клиент обычного/управляемого приложения=Ложь. Вставьте полный дополнительный модуль ниже. Экспортные процедуры реально назначаются двум собственным метаданным заданий.
Регламентные задания → УчебныйПульс85: ИмяМетода=УчебныеЗадания85.Пульс, Предопределенное=Ложь, Использование=Ложь. Не создавайте его запись заранее. Два параметра исполнения впоследствии задаются программой в точном порядке КлючОпыта, ЧислоОпыта.
Регламентные задания → УчебныйПредопределенныйПульс85: ИмяМетода=УчебныеЗадания85.СправочныйПульс, Предопределенное=Истина, Использование=Ложь. После обновления конфигурации базы платформа создаст эту справочную запись автоматически. Её нельзя программно удалить как обычную запись.
Других объектов метаданных регламентных заданий на стенде быть не должно. Настройки обоих метаданных остаются выключенными; кнопка включает только отдельную созданную непредопределённую запись, не меняет метаданные.
Добавьте реквизиты формы Согласие типа Булево и Итог типа Строка неограниченной длины. Покажите флажок и многострочный Итог только для просмотра. Свой UUID, ключ и флаг попытки — закрытые переменные этого окна, не поля для пользовательского ввода.
Создайте пять кнопок с действиями СоздатьСвойПлан(Элемент), ВключитьСвойПлан(Элемент), ПроверитьСвойЗапуск(Элемент), ОтключитьСвойПлан(Элемент), УдалитьСвойПлан(Элемент). Назначьте ПриОткрытии() и ПередЗакрытием(Отказ, СтандартнаяОбработка); не копируйте сигнатуры управляемой формы.
Нажмите F7 и обновите только этот стенд. runtimeVerifiedScenarios=0: статические проверки и обновление конфигурации не доказывают фактический запуск серверного планировщика. Здесь 1С и задания не запускались.
Планировщик регламентных заданий должен быть разрешён администратором именно для отдельной базы. Код не снимает блокировки сервера/кластера и не запускает инфраструктуру. Проверьте серверное время и ресурсы; пример не обещает запуск в конкретную секунду.
Создание сохраняет выключенную запись с однодневным расписанием и периодом300секунд. Повторы при аварии=0; интервал60секунд сохранён как настройка, но с нулём повторов аварийный перезапуск отключён.
Установите согласие, создайте план, проверьте показанный фактический UUID, затем отдельно включите его. Через время нажмите ПроверитьСвойЗапуск. В настоящем успешно завершённом фоне должно появиться сообщение своего ключа с результатом84.
Сначала отключите свой план, затем проверьте реально видимые запуски. Дождитесь отсутствия активных собственных вычислений и только затем удалите план. Выключенное справочное предопределённое задание должно остаться.
При потере ответа создания не повторяйте создание и не ищите любую запись по ключу для удаления. Администратор исследует именно этот заранее пустой стенд. Закрытие/сбой клиента теряет память окна, поэтому нормальную очистку завершайте до выхода.
#Если ТолстыйКлиентОбычноеПриложение Тогда
Перем СвояГотовность;
Перем СвояПопыткаСоздания;
Перем СвойUUID;
Перем СвойКлюч;
Процедура ПриОткрытии()
СвояГотовность = Ложь;
СвояПопыткаСоздания = Ложь;
СвойUUID = Неопределено;
СвойКлюч = "";
Согласие = Ложь;
Итог = "Собственное задание ещё не создано";
ПроверитьСвойСтенд();
СвояГотовность = Истина;
КонецПроцедуры
Процедура ПроверитьСвойСтенд()
Если ТранзакцияАктивна() Или Метаданные.ОбщиеРеквизиты.Количество() <> 0
Или Метаданные.Справочники.Количество() <> 0 Или Метаданные.Документы.Количество() <> 0
Или Метаданные.РегистрыСведений.Количество() <> 0 Или Метаданные.РегистрыНакопления.Количество() <> 0
Или Метаданные.РегистрыБухгалтерии.Количество() <> 0 Или Метаданные.РегистрыРасчета.Количество() <> 0
Или Метаданные.РегламентныеЗадания.Количество() <> 2 Тогда
ВызватьИсключение "Нужен пустой стенд без разделителей, прикладных объектов и чужой транзакции, только с двумя своими метаданными заданий";
КонецЕсли;
МетаданныеОпыта = Метаданные.РегламентныеЗадания.Найти("УчебныйПульс85");
МетаданныеПредопределенного = Метаданные.РегламентныеЗадания.Найти("УчебныйПредопределенныйПульс85");
Если МетаданныеОпыта = Неопределено Или МетаданныеПредопределенного = Неопределено Тогда
ВызватьИсключение "Сначала создайте оба собственных объекта метаданных";
КонецЕсли;
Если МетаданныеОпыта.Предопределенное Или МетаданныеОпыта.Использование
Или МетаданныеОпыта.ИмяМетода <> "УчебныеЗадания85.Пульс"
Или Не МетаданныеПредопределенного.Предопределенное Или МетаданныеПредопределенного.Использование
Или МетаданныеПредопределенного.ИмяМетода <> "УчебныеЗадания85.СправочныйПульс" Тогда
ВызватьИсключение "Оба задания изначально выключены; только справочное является предопределённым";
КонецЕсли;
Предопределенное = РегламентныеЗадания.НайтиПредопределенное(МетаданныеПредопределенного);
Если ТипЗнч(Предопределенное) <> Тип("РегламентноеЗадание") Тогда
ВызватьИсключение "Нет настоящего автоматически созданного предопределённого задания";
КонецЕсли;
Если Не Предопределенное.Предопределенное Или Предопределенное.Использование
Или Предопределенное.Метаданные <> МетаданныеПредопределенного Тогда
ВызватьИсключение "Справочное предопределённое задание должно остаться своим и выключенным";
КонецЕсли;
Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
Если ТипЗнч(Пользователь) <> Тип("ПользовательИнформационнойБазы") Или Пользователь.Имя = "" Тогда
ВызватьИсключение "Нужен реальный именованный администратор отдельного стенда";
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьСвоеОкно()
ПроверитьСвойСтенд();
Если Не СвояГотовность Тогда
ВызватьИсключение "Нужно собственное открытое учебное окно";
КонецЕсли;
КонецПроцедуры
Функция ПолучитьСвойПлан()
ПроверитьСвоеОкно();
Если ТипЗнч(СвойUUID) <> Тип("УникальныйИдентификатор") Или СвойКлюч = "" Тогда
ВызватьИсключение "Нужны фактический UUID создания и сохранённый собственный ключ";
КонецЕсли;
Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(СвойUUID);
Если ТипЗнч(Задание) <> Тип("РегламентноеЗадание") Тогда
ВызватьИсключение "Собственная запись не найдена; другой ID не подставляется";
КонецЕсли;
Если Задание.УникальныйИдентификатор <> СвойUUID Или Задание.Ключ <> СвойКлюч
Или Задание.Метаданные <> Метаданные.РегламентныеЗадания.УчебныйПульс85
Или Задание.Предопределенное Тогда
ВызватьИсключение "Паспорт собственной непредопределённой записи не совпал";
КонецЕсли;
Возврат Задание;
КонецФункции
Процедура ПроверитьНастройкиСвоегоПлана(Задание)
Если Задание.Наименование <> "Учебный расчёт42×2"
Или Задание.ИмяПользователя <> ПользователиИнформационнойБазы.ТекущийПользователь().Имя
Или Задание.КоличествоПовторовПриАварийномЗавершении <> 0
Или Задание.ИнтервалПовтораПриАварийномЗавершении <> 60 Тогда
ВызватьИсключение "Сохранённые настройки собственного плана не совпали";
КонецЕсли;
Параметры = Задание.Параметры;
Если ТипЗнч(Параметры) <> Тип("Массив") Или Параметры.Количество() <> 2
Или Параметры[0] <> СвойКлюч Или Параметры[1] <> 42 Тогда
ВызватьИсключение "Два параметра должны точно соответствовать процедуре Пульс(КлючОпыта, ЧислоОпыта)";
КонецЕсли;
Разделители = Задание.РазделениеДанных;
Если ТипЗнч(Разделители) <> Тип("Структура") Или Разделители.Количество() <> 0 Тогда
ВызватьИсключение "В этом собственном стенде общих реквизитов-разделителей нет";
КонецЕсли;
Расписание = Задание.Расписание;
Если ТипЗнч(Расписание) <> Тип("РасписаниеРегламентногоЗадания")
Или Расписание.ПериодПовтораВТечениеДня <> 300
Или Расписание.ДатаНачала <> НачалоДня(Расписание.ДатаНачала)
Или Расписание.ДатаКонца <> КонецДня(Расписание.ДатаНачала) Тогда
ВызватьИсключение "Нужно своё расписание на один день с периодом300секунд";
КонецЕсли;
КонецПроцедуры
Процедура СоздатьСвойПлан(Элемент)
ПроверитьСвоеОкно();
Если Не Согласие Тогда
ВызватьИсключение "Подтвердите создание только собственной записи на отдельном стенде";
КонецЕсли;
Если СвояПопыткаСоздания Или СвойUUID <> Неопределено Тогда
ВызватьИсключение "Повторное создание запрещено до адресного удаления; неизвестный исход исследует администратор стенда";
КонецЕсли;
Отбор = Новый Структура("Метаданные", Метаданные.РегламентныеЗадания.УчебныйПульс85);
Существующие = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор);
Если ТипЗнч(Существующие) <> Тип("Массив") Или Существующие.Количество() <> 0 Тогда
ВызватьИсключение "Для метаданных опыта уже есть запись; она не становится нашей";
КонецЕсли;
СвойКлюч = "УчебныйПульс85-" + Строка(Новый УникальныйИдентификатор);
СвояПопыткаСоздания = Истина;
Итог = "Начато собственное создание; запуск ещё не включался";
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.УчебныйПульс85);
Если ТипЗнч(Задание) <> Тип("РегламентноеЗадание") Тогда
ВызватьИсключение "Нет настоящего ответа создания; повтор и удаление по угаданному ID запрещены";
КонецЕсли;
СвойUUID = Задание.УникальныйИдентификатор;
Если ТипЗнч(СвойUUID) <> Тип("УникальныйИдентификатор") Или Задание.Предопределенное
Или Задание.Метаданные <> Метаданные.РегламентныеЗадания.УчебныйПульс85 Тогда
ВызватьИсключение "Нет подтверждённого паспорта собственной новой записи";
КонецЕсли;
Задание.Использование = Ложь;
Задание.Ключ = СвойКлюч;
Задание.Наименование = "Учебный расчёт42×2";
Задание.ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
Задание.КоличествоПовторовПриАварийномЗавершении = 0;
Задание.ИнтервалПовтораПриАварийномЗавершении = 60;
Параметры = Новый Массив;
Параметры.Добавить(СвойКлюч);
Параметры.Добавить(42);
Задание.Параметры = Параметры;
Задание.РазделениеДанных = Новый Структура;
Расписание = Новый РасписаниеРегламентногоЗадания;
Расписание.ДатаНачала = НачалоДня(ТекущаяДата());
Расписание.ДатаКонца = КонецДня(Расписание.ДатаНачала);
Расписание.ПериодПовтораВТечениеДня = 300;
Задание.Расписание = Расписание;
Задание.Записать();
Прочитанное = ПолучитьСвойПлан();
ПроверитьНастройкиСвоегоПлана(Прочитанное);
Если Прочитанное.Использование Тогда
ВызватьИсключение "После создания собственное задание должно оставаться выключенным";
КонецЕсли;
Итог = "Создан только свой выключенный план. Фактический UUID: " + Строка(СвойUUID);
КонецПроцедуры
Процедура ВключитьСвойПлан(Элемент)
Если Не Согласие Тогда
ВызватьИсключение "Нужно согласие на реальный запуск учебного фонового вычисления";
КонецЕсли;
Задание = ПолучитьСвойПлан();
ПроверитьНастройкиСвоегоПлана(Задание);
Если Задание.Использование Тогда
ВызватьИсключение "План уже включён; второй запуск не создаётся";
КонецЕсли;
Если ТекущаяДата() > Задание.Расписание.ДатаКонца Тогда
ВызватьИсключение "Учебное однодневное расписание истекло; сначала удалите свой прежний план";
КонецЕсли;
Задание.Использование = Истина;
Задание.Записать();
Если Не ПолучитьСвойПлан().Использование Тогда
ВызватьИсключение "Включение ещё не подтверждено";
КонецЕсли;
Итог = "Свой план включён. Дождитесь реального планировщика и нажмите ПроверитьСвойЗапуск; Записать не доказывает выполнение";
КонецПроцедуры
Функция ПолучитьСвоиФоновыеЗадания(План)
Отбор = Новый Структура("Ключ,ИмяМетода", СвойКлюч, "УчебныеЗадания85.Пульс");
Задания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Если ТипЗнч(Задания) <> Тип("Массив") Тогда
ВызватьИсключение "Нужен настоящий массив фоновых заданий своего ключа и метода";
КонецЕсли;
Для Каждого Фоновое Из Задания Цикл
Если ТипЗнч(Фоновое) <> Тип("ФоновоеЗадание") Тогда
ВызватьИсключение "Неверный тип фактической фоновой записи";
КонецЕсли;
СвязанныйПлан = Фоновое.РегламентноеЗадание;
Если ТипЗнч(СвязанныйПлан) <> Тип("РегламентноеЗадание") Тогда
ВызватьИсключение "Фоновое задание не подтверждает связь со своим планом";
КонецЕсли;
Если СвязанныйПлан.УникальныйИдентификатор <> План.УникальныйИдентификатор Тогда
ВызватьИсключение "Получен не собственный запуск; он не изменяется";
КонецЕсли;
КонецЦикла;
Возврат Задания;
КонецФункции
Процедура ПроверитьСвойЗапуск(Элемент)
План = ПолучитьСвойПлан();
ПроверитьНастройкиСвоегоПлана(План);
Запуски = ПолучитьСвоиФоновыеЗадания(План);
Итог = "Видимых собственных фоновых заданий: " + Строка(Запуски.Количество());
Для Каждого Запуск Из Запуски Цикл
Итог = Итог + Символы.ПС + Строка(Запуск.УникальныйИдентификатор) + ": " + Строка(Запуск.Состояние);
КонецЦикла;
Последнее = План.ПоследнееЗадание;
Если Последнее = Неопределено Тогда
Итог = Итог + Символы.ПС + "Настоящего последнего фонового задания ещё нет. Это не ошибка и не доказательство запуска";
Возврат;
КонецЕсли;
Если ТипЗнч(Последнее) <> Тип("ФоновоеЗадание") Тогда
ВызватьИсключение "ПоследнееЗадание должно быть настоящим объектом платформы";
КонецЕсли;
СвязанныйПлан = Последнее.РегламентноеЗадание;
Если ТипЗнч(СвязанныйПлан) <> Тип("РегламентноеЗадание")
Или СвязанныйПлан.УникальныйИдентификатор <> СвойUUID Тогда
ВызватьИсключение "Последнее задание не подтверждает свой фактический UUID плана";
КонецЕсли;
Итог = Итог + Символы.ПС + "Последний реальный запуск: " + Строка(Последнее.Состояние);
Если Последнее.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
Сообщения = Последнее.ПолучитьСообщенияПользователю(Ложь);
Для Каждого Сообщение Из Сообщения Цикл
Итог = Итог + Символы.ПС + Сообщение.Текст;
КонецЦикла;
Итог = Итог + Символы.ПС + "Сравните настоящее сообщение с ключом окна и результатом84";
Иначе
Итог = Итог + Символы.ПС + "Успешное выполнение ещё не подтверждено; сохранение плана не равно результату вычисления";
КонецЕсли;
КонецПроцедуры
Процедура ОтключитьСвойПлан(Элемент)
Задание = ПолучитьСвойПлан();
Задание.Использование = Ложь;
Задание.Записать();
Если ПолучитьСвойПлан().Использование Тогда
ВызватьИсключение "Отключение ещё не подтверждено";
КонецЕсли;
Итог = "Свой план отключён. Уже начатое фоновое вычисление этим не отменяется; проверьте его состояние отдельной кнопкой";
КонецПроцедуры
Процедура УдалитьСвойПлан(Элемент)
Задание = ПолучитьСвойПлан();
Если Задание.Использование Тогда
ВызватьИсключение "Сначала явно отключите собственный план";
КонецЕсли;
Для Каждого Запуск Из ПолучитьСвоиФоновыеЗадания(Задание) Цикл
Если Запуск.Состояние = СостояниеФоновогоЗадания.Активно Тогда
ВызватьИсключение "Своё вычисление ещё активно; удаление плана не отменяет его. Дождитесь окончания и проверьте снова";
КонецЕсли;
КонецЦикла;
Задание.Удалить();
Если РегламентныеЗадания.НайтиПоУникальномуИдентификатору(СвойUUID) <> Неопределено Тогда
ВызватьИсключение "Собственная запись ещё существует; её UUID не забывается";
КонецЕсли;
ПроверитьСвойСтенд();
СвойUUID = Неопределено;
СвойКлюч = "";
СвояПопыткаСоздания = Ложь;
Согласие = Ложь;
Итог = "Собственная непредопределённая запись удалена; выключенное справочное предопределённое задание сохранено";
КонецПроцедуры
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если СвояПопыткаСоздания Тогда
Отказ = Истина;
Сообщить("Сначала отключите и адресно удалите свой план. При потере ответа создания нужен администратор именно этого стенда");
Возврат;
КонецЕсли;
СвояГотовность = Ложь;
КонецПроцедуры
#Иначе
Процедура ПриОткрытии()
ВызватьИсключение "Нужен толстый клиент в режиме Обычное приложение";
КонецПроцедуры
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Процедура СоздатьСвойПлан(Элемент)
ВызватьИсключение "Только толстый клиент обычного приложения";
КонецПроцедуры
Процедура ВключитьСвойПлан(Элемент)
ВызватьИсключение "Только толстый клиент обычного приложения";
КонецПроцедуры
Процедура ПроверитьСвойЗапуск(Элемент)
ВызватьИсключение "Только толстый клиент обычного приложения";
КонецПроцедуры
Процедура ОтключитьСвойПлан(Элемент)
ВызватьИсключение "Только толстый клиент обычного приложения";
КонецПроцедуры
Процедура УдалитьСвойПлан(Элемент)
ВызватьИсключение "Только толстый клиент обычного приложения";
КонецПроцедуры
#КонецЕслиУчебныеЗадания85
УчебныеРегламентныеЗадания85 → Общие модули → УчебныеЗадания85 → Модуль
Полный серверный неглобальный общий модуль собственных двух обработчиков; экспортные процедуры назначены реальным собственным метаданным регламентных заданий; не выполнялся.
Процедура Пульс(КлючОпыта, ЧислоОпыта) Экспорт
Если Метаданные.ОбщиеРеквизиты.Количество() <> 0 Тогда
ВызватьИсключение "Вычисление только на собственном стенде без разделителей";
КонецЕсли;
Если ТипЗнч(КлючОпыта) <> Тип("Строка") Или Лев(КлючОпыта, СтрДлина("УчебныйПульс85-")) <> "УчебныйПульс85-"
Или ТипЗнч(ЧислоОпыта) <> Тип("Число") Или ЧислоОпыта <> 42 Тогда
ВызватьИсключение "Нужны два действительных учебных параметра: свой ключ и42";
КонецЕсли;
Результат = ЧислоОпыта * 2;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = КлючОпыта + ": результат=" + Строка(Результат);
Сообщение.Сообщить();
КонецПроцедуры
Процедура СправочныйПульс() Экспорт
Сообщить("Справочное предопределённое задание: прикладных записей и внешних вызовов нет");
КонецПроцедурыРазбор по шагам
НайтиПредопределенное возвращает настоящую автоматически созданную справочную запись. Проверяются её метаданные, Предопределенное и выключенное Использование; эта запись не переписывается и не удаляется.
ПолучитьРегламентныеЗадания с фактическими метаданными опыта подтверждает отсутствие существующей непредопределённой записи. Менеджер создаёт новое задание по собственному объекту метаданных, а не через несуществующий конструктор.
Фактический УникальныйИдентификатор сохраняется из настоящего ответа создания. Ключ генерируется отдельно для идентификации связанных фоновых запусков; уникальность ключа не доказывает уникальность регламентной записи.
ИмяПользователя берётся из аутентифицированного пользователя стенда. Наименование, аварийные повторы и интервал, массив двух параметров, пустое разделение и настоящее расписание записываются только в свой возвращённый объект.
Записать сохраняет настройки, затем НайтиПоУникальномуИдентификатору повторно читает запись. Проверка сравнивает UUID, ключ, метаданные, непредопределённость и все учебные настройки. readonly-поля не присваиваются.
РазделениеДанных — настоящая структура значений общих реквизитов-разделителей. На этом специально неразделённом стенде она пустая. Произвольные названия организаций не выдаются за существующие разделители.
Только отдельная кнопка включает Использование. Серверный планировщик позже вызывает Пульс с реальным ключом и числом42; процедура вычисляет84 и создаёт настоящее СообщениеПользователю, без документов, регистров и сети.
Фоновые задания отбираются по реальным ключу и имени метода. Для каждого проверяется действительная связь с тем же UUID регламентного плана. ПоследнееЗадание читается отдельно и может отсутствовать до запуска.
Состояние Завершено — основание читать реальные сообщения без их удаления. Активно, авария, отмена или отсутствие объекта не объявляются успехом. ПоследнееЗадание не заменяет перечень всех видимых связанных запусков.
Отключение записывает Использование=Ложь, но не отменяет уже начатый фон. Удаление требует выключенной собственной записи и отсутствия сейчас видимых активных собственных запусков; затем поиск того же UUID должен вернуть Неопределено.
ПередЗакрытием только запрещает потерять незавершённый опыт. Оно не включает планировщик, не ждёт сервер и не удаляет все задания. Неизвестный исход оставляет флаг и реальные идентификаторы для расследования своего стенда.
Как проверить результат
В чужой базе, другой версии, другом клиенте, при лишних метаданных или разделителях код должен отказаться. Удалять чужие задания ради прохождения проверки нельзя.
Справочное предопределённое задание существует, остаётся выключенным и не попадает под удаление. Для опыта до создания нет записей с его метаданными.
Без согласия создание и включение запрещены. Отключение, просмотр результатов и адресное удаление доступны после снятия согласия.
После создания показан реальный UUID, а повторное чтение подтверждает все свойства и Использование=Ложь. Сохранение не выводит выдуманный результат фонового выполнения.
Реальный запуск получает параметры в порядке строковый ключ, число42. Проверьте фактическое сообщение результата84, а не только состояние записи расписания.
Если планировщик заблокирован, последнего запуска может не быть; код показывает отсутствие результата. Не заменяйте его Новый ФоновоеЗадание и не называйте сохранение выполнением.
После истечения однодневного расписания включение отклоняется. Аварийный перезапуск выключен при КоличествоПовторовПриАварийномЗавершении=0 независимо от записанного интервала60.
При активном собственном фоне удаление запрещено. После отключения дождитесь завершения и проверьте ещё раз; уже запущенный фон не отменяется изменением Использование.
После удаления поиск сохранённого UUID возвращает Неопределено, справочное предопределённое задание остаётся. При исключении UUID и флаг не сбрасываются и чужая запись не подставляется.
Ожидаемый результат
В разрешённом ручном опыте создан и повторно прочитан свой выключенный план, после отдельного включения увиден реальный фон с результатом84, план отключён и его UUID больше не найден после удаления. Справочное предопределённое задание не менялось. Здесь выполнены только статические проверки.
На что обратить внимание
Создание, Записать, Удалить и часть свойств доступны только администратору. Код не повышает права; пример предназначен исключительно для нового собственного клиент-серверного стенда.
Предопределённое задание создаёт платформа при обновлении конфигурации базы. Его удалить нельзя; для демонстрации поиска оно существует отдельно и остаётся выключенным.
Регламентные записи могут иметь одинаковый Ключ. Уникальность проверяется для активных фоновых заданий соответствующих метаданных, поэтому владельцем записи является фактический UUID собственного создания, а не произвольный совпавший ключ.
Пустое ИмяПользователя означает выполнение пользователем по умолчанию с административными правами. Здесь требуется настоящий именованный пользователь; не копируйте это поведение в многопользовательскую production-базу.
Параметры — реальный массив аргументов именно экспортной процедуры. Имена структуры не подставляются вместо аргументов, число и порядок должны совпадать с сигнатурой.
РазделениеДанных в другой конфигурации содержит фактические общие реквизиты с типом НезависимоИСовместно. Пустая структура корректна только для подготовленного неразделённого стенда; это не способ снять разделение чужой базы.
300секунд — период между запусками, не гарантия точного времени и не тайм-аут работы. Однодневное расписание ограничивает новые запуски; серверная очередь, блокировка и часовой пояс влияют на наблюдаемый результат.
ПоследнееЗадание не является полной историей или гарантией отсутствия других активных запусков. Дополнительно запрашивается фактический массив своих фонов; для сообщений используется Ложь, они не удаляются из результата.
Отключение и проверка списка не атомарны по отношению к уже принятому планировщиком запуску. Не обещайте нулевой фон только по одному снимку. Собственный обработчик здесь делает лишь короткое вычисление без прикладных записей; после отключения дождитесь покоя стенда и проверьте повторно перед удалением.
Сбой после начала создания может потерять ответ. Без подтверждённого UUID удаление по догадке запрещено. Память окна не является долговечным журналом; принудительный выход потребует ручного расследования отдельного стенда.
Здесь обычная форма и обычный толстый клиент: ПриОткрытии без параметров, ПередЗакрытием с двумя. Не переносите модуль в управляемую форму без изменения событий и контекстов.
Этот код не запускался, runtimeVerifiedScenarios=0. Базы и конфигурации не изменялись, регламентные задания не запускались, сеть, файлы, резервные копии и архивы не создавались.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.