Многопоточность в 1С. Универсальный "Менеджер потоков"
Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!
Решение предназначено для встраивания в любой конфигурации 1С, работающие на платформе 1С:Предприятие 8.3. Позволяет выполнять алгоритмы в многопоточном режиме.
Фреймворк в виде одного общего модуля, позволяющего при получении объектов на обработку запускать их в несколько потоков. Особенности:
Нет необходимости рассчитывать «порции» для обработки;
Нет необходимости организовывать файловый обмен между потоками;
Возможность запускать несколько менеджеров потоков одновременно, при этом потоки одного менеджера, могут запускать новые менеджеры со своими задачами и потоками;
Можно выстраивать граф зависимости объектов, что позволяет, например, избегать взаимоблокировок и/или организовать восстановление партий (на нашем предприятии удалось добиться 10х+ ускорения при 10 потоках в рабочее время – 200+ активных пользователей;
Все необходимые "вмешательство" в алгоритмы происходят с помощью событий;
Возможность описывать алгоритмы событий, как в модуле менеджера, так и в любом другом модуле БД (предпочтительно), а также во внешней обработке.
Автоматический рестарт потока в случае ошибок;
Контроль за количеством рестартов по каждому объекту;
Возможность получать «ответы» от потоков;
Возможность контролировать работу с помощью «Инструментов разработчика» или иных отчетов;
Возможность срочного прерывания работы и многое другое…
Концепция решения
Менеджер потоков является решением позволяющем разработчику перевести исполнение длительного по времени алгоритма на обработку в потоках. Обычно к таким обработкам относятся переработка больших массивов (коллекций) информации, а именно:
Формирование объектов (создание цепочек документов);
Формирование отчетов (формирование «Расчетных листов» по каждому сотруднику);
Обработка объектов (заполнение, перезапись, перепроведение, удаление);
Обработка сложно связанных объектов (графовая последовательность) уникальная возможность, позволяющая решить проблемы блокировок объектов при массовых обработках, а также строгую обработку объектов в определенной последовательности (текущий объект не обрабатывается до тех пор, пока не будут обработаны все объекты от которых он зависит), к таким задачам можно отнести «Восстановление последовательности партий», «Восстановление взаиморасчетов» и т.д.
Технические требования
Разработка проводилось на 1С:Предприятие 8.3.9.1850 32x; Режим совместимости 8.2.15
Работа в режиме «клиент-сервер»
Возможность внесения изменений (дополнений) в конфигурации, в которую встраивается решение "Менеджер потоков"
Код открыт.
Возможности продукта
Менеджер потоков включает в себя весь функционал связанный с:
Запуском потоков;
Поддержанием жизнеспособности потоков (в случае «падения», поток перезапускается);
Определением порции данных для каждого потока;
Передачей данных между всеми участниками;
Автоматической сборкой коллекций после обработки (если требуется);
Выводом сообщений клиенту, выведенных при обработке в потоке;
Созданием структуры взаимосвязей объектов (Граф);
Контролем результатов обработки;
Возможностью многократной обработки одного объекта и многое другое. Все взаимодействие разработчика с менеджером потоков происходит через "События*".
*События – это произвольный код разработчика находящийся в определенном контексте и выполняемый «Менеджером потоков» в разные моменты своего использования.
События используемые в «Менеджера потоков» (2.1.0):
ПриДобавленииВОчередьОбработки - теперь "Менеджер потоков" сам добавляет объект, если есть ресурсы, так же есть параметр "УчитыватьОбъектыБезРесурсов" - см. Руководство;
ПриОбработкеДополненногоФагментаКоллекции - теперь и обработку, и дополнение можно осуществить через метод "Обработать коллекцию";
ПриПолученииМестаХраненияФайловМониторинга - т.к. исключены механизмы мониторинга, данное событие утратило свою силу;
Параметры "Менеджера потоков":
Изменены:
Структура хранения параметров (полная структура параметров предоставлена в общем макете "мпПолнаяСтруктураПараметров")
ДинамическийРассчетКоличестваПотоков -> Данный параметр больше не нужен, см. Руководство (параметр "КоличествоЭлементовКолекцииНаОбъект")
КоэффициентКратностиОчередиПотоковКПотокам -> теперь "Менеджер потоков" работает с полным графом;
ВестиМониторингМенеджераПотоков, т.к. механизм мониторинга исключен;
ВестиМониторингПорядкаОбработкиОбъектов, т.к. механизм мониторинга исключен;
ВестиМониторингОчередиНаОбработку, т.к. механизм мониторинга исключен;
Прочие изменения:
добавлены методы и свойства формирования файлов для программ анализа графов;
обработки демонстрирующие возможности "Менеджера потоков" реализованы более наглядно и обособленно друг от друга;
восстановление партий УПП так же поддерживает версию 2.1.0
Способы обработки данных:
ОбработатьОбъект() - метод предназначен для обработки объектов с помощью графовой последовательности (например, восстановление партий, восстановление последовательности расчетов и т.д.).
ОбработатьКоллекцию() - метод предназначен для обработки ТаблицЗначений, СписковЗначений и Массивов. Менеджер потоков разобьёт коллекцию на фрагменты в зависимости от параметров и передаст их на обработку в потоки. Данным методом можно воспользоваться для:
простой обработки коллекции (без возврата коллекции);
обработки коллекции с возвратом такой же коллекции, но измененной (менеджер потоков сам соберет коллекцию из обработанных фрагментов);
обработки коллекции с произвольным результатом (разработчик сам собирает (в событии) как дополнительно обработать обработанные фрагменты)
ПолучитьГраф_Gephi() - метод позволяет получить файлы для загрузки в программу Gephi (https://gephi.org/), для дальнейшего анализа графа.
ПроизвольнаяОбработкаГрафа() - если граф необходимо обработать по своему, то данный метод является альтернативой методу «ПолучитьГраф_Gephi»
Реализация движения данных
«Основная программа» записывает в хранилище все необходимые данные для обработки.
«Основная программа» записывает в зарезервированную для «Менеджера потоков» ячейку массив адресов с размещенными данными.
«Менеджер потоков» на каждой итерации опрашивает ячейку с информацией о размещении новых данных.
«Менеджер потоков» - считывает полученные данные для проведения анализа и построения графа (несвязанного).
«Менеджер потоков» записывает в зарезервированные за каждым потоком ячейки, адреса, откуда потоку взять данные.
«Поток» на каждой итерации опрашивает зарезервированную за собой ячейку на предмет появления информации о размещении данных.
«Поток» по полученному адресу (п.6) считывает и обрабатывает данные.
«Поток» после обработки формирует ответ и записывает его, туда же, откуда были считаны данные.
«Поток» при штатном завершении обработки данных производит очистку своей зарезервированной ячейки.
«Менеджер потоков» на каждой итерации производит опрос ячеек зарезервированные за потоками, куда были переданы адреса хранения данных для обработки. На данном этапе «Менеджер потоков» отслеживает активность потоков и в случае их «падения» запускает новый поток.
«Менеджер потоков» считывает результат обработки и производит дальнейший анализ, при необходимости строит новый граф (связанный) и повторяет п.п. 5-10 (уже для обработки объекта по связям) или см. п. 12.
«Менеджер потоков» записывает в зарезервированную для «Основной программы» ячейку информацию о результатах обработки.
«Основная программа» на каждой итерации опрашивает ячейку с информацией о результатах обработки.
«Основная программа» - считывает результат обработки объекта.
События разработчика
Доступность событий от методов:
Состав поставки
После покупки на почту придет архив .zip, который содержит файлы:
Конфигурация .cf
Руководство.pdf - также доступно на вкладке Бнсплатные файлы
Техническая поддержка и обновления
Бесплатный период техподдержки составляет 1 месяц со дня покупки.
Также после приобретения вы получаете 3 месяца бесплатных обновлений.
По окончании бесплатного периода вы можете приобрести услугу технической поддержки с доступом к обновлениям на платной основе.
Проверить наличие обновлений можно в личном кабинете. Если обновления недоступны - загрузить новую версию можно после покупки обновлений/технической поддержки.
Задать вопрос по программе можно по кнопке "Техподдержка" на странице описания.
При создании тикета необходимо предоставить:
Номер заказа
Описание вопроса. Если это ошибки - напишите порядок ваших действий с программой, которые к ней привели (приложите видео/скриншоты/отчеты об ошибке)
Точную конфигурацию 1С, и версию платформы, на которой используете купленное решение (наименование и версию 1С можно взять из раздела "О программе"), версию купленной программы.
К созданной заявке подключается специалист. Дальнейшее обсуждение проблемы будет проходить в тикете техподдержки. Стандартный срок реакции - 24 часа в рабочие дни с момента обращения
Внимание! Техническая поддержка предоставляется исключительно в рамках переписки по обращению. В некоторых случаях для диагностики ошибок и/или вопросов, связанных с особенностями использования продукта в информационных базах покупателя, может потребоваться дополнительная платная диагностика с организацией удаленного доступа к информационной базе. Стоимость уточняется индивидуально.
(82)Внедрил успешно подсистему, проблемный, долгий расчет себестоимости в УПП ускорен ~10 раз, очень ценный продукт, большое спасибо за труд, автор очень отзывчивый, всегда был рад помочь, за что отдельное спасибо, однозначно забрал данный продукт в свой арсенал, пригодится на крупных проектах, уже есть варианты, где буду дальше применять
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Може...
Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено».
Новое в 2.0 — обновление поставки: сравнение и об...
Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести ...
Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью...
Pilot 1C превращает задачу, поставленную обычными словами, в техническое задание, код на встроенном языке и сценарии проверки. Прежде чем что-то предложить, он сверяется с устройством вашей конфигурации через граф Analyzer 1C: существует ли...
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на л...
Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигацион...