Рассмотрим программный запуск фонового задания 1С на примере запуска обмена с Битрикс из «Управление торговлей ред. 10.3».
Задача: по кнопке осуществлять программный запуск фонового задания 1С для обмена заказами с сайтом. Перед запуском задания надо проверить, не выполняется ли оно прямо сейчас и проинформировать об этом пользователя.
Исходные данные: у нас уже есть регламентное задание, которое выполняет этот обмен.
Код
УстановитьПривилегированныйРежим(Истина);
П = новый структура;
П.Вставить("Наименование","Заказы");
П.Вставить("Ключ","7b4c3f46-f88c-4a26-a351-f6fa3273bcba");
П.Вставить("Состояние",СостояниеФоновогоЗадания.Активно);
МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(П);
Если МассивЗаданий.Количество()>0 Тогда
Сообщить("Кто-то прямо сейчас уже выполняет загрузку заказов с оптового сайта. Подождите немного и, при необходимости, повторите попытку");
Иначе
МассивПараметров = новый массив;
МассивПараметров.Добавить("000000004");
Попытка
ФоновыеЗадания.Выполнить("Б_ОбщиеПроцедурыИФункцииОбменаССайтом.ЗаданиеОбменССайтом", МассивПараметров,"7b4c3f46-f88c-4a26-a351-f6fa3273bcba","Заказы");
Сообщить("Загрузка заказов с оптового сайта успешно запущена. Вы можете продолжить работу, заказы появятся в 1С в ближайшее время");
Исключение
Сообщить("Не удалось запустить загрузку заказов с оптового сайта. Сообщите о проблеме разработчику");
КонецПопытки;
КонецЕсли;
Пояснения к коду
УстановитьПривилегированныйРежим(Истина);
Привилегированный режим устанавливаем, т.к. не администраторы не могу получать фоновые задания.
П = новый структура;
П.Вставить("Наименование","Заказы");
П.Вставить("Ключ","7b4c3f46-f88c-4a26-a351-f6fa3273bcba");
П.Вставить("Состояние",СостояниеФоновогоЗадания.Активно);
МассивЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(П);
В структуру ставим те поля, по которым будем идентифицировать нужное нам фоновое задание. В принципе, достаточно только ключа, но я на всякий случай добавил еще и наименование. Посмотреть эта параметры можно в консоли заданий:

Если МассивЗаданий.Количество()>0 Тогда
Сообщить("Кто-то прямо сейчас уже выполняет загрузку заказов с оптового сайта. Подождите немного и, при необходимости, повторите попытку");
Если в массиве не ноль элементов, значит есть активное фоновое задание. Сообщаем об этом пользователю.
Если выполняемых фоновых заданий не нашли, то создаем свое.
Иначе
МассивПараметров = новый массив;
МассивПараметров.Добавить("000000004");
В массив параметров надо положить код обмена. Посмотреть его можно в плане обмена битрикса:

Попытка
ФоновыеЗадания.Выполнить("Б_ОбщиеПроцедурыИФункцииОбменаССайтом.ЗаданиеОбменССайтом", МассивПараметров,"7b4c3f46-f88c-4a26-a351-f6fa3273bcba","Заказы");
Сообщить("Загрузка заказов с оптового сайта успешно запущена. Вы можете продолжить работу, заказы появятся в 1С в ближайшее время");
Исключение
Сообщить("Не удалось запустить загрузку заказов с оптового сайта. Сообщите о проблеме разработчику");
КонецПопытки;
Пробуем запустить фоновое задание. Если получилось — сообщаем пользователю, что все ОК, если нет, то рекомендуем ему обратиться к разработчику.
Если вы все сделали правильно, то программный запуск фонового задания 1С должен отработать корректно.
Также замечу, что запущенное таким образом фоновое задание не отобразится в консоли заданий. Тем не менее, вы сможете проверить корректность работы вашего кода, открыв лог обмена:

Если не знаете, где находится нужный вам лог, посмотрите в настройках обмена:

