Простая параллельная обработка данных
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Предыстория:
Как-то появилась необходимость быстро выполнить обработчики обновления после перехода на новый релиз. Стандартная обработка занимала неделю. Надо было уложиться в 2 стандартных выходных. Как же это сделать быстро и желательно без модификации конфигурации?
Можно написать обработку и запустить в нескольких сеансах вручную. Но обработка в разных сеансах будет обрабатывать одни и те же "куски" данных. Как просто выйти из этой ситуации?
Вариант решения: Каждый сеанс должен обрабатывать свой случайный диапазон данных.
Конечно, иногда они будут пересекаться. На этот случай перед обработкой диапазона устанавливаем управляемую блокировку. Да, время от времени блокировки сеансов будут "натыкаться" друг на друга, но при больших размерах выборки и малой порции это будет происходить редко.
Как использовать обработку:
1. В функцию "Получить запрос", помещаем свой запрос для получения обрабатываемых данных
2. При необходимости, в процедуре "ЗаблокироватьДанные" разрабатываем алгоритм блокировки:
3. В процедуре "ОбработатьОбъекты" непосредственно реализуем процесс обработки.
4. Готовую обработку запускаем в нескольких сеансах.
5. Время от времени поглядываем на процесс, если она остановилась из-за блокировки, то запускаем заново.
Дополнительное описание работы обработки:
Основная рабочая лошадка - функция "ОбработатьПорцию". Она вызывается с помощью обработчика ожидания, пока возвращаемое значение отлично от 0-ля:
Основная функция для обработки порции данных и выбора случайного диапазона:
Требования: Управляемые формы
Протестировано на: 1С:Предприятие 8.3 (8.3.13.1644)
Вступайте в нашу телеграмм-группу Инфостарт