IT-КУБиК-Сервис • Форум 1С
Абстрактный тёмно-синий фон с мягкими геометрическими линиями и оранжевыми акцентами, создающий технологичную атмосферу

Агрегатор публикаций с Инфостарта по 1С:Предприятие — обработки, расширения, конфигурации, интеграции и администрирование. Сообщество специалистов 1С.

Многопоточная обработка данных в 1С через фоновые задания

Массовая обработка документов, справочников и расчётов способна занять минуты или десятки минут. Если выполнять её в основном сеансе, интерфейс становится недоступным, пользователи ждут завершения операции, а клиент может потерять соединение с сервером.

Фоновые задания позволяют перенести вычислительную работу в отдельный серверный сеанс. Несколько независимых заданий обрабатывают разные порции данных параллельно, а пользователь контролирует их состояние без постоянного ожидания. Реализация требует продуманного разбиения данных, контроля ошибок и защиты от конфликтующих записей.

Подготовка данных и границы параллелизма

Сначала измерьте последовательную обработку на реальном объёме: зафиксируйте время, количество прочитанных и изменённых объектов, наиболее медленные операции. Этот базовый замер понадобится для оценки эффекта параллельной схемы и определения узкого места.

Затем разделите набор данных на порции. Для документов удобно использовать диапазон дат или устойчивый идентификатор, для элементов справочника — код или ключ группировки. Каждая порция должна быть независимой, не пересекаться с другими и содержать понятный признак готовности. Количество заданий регулируйте по фактической нагрузке, доступным серверным сеансам и лицензиям.

Механизм фоновых заданий

Фоновое задание создаётся через ФоновыеЗадания.Добавить, после чего платформа запускает указанную процедуру в отдельном сеансе. В параметры передают только сериализуемые значения: идентификаторы, даты, строки и простые структуры. Временные объекты и ссылки на элементы текущего сеанса передавать нельзя.

Для запуска большого набора данных удобно создать несколько заданий с разными границами обработки. Каждое из них читает собственную порцию и записывает результат в заранее подготовленные таблицы или файлы. Метод ОжидатьЗавершения подходит для небольших операций или автоматических проверок; в пользовательском интерфейсе лучше показывать состояние и обновлять его по таймеру.

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

Построение конвейера обработки

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

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

Отдельно продумайте транзакции и блокировки. Параллельные задания не должны одновременно изменять один документ или общий регистр без явного порядка. Для независимых записей используйте отдельные объекты, а объединение результатов выполняйте после завершения всех порций.

Сравнение способов запуска

Выбор способа запуска зависит от срочности, наблюдаемости и допустимой нагрузки на инфраструктуру.

Критерий Фоновое задание Регламентное задание Внешний обработчик
Запуск По действию пользователя или событию По расписанию Через очередь или программный интерфейс
Среда выполнения Серверный сеанс 1С Серверный сеанс 1С Внешний сервис
Масштабирование Несколько порций в пределах кластера Ограничено расписанием Собственная горизонтальная масштабируемость
Контроль результата Состояние задания и журнал Журнал выполнения Собственные журналы и метрики
Повторные попытки Реализуются приложением Происходят по следующему запуску Управляются внешней системой

Фоновые задания лучше подходят для интерактивных массовых операций. Регламентные удобны для регулярной загрузки, а внешний обработчик оправдан при необходимости длительных расчётов, независимого масштабирования или special‑нагрузки.

Рекомендации для устойчивого фонового конвейера

Перед промышленным запуском закрепите следующие правила:

Запустите пилот на ограниченном диапазоне документов, измерьте фактическое ускорение и проверьте отсутствие дублей. Зафиксируйте безопасный лимит параллелизма, журнал состояний и порядок перезапуска unfinished-заданий. Затем перенесите проверенную схему на рабочий контур и подключите пользователей к наблюдению за фоновой обработкой через KUBiK.