Как добавить имя метода для регламентного задания в 1С и настроить его расписание

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Регламентные задания в платформе «1С:Предприятие 8.3» представляют собой мощный инструмент для автоматизации рутинных процессов. С их помощью мы можем настроить выполнение обменов данными, заполнение классификаторов, отправку писем или очистку устаревших логов в фоновом режиме без участия пользователей. Однако начинающие разработчики часто сталкиваются с проблемой: при создании нового регламентного задания в конфигураторе поле «Имя метода» остается пустым, а созданная процедура просто отсутствует в списке выбора. В этой статье мы подробно разберем, как правильно оформить программный код и свойства метаданных, чтобы метод стал доступен для выбора, а также рассмотрим тонкости настройки расписания для запуска задач несколько раз в день.

Почему имя метода не отображается в конфигураторе?

Платформа «1С:Предприятие» предъявляет жесткие требования к процедурам, которые могут использоваться в качестве обработчиков регламентных заданий. Если ваша процедура не видна при нажатии на кнопку выбора в поле «Имя метода», давайте последовательно проанализируем настройки вашего общего модуля и структуру самого метода.

Для того чтобы платформа распознала процедуру как подходящую, должны одновременно выполняться следующие правила:

  1. Правильные свойства общего модуля:
    • В свойствах общего модуля обязательно должен быть установлен флаг «Сервер». Регламентные задания всегда выполняются на стороне сервера, поэтому клиентские модули платформа даже не анализирует.
    • Должен быть обязательно снят флаг «Глобальный». Процедуры из глобальных общих модулей платформа не позволяет назначать напрямую в качестве обработчиков регламентных задач.
  2. Правильное описание процедуры в коде:
    • Назначаемый метод должен быть объявлен именно как Процедура, а не как Функция.
    • В объявлении процедуры обязательно должно присутствовать ключевое слово Экспорт.
    • Процедура не должна содержать обязательных параметров. Если логика работы требует передачи каких-либо переменных, они обязаны иметь значения по умолчанию. В противном случае платформа проигнорирует этот метод.

Рассмотрим пример правильного объявления процедуры в общем модуле МойРегламентныйМодульСервер:


Процедура ВыполнитьРегламентныйОбменДанными() Экспорт
    
    // Записываем событие начала работы в Журнал регистрации
    ЗаписьЖурналаРегистрации(
        "РегламентныеЗадания.Обмен",
        УровеньЖурналаРегистрации.Информация,
        ,
        ,
        "Регламентный обмен данными запущен."
    );
    
    // Здесь размещается основная бизнес-логика
    ВыполнитьВыгрузкуДокументов();
    
    ЗаписьЖурналаРегистрации(
        "РегламентныеЗадания.Обмен",
        УровеньЖурналаРегистрации.Информация,
        ,
        ,
        "Регламентный обмен успешно завершен."
    );
    
КонецПроцедуры

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


Процедура ВыполнитьЗаданиеСПараметрами(ИмяУзла = "ОсновнойУзел", КоличествоПотоков = 1) Экспорт
    
    // Логика работы с параметрами
    ПроводитьОбработкуДанных(ИмяУзла, КоличествоПотоков);
    
КонецПроцедуры

Пошаговая инструкция по созданию регламентного задания в конфигураторе

Выяснив основные требования платформы, давайте вместе пройдем по шагам весь процесс добавления нового регламентного задания:

Шаг 1. Создание общего модуля. Добавьте в дерево метаданных новый общий модуль (например, УправлениеРегламентнымиЗадачами). В палитре свойств установите галочку «Сервер» и убедитесь, что флаг «Глобальный» выключен. Флаги «Клиент (управляемое приложение)» и «Вызов сервера» также рекомендуется отключить для экономии ресурсов.

Шаг 2. Написание кода. Откройте созданный модуль и напишите экспортную процедуру без обязательных параметров, содержащую необходимый вам функционал.

Шаг 3. Добавление регламентного задания. В дереве конфигурации найдите ветку «Общие» -> «Регламентные задания» и добавьте новый объект. Дайте ему понятное имя, например, ВыгрузкаДанныхВБухгалтерию.

Шаг 4. Указание метода. В свойствах регламентного задания найдите строку «Имя метода» и нажмите кнопку выбора с тремя точками. В открывшемся списке найдите ваш общий модуль и выберите созданную процедуру.

Настройка расписания «Много раз в день»

После успешной привязки метода возникает задача настройки периодичности его запуска. Часто требуется выполнять задачу не один раз в сутки, а, например, каждые 15 минут или раз в час. Для этого мы настраиваем расписание.

Разберем, как сделать запуск регламентного задания многократно в течение дня:

  1. В свойствах регламентного задания нажмите на ссылку открытия расписания.
  2. Перейдите на вкладку «Дневное».
  3. В поле «Повторять через» укажите желаемый интервал в секундах. Например, для запуска каждые 15 минут введите значение 900, а для запуска каждый час — 3600.
  4. Если требуется выполнять задание непрерывно в течение суток, укажите в поле «Период повторения в течение дня» значение С начала дня до конца дня.
  5. При необходимости ограничьте время работы задания (например, запускать только в рабочее время с 09:00 до 18:00), заполнив соответствующие поля начала и окончания работы.

Важный совет: Настраивать жесткое расписание непосредственно в конфигураторе — не лучшая практика. Если вам потребуется изменить интервал запуска в работающей базе, придется монопольно выгонять пользователей для обновления конфигурации. Гораздо эффективнее настраивать расписание в режиме «1С:Предприятие».

Настройка регламентных заданий в режиме «1С:Предприятие»

В современных конфигурациях, созданных на базе БСП (Библиотека стандартных подсистем), таких как 1С:ERP, Комплексная автоматизация, Управление торговлей или Бухгалтерия предприятия, есть встроенный функционал для гибкого администрирования регламентных процессов.

Чтобы изменить расписание, запустить задачу вручную или посмотреть историю ее выполнения, выполните следующие действия в режиме пользователя:

  1. Перейдите в раздел НСИ и администрирование -> Обслуживание.
  2. Откройте гиперссылку Регламентные и фоновые задания.
  3. В открывшемся списке найдите нужное задание, дважды кликните по нему и перейдите к настройке расписания. Здесь вы можете оперативно изменить частоту запусков без изменения конфигурации.

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

Альтернативный вариант: Использование внешних обработок (БСП)

Если ваша конфигурация находится на поддержке и вы не хотите вносить изменения в структуру метаданных, отличным решением будет привязка расписания к внешней обработке через механизм «Дополнительные отчеты и обработки». В этом случае код пишется внутри модуля объекта внешней обработки.

Рассмотрим шаблон программного кода внешней обработки, адаптированной для запуска по расписанию:


Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
    ПараметрыРегистрации.Вставить("Наименование", "Автоматический обмен данными (регламент)");
    ПараметрыРегистрации.Вставить("Версия", "1.1");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    
    // Описываем команду для регламентного запуска
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = "Выполнить регламентное действие";
    НоваяКоманда.Идентификатор = "ЗапускОбмена";
    НоваяКоманда.Использование = "ВызватьМетодВФоне"; // Запуск в фоновом режиме по расписанию
    
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    
    Возврат ПараметрыРегистрации;
    
КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, СопутствующиеПараметры = Неопределено) Экспорт
    
    Если ИдентификаторКоманды = "ЗапускОбмена" Тогда
        ВыполнитьФоновыеДействия();
    КонецЕсли;
    
КонецПроцедуры

Процедура ВыполнитьФоновыеДействия()
    // Основной алгоритм внешней обработки
    // ...
КонецПроцедуры

После сохранения этой обработки в файл формата .epf, добавьте ее в справочник «Дополнительные отчеты и обработки» в режиме «1С:Предприятие». Система автоматически зарегистрирует команду и предоставит удобный интерфейс для настройки индивидуального расписания выполнения вашего кода.

← На главную