Регламентные задания, подписки и фоновые процессы: что и где выключать в 1С 8.3
Содержание
Чтобы отключить процедуру в 1С, сначала поймите, что именно работает: регламентное задание, подписка на событие или фоновое задание. Регламентное задание в БП 3.0, ЗУП 3.1 и УТ 11 выключают в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания: откройте задание и снимите флажок «Включено». Подписку на событие отключают только в Конфигураторе или расширением, фоновое задание — отменяют кодом или завершают его сеанс.
Типичная боль: база тормозит каждые 15 минут, в копии для тестов сама уходит выгрузка на сайт или в банк, при записи документа срабатывает лишний обработчик. У каждой из этих ситуаций свой способ отключения и свои последствия — перепутаете, и выключите обмен вместо одного обработчика.
Что именно вы хотите выключить
В 1С 8.3 «процедура, которая запускается сама» бывает трёх видов. Способы отключения у них разные, поэтому сначала определите тип.
| Что работает | Как запускается | Где отключить | Нужен Конфигуратор |
|---|---|---|---|
| Регламентное задание | По расписанию | Форма «Регламентные и фоновые задания», консоль кластера, код | Нет |
| Фоновое задание | Из кода, разово (обмен, отчёт, обновление) | Отмена кодом, завершение сеанса | Нет |
| Подписка на событие | При записи, проведении, удалении объекта | Конфигуратор или расширение | Да |
Как распознать:
- ⏰ действие повторяется по часам, даже если никто ничего не делает — регламентное задание;
- 📄 срабатывает ровно при записи или проведении документа — подписка на событие (или код модуля объекта);
- ⏳ запустилось после нажатия кнопки и висит «Выполняется…» — фоновое задание.
Регламентное задание при каждом запуске само порождает фоновое задание. Поэтому в списке фоновых заданий вы увидите и разовые процессы, и экземпляры регламентных.
Отключаем регламентное задание в режиме 1С:Предприятие
Это самый безопасный способ: он не трогает конфигурацию и обратим одним флажком.
- Войдите в базу пользователем с полными правами.
- Откройте
Администрирование → Обслуживание. - В группе «Регламентные операции» перейдите по ссылке «Регламентные и фоновые задания».
- На вкладке регламентных заданий найдите нужное: список можно отсортировать по наименованию или найти через поиск в форме.
- Откройте задание двойным щелчком и снимите флажок «Включено».
- Нажмите «Записать и закрыть».
В этой же карточке настраивают «Расписание». Иногда задание не нужно выключать совсем — достаточно сдвинуть его на ночь или запускать раз в сутки вместо каждых 5 минут.
Если раздела «Обслуживание» нет
В нетиповой или старой конфигурации формы может не быть. Тогда используйте стандартную обработку платформы:
- Включите меню «Все функции»:
Сервис и настройки → Параметры, флажок «Отображать команду «Все функции»». - Откройте
Все функции → Стандартные → Регламентные и фоновые задания. - В карточке задания снимите флажок «Использование».
Что даёт свойство «Использование» в Конфигураторе
У предопределённого регламентного задания в Конфигураторе тоже есть флажок «Использование». Он задаёт начальное состояние. Если задание уже записано в базе, действует значение из базы, то есть то, что выставлено в режиме Предприятия. Менять конфигурацию ради одного флажка не нужно.
Блокировка всех регламентных заданий базы целиком
Типичный случай — копия рабочей базы для тестов. Если в ней работают задания, копия сама отправит выгрузку на сайт, письма контрагентам или запросы в банк. Здесь удобнее выключить всё сразу.
Клиент-серверная база: консоль кластера
- Откройте «Администрирование серверов 1С Предприятия».
- Раскройте кластер → «Информационные базы» → нужную базу → «Свойства».
- Введите логин и пароль администратора информационной базы.
- Поставьте флажок «Блокировка регламентных заданий включена» и нажмите ОК.
То же самое делают из командной строки утилитой rac (подставьте идентификаторы кластера и базы из rac cluster list и rac infobase summary list):
rac infobase update --cluster=<id кластера> --infobase=<id базы> ^
--infobase-user="Администратор" --infobase-pwd="пароль" ^
--scheduled-jobs-deny=on
Чтобы вернуть задания, выполните ту же команду с --scheduled-jobs-deny=off. Набор параметров вашей версии проверьте командой rac help infobase.
Флажок блокировки действует на всю базу: перестанут работать обмены, загрузка курсов валют, отложенное обновление. Для рабочей базы это крайняя мера.
Файловая база
В файловом варианте регламентные задания выполняются внутри клиентского сеанса, пока база открыта у кого-то из пользователей. Отдельного флажка блокировки в консоли нет — управляйте ключом запуска (см. раздел ниже) или выключайте задания по одному.
Защита копии в типовых конфигурациях
Типовые конфигурации на БСП сами замечают, что база перемещена или восстановлена из копии. При первом входе они спрашивают, это копия или рабочая база. Ответ «копия» блокирует работу с внешними ресурсами: обмены, почту, синхронизацию. Не отвечайте «рабочая» в тестовой копии — иначе она начнёт обмениваться данными наравне с оригиналом.
Подписки на события: правка в Конфигураторе и через расширение
Подписка на событие — объект конфигурации. Флажка «выключить» у неё нет. Отключают её одним из трёх способов.
Способ 1. Убрать источник из подписки
- Откройте Конфигуратор:
Общие → Подписки на события. - Найдите подписку. Если не знаете имени, откройте нужный документ и используйте контекстную команду поиска ссылок на объект.
- В свойстве «Источник» снимите флажок с нужного типа (например, только с одного документа).
- Обновите конфигурацию базы данных (F7).
Минус: в типовой конфигурации придётся снимать объект с поддержки или включать возможность изменения. Это усложнит каждое следующее обновление.
Способ 2. Расширение конфигурации (рекомендуемый)
Этот приём знают практики: типовая конфигурация остаётся на полной поддержке, а лишний обработчик гасится в расширении. Расширения доступны с платформы 8.3.6.
- В Конфигураторе:
Конфигурация → Расширения конфигурации → Добавить. - В подписке посмотрите свойство «Обработчик» — там имя общего модуля и процедуры.
- Заимствуйте этот общий модуль в расширение.
- В модуле расширения добавьте процедуру с аннотацией
&Вместо:
&Вместо("ОбработчикПередЗаписью")
Процедура Расш_ОбработчикПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)
// Типовой обработчик не вызываем — подписка фактически отключена.
// Чтобы отключить только для одного типа:
// Если ТипЗнч(Источник) <> Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
// ПродолжитьВызов(Источник, Отказ, РежимЗаписи, РежимПроведения);
// КонецЕсли;
КонецПроцедуры
Имя процедуры и список параметров должны совпадать с типовым обработчиком. Скопируйте их из заимствованного модуля, а не из примера.
- Сохраните расширение и проверьте запись документа.
Способ 3. Условие в самом обработчике
Если конфигурация ваша, без поддержки, допишите в начало обработчика выход по условию: по константе, функциональной опции или типу источника. Так подписку можно будет включать обратно без Конфигуратора.
Подписки часто ведут регистрацию изменений для обмена, контроль дат запрета и версионирование. Отключите такую — и обмен перестанет видеть изменённые документы, а это не всплывёт сразу.
Как остановить фоновое задание и его сеанс
Фоновое задание — уже запущенный процесс. «Выключить» его можно только отменой или завершением сеанса.
Через форму заданий
В форме Регламентные и фоновые задания есть вкладка с фоновыми заданиями. Там видно состояние, время начала и сообщения. Активное задание можно отменить командой из этой формы. В минимальной версии формы может не быть кнопки — тогда помогут код или консоль.
Через консоль кластера
- В консоли откройте базу → «Сеансы».
- Найдите сеанс с приложением «Фоновое задание».
- Удалите сеанс из контекстного меню.
Прерванный обмен или групповое перепроведение могут оставить данные в промежуточном состоянии. Завершайте сеанс в нерабочее время или когда точно знаете, какую операцию он выполнял.
Кодом
Отмена всех активных фоновых заданий с определённым ключом, например в обработке администратора:
&НаСервере
Процедура ОтменитьФоновыеЗаданияНаСервере(КлючЗадания)
Отбор = Новый Структура;
Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
Отбор.Вставить("Ключ", КлючЗадания);
Задания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Для Каждого Задание Из Задания Цикл
Задание.Отменить();
КонецЦикла;
КонецПроцедуры
Метод Отменить() выставляет признак отмены. Задание завершится, когда платформа сможет прервать выполнение кода.
Ключи запуска: тест и отладка без регламентных заданий
При отладке задания мешают: прерывают пошаговое выполнение и пишут лишнее в журнал. Отключите их в конкретном сеансе параметром командной строки.
| Ключ | Что делает |
|---|---|
/AllowExecuteScheduledJobs -Off | Регламентные задания в этом сеансе не выполняются |
/AllowExecuteScheduledJobs -Force | Выполнять задания в этом сеансе принудительно |
/C ОтключитьЛогикуНачалаРаботыСистемы | В конфигурациях на БСП пропускает стартовые проверки и обработчики при входе |
/DisableStartupMessages | Не показывать стартовые предупреждения платформы |
Пример ярлыка для файловой базы:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Test" /N"Администратор" /AllowExecuteScheduledJobs -Off
Тот же ключ можно прописать в свойствах базы в окне запуска: Изменить → … → Дополнительные параметры запуска.
В файловой базе -Off у одного пользователя не мешает заданиям выполниться в сеансе другого. Чтобы в тестовой файловой копии заданий не было совсем, ключ должен стоять у всех, кто её открывает.
Программное отключение регламентного задания
Пригодится в обработке для администратора или при подготовке тестовой копии — выключить десяток заданий одной кнопкой.
Чистая платформа:
&НаСервере
Процедура ВыключитьЗаданиеНаСервере()
Задание = РегламентныеЗадания.НайтиПредопределенное(
Метаданные.РегламентныеЗадания.ЗагрузкаКурсовВалют);
Если Задание <> Неопределено Тогда
Задание.Использование = Ложь;
Задание.Записать();
КонецЕсли;
КонецПроцедуры
Имя ЗагрузкаКурсовВалют здесь пример: подставьте имя задания из ветки «Регламентные задания» вашей конфигурации.
Выключить все задания базы:
&НаСервере
Процедура ВыключитьВсеЗаданияНаСервере()
Для Каждого Задание Из РегламентныеЗадания.ПолучитьРегламентныеЗадания() Цикл
Если Задание.Использование Тогда
Задание.Использование = Ложь;
Задание.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Код требует административных прав. В конфигурациях на БСП для этого есть программный интерфейс модуля РегламентныеЗаданияСервер (например, УстановитьИспользованиеРегламентногоЗадания). Он корректно работает и в модели сервиса, поэтому в типовых решениях лучше вызывать его, а не платформенный метод напрямую.
Перед массовым отключением сохраните список включённых заданий в текстовый файл или табличный документ. Иначе вспоминать, что было включено, придётся вручную.
Проверка результата и последствия отключения
После отключения убедитесь, что процедура действительно не запускается, и прикиньте, что перестанет работать.
Как проверить
- Откройте
Администрирование → Обслуживание → Журнал регистрации. - Установите отбор по событиям группы «Фоновое задание» и по нужному периоду.
- Подождите один-два интервала расписания. Новых запусков быть не должно.
- В форме регламентных заданий у выключенного задания не меняется дата последнего запуска.
Если задание продолжает стартовать — его включает обратно код конфигурации (например, при изменении настройки обмена или функциональной опции) или его экземпляр не предопределённый, а созданный программно. Ищите второе задание с тем же методом в списке.
Что ломается при отключении
| Тип задания | Последствие отключения |
|---|---|
| Обмен данными, синхронизация | Изменения перестают уходить в другие базы и на сайт |
| Загрузка курсов валют | Пересчёт в валюте по старому курсу |
| Отложенное обновление | После обновления релиза часть данных не перенесётся, некоторые отчёты будут неполными |
| Обновление полнотекстового индекса | Поиск по базе перестаёт находить новые документы |
| Обмен с банком, ЭДО, почта | Выписки, входящие документы и письма не приходят |
| Резервное копирование средствами БСП | Копии не создаются |
Отложенное обновление после смены релиза не выключайте без крайней нужды: пока оно не завершится, база работает с ограничениями.
Частые вопросы
Можно ли отключить задание обычному пользователю?
Записать() требуют административных прав. Пользователь увидит ошибку недостаточности прав.