Администрирование · 10 мин
Как найти фоновое задание в 1С
Где искать фоновые задания в 1С: консоль заданий в пользовательском режиме, поиск через консоль кода, журнал регистрации и типовые ошибки при диагностике.
Фоновые задания в 1С выполняют обмены данными, расчёт итогов, отправку отчётов, загрузку курсов валют и десятки других операций. Когда что-то «зависло», не обновляются данные или база тормозит, первый шаг диагностики — найти конкретное фоновое задание и посмотреть его состояние. Проблема в том, что задание не всегда видно в стандартном списке: часть заданий запускается программно и исчезает сразу после завершения.
Существует три основных способа поиска: через штатную консоль заданий в режиме «1С:Предприятие», программно через методы объекта ФоновыеЗадания и через журнал регистрации, где фиксируются старты, ошибки и аварийные завершения. Выбор способа зависит от того, что известно о задании: его имя, время запуска, пользователь-инициатор или только симптом сбоя.
Ниже разобраны все три подхода с точными действиями, типичными сценариями и ограничениями, а также способы отличить нормально работающее задание от зависшего.
Что такое фоновое задание и чем оно отличается от регламентного
Фоновое задание — это процедура или функция общего модуля, выполняемая асинхронно, без блокировки интерфейса пользователя. Оно запускается либо вручную кодом через ФоновыеЗадания.Выполнить(), либо автоматически по расписанию — в этом случае оно порождается регламентным заданием.
Регламентное задание — это объект метаданных конфигурации с настроенным расписанием, именем метода и ключом. Оно постоянно присутствует в списке заданий, а каждый его запуск создаёт отдельный экземпляр фонового задания. Поэтому в консоли вы видите два уровня: само регламентное задание и историю его фоновых запусков.
Практический вывод из этого различия: если задание запускается по расписанию, ищите его среди регламентных. Если оно запускается по кнопке в интерфейсе, из обработки или из другого кода — оно будет видно только в списке фоновых и только пока выполняется либо недавно завершилось.
Поиск через консоль заданий в режиме «1С:Предприятие»
В типовых конфигурациях на Библиотеке стандартных подсистем (УТ, ERP, Бухгалтерия, ЗУП) консоль заданий находится по пути: «Администрирование → Поддержка и обслуживание → Регламентные операции → Регламентные и фоновые задания». В некоторых конфигурациях путь сокращён до «Администрирование → Обслуживание → Регламентные и фоновые задания».
Открывшаяся форма содержит две вкладки. На вкладке «Регламентные задания» перечислены все задания метаданных с их расписанием, состоянием последнего выполнения и датой последнего запуска. На вкладке «Фоновые задания» — список экземпляров с колонками: описание, начало, конец, состояние и имя метода.
- 1Откройте «Администрирование → Регламентные и фоновые задания»
- 2Перейдите на вкладку «Фоновые задания» и установите отбор по периоду, если список большой
- 3Отсортируйте по колонке «Начало» — свежие запуски окажутся сверху
- 4Найдите строку по имени метода или описанию и проверьте колонку «Состояние»
- 5Двойным щелчком откройте задание и посмотрите сообщения об ошибках
Если консоли нет в интерфейсе — например, в самописной конфигурации без БСП — используйте внешнюю обработку «Консоль заданий» с диска ИТС или любую аналогичную из открытых репозиториев. Либо переходите к программному поиску, описанному ниже.
Программный поиск через консоль кода
Когда задание запущено кодом и уже завершилось, консоль может его не показать, а точный поиск нужен по ключу или состоянию. В этом случае используется метод ФоновыеЗадания.ПолучитьФоновыеЗадания() со структурой отбора. Выполнить такой код можно в консоли кода (встроенной в БСП или внешней) под полными правами.
Отбор = Новый Структура;
Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
Найденные = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Для Каждого Задание Из Найденные Цикл
Сообщить(Задание.Ключ + " | " + Задание.ИмяМетода + " | " + Задание.Начало);
КонецЦикла;В отбор можно передавать поля: УникальныйИдентификатор, Ключ, ИмяМетода, Состояние, Наименование, РегламентноеЗадание, а также Начало и Конец для ограничения по времени. Комбинация ключа и имени метода даёт точный результат без перебора всего списка.
Обратите внимание: вызов без отбора возвращает все задания, о которых помнит менеджер, и на загруженной базе это может занять заметное время. Всегда сужайте выборку хотя бы по состоянию или периоду.
Поиск через журнал регистрации
Если задание завершилось с ошибкой и пропало из всех списков, след остаётся в журнале регистрации. Откройте «Администрирование → Поддержка и обслуживание → Журнал регистрации» (или «Сервис → Журнал регистрации» в конфигураторе) и установите отбор.
Фильтруйте по событию «Фоновое задание» с уточнениями: «Запуск», «Ошибка выполнения», «Аварийное завершение», «Отмена». Дополнительно ограничьте период и, если известно, пользователя, от имени которого стартовал запуск. В тексте события будет имя метода, ключ задания и полное описание ошибки, включая стек вызовов.
Если ошибка в журнале звучит как «Конфликт блокировок» или «Превышено время ожидания», задание, скорее всего, исправно, но упёрлось в параллельную работу других процессов. Ищите в том же журнале, что ещё выполнялось в этот момент, а не переписывайте само задание.
Журнал регистрации — единственный надёжный источник для заданий, которые упали до того, как администратор успел открыть консоль. Минус способа — журнал не показывает задания, которые сейчас выполняются: для живого наблюдения нужна консоль заданий или программный отбор по состоянию «Активно».
Поиск задания в кластере серверов 1С
В клиент-серверном варианте работы фоновые задания выполняются на рабочих процессах сервера 1С. Через консоль кластера (оснастка администрирования сервера) можно увидеть, какой рабочий процесс сейчас занят заданием: откройте ветку сервера, затем «Сеансы» — у фоновых заданий в колонке типа клиента будет указано «Фоновое задание», а в поле приложения — имя метода.
Этот способ незаменим, когда задание «висит» и грузит процессор сервера: по нагрузке на rphost вы находите сеанс, а по сеансу — задание и пользователя-инициатора. Дальше задание можно либо дождаться, либо принудительно завершить.
Как отличить зависшее задание от долго работающего
Состояние «Активно» само по себе не означает проблему: загрузка данных или групповое перепроведение могут легально идти часами. Признаки реального зависания: задание активно значительно дольше обычного для него времени, сеанс на сервере не потребляет процессор и память (процесс «спит»), а в журнале регистрации нет новых записей от этого задания.
Как проверить состояние задания
Сопоставима с типичным временем этого задания
В разы превышает обычную длительность
rphost потребляет CPU или идут обращения к СУБД
Процесс простаивает при активном состоянии задания
Появляются промежуточные сообщения от задания
Полная тишина после записи «Запуск»
Новых экземпляров с тем же ключом нет
Копятся задания с одинаковым ключом в состоянии ошибки
Если задание завершилось аварийно, платформа в файловой базе может продолжать считать его активным до перезапуска сеанса — это известная особенность. Признак такой ситуации: задание «активно», но соответствующего сеанса в базе нет. Лечится перезапуском сеанса или всего приложения, а не изменением кода.
Частые ошибки и ограничения при поиске
Ещё одно ограничение: право «Администрирование» требуется для просмотра чужих заданий и их отмены. Под обычным пользователем вы увидите только собственные фоновые задания, и картина загруженности базы будет неполной. Для диагностики работайте под учётной записью администратора.
В файловых базах есть дополнительная особенность: регламентные задания выполняются только если запущен отдельный сеанс с выполнением заданий или включён соответствующий параметр запуска. Если задания «не находятся» потому, что вообще не стартуют, проверьте именно этот момент, а не только список заданий.
Что важно запомнить
Регламентные задания ищите в консоли «Регламентные и фоновые задания», программные — методом ФоновыеЗадания.ПолучитьФоновыеЗадания() с отбором по ключу, состоянию или имени метода. Упавшие задания восстанавливаются по журналу регистрации, зависшие диагностируются через сеансы на сервере. Принудительная отмена — последняя мера после проверки, что задание не пишет данные.
Частые вопросы
Почему фоновое задание не отображается в списке?
Чаще всего задание уже завершилось и вытеснено из списка новыми запусками, либо вы смотрите под пользователем без прав администратора — тогда видны только собственные задания. Установите отбор по периоду и проверьте журнал регистрации: там фиксируются все запуски независимо от прав текущего просмотра.
Как узнать, кто запустил фоновое задание?
У объекта фонового задания нет прямого свойства «пользователь», но в журнале регистрации событие запуска привязано к сеансу и пользователю. Отфильтруйте журнал по событию «Фоновое задание. Запуск» и времени старта — в записи будет указан инициатор.
Можно ли найти задание, зная только текст ошибки?
Да. Откройте журнал регистрации и в отборе по данным или комментарию укажите фрагмент текста ошибки. Из найденной записи вы получите имя метода, ключ задания и время, после чего сможете найти само задание программным отбором или в консоли.
Чем отличается отмена задания от его завершения?
Метод Отменить() посылает заданию штатный сигнал остановки — код может корректно завершить транзакцию. Принудительное завершение сеанса на сервере обрывает процесс грубо, что рискованно для заданий, изменяющих данные. Всегда сначала пробуйте штатную отмену.
Почему регламентное задание есть в списке, но не выполняется?
Проверьте три вещи: включено ли задание (флаг «Использование»), корректно ли расписание и не заблокированы ли регламентные задания на уровне информационной базы (параметр блокировки в консоли кластера или настройка в разделе администрирования). В файловой базе дополнительно проверьте, запущен ли сеанс, выполняющий задания.
Как найти задание обмена данными, которое запускается по расписанию?
Такие задания почти всегда являются регламентными: откройте вкладку «Регламентные задания» и найдите строку по имени, связанному с обменом или синхронизацией. Двойной щелчок покажет историю фоновых запусков с состояниями и ошибками по каждому выполнению.