Регламентные задания, подписки и фоновые процессы: что и где выключать в 1С 8.3

· 9 мин

Содержание

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

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

Что именно вы хотите выключить

В 1С 8.3 «процедура, которая запускается сама» бывает трёх видов. Способы отключения у них разные, поэтому сначала определите тип.

Что работаетКак запускаетсяГде отключитьНужен Конфигуратор
Регламентное заданиеПо расписаниюФорма «Регламентные и фоновые задания», консоль кластера, кодНет
Фоновое заданиеИз кода, разово (обмен, отчёт, обновление)Отмена кодом, завершение сеансаНет
Подписка на событиеПри записи, проведении, удалении объектаКонфигуратор или расширениеДа

Как распознать:

  • ⏰ действие повторяется по часам, даже если никто ничего не делает — регламентное задание;
  • 📄 срабатывает ровно при записи или проведении документа — подписка на событие (или код модуля объекта);
  • ⏳ запустилось после нажатия кнопки и висит «Выполняется…» — фоновое задание.

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

Отключаем регламентное задание в режиме 1С:Предприятие

Это самый безопасный способ: он не трогает конфигурацию и обратим одним флажком.

  1. Войдите в базу пользователем с полными правами.
  2. Откройте Администрирование → Обслуживание.
  3. В группе «Регламентные операции» перейдите по ссылке «Регламентные и фоновые задания».
  4. На вкладке регламентных заданий найдите нужное: список можно отсортировать по наименованию или найти через поиск в форме.
  5. Откройте задание двойным щелчком и снимите флажок «Включено».
  6. Нажмите «Записать и закрыть».

В этой же карточке настраивают «Расписание». Иногда задание не нужно выключать совсем — достаточно сдвинуть его на ночь или запускать раз в сутки вместо каждых 5 минут.

Если раздела «Обслуживание» нет

В нетиповой или старой конфигурации формы может не быть. Тогда используйте стандартную обработку платформы:

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

Что даёт свойство «Использование» в Конфигураторе

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

Блокировка всех регламентных заданий базы целиком

Типичный случай — копия рабочей базы для тестов. Если в ней работают задания, копия сама отправит выгрузку на сайт, письма контрагентам или запросы в банк. Здесь удобнее выключить всё сразу.

Клиент-серверная база: консоль кластера

  1. Откройте «Администрирование серверов 1С Предприятия».
  2. Раскройте кластер → «Информационные базы» → нужную базу → «Свойства».
  3. Введите логин и пароль администратора информационной базы.
  4. Поставьте флажок «Блокировка регламентных заданий включена» и нажмите ОК.

То же самое делают из командной строки утилитой 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. Убрать источник из подписки

  1. Откройте Конфигуратор: Общие → Подписки на события.
  2. Найдите подписку. Если не знаете имени, откройте нужный документ и используйте контекстную команду поиска ссылок на объект.
  3. В свойстве «Источник» снимите флажок с нужного типа (например, только с одного документа).
  4. Обновите конфигурацию базы данных (F7).

Минус: в типовой конфигурации придётся снимать объект с поддержки или включать возможность изменения. Это усложнит каждое следующее обновление.

Способ 2. Расширение конфигурации (рекомендуемый)

Этот приём знают практики: типовая конфигурация остаётся на полной поддержке, а лишний обработчик гасится в расширении. Расширения доступны с платформы 8.3.6.

  1. В Конфигураторе: Конфигурация → Расширения конфигурации → Добавить.
  2. В подписке посмотрите свойство «Обработчик» — там имя общего модуля и процедуры.
  3. Заимствуйте этот общий модуль в расширение.
  4. В модуле расширения добавьте процедуру с аннотацией &Вместо:
&Вместо("ОбработчикПередЗаписью")
Процедура Расш_ОбработчикПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения)
	// Типовой обработчик не вызываем — подписка фактически отключена.
	// Чтобы отключить только для одного типа:
	// Если ТипЗнч(Источник) <> Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
	//     ПродолжитьВызов(Источник, Отказ, РежимЗаписи, РежимПроведения);
	// КонецЕсли;
КонецПроцедуры

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

  1. Сохраните расширение и проверьте запись документа.

Способ 3. Условие в самом обработчике

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

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

Как остановить фоновое задание и его сеанс

Фоновое задание — уже запущенный процесс. «Выключить» его можно только отменой или завершением сеанса.

Через форму заданий

В форме Регламентные и фоновые задания есть вкладка с фоновыми заданиями. Там видно состояние, время начала и сообщения. Активное задание можно отменить командой из этой формы. В минимальной версии формы может не быть кнопки — тогда помогут код или консоль.

Через консоль кластера

  1. В консоли откройте базу → «Сеансы».
  2. Найдите сеанс с приложением «Фоновое задание».
  3. Удалите сеанс из контекстного меню.

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

Кодом

Отмена всех активных фоновых заданий с определённым ключом, например в обработке администратора:

&НаСервере
Процедура ОтменитьФоновыеЗаданияНаСервере(КлючЗадания)
	Отбор = Новый Структура;
	Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
	Отбор.Вставить("Ключ", КлючЗадания);
	Задания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
	Для Каждого Задание Из Задания Цикл
		Задание.Отменить();
	КонецЦикла;
КонецПроцедуры

Метод Отменить() выставляет признак отмены. Задание завершится, когда платформа сможет прервать выполнение кода.

Ключи запуска: тест и отладка без регламентных заданий

При отладке задания мешают: прерывают пошаговое выполнение и пишут лишнее в журнал. Отключите их в конкретном сеансе параметром командной строки.

КлючЧто делает
/AllowExecuteScheduledJobs -OffРегламентные задания в этом сеансе не выполняются
/AllowExecuteScheduledJobs -ForceВыполнять задания в этом сеансе принудительно
/C ОтключитьЛогикуНачалаРаботыСистемыВ конфигурациях на БСП пропускает стартовые проверки и обработчики при входе
/DisableStartupMessagesНе показывать стартовые предупреждения платформы

Пример ярлыка для файловой базы:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Test" /N"Администратор" /AllowExecuteScheduledJobs -Off

Тот же ключ можно прописать в свойствах базы в окне запуска: Изменить → … → Дополнительные параметры запуска.

В файловой базе -Off у одного пользователя не мешает заданиям выполниться в сеансе другого. Чтобы в тестовой файловой копии заданий не было совсем, ключ должен стоять у всех, кто её открывает.

Программное отключение регламентного задания

Пригодится в обработке для администратора или при подготовке тестовой копии — выключить десяток заданий одной кнопкой.

Чистая платформа:

&НаСервере
Процедура ВыключитьЗаданиеНаСервере()
	Задание = РегламентныеЗадания.НайтиПредопределенное(
		Метаданные.РегламентныеЗадания.ЗагрузкаКурсовВалют);
	Если Задание <> Неопределено Тогда
		Задание.Использование = Ложь;
		Задание.Записать();
	КонецЕсли;
КонецПроцедуры

Имя ЗагрузкаКурсовВалют здесь пример: подставьте имя задания из ветки «Регламентные задания» вашей конфигурации.

Выключить все задания базы:

&НаСервере
Процедура ВыключитьВсеЗаданияНаСервере()
	Для Каждого Задание Из РегламентныеЗадания.ПолучитьРегламентныеЗадания() Цикл
		Если Задание.Использование Тогда
			Задание.Использование = Ложь;
			Задание.Записать();
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

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

Перед массовым отключением сохраните список включённых заданий в текстовый файл или табличный документ. Иначе вспоминать, что было включено, придётся вручную.

Проверка результата и последствия отключения

После отключения убедитесь, что процедура действительно не запускается, и прикиньте, что перестанет работать.

Как проверить

  1. Откройте Администрирование → Обслуживание → Журнал регистрации.
  2. Установите отбор по событиям группы «Фоновое задание» и по нужному периоду.
  3. Подождите один-два интервала расписания. Новых запусков быть не должно.
  4. В форме регламентных заданий у выключенного задания не меняется дата последнего запуска.

Если задание продолжает стартовать — его включает обратно код конфигурации (например, при изменении настройки обмена или функциональной опции) или его экземпляр не предопределённый, а созданный программно. Ищите второе задание с тем же методом в списке.

Что ломается при отключении

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

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

Перед тем как выключить процедуру
Выполнено: 0 / 5

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

Можно ли отключить задание обычному пользователю?
Нет. Форма регламентных заданий и метод Записать() требуют административных прав. Пользователь увидит ошибку недостаточности прав.
Задание выключено, а в журнале всё равно идут запуски. Почему?
Чаще всего это второй экземпляр задания с тем же методом или фоновое задание, которое запускают из кода. Отсортируйте список по методу и проверьте разовые фоновые задания.
Сохранится ли отключение после обновления конфигурации?
Да, состояние хранится в базе. Но некоторые обработчики обновления и настройки подсистем могут включить задание обратно, поэтому после обновления проверьте ключевые задания.
Подписку отключили через расширение. Что будет при обновлении типовой?
Если обработчик переименуют или изменят его параметры, расширение при подключении сообщит об ошибке. Проверяйте расширение после каждого обновления.
Можно ли выключить задание только на время?
Платформенного таймера на «выключить до» нет. Поменяйте расписание на нужный период или включите задание обратно вручную. Для повторяющихся случаев напишите обработку со списком заданий.