Ускорение обработки данных в 1С
В этой статье расскажу о том, как можно распараллеливать выполнение длительной обработки данных. Рассмотрим на примере процедуры, в которой получаем массив объектов и обрабатываем по очереди.
У меня операция занимает 15 сек.
Создаем процедуру ЗапуститьДлительнуюОперациюНаСервере(), в которой получим массив объектов и разделим его на несколько частей, на каждую часть массива создадим фоновое задание.
В серверном общем модуле создаем экспортную процедуру, в которой будем обрабатывать эти части массива по очереди. В итоге будут запущены 3 фоновых задания, которые будут обрабатывать только свою часть объектов.
В результате время на операцию занимает меньше секунды.
Но это не значит, что весь массив за это время обработан. Мы лишь запустили задания, которые начали обрабатывать данные в фоне. Если необходима дальнейшая обработка результатов, то можно отловить результаты выполнения фоновых заданий.
👉@DevLab1C
В этой статье расскажу о том, как можно распараллеливать выполнение длительной обработки данных. Рассмотрим на примере процедуры, в которой получаем массив объектов и обрабатываем по очереди.
&НаСервере
Процедура ДлительнаяОперация()
МассивОбъектов = ПолучитьМассивОбъектов();
Для Каждого Ссылка Из МассивОбъектов Цикл
ОбработатьОбъект(Ссылка);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗапуститьДлительнуюОперацию(Команда)
ДлительнаяОперация();
КонецПроцедуры
У меня операция занимает 15 сек.
Создаем процедуру ЗапуститьДлительнуюОперациюНаСервере(), в которой получим массив объектов и разделим его на несколько частей, на каждую часть массива создадим фоновое задание.
&НаКлиенте
Процедура ЗапуститьДлительнуюОперацию(Команда)
ЗапуститьДлительнуюОперациюНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗапуститьДлительнуюОперациюНаСервере()
МассивОбъектов = ПолучитьМассивОбъектов();
МассивЧастейОбъектов = Новый Массив;
КолЭлементов = Цел(МассивОбъектов.Количество() / 3);
ЧастьОбъектов = Новый Массив;
Для Индекс = 0 По МассивОбъектов.ВГраница() Цикл
Если ЧастьОбъектов.Количество() >= КолЭлементов Тогда
МассивЧастейОбъектов.Добавить(ЧастьОбъектов);
ЧастьОбъектов = Новый Массив;
КонецЕсли;
ЧастьОбъектов.Добавить(МассивОбъектов.Получить(Индекс));
КонецЦикла;
Если ЧастьОбъектов.Количество() > 0 Тогда
МассивЧастейОбъектов.Добавить(ЧастьОбъектов);
КонецЕсли;
Для Каждого ЧастьОбъектов Из МассивЧастейОбъектов Цикл
ПараметрыВыполнения = Новый Массив;
ПараметрыВыполнения.Добавить(ЧастьОбъектов);
ФоновыеЗадания.Выполнить("СвойОбщийМодуль.ДлительнаяОперация", ПараметрыВыполнения, Новый УникальныйИдентификатор);
КонецЦикла;
КонецПроцедуры
В серверном общем модуле создаем экспортную процедуру, в которой будем обрабатывать эти части массива по очереди. В итоге будут запущены 3 фоновых задания, которые будут обрабатывать только свою часть объектов.
Процедура ДлительнаяОперация(ЧастьОбъектов) Экспорт
Для Каждого Объект Из ЧастьОбъектов Цикл
ОбработатьОбъект(Объект);
КонецЦикла;
КонецПроцедуры
В результате время на операцию занимает меньше секунды.
Но это не значит, что весь массив за это время обработан. Мы лишь запустили задания, которые начали обрабатывать данные в фоне. Если необходима дальнейшая обработка результатов, то можно отловить результаты выполнения фоновых заданий.
👉@DevLab1C
👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
1С: Приемы разработки
Основы использования таблиц значений
Первое внедрение БСП 3.1
Регулярные выражения на каждый день
Шаблоны регулярных выражений для начинающих
Использование рекурсии на деревьях значений
Рекурсия без рекурсии Сложная рекурсия
Восходящая и нисходящая рекурсии
Особенности построения рекурсии
Использование двоичных деревьев для поиска
Балансировка и практика применения деревьев
источник
👉@DevLab1C
Основы использования таблиц значений
Первое внедрение БСП 3.1
Регулярные выражения на каждый день
Шаблоны регулярных выражений для начинающих
Использование рекурсии на деревьях значений
Рекурсия без рекурсии Сложная рекурсия
Восходящая и нисходящая рекурсии
Особенности построения рекурсии
Использование двоичных деревьев для поиска
Балансировка и практика применения деревьев
источник
👉@DevLab1C
🔥3👍1
🔥3👍1
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
1С Программирование. Часть 1
1С Программирование. Как запросом получить последовательность чисел и дат.
1С Программирование . Получение остатков на каждый день запросом
1С: СКД. Получение остатков на каждый день и выведение результата в отчет.
1С: БСП. Версионирование объектов. Сравниваем версии
Уроки по 1С. Печать макета Ворд (Word) при помощи БСП.
1С: Базовые приемы оптимизации кода
1С: Лайвкодинг. Дорабатываем печатную формы Счета на оплату. + Шаблон ВПФ
Уроки по 1С. Программно дорабатываем / модифицируем управляемые формы
1С: Лайвкодинг. Выполняем задачу на доработку формы установки цен в УТ 11.3
Уроки по 1С. Дорабатываем динамические списки программно
источник
👉@DevLab1C
1С Программирование. Как запросом получить последовательность чисел и дат.
1С Программирование . Получение остатков на каждый день запросом
1С: СКД. Получение остатков на каждый день и выведение результата в отчет.
1С: БСП. Версионирование объектов. Сравниваем версии
Уроки по 1С. Печать макета Ворд (Word) при помощи БСП.
1С: Базовые приемы оптимизации кода
1С: Лайвкодинг. Дорабатываем печатную формы Счета на оплату. + Шаблон ВПФ
Уроки по 1С. Программно дорабатываем / модифицируем управляемые формы
1С: Лайвкодинг. Выполняем задачу на доработку формы установки цен в УТ 11.3
Уроки по 1С. Дорабатываем динамические списки программно
источник
👉@DevLab1C
🔥4