Многопоточный конвейер (MTP / Multi-threaded pipeline)

25.09.26

Разработка - Инструментарий разработчика

Решение, которое позволяет быстро организовать многопоточную обработку данных. Легко встраивается в любую конфигурацию 1С без доработок. Проверено на крупнейших HighLoad проектах федерального масштаба. Открытый код, Open Source проект на GitHub.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Многопоточный конвейер (MTP / Multi-threaded pipeline)
.cf 471,63Kb
12 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Содержание:

  • Многопоточный конвейер
  • Назначение
    • Распараллеливание вычислений
    • Асинхронная обработка данных
    • Внутренние очереди в 1С
  • Почему МТР
  • Проверенное решение
  • Как начать

 

Многопоточный конвейер (MTP / Multi-threaded pipeline)

За годы работы в 1С мне посчастливилось принять участие в проектировании и запуске в эксплуатацию нескольких высоконагруженных систем. На каждом из проектов внедрения приходилось решать схожие задачи по разработке удобных инструментов для упрощения процесса разработки и повышения производительности 1С.

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

Для решения этих задач был разработан Многопоточный конвейер (MTP / Multi-threaded pipeline) - встраиваемый фреймворк, который берет на себя всю работу по управлению многопоточной и асинхронной обработкой внутри 1С.

 

Назначение

Многопоточный конвейер предназначен для решения трех фундаментальных задач:

  1. Параллельные вычисления.
    Увеличение производительности высоконагруженных систем за счет отказоустойчивой многопоточной обработки данных.
  2. Асинхронная обработка.
    Механика отложенного фонового исполнения заданий, повышение скорости работы интерфейса пользователя.
  3. Внутренние очереди в 1С.
    Реализация в 1С классической концепции Internal Message Queue. Стабилизация нагрузки на систему.

 

Распараллеливание вычислений

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

📌 Кейс
Выполнить ресурсоемкую операцию над тысячами объектов.

🛠 Стандартный подход
Обработать объекты в цикле. Решение задачи в один поток занимает часы. При возникновении ошибки на середине процесса приходится начинать всё сначала или писать сложную логику продолжения.

🔥 Решение c MTP
Создание в цикле задания на многопоточную обработку. Каждое такое задание - это Пакет данных. Многопоточный конвейер обработает созданные Пакеты данных множеством параллельных фоновых заданий.

👍 Результат

  • Производительность: кратное сокращение времени обработки.
  • Отказоустойчивость: авто-контроль работы фоновых заданий, повторная обработка.
  • Изоляция ошибок: ошибка обработки одного Пакета данных не влияет на остальные.
  • Легко продолжить после ошибки: вы исправляете код обработчика и перезапускаете только те пакеты, которые завершились со статусом «Ошибка».

 

Асинхронная обработка данных

Многопоточный конвейер используется для решения задач асинхронного запуска фоновых процессов обработки данных при наступлении определенных событий.

📌 Кейс
Пользователь записывает документ, после чего должна выполниться тяжелая операция (обновиться итоговая таблица или вызваться внешний API).

🛠 Стандартный подход**
После записи документа выполнить действие в сеансе пользователя. Синхронное выполнение блокирует интерфейс (вызывает его зависание). При одновременной работе нескольких пользователей возникают ошибки взаимоблокировки.

🔥 Решение c MTP
При записи документа создаем задание на асинхронную обработку - Пакет данных. Создание пакета - легкая процедура, не вызывающая взаимоблокировок или подвисаний интерфейса. Созданные пакеты обрабатываются многопоточным конвейером в фоне.

👍 Результат

  • Комфорт пользователя: пользователь продолжает работу мгновенно, не получает сообщений об ошибках.
  • Обход ошибок: механика повторной обработки пакетов штатно решает проблемы взаимоблокировок, недоступности сторонних сервисов.
  • Надежность: Пакеты данных будут гарантированно обработаны во множество потоков, даже если возникнет аварийная ситуация на СУБД или кластере 1С.

 

Внутренние очереди в 1С

Многопоточный конвейер реализует классическую механику внутренних очередей (Internal Message Queue), широко используемую при создании модулей на других языках программирования.

В высоконагруженных системах частой задачей является стабилизация нагрузки на систему. Необходимо, чтобы определенная механика не заняла всю вычислительную мощность связки кластер 1С / СУБД, так как это может привести всю систему в неработоспособное состояние. Необходимо уметь сглаживать пиковые нагрузки.

Наиболее распространённые примеры стабилизации "рваной" нагрузки на 1С при помощи многопоточного конвейера:

  • Экранирование запросов по API
  • Работа с брокерами сообщений RabbitMQ/Kafka

 

Экранирования запросов по API

📌 Кейс
В 1С опубликована API для получения данных по запросу. Есть сторонний модуль, который может вызывать это API с различной частотой.

🛠 Стандартный подход
Формирование ответа на запрос и его отправка в момент обращения к API.

😞 Почему стандартное решение не подходит
Синхронная обработка 5-10 одновременных запросов вполне приемлемый вариант. Однако когда сторонний модуль одновременно совершает 1000 запросов приводит к зависанию 1С. По сути база данных не управляет своей загрузкой. Сторонний модуль определяет на сколько загрузить 1С своими запросами. При этом он не обладает информацией о приемлемом режиме работы 1С.

👍 Решение c MTP
При получении запроса создавать задание на отправку результата - Пакет данных. В Способе обработки пакетов мы фиксируем, что обработка должна идти не более чем в 5 потоков. Такой подход стабилизирует систему:

  • Быстрый прием.
    Создание пакета - легкая операция, которая не вызовет критической нагрузки на 1С, даже при высокой частоте запросов.
  • Лимитирование нагрузки.
    Сколько бы не накопилось Пакетов в состоянии "К обработке", их обработка будет идти не более чем в 5 потоков. Система отработает все задания в том темпе, в котором она может это делать без ущерба для смежных процессов.

 

Работа с брокерами сообщений RabbitMQ/Kafka

📌 Кейс
1C получает данные по шине. Публикация объектов для 1С производится с различной частотой.

🛠 Стандартный подход
Сериализация объектов при чтении JSON объектов с шины данных.

😞 Почему стандартное решение не подходит
Массовая публикация объектов может привести 1С или брокер сообщений в неработоспособное состояние:

  • Быстрая вычитка сообщений с шины приведет к неработоспособности 1С, т.к. она не справится загрузкой сериализации.
  • Ограничение скорости чтения с шины под производительность 1С приведет к накоплению в очереди большого объема данных, а это в свою очередь приведет к деградации брокер сообщений.

👍 Решение MTP
При чтении входящих сообщений c шины, полученные объекты сериализовать не сразу, а складывать в Пакеты данных (данные пакетов - JSON объекта с шины). Непосредственную сериализацию производить при обработке Пакетов данных в предсказуемом темпе.

  • Быстрое чтение шины.
    Вычитка данных с шины происходит очень быстро, так как она лимитирована только скоростью записи Пакетов данных. Быстрое вычитывание очереди с бокера сообщений позволяет снизить нагрузку на сам брокер. Зачастую брокер сообщений - это InMemory база данных, а значит скорость чтения косвенно уменьшает объемы потребляемой брокером оперативной памяти.
  • Удобство отладки.
    Такой подход предоставляет максимальный комфорт отладки обменов. Ошибка сериализации одного объекта не тормозит весь процесс. Пакет данных в состоянии "Ошибка" легко можно повторно обработать, после исправления кода обработчика пакетов.

 

Почему MTP

👍 Производительность
Полная утилизация ресурсов кластера 1С и СУБД. Кратный рост производительности за счет параллелизма выполнения операций.

👍 Надежность
Автоматический контроль работы фоновых заданий. Механика повторной обработки Пакетов данных при ошибках блокировки или аварийных ситуациях на сервере 1С.

👍 Удобство
Настройка многопоточной обработки в интерфейсе. Автоматическое логирование процесса обработки данных. Инструменты для групповой обработки произвольных данных.

👍 Простота внедрения
Распространяется в виде комплекта поставки с поддержкой поставщика. Вам не нужно менять структуру вашей базы — MTP встраивается как подсистема в любую базу данных 1С без необходимости её доработки.

 

Проверенное решение

Многопоточный конвейер используется на большом количестве крупнейших предприятий России в различных отраслях (ритейл, электроэнергетика, логистика). 

В компании СДЭК многопоточный конвейер - это ключевой инструмент. Он встроен во все базы данных на платформе 1С (~20 штук). Его использование - это внутренний стандарт разработки.

На базе MTP в СДЭК реализованы различные механики, переведенные в многопоточный режим:

  • Сериализация объектов, полученных с шины данных RabbitMQ (реализация внутренних очередей в 1С).
  • Восстановление последовательностей взаиморасчетов (в регламентированном и управленческом учетах).
  • Обмены между системами 1С с использованием КД2.
  • Многопоточная трансляция данных оперативного/регламентированного учета в управленческий учет и МСФО.

Широчайшее применение многопоточный конвейер получил при реализации сложной бизнес-логики:

  • Формирование актов и отправка их клиентам (на почту, в ЭДО).
  • Процедуры закрытия периодов расчетов в оперативном и регламентированном учете.
  • Взаимодействия с внешними сервисами.

На базе многопоточного конвейера построены две биллинговые платформы СДЭК, обрабатывающие колоссальные объемы данных. Об этом я подробнее рассказывал в докладе на INFOSTART TEAM EVENT 2026.

 

С чего начать

Конфигурация имеет открытый исходный код и распространяется бесплатно по лицензии MIT. Исходный код конфигурации опубликован на GitHub.

📌 Документация: все подробности настройки, описание интерфейса и примеры кода доступны в Wiki проекта на GitHub.
📌 Релизы: готовый дистрибутив можно скачать в разделе Releases.
📌 Обратная связь: если вы нашли баг или хотите предложить улучшение — заводите задачу на GitHub.

Вступайте в нашу телеграмм-группу Инфостарт

Многопоточный конвейер MTP Multi-threaded pipeline HighLoad Пакеты данных

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    79912    408    171    

343

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    278896    1581    423    

1208

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    3779    24    0    

18

Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    42633    118    54    

131

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    13910    51    62    

63

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    71343    141    41    

150

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    27903    101    46    

107

Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    56371    194    63    

222
Для отправки сообщения требуется регистрация/авторизация