Универсальная очередь заданий
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
При разработке и адаптации конфигураций часто возникает необходимость отложенной обработки объектов, а также контроля выполнения соответствующих операций. Данное решение представляет собой готовый базовый функционал для организации различных очередей обработки объектов.
Примеры решаемых задач
Создание подчиненных объектов (например, документов) |
Организация обменов (выгрузки, формирование сообщений, http-запросы и т.д.) |
|
Общая логика работы
- Настраиваются виды заданий, которые будут выполняться.
- Для каждого вида задания определяются типы объектов, запись которых должна инициировать выполнение задания.
- Для каждого типа объекта описывается функция-триггер, которая определяет необходимость генерации задания и функция, обеспечивающая обработку объектов.
- При записи объекта, если для него настроены виды заданий и функция-триггер вернула Истина, то формируется задание в очереди. Задание по объекту формируется только если нет активных заданий.
- Регламентное задание обрабатывает очередь и с помощью описанных функций выполняет обработку объектов. Событие обработки и его результат записываются в журнал.
- Отдельное регламентное задание удаляет записи журнала старше указанного количества дней.
- С помощью специальных отчетов можно получить информацию о текущем состоянии очереди, а также всю историю обработки за период. При необходимости возможно настроить рассылку отчетов с помощью штатного механизма БСП.
Архитектура механизма

- Одним из основных объектов механизма является справочник "Виды заданий", который описывает выполняемые задания и содержит необходимые данные и настройки для их выполнения. Также из формы данного справочника осуществляется управление регламентными заданиями. Для каждого вида задания создаются свои экземпляры регламентных заданий.
Для каждого вида задания указывается:
- Наименование и флаг активности;
- Максимальное количество попыток обработки в случае ошибок (во избежание захламления журнала, если 0, то предпринимается 3 попытки);
- Срок хранения записей журнала в днях (если 0, журнал не очищается);
- Типы объектов метаданных, запись которых должна инициировать данный вид задания.
- Прочие необходимые данные и настройки, необходимые для выполнения задания.
- Для каждого типа обрабатываемых объектов в модуле менеджера необходимо определить две экспортные функции:
- оз_ТребуетсяСформироватьЗадание(ВидЗадания, Объект) - необходимо описать прикладную логику, которая будет возвращать признак (булево) необходимости формирования задания в очереди.
- оз_ВыполнитьОбработкуОбъекта(ВидЗадания, Ссылка) - необходимо описать прикладную логику обработки объекта. Функция должна вернуть структуру с ключами:
- Выполнено - Булево. Признак успешной обработки.
- ТекстОшибки - Строка. Текст, который необходимо зафиксировать в журнале.
- ДополнительныеДанные - Структура. Для передачи дополнительных данных, которые необходимо записать в журнал. Ключи структуры должны совпадать с именами ресурсов/реквизитов регистра сведений "Журнал обработки заданий".
- При записи объектов подбираются соответствующие виды заданий и выполняется функция оз_ТребуетсяСформироватьЗадание(ВидЗадания, Объект), задание добавляется в регистр сведений "Задания к обработке".
- Для каждого вида заданий работают свои экземпляры регламентных заданий, первое из которых обрабатывает очередь с помощью функции оз_ВыполнитьОбработкуОбъекта(ВидЗадания, Ссылка) и журналирует результаты, второе - очищает старые записи журнала. На время обработки объекта устанавливается управляемая блокировка на запись регистра сведений и сам объект, поскольку алгоритм обработки может опираться на текущие данные объекта.
Порядок внедрения
|
|
|
|
|
Пример использования
Решим простейшую задачу - при записи поступления на расчетный счет, в назначении платежа которого есть слово "аванс" и счет-фактура на аванс ещё не создан, то формировать задание на создание счета-фактуры.
Добавим предопределенный элемент:

Определим функцию-триггер в модуле менеджера документа "Поступление на расчетный счет":

Определим функцию-обработчик в модуле менеджера документа "Поступление на расчетный счет":

Обновляемся и переходим в режим 1С:Предприятие:

Настроим вид задания:

Проведем несколько документов "Поступление на расчетный счет" и выполним регламентное задание. Сформируем отчеты:


Вы легко можете адаптировать данный механизм под свои задачи.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.209.16
Вступайте в нашу телеграмм-группу Инфостарт
Создание подчиненных объектов (например, документов)

Доработать регистр сведений