ФоновоеЗадание.Наименование

Свойства · Description

Тип: Строка. Описание задания.

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

ФоновоеЗадание.Наименование (BackgroundJob.Description)

ФоновоеЗадание (BackgroundJob)

Наименование (Description)

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

Использование:
Только чтение.
Описание:
Тип: Строка.
Описание задания.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

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

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

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

Запустить расчёт книги и прочитать паспорт собственного задания

В фоне считаем 3 × 250. На стороне запуска сохраняем UUID, повторно получаем именно своё задание и разбираем все его свойства только для чтения.

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

Полный серверный неглобальный общий модуль УчебныеФоновыеЗадачи отдельной собственной учебной конфигурации.

Подготовка

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

  2. Создайте неглобальный общий модуль УчебныеФоновыеЗадачи: Сервер = Истина, Глобальный = Ложь, Привилегированный = Ложь. Вставьте полный модуль одного урока; имя модуля используется в строке запуска.

  3. ВыполнитьПример() вызывайте из серверного обработчика своей учебной команды обычного сеанса 1С. Не запускайте из COM/внешнего соединения с файловой базой или из другого фонового задания файловой базы.

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

  5. Задание считает собственные числа в памяти и публикует СообщениеПользователю. Документы, регистры, файлы, интернет и настройки пользователей не меняются. История собственных заданий остаётся в базе по правилам платформы.

  6. Выполнить возвращает объект задания, а не результат вычисления. Трёхсекундный таймаут ограничивает одно ожидание; он не отменяет задание и не доказывает успешное завершение.

Процедура Рассчитать(Количество, Цена, Режим) Экспорт
    Если Количество < 0 Или Количество > 1000000 Или Количество <> Цел(Количество) Тогда
        ВызватьИсключение "guide-owned: количество должно быть целым от 0 до 1000000";
    КонецЕсли;
    Если Цена < 0 Тогда
        ВызватьИсключение "guide-owned: цена не может быть отрицательной";
    КонецЕсли;
    Если Режим = "Книга" Тогда
        Сумма = Количество * Цена;
    ИначеЕсли Режим = "Пакет" Тогда
        Сумма = 0;
        Для Номер = 1 По Количество Цикл
            Сумма = Сумма + Цена;
        КонецЦикла;
    Иначе
        ВызватьИсключение "guide-owned: неизвестный режим";
    КонецЕсли;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "guide-owned: сумма " + Формат(Сумма, "ЧГ=0");
    Сообщение.Сообщить();
КонецПроцедуры

Процедура ВыполнитьПример() Экспорт
    Параметры = Новый Массив;
    Параметры.Добавить(3);
    Параметры.Добавить(250);
    Параметры.Добавить("Книга");
    Ключ = "guide-owned-" + Строка(Новый УникальныйИдентификатор);
    Задание = ФоновыеЗадания.Выполнить("УчебныеФоновыеЗадачи.Рассчитать", Параметры, Ключ, "guide-owned: расчёт книги");
    Сообщить("Собственный идентификатор: " + Строка(Задание.УникальныйИдентификатор));
    Идентификатор = Задание.УникальныйИдентификатор;
    Обновлённое = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
    Если Обновлённое = Неопределено Тогда
        Сообщить("Запись собственного задания недоступна; не подменяйте её первым заданием из общего списка");
        Возврат;
    КонецЕсли;
    Задание = Обновлённое.ОжидатьЗавершенияВыполнения(3);
    Сообщить(Задание.УникальныйИдентификатор = Идентификатор);
    Сообщить(Задание.Ключ = Ключ);
    Сообщить(Задание.ИмяМетода = "УчебныеФоновыеЗадачи.Рассчитать");
    Сообщить(Задание.Наименование = "guide-owned: расчёт книги");
    Сообщить(ТипЗнч(Задание.Начало) = Тип("Дата"));
    Сообщить(ТипЗнч(Задание.Конец) = Тип("Дата"));
    Сообщить(ТипЗнч(Задание.НомерРодительскогоСеанса) = Тип("Число"));
    Сообщить(ТипЗнч(Задание.РазделениеДанных) = Тип("Структура"));
    Сообщить(ТипЗнч(Задание.Расположение) = Тип("Строка"));
    Сообщить("Связанное регламентное: " + Строка(Задание.РегламентноеЗадание));
    Сообщить("Состояние: " + Строка(Задание.Состояние));
    Если Задание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
        Сообщить(Задание.ИнформацияОбОшибке = Неопределено);
        Сообщить("Расчёт завершён; результат передаётся сообщением, не возвратом Выполнить");
    ИначеЕсли Задание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
        Сообщить("Таймаут: задание продолжает работать");
    Иначе
        Сообщить("Задание не завершилось успешно; проверьте состояние и информацию об ошибке");
    КонецЕсли;
КонецПроцедуры

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

  1. Создать массив из трёх параметров в порядке экспортной процедуры: количество, цена, режим.

  2. Сгенерировать собственный ключ и запустить метод неглобального серверного общего модуля. Возвращается ФоновоеЗадание, не число 750.

  3. Сохранить UUID и выполнить поиск по этому UUID. Не брать первое задание базы при отсутствии собственной записи.

  4. Присвоить результат ожидания переменной: это обновлённый объект. Прочитать паспорт и отдельно обработать активное, успешное и неуспешное состояния.

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

  1. Девять проверок UUID, ключа, имени метода, наименования и типов свойств должны дать Истина.

  2. При Завершено ИнформацияОбОшибке = Неопределено. При Активно выводится таймаут, а не сообщение об успехе. Время и сервер зависят от запуска.

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

Собственная задача считает 750 без чтения товаров базы; паспорт показывает происхождение и текущий статус, а не обещание результата.

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

  1. Объект задания может устареть после получения: обновляйте его поиском или возвратом ожидания.

  2. Все свойства задания только читаются. Присваивание Состояние = Завершено не завершает задачу и запрещено.

  3. НомерРодительскогоСеанса — 0 для запуска не из фонового задания; это не номер обычного текущего сеанса.

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

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

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

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

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

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