Регламентные задания в платформе «1С:Предприятие 8.3» представляют собой мощный инструмент для автоматизации рутинных процессов. С их помощью мы можем настроить выполнение обменов данными, заполнение классификаторов, отправку писем или очистку устаревших логов в фоновом режиме без участия пользователей. Однако начинающие разработчики часто сталкиваются с проблемой: при создании нового регламентного задания в конфигураторе поле «Имя метода» остается пустым, а созданная процедура просто отсутствует в списке выбора. В этой статье мы подробно разберем, как правильно оформить программный код и свойства метаданных, чтобы метод стал доступен для выбора, а также рассмотрим тонкости настройки расписания для запуска задач несколько раз в день.
Платформа «1С:Предприятие» предъявляет жесткие требования к процедурам, которые могут использоваться в качестве обработчиков регламентных заданий. Если ваша процедура не видна при нажатии на кнопку выбора в поле «Имя метода», давайте последовательно проанализируем настройки вашего общего модуля и структуру самого метода.
Для того чтобы платформа распознала процедуру как подходящую, должны одновременно выполняться следующие правила:
Процедура, а не как Функция.Экспорт.Рассмотрим пример правильного объявления процедуры в общем модуле МойРегламентныйМодульСервер:
Процедура ВыполнитьРегламентныйОбменДанными() Экспорт
// Записываем событие начала работы в Журнал регистрации
ЗаписьЖурналаРегистрации(
"РегламентныеЗадания.Обмен",
УровеньЖурналаРегистрации.Информация,
,
,
"Регламентный обмен данными запущен."
);
// Здесь размещается основная бизнес-логика
ВыполнитьВыгрузкуДокументов();
ЗаписьЖурналаРегистрации(
"РегламентныеЗадания.Обмен",
УровеньЖурналаРегистрации.Информация,
,
,
"Регламентный обмен успешно завершен."
);
КонецПроцедуры
Если нам все же необходимо передать параметры в процедуру, мы должны определить их со значениями по умолчанию, как показано в примере ниже:
Процедура ВыполнитьЗаданиеСПараметрами(ИмяУзла = "ОсновнойУзел", КоличествоПотоков = 1) Экспорт
// Логика работы с параметрами
ПроводитьОбработкуДанных(ИмяУзла, КоличествоПотоков);
КонецПроцедуры
Выяснив основные требования платформы, давайте вместе пройдем по шагам весь процесс добавления нового регламентного задания:
Шаг 1. Создание общего модуля. Добавьте в дерево метаданных новый общий модуль (например, УправлениеРегламентнымиЗадачами). В палитре свойств установите галочку «Сервер» и убедитесь, что флаг «Глобальный» выключен. Флаги «Клиент (управляемое приложение)» и «Вызов сервера» также рекомендуется отключить для экономии ресурсов.
Шаг 2. Написание кода. Откройте созданный модуль и напишите экспортную процедуру без обязательных параметров, содержащую необходимый вам функционал.
Шаг 3. Добавление регламентного задания. В дереве конфигурации найдите ветку «Общие» -> «Регламентные задания» и добавьте новый объект. Дайте ему понятное имя, например, ВыгрузкаДанныхВБухгалтерию.
Шаг 4. Указание метода. В свойствах регламентного задания найдите строку «Имя метода» и нажмите кнопку выбора с тремя точками. В открывшемся списке найдите ваш общий модуль и выберите созданную процедуру.
После успешной привязки метода возникает задача настройки периодичности его запуска. Часто требуется выполнять задачу не один раз в сутки, а, например, каждые 15 минут или раз в час. Для этого мы настраиваем расписание.
Разберем, как сделать запуск регламентного задания многократно в течение дня:
900, а для запуска каждый час — 3600.С начала дня до конца дня.Важный совет: Настраивать жесткое расписание непосредственно в конфигураторе — не лучшая практика. Если вам потребуется изменить интервал запуска в работающей базе, придется монопольно выгонять пользователей для обновления конфигурации. Гораздо эффективнее настраивать расписание в режиме «1С:Предприятие».
В современных конфигурациях, созданных на базе БСП (Библиотека стандартных подсистем), таких как 1С:ERP, Комплексная автоматизация, Управление торговлей или Бухгалтерия предприятия, есть встроенный функционал для гибкого администрирования регламентных процессов.
Чтобы изменить расписание, запустить задачу вручную или посмотреть историю ее выполнения, выполните следующие действия в режиме пользователя:
Если же вы работаете в старой или самописной конфигурации, где БСП не используется, воспользуйтесь стандартной обработкой «Консоль регламентных заданий», которую можно легально скачать с портала ИТС. Она позволяет управлять состояниями фоновых процессов и менять расписание «на лету».
Если ваша конфигурация находится на поддержке и вы не хотите вносить изменения в структуру метаданных, отличным решением будет привязка расписания к внешней обработке через механизм «Дополнительные отчеты и обработки». В этом случае код пишется внутри модуля объекта внешней обработки.
Рассмотрим шаблон программного кода внешней обработки, адаптированной для запуска по расписанию:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
ПараметрыРегистрации.Вставить("Наименование", "Автоматический обмен данными (регламент)");
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
// Описываем команду для регламентного запуска
ТаблицаКоманд = ПолучитьТаблицуКоманд();
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = "Выполнить регламентное действие";
НоваяКоманда.Идентификатор = "ЗапускОбмена";
НоваяКоманда.Использование = "ВызватьМетодВФоне"; // Запуск в фоновом режиме по расписанию
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Процедура ВыполнитьКоманду(ИдентификаторКоманды, СопутствующиеПараметры = Неопределено) Экспорт
Если ИдентификаторКоманды = "ЗапускОбмена" Тогда
ВыполнитьФоновыеДействия();
КонецЕсли;
КонецПроцедуры
Процедура ВыполнитьФоновыеДействия()
// Основной алгоритм внешней обработки
// ...
КонецПроцедуры
После сохранения этой обработки в файл формата .epf, добавьте ее в справочник «Дополнительные отчеты и обработки» в режиме «1С:Предприятие». Система автоматически зарегистрирует команду и предоставит удобный интерфейс для настройки индивидуального расписания выполнения вашего кода.