При администрировании крупных информационных систем на базе 1С:Предприятие 8.3 специалисты часто сталкиваются с тем, что в Журнале регистрации (ЖР) начинают лавинообразно появляться записи с событием «Фоновое задание. Отмена». Это явление может быть как кратковременным, так и носить затяжной характер, вызывая рост нагрузки на сервер и увеличивая объем самого файла ЖР. Разберем детально, чем обусловлено такое поведение системы и является ли оно признаком ошибки или штатной работой платформы.
Одной из самых частых причин массовой генерации событий отмены является работа пользователей с динамическими списками в управляемых формах. Начиная с версии платформы 8.3.15, механизмы получения данных были существенно оптимизированы за счет фонового обновления.
Рассмотрим стандартную ситуацию: пользователь открывает список справочника «Номенклатура» и начинает вводить текст в строке поиска. Проанализируем, что происходит на уровне системы:
Отменить() для первого задания и тут же запускает новое.Когда в системе работают десятки и сотни пользователей, активно использующих фильтры и полнотекстовый поиск, количество таких записей в ЖР может исчисляться тысячами за короткий промежуток времени. Это нормальное поведение платформы, направленное на экономию ресурсов сервера, чтобы rphost не тратил время на формирование данных, которые пользователь уже не ждет.
Выясним, как настройки самого сервера 1С могут провоцировать массовую отмену заданий. В консоли администрирования кластера существуют параметры, ограничивающие потребление памяти рабочими процессами. Посмотрим на наиболее важные из них:
Если вы наблюдаете массовую отмену заданий в определенные часы (например, во время формирования регламентированной отчетности), следует проверить показатели счетчиков памяти на сервере приложений.
Проанализируем влияние сетевой инфраструктуры. Фоновые задания всегда связаны с родительским сеансом пользователя. Если у пользователя происходит кратковременный разрыв связи (проблемы с Wi-Fi, нестабильный VPN или переключение между базовыми станциями на мобильном устройстве), платформа может перевести сеанс в состояние «спящий».
При срабатывании тайм-аута IdleTimeout (время засыпания сеанса) или при окончательном разрыве соединения, система инициирует очистку всех связанных процессов. В этот момент все запущенные от имени этого пользователя фоновые задания (например, ДлительныеОперации) получают команду на отмену. Если в компании наблюдаются проблемы с сетевым оборудованием, это неизбежно приведет к «всплескам» событий отмены в журнале.
Часто разработчики сами закладывают механизмы отмены заданий в код конфигурации. Это особенно характерно для типовых решений (ERP, УТ 11, БП 3.0), использующих библиотеку стандартных подсистем (БСП). Рассмотрим пример логики, которая может приводить к массовым событиям в ЖР:
// Пример логики перезапуска фонового задания
Задания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Новый Структура("Ключ", "РасчетСебестоимости"));
Для Каждого ТекущееЗадание Из Задания Цикл
Если ТекущееЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
ТекущееЗадание.Отменить(); // В ЖР запишется "Фоновое задание. Отмена"
КонецЕсли;
КонецЦикла;
ФоновыеЗадания.Выполнить("МойМодуль.ВыполнитьРасчет", , "РасчетСебестоимости");
Такой подход часто применяется в обработчиках ожидания или при подписках на события, чтобы гарантировать, что в один момент времени работает только один экземпляр конкретного расчета. Если регламентное задание или действие пользователя запускается слишком часто, старые процессы будут постоянно отменяться системой.
При работе через браузер специфика протокола HTTP накладывает свои ограничения. Если пользователь переключает вкладку браузера или сворачивает мобильное приложение 1С, веб-клиент может приостановить выполнение активных запросов. Платформа 1С в целях оптимизации трафика и нагрузки на IIS или Apache может прерывать текущие фоновые потоки данных. Как только фокус возвращается к приложению, задания могут инициироваться заново, создавая записи об отмене предыдущих итераций.
Разберем по шагам, на что стоит обратить внимание при анализе журнала регистрации:
РаботаСНоменклатурой.ПолучитьДанныеДляСписка). Если это методы получения данных для форм — скорее всего, это штатная работа динамических списков.EXCP и ATTN в ТЖ, чтобы увидеть, не предшествуют ли отмене ошибки СУБД или блокировки.Таким образом, само по себе событие «Фоновое задание. Отмена» не является критической ошибкой. В большинстве случаев это следствие работы механизмов оптимизации платформы 1С, направленных на высвобождение ресурсов сервера от задач, результаты которых перестали быть актуальными для пользователя или системы.