Конфигурирование новых регламентных заданий с помощью расширения

Публикация № 1497243 13.08.21

Разработка - БСП (Библиотека стандартных подсистем)

Расширение БСП Регламентные задания

В данной статье опишу процесс создания расширения со своими регламентными задачами

Всем привет.

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

Структура хранения данных следующая:

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

 

 

2. Для хранения настроек данного регламентного задания мы возьмем одноименный регистр сведений

 

 

Измерением выступает регламентное задание - ссылка на наше перечисление

Ресурсами: Использование (булево) - переключатель который отвечает за собственно работу регламентного задания

Расписание (ХранилищеЗначений) - информация о расписании выполнения регламентного задания (необязательно)

Идентификатор (Уникальный идентификатор) - Здесь сидит идентификатор самой регламентной задачи, которая была сгенерирована в момент записи в данном регистре. Вот этот реквизит по хорошему самый ВАЖНЫЙ здесь

3. Теперь собственно самое интересное: как уже выяснили выше, при записи в данном регистре у нас должно появляться новое регламентное задание. Для того чтоб это произошло, необходимо немного пописать, или хотя бы скопипастить


Процедура ПередЗаписью(Отказ, Замещение)
	
	Для каждого Запись ИЗ ЭтотОбъект Цикл

		Задание = РегламентныеЗаданияСервер.Задание(Запись.Идентификатор);
		
		Если Задание = Неопределено Тогда 
				
			ПараметрыЗадания = Новый Структура;
			ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ЗапускДополнительныхОбработок);
			ПараметрыЗадания.Вставить("Использование", Запись.Использование);
			ПараметрыЗадания.Вставить("Наименование", Запись.РегламентноеЗадание);
			ПараметрыЗадания.Вставить("Ключ", Запись.Идентификатор);
			МассивПараметров = Новый Массив;
			МассивПараметров.Добавить(Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка());
			МассивПараметров.Добавить(Запись.РегламентноеЗадание);
			ПараметрыЗадания.Вставить("Параметры", МассивПараметров);
			ПараметрыЗадания.Вставить("Расписание", Запись.Расписание.Получить());
			Задание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
			
			Запись.Идентификатор = Задание.УникальныйИдентификатор;
			
		Иначе
			
			ПараметрыЗадания = Новый Структура;
			ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ЗапускДополнительныхОбработок);
			ПараметрыЗадания.Вставить("Использование", Запись.Использование);
			ПараметрыЗадания.Вставить("Наименование", Запись.РегламентноеЗадание);
			ПараметрыЗадания.Вставить("Ключ", Запись.Идентификатор);
			МассивПараметров = Новый Массив;
			МассивПараметров.Добавить(Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка());
			МассивПараметров.Добавить(Запись.РегламентноеЗадание);
			ПараметрыЗадания.Вставить("Параметры", МассивПараметров);
			ПараметрыЗадания.Вставить("Расписание", Запись.Расписание.Получить());
		
			РегламентныеЗаданияСервер.ИзменитьЗадание(Запись.Идентификатор, ПараметрыЗадания);  
			
		КонецЕсли;			
		
	КонецЦикла;
	
КонецПроцедуры

Прочитав код, вы наверняка догадались, что мы прикручиваемся к стандартному регламентному заданию "ЗапускДополнительныхОбработок", так как по смыслу оно ближе всех к нашей задаче из всей БСП. А также увидели, что здесь у нас создается регламентное задание, из которого Идентификатор присваивается нашему регистру для того, чтобы при дальнейшей перезаписи у нас изменялось созданное регламентное задание, а не генерировалось новое.

5. Следующим шагом нам надо в расширении подменить типовую процедуру, которая вызывается при запуске нашей регламентной задачи, для этого в модуле ДополнительныеОтчетыИОбработки с помощью расширения подменяем процедуру ВыполнитьОбработкуПоРегламентномуЗаданию:


&Вместо("ВыполнитьОбработкуПоРегламентномуЗаданию")
Процедура Лот_ВыполнитьОбработкуПоРегламентномуЗаданию(ВнешняяОбработка, ИдентификаторКоманды)

	Если ТипЗнч(ИдентификаторКоманды) = Тип("ПеречислениеСсылка.ЛР_РегламентныеЗаданияРасширения")  Тогда
		
       	Если ИдентификаторКоманды = Перечисления.ЛР_РегламентныеЗаданияРасширения.РегламентноеЗадание1 тогда
		
			ЛР_РегламентныеЗадания.ВыполнитьРегламентнуюЗадачу1Расширения();
			
		КонецЕсли;
		
	Иначе
		
		ПродолжитьВызов(ВнешняяОбработка, ИдентификаторКоманды);
		
	КонецЕсли;	 
	
КонецПроцедуры

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

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

 

 

На форме записи регистра можно сразу управлять расписанием выполнения задачи в пользовательском режиме. Как сделать диалог расписания, расписывать здесь уже не буду, так как наверняка есть множество тем на этот счет, не является обязательным для работоспособности, да и не относится это к теме

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

 

 

Разработка велась на УТ11.5 (БСП 3.1.3.548), но думаю что подойдет для любой актуальной базы на БСП

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

Спасибо за внимание! И надеюсь, что в скором времени мы увидим полноценный типовой функционал регламентных задач в расширениях, без всяких обходных путей =)

Скачать файлы

Наименование Файл Версия Размер
Конфигурирование новых регламентных заданий с помощью расширения:

.cfe 14,21Kb
3
.cfe 1.0.0.1 14,21Kb 3 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Torin 401 13.08.21 18:38 Сейчас в теме
вот за "можно накатить" точно + :)
2. Yashazz 4083 13.08.21 19:08 Сейчас в теме
Я не знаю понятия "регламентная задача". Это что-то из БСП?
3. folon 22 22.08.21 23:51 Сейчас в теме
Новое регламентное задание делается внешней обработкой за 1 минуту. Стандартный механизм БСП.
4. Barmi 2 11.10.21 18:53 Сейчас в теме
(3) Да. Но как из Внешней обработки запустить код из Расширения?
Оставьте свое сообщение

См. также

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    53998    dsdred    46    

Решение ошибок "Нет кнопки Создать на основании" или "Задвоились пункты в меню Создать на основании"

БСП (Библиотека стандартных подсистем) v8 УНФ Абонемент ($m)

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

2 стартмани

30.08.2021    602    Bor_ka    0    

Пример создания документа с движениями в ERP 2.5.7

БСП (Библиотека стандартных подсистем) Практика программирования v8 ERP2 Россия УУ Абонемент ($m)

Пример создания документа с движениями в ERP 2.5.7, а также включение документа в основные подсистемы, а именно по управлению доступом, датам запрета изменения, контролю остатков, использованию характеристик и серий и прочее.

1 стартмани

10.08.2021    1906    maraty    10    

БСП. Подключаемые команды. Команды заполнения

БСП (Библиотека стандартных подсистем) v8 ERP2 БП3.0 ЗУП3.x Россия Абонемент ($m)

Статья посвящена использованию подсистемы "Подключаемые команды" библиотеки стандартных подсистем. Доходчиво и подробно описан пошаговый алгоритм создания, а также подключения внешней обработки для заполнения документа. Содержит шаблон-заготовку и готовую к использованию обработку заполнения документа.

1 стартмани

11.05.2021    6715    kondrp    7    

Подсистема сложносочиненного версионирования

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Абонемент ($m)

Статья описывает мою личную боль при работе в Управление холдингом, редакция 3.0, и может не совпадать с вашими ощущениями. Прощу учитывать, что это лишь мысленный эксперимент. В качестве эксперимента поставил себе задачу: "Как отслеживать изменения, для объектов, которые состоят из нескольких других объектов?".

1 стартмани

04.05.2021    614    johnnyshut23    0    

Превращение внутреннего отчета во внешний без снятия с поддержки конфигурации

Менеджеры внешних отчетов Расширения v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

22.06.2020    4189    user1118625    3    

История данных и БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

История данных от платформы и Версионирование объектов от БСП. Как мигрировать историю из подсистемы БСП и начать использовать функции платформы уже сейчас.

1 стартмани

09.06.2020    5108    zeegin    17    

Дополнительные расходы на основе перемещения запасов в УНФ (пошаговая разработка расширения конфигурации)

Обработка документов Учет ТМЦ Расширения v8 УНФ Россия УУ Абонемент ($m)

Доброго времени! Предлагаю небольшое расширение для конфигурации "Управление нашей фирмой", позволяющее включать документ "Перемещение запасов" в таблицу оснований документа "Дополнительные расходы".

1 стартмани

17.10.2019    7318    aximo    5    

Использование подсистемы БСП "Заполнение объектов"

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

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    28927    ids79    26    

БСП: Дополнительная обработка (Регламенты) + Расширения, примеры от сложного к универсальному

Практика программирования БСП (Библиотека стандартных подсистем) v8 v8::УФ 1cv8.cf Абонемент ($m)

Продолжение статьи «БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному». Пойдем от финального примера той статьи и сделаем несколько шагов навстречу к универсальному решению.

2 стартмани

21.05.2018    20278    dsdred    17    

Внешняя печатная форма с использованием БСП и вызовом клиентского метода

Универсальные печатные формы БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

02.11.2017    25323    Andrew189100    15