Здесь я постараюсь коротко и по существу рассказать о таком инструменте, как регламентные задания в 1С. Как это устроено и для чего нужно.

Как это работает

Чтобы получилось регламентное задание, надо соединить код и расписание. Тут никаких подвохов нет. Все так же, как и в других системах, не 1С.

Обязательное требование заключается в том, что код должен размещаться в т.н. общем модуле. При этом вызываемая процедура должна иметь атрибут экспорт.

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

Процедура ЗагрузитьАктуальныйКурс(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
	
	Если Метаданные.Обработки.Найти("ЗагрузкаКурсовВалют") <> Неопределено Тогда
		Обработки["ЗагрузкаКурсовВалют"].ЗагрузитьАктуальныйКурс(ПараметрыЗагрузки, АдресРезультата);
	КонецЕсли;
	
КонецПроцедуры

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

О чем имеет смысл сказать, так это об этих двух опциях: Использование и Предопределенное. Новички тут часто спотыкаются, потому что за этими опциями кроется логика, не воспринимаемая на интуитивном уровне.

Можно догадаться, что Использование отвечает за включение и выключение регламентного задания. Тут сразу возникают вопросы. Зачем создавать в метаданных выключенное регламентное задание? И как оно потом включается? Только в конфигураторе? Или есть возможность включать и выключать задания из пользовательского режима программно?

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

Но, нет. Тут мы сталкиваемся с контринтуитивным моментом. Дело в том, что список регламентных заданий, который мы видим в режиме конфигуратора, это на самом деле список шаблонов регламентных заданий. И для того, чтобы созданное в конфигураторе регламентное задание заработало в пользовательском режиме, надо его создать из шаблона. Если в режиме конфигуратора у созданного вами регламентного задания (которое на самом деле не задание, а шаблон задания) установить опцию Предопределенное, тогда в пользовательском режиме создавать задание из шаблона не требуется, оно будет создано автоматически в момент применения конфигурации к базе данных.

Если вы до сих пор не запутались, тогда вот вам еще. Получается, что у нас есть список шаблонов регламентных заданий в конфигураторе. В пользовательском режиме мы можем создавать работающие регламентные задания из шаблонов. Причем из одного шаблона можно создать множество работающих регламентных заданий. А чтобы такого не происходило (действительно, что может быть хорошего во множестве однотипных регламентных заданий?) вы можете в режиме конфигуратора указать ключ регламентного задания. Хотя, как по мне, то для того , чтобы этого не происходило было бы достаточно "не городить огород" там, где в нем нет необходимости.

В отличие от, например, справочников или документов у регламентных заданий нет "встроенной" визуализации. Чтобы в пользовательском режиме посмотреть на список регламентных заданий в типовых конфигурациях надо перейти в соответствующий раздел "Администрирование". В нетиповых следует пользоваться т.н. библиотекой стандартных подсистем. Если нет желания в нее погружаться, можно сделать свою визуализацию. Это не займет много времени (есть объект под названием МенеджерРегламентныхЗаданий, а у него есть метод ПолучитьРегламентныеЗадания() ).

Для обычных форм такая визуализация есть на сайте ИТС

https://its.1c.ru/db/metod8dev/content/3752/hdoc

можно "подсмотреть" как это работает.

Зачем это нужно

Без регламентных заданий нам не обойтись, если мы решаем в том или ином виде задачи интеграции. Мы принимаем данные в 1С и отправляем данные из 1С. И конечно нам хотелось бы. чтобы это происходило по расписанию.

И это наиболее очевидный способ применения регламентных заданий. Но, хорошего специалиста в любой области отличает знание вещей, которые менее очевидны.

Дайте пользователю отчет и он захочет его улучшить для себя. Потом еще раз улучшить. И на каждом шаге это будет означать существенное усложнение, и как следствие, замедление. Это, хоть и не обязательно, но имеет высокую вероятность. Изначально приемлемо быстрый отчет работает все медленнее и медленнее. Возникает вопрос, как бы получить и то, и другое. И прежнюю скорость, и новую сложность. Регламентные задания позволяют это сделать! Идея заключается в том, чтобы готовить "тяжелые" отчеты заранее, по расписанию. А когда пользователь захочет получить такой отчет, выдавать ему уже готовый.

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

Заключение

Регламентные задания довольно простой, если не обращать внимание на описанные выше сложности, и при этом очень эффективный инструмент. С его помощью вы сможете придать своему решению современный вид.

Напоследок хочу порекомендовать вам бесплатный вебинар, в рамках которого преподаватели из OTUS расскажут про основные возможности EDT и научат вас вести через EDT разработку.

Комментарии (1)


  1. IvanSTV
    30.06.2023 17:19

    Когда движения товаров/денег/активностей идут в реальном времени, выдавать не актуальный отчёт, сформированый регламентно, идея так себе. Типичный пример мы кусок отчёта за 14 дней и раньше формируем регламентно, а остальное тянем с актуального, условно. А тут хоа-сторнировали накладную, и пошло задвоение. То есть , получается, надо задачу вязать и на события заодно. Или отслеживать события, записывать и на запрос сверяться, попадает ли изменение по событию в отчёт.

    Регламентно задание уместней при планировании -например, WMS анализирует вход/выход и регламентно создаёт задание на подписку зон подбора. Или регламентно проводит ABC анализ, и вываливаетс поутру дашборд. Или проверяет сроки годности и блокирует документы, если туда попадает просрочка или меняет резервы партии. Много применений.

    А регламентный отчёт-это только что-то типа с утра руководителю на стол класть итоги дня. Ночью посчитал я и вывалился.