Здесь я постараюсь коротко и по существу рассказать о таком инструменте, как регламентные задания в 1С. Как это устроено и для чего нужно.
Как это работает
Чтобы получилось регламентное задание, надо соединить код и расписание. Тут никаких подвохов нет. Все так же, как и в других системах, не 1С.
Обязательное требование заключается в том, что код должен размещаться в т.н. общем модуле. При этом вызываемая процедура должна иметь атрибут экспорт.
Впрочем, все это придумано больше для удобства разработчиков платформы. Понятно, что если у вас есть точка входа, тогда вы можете вызывать любой код на сервере. Вот, например, как это делают в типовой конфигурации Бухгалтерия предприятия редакция 3
Процедура ЗагрузитьАктуальныйКурс(ПараметрыЗагрузки = Неопределено, АдресРезультата = Неопределено) Экспорт
Если Метаданные.Обработки.Найти("ЗагрузкаКурсовВалют") <> Неопределено Тогда
Обработки["ЗагрузкаКурсовВалют"].ЗагрузитьАктуальныйКурс(ПараметрыЗагрузки, АдресРезультата);
КонецЕсли;
КонецПроцедуры
Если вы раньше имели дело с расписаниями в других системах, то вы не найдете здесь для себя ничего нового. Расписание, как расписание.
О чем имеет смысл сказать, так это об этих двух опциях: Использование и Предопределенное. Новички тут часто спотыкаются, потому что за этими опциями кроется логика, не воспринимаемая на интуитивном уровне.
Можно догадаться, что Использование отвечает за включение и выключение регламентного задания. Тут сразу возникают вопросы. Зачем создавать в метаданных выключенное регламентное задание? И как оно потом включается? Только в конфигураторе? Или есть возможность включать и выключать задания из пользовательского режима программно?
В дереве метаданных мы видим список регламентных заданий. Казалось бы, все, что нам нужно для запуска задания в работу это создать его, указать точку входа в код (какую-нибудь экспортную процедуру общего модуля), настроить расписание и не забыть поставить галочку Использование. Интуиция подсказывает нам, что если мы создали что-то и взвели галочку использования, то это должно работать.
Но, нет. Тут мы сталкиваемся с контринтуитивным моментом. Дело в том, что список регламентных заданий, который мы видим в режиме конфигуратора, это на самом деле список шаблонов регламентных заданий. И для того, чтобы созданное в конфигураторе регламентное задание заработало в пользовательском режиме, надо его создать из шаблона. Если в режиме конфигуратора у созданного вами регламентного задания (которое на самом деле не задание, а шаблон задания) установить опцию Предопределенное, тогда в пользовательском режиме создавать задание из шаблона не требуется, оно будет создано автоматически в момент применения конфигурации к базе данных.
Если вы до сих пор не запутались, тогда вот вам еще. Получается, что у нас есть список шаблонов регламентных заданий в конфигураторе. В пользовательском режиме мы можем создавать работающие регламентные задания из шаблонов. Причем из одного шаблона можно создать множество работающих регламентных заданий. А чтобы такого не происходило (действительно, что может быть хорошего во множестве однотипных регламентных заданий?) вы можете в режиме конфигуратора указать ключ регламентного задания. Хотя, как по мне, то для того , чтобы этого не происходило было бы достаточно "не городить огород" там, где в нем нет необходимости.
В отличие от, например, справочников или документов у регламентных заданий нет "встроенной" визуализации. Чтобы в пользовательском режиме посмотреть на список регламентных заданий в типовых конфигурациях надо перейти в соответствующий раздел "Администрирование". В нетиповых следует пользоваться т.н. библиотекой стандартных подсистем. Если нет желания в нее погружаться, можно сделать свою визуализацию. Это не займет много времени (есть объект под названием МенеджерРегламентныхЗаданий, а у него есть метод ПолучитьРегламентныеЗадания() ).
Для обычных форм такая визуализация есть на сайте ИТС
https://its.1c.ru/db/metod8dev/content/3752/hdoc
можно "подсмотреть" как это работает.
Зачем это нужно
Без регламентных заданий нам не обойтись, если мы решаем в том или ином виде задачи интеграции. Мы принимаем данные в 1С и отправляем данные из 1С. И конечно нам хотелось бы. чтобы это происходило по расписанию.
И это наиболее очевидный способ применения регламентных заданий. Но, хорошего специалиста в любой области отличает знание вещей, которые менее очевидны.
Дайте пользователю отчет и он захочет его улучшить для себя. Потом еще раз улучшить. И на каждом шаге это будет означать существенное усложнение, и как следствие, замедление. Это, хоть и не обязательно, но имеет высокую вероятность. Изначально приемлемо быстрый отчет работает все медленнее и медленнее. Возникает вопрос, как бы получить и то, и другое. И прежнюю скорость, и новую сложность. Регламентные задания позволяют это сделать! Идея заключается в том, чтобы готовить "тяжелые" отчеты заранее, по расписанию. А когда пользователь захочет получить такой отчет, выдавать ему уже готовый.
Можно пойти и дальше. Зачастую мы используем отчеты для того, чтобы контролировать какие-либо процессы. Сравниваем что стало с тем, что было и смотрим, чтобы это не выходило за определенные рамки. И здесь было бы неплохо, если бы кто-то или что-то делало за нас эту скучную работу. Регламентные задания походят для этого как нельзя лучше. Вообще, существует такая крайняя точка зрения, что отчеты не нужны вовсе, а если они присутствуют в приложении, значит его недостаточно хорошо продумали. Объясняется это тем, что человек все равно не в состоянии воспринимать тот объем информации, который ему выдают в отчетах. Поэтому для людей в приложении должны быть боты-помощники (и тут нам понадобятся регламентные задания), а для сторонних приложений должен быть хорошо продуманный API.
Заключение
Регламентные задания довольно простой, если не обращать внимание на описанные выше сложности, и при этом очень эффективный инструмент. С его помощью вы сможете придать своему решению современный вид.
Напоследок хочу порекомендовать вам бесплатный вебинар, в рамках которого преподаватели из OTUS расскажут про основные возможности EDT и научат вас вести через EDT разработку.