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