1С:Предприятие 8
880 subscribers
108 photos
288 videos
110 links
🔥 Разработка в 1С — просто и понятно! 🔥

Полезные фишки и лайфхаки для разработчиков
Объяснение сложных тем простыми словами
Готовые решения, сниппеты и примеры кода
Разбор ошибок и способов их устранения
Новости и тренды в мире 1С
Download Telegram
Ускорение обработки данных в 1С

В этой статье расскажу о том, как можно распараллеливать выполнение длительной обработки данных. Рассмотрим на примере процедуры, в которой получаем массив объектов и обрабатываем по очереди.


&НаСервере
Процедура ДлительнаяОперация()

МассивОбъектов = ПолучитьМассивОбъектов();

Для Каждого Ссылка Из МассивОбъектов Цикл

ОбработатьОбъект(Ссылка);

КонецЦикла;

КонецПроцедуры


&НаКлиенте
Процедура ЗапуститьДлительнуюОперацию(Команда)

ДлительнаяОперация();

КонецПроцедуры


У меня операция занимает 15 сек.

Создаем процедуру ЗапуститьДлительнуюОперациюНаСервере(), в которой получим массив объектов и разделим его на несколько частей, на каждую часть массива создадим фоновое задание.


&НаКлиенте
Процедура ЗапуститьДлительнуюОперацию(Команда)

ЗапуститьДлительнуюОперациюНаСервере();

КонецПроцедуры

&НаСервере
Процедура ЗапуститьДлительнуюОперациюНаСервере()

МассивОбъектов = ПолучитьМассивОбъектов();

МассивЧастейОбъектов = Новый Массив;

КолЭлементов = Цел(МассивОбъектов.Количество() / 3);

ЧастьОбъектов = Новый Массив;

Для Индекс = 0 По МассивОбъектов.ВГраница() Цикл

Если ЧастьОбъектов.Количество() >= КолЭлементов Тогда
МассивЧастейОбъектов.Добавить(ЧастьОбъектов);
ЧастьОбъектов = Новый Массив;
КонецЕсли;

ЧастьОбъектов.Добавить(МассивОбъектов.Получить(Индекс));

КонецЦикла;

Если ЧастьОбъектов.Количество() > 0 Тогда
МассивЧастейОбъектов.Добавить(ЧастьОбъектов);
КонецЕсли;

Для Каждого ЧастьОбъектов Из МассивЧастейОбъектов Цикл
ПараметрыВыполнения = Новый Массив;
ПараметрыВыполнения.Добавить(ЧастьОбъектов);

ФоновыеЗадания.Выполнить("СвойОбщийМодуль.ДлительнаяОперация", ПараметрыВыполнения, Новый УникальныйИдентификатор);
КонецЦикла;

КонецПроцедуры


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


Процедура ДлительнаяОперация(ЧастьОбъектов) Экспорт

Для Каждого Объект Из ЧастьОбъектов Цикл
ОбработатьОбъект(Объект);
КонецЦикла;

КонецПроцедуры


В результате время на операцию занимает меньше секунды.

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

👉@DevLab1C
👍2🔥1
1С: Приемы разработки

Основы использования таблиц значений
Первое внедрение БСП 3.1
Регулярные выражения на каждый день
Шаблоны регулярных выражений для начинающих
Использование рекурсии на деревьях значений
Рекурсия без рекурсии Сложная рекурсия
Восходящая и нисходящая рекурсии
Особенности построения рекурсии
Использование двоичных деревьев для поиска
Балансировка и практика применения деревьев

источник

👉@DevLab1C
🔥3👍1
1С: Администрирование

Установка и публикация базы 1С на IIS под ОС Windows 10/11
Присоединение базы 1C без лога к MS SQL 2019
Восстановление нестандартного бэкапа 1С из PostgreSQL. *.sql *.psql

источник

👉@DevLab1C
🔥3👍1
1С Программирование. Часть 1

1С Программирование. Как запросом получить последовательность чисел и дат.
1С Программирование . Получение остатков на каждый день запросом
1С: СКД. Получение остатков на каждый день и выведение результата в отчет.
1С: БСП. Версионирование объектов. Сравниваем версии
Уроки по 1С. Печать макета Ворд (Word) при помощи БСП.
1С: Базовые приемы оптимизации кода
1С: Лайвкодинг. Дорабатываем печатную формы Счета на оплату. + Шаблон ВПФ
Уроки по 1С. Программно дорабатываем / модифицируем управляемые формы
1С: Лайвкодинг. Выполняем задачу на доработку формы установки цен в УТ 11.3
Уроки по 1С. Дорабатываем динамические списки программно

источник

👉@DevLab1C
🔥4