Обработка по расписанию: три рабочих способа поставить её на автозапуск в 1С 8.3

· 10 мин

Содержание

Чтобы запустить обработку в 1С регламентным заданием без программирования конфигурации, зарегистрируйте её как дополнительную обработку: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. В карточке у серверной команды обработки задаётся расписание, и дальше она выполняется сама. Работает в типовых конфигурациях на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА и ERP.

Типичная ситуация: каждое утро кто-то вручную открывает обработку выгрузки остатков на сайт или пересчёта цен. Человек заболел — выгрузка не ушла. Автоматизация через регламентное задание снимает эту зависимость, но обработка должна быть написана под фоновый запуск. Обычная «форменная» обработка с кнопкой «Выполнить» по расписанию не заработает.

Подготовка: режим базы, права и код обработки

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

Режим работы базы

РежимКак выполняются регламентные заданияЧто учесть
Клиент-серверныйСервер 1С запускает их сам, пользователи не нужныПроверить флажок блокировки в консоли кластера
ФайловыйТолько пока открыт хотя бы один сеанс программыНочью при выключенных компьютерах ничего не выполнится

Для файловой базы есть обходной путь: держать постоянно открытый сеанс на отдельном компьютере или запускать обработку планировщиком Windows (об этом ниже).

Права

  • 🔑 Регистрировать дополнительные обработки может пользователь с полными правами или с ролью на добавление и изменение дополнительных отчётов и обработок.
  • 🛠 Для своего задания в конфигурации или расширении нужен доступ в Конфигуратор.
  • 🖥 Для снятия блокировки в клиент-серверной базе нужны права администратора кластера.

Код самой обработки

Регламентное задание выполняется на сервере, в фоне, без окна. Поэтому в обработке не должно быть:

  • 🚫 открытия форм, вопросов и предупреждений пользователю;
  • 🚫 диалога выбора файла — путь задаётся константой или настройкой;
  • 🚫 клиентских методов и обращений к локальному диску пользователя.

Путь к файлам (выгрузка, обмен, epf) должен быть доступен с сервера 1С, а не с вашего компьютера. Служба сервера работает под своей учётной записью, обычно USR1CV8. Если файл лежит на сетевой папке, этой учётной записи нужны права на чтение и запись.

Где в 1С настраиваются регламентные задания

Интерфейс настройки разнесён по двум местам, и это путает.

Список всех заданий базы. Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Здесь видно все задания конфигурации: обновление курсов валют, классификаторов, полнотекстового поиска и другие. Каждое можно включить, выключить, запустить вручную, поменять расписание и пользователя.

Задания для дополнительных обработок. Расписание внешней обработки задаётся не в общем списке, а в её карточке в справочнике «Дополнительные отчеты и обработки». Платформа выполняет такие обработки через одно служебное задание БСП, которое перебирает зарегистрированные команды с расписанием.

Если в разделе «Администрирование» нет пункта «Дополнительные отчеты и обработки», откройте Администрирование → Печатные формы, отчеты и обработки и включите флажок «Дополнительные отчеты и обработки». Ссылка появится сразу.

Способ 1. Запуск обработки регламентным заданием через «Дополнительные обработки»

Это основной путь для типовых конфигураций. Конфигурация остаётся на поддержке, обновления ставятся без сравнения и объединения.

Что должно быть в модуле объекта обработки

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

Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("3.1.5.1");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;

    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = "Выгрузка остатков на сайт";
    Команда.Идентификатор = "ВыгрузкаОстатков";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    Команда.ПоказыватьОповещение = Ложь;

    Возврат ПараметрыРегистрации;

КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

    Если ИдентификаторКоманды = "ВыгрузкаОстатков" Тогда
        ВыгрузитьОстатки();
    КонецЕсли;

КонецПроцедуры

Процедура ВыполнитьКоманду — точка входа. Именно её вызывает регламентное задание. Вся полезная работа идёт в ВыгрузитьОстатки() или в любой другой серверной процедуре модуля.

БезопасныйРежим = Ложь нужен, если обработка пишет файлы, ходит в интернет или работает с COM. При загрузке программа запросит у администратора подтверждение таких разрешений. Ставьте небезопасный режим только обработкам, код которых вы видели сами.

Регистрация и параметры запуска

  1. Откройте Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
  2. Нажмите «Добавить из файла…» и выберите файл .epf. Подтвердите предупреждение о безопасности.
  3. В карточке проверьте вид — «Дополнительная обработка» — и публикацию «Используется».
  4. На вкладке «Команды» найдите строку вашей команды. В колонке «Расписание» стоит «Не задано».
  5. Дважды щёлкните по этой ячейке — откроется окно расписания. Настройте его (см. раздел о расписании ниже).
  6. Включите флажок использования расписания в той же строке, если он не включился сам.
  7. Нажмите «Записать и закрыть».

Расписание можно задать только у команд с типом «Вызов серверного метода». У команд, открывающих форму, колонка «Расписание» недоступна. Это первая подсказка, если ячейка не нажимается.

Способ 2. Своё регламентное задание в расширении или конфигурации

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

  1. В Конфигураторе откройте расширение (или создайте новое) и добавьте общий модуль с флажком «Сервер». Флажок «Глобальный» не ставьте.
  2. В модуле напишите экспортную процедуру — это обработчик задания.
  3. В ветке «Общие → Регламентные задания» добавьте новое задание.
  4. В свойстве «Имя метода» выберите процедуру из модуля.
  5. Включите «Предопределенное» и «Использование», задайте расписание.
  6. При необходимости укажите «Количество повторов при аварийном завершении» и «Интервал повтора при аварийном завершении» (в секундах).
  7. Обновите конфигурацию базы данных расширения (F7).

Пример обработчика, который запускает внешнюю обработку из файла:

Процедура ВыгрузкаОстатковПоРасписанию() Экспорт

    ПутьКФайлу = "\\srv-files\obmen\ВыгрузкаОстатков.epf";

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

КонецПроцедуры

Второй параметр Ложь отключает безопасный режим для созданной обработки. Строка ВызватьИсключение нужна, чтобы задание завершилось со статусом ошибки, а не «успешно», и сработали повторы.

В конфигурациях на БСП первой строкой обработчика принято вызывать ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.<ИмяЗадания>). Метод проверяет, можно ли выполнять задание сейчас: не идёт ли обновление, не заблокированы ли задания.

Какой способ выбрать

СпособКогда подходитРиски
Дополнительная обработка БСПТиповая конфигурация, нет желания трогать метаданныеОбработка должна поддерживать регистрацию БСП
Своё задание в расширенииНужен контроль над повторами и пользователем, БСП нетРасширение нужно проверять после обновлений конфигурации
Задание в основной конфигурацииСвоя, нетиповая базаСнятие с поддержки типовой
Планировщик WindowsФайловая база, нет доступа в КонфигураторНужна лицензия на сеанс и открытый пароль в командной строке

Как задать расписание запуска обработки

Окно расписания одинаковое во всех способах. В нём четыре вкладки.

  • 📅 Общее — дата начала и окончания, «Повторять каждые N дней».
  • 🕗 Дневное — время начала и окончания, «Повторять через N секунд», пауза между запусками, время, к которому задание должно завершиться.
  • 📆 Недельное — дни недели.
  • 🗓 Месячное — месяцы, день месяца или день недели в месяце (например, последняя пятница).

Примеры расписаний:

ЗадачаКак настроить
Выгрузка остатков каждые 15 минут в рабочее времяДневное: начало 08:00, окончание 20:00, повторять через 900 с; Недельное: пн–пт
Ночной пересчёт ценДневное: начало 02:00, повторять каждый 1 день
Закрытие месяца в первый рабочий деньМесячное: 1-е число, начало 06:00
Отчёт руководителю по понедельникамНедельное: только понедельник, начало 07:30

Под окном видна строка-расшифровка вроде «каждый день; с 2:00:00 один раз в день». Читайте её перед сохранением — так проще поймать ошибку в настройке.

Если обработка работает 20 минут, а интервал повтора 10 минут, новый запуск не стартует, пока не закончился предыдущий: платформа не выполняет два экземпляра одного регламентного задания одновременно. Фактическая частота будет реже, чем в расписании.

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

Как проверить, что обработка отработала по расписанию

Список фоновых заданий

Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания, вкладка с фоновыми заданиями. Каждый запуск регламентного задания здесь — отдельная строка.

СостояниеЧто значит
АктивноОбработка выполняется прямо сейчас
ЗавершеноОтработала без исключений
Завершено аварийноУпала с ошибкой — откройте строку, там текст
ОтмененоОстановлена вручную или при завершении сеанса

Сообщения, которые обработка выводит через Сообщить() или СообщениеПользователю, в фоне никуда не показываются. Их видно в карточке фонового задания — удобный способ оставить себе протокол без доработок.

Журнал регистрации

Администрирование → Обслуживание → Журнал регистрации. Отберите события фоновых и регламентных заданий за нужный период. Если в обработке есть ЗаписьЖурналаРегистрации со своим именем события, как в примере выше, фильтруйте по нему — это самый быстрый способ найти конкретный запуск.

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

Ежедневный контроль задания
Выполнено: 0 / 5

Почему регламентное задание не запускает обработку

Диагностика: выберите симптом

Ещё одна частая причина — пользователь задания. В карточке регламентного задания укажите отдельного пользователя («Робот» или похожего) с нужными правами. Если сотрудник, под которым шло задание, уволился и его запись отключили, задание начнёт падать.

Снятие блокировки регламентных заданий на копии базы опасно: тестовая база начнёт выгружать данные на сайт, отправлять письма и обмениваться с рабочей. Снимайте блокировку только на рабочей базе или отключите в копии все обмены заранее.

Альтернатива: запуск обработки планировщиком Windows

Если база файловая или доступа к Конфигуратору нет, обработку можно запускать параметром командной строки /Execute. Программа стартует, открывает указанную обработку и выполняет её.

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Torg" /N"Робот" /P"пароль" /Execute"D:\Obrabotki\VygruzkaOstatkov.epf" /DisableStartupMessages

Для клиент-серверной базы вместо /F"путь" используется /S"сервер\имябазы". Задачу создают в «Планировщике заданий» Windows с нужным временем.

Обработка для такого запуска пишется иначе: основная работа выполняется при открытии формы, в конце вызывается ЗавершитьРаботуСистемы(Ложь). Иначе окно программы останется висеть, а сеанс займёт лицензию.

Пароль в командной строке виден всем, у кого есть доступ к планировщику. Дайте пользователю «Робот» минимальные права, нужные только этой обработке.

Частые вопросы

Можно ли поставить на расписание внешний отчёт?
Нет, по расписанию запускаются только дополнительные обработки с серверной командой. Для отчётов в типовых конфигурациях есть рассылка отчётов с собственным расписанием.
Под каким пользователем выполняется дополнительная обработка по расписанию?
Для своего задания — под пользователем из его карточки в списке регламентных заданий. Задайте там отдельную учётную запись с нужными правами, а не сотрудника.
Сколько регламентных заданий можно запустить одновременно?
Разные задания выполняются параллельно, число ограничено ресурсами сервера. Один и тот же экземпляр задания дважды одновременно не запустится.
Обновление конфигурации сбросит расписание дополнительной обработки?
Нет. Расписание хранится в данных базы, в карточке обработки, и после обновления сохраняется. Перерегистрировать обработку нужно, только если изменился её файл.
Как запустить такую обработку вручную для проверки?
В справочнике дополнительных обработок выделите обработку и выполните её команду. Ошибки, которые в фоне попали бы в журнал, вы увидите сразу.