Решил поделиться своим опытом в борьбе с зависшими фоновыми заданиями. В конфигурациях с большими объемами данных рациональнее использовать некоторые алгоритмы-асинхронно, в 1С эту задачу берут на себя фоновые задания. Но иногда случается так, что фоновые задания подвисают, хотя на них возложена важная работа. Для себя перепробовал много способов борьбы с зависанием: выносил работу заданий на отдельный сервер 1С, обновление платформы, общение с ТП 1С и т.д. Но самым действенным способом оказалась проверка сеансов БД через COM соединение и если дата последней активности сеанса меньше на 30 мин текущей даты, такое соединение можно завершить, проверка выполняется через планировщик заданий Windows Server.
Фикс состоит из процедуры, которая располагается в модуле внешнего соединения конфигурации 1С и vbs скрипта.
Копируем процедуру CheckScheduledTasks в модуль внешнего соединения, предварительно в коде процедуры редактируем логин и пароль администратора кластера, логин и пароль администратора БД, имя БД и IP адрес сервера 1С.
Создаем vbs скрипт следующего содержания, так же в коде редактируем IP адрес сервера 1С, логин и пароль администратора БД
После обновления модуля внешнего соединения конфигурации и создания скрипта, через планировщик заданий, задаем интервал запуска, для себя установил запуск с периодичностью в 20 минут. Принцип следующий, каждые 20 минут система запускает VBS скрипт, он выполняет процедуру из 1С, которая мониторит сеансы БД (вид приложения "фоновое задание") и если задание выполняется больше 30 минут, система закрывает соединение.
В конце статьи прикреплен архив с 1С процедурой и vbs скриптом. Желаю удачи в реализации и пусть фоновые задания никогда не зависают в ваших конфигурациях.
Наименование | Размер | Скачив. | ||
---|---|---|---|---|
ЗакрытиеЗависшихфоновыхЗаданий | 1 KiB | 324 | Скачать |