Рассмотрим методы ускорения обработки данных более подробно.
Разберем работу с многопоточностью в конфигурации. Многопоточность позволяет решить несколько задач:
- ускорить обработку данных;
- избавляет пользователя от ожидания выполнения с зависшей формой.
Пример использования многопоточности.
Пример использования многопоточности.
Создадим новый общий модуль "ФоновыеЗаданияЗагрузки". В нем пропишем следующую процедуру:
Процедура ДобавитьЭлементыСправочника(КоличествоЭлементов)Экспорт
Для индекс = 1 По КоличествоЭлементов Цикл
ИмяЭлемента = "Элемент номер " + Строка(индекс);
ОбъектСправочник = Справочники.ТестированиеЗагрузкиДанных
.СоздатьЭлемент();
ОбъектСправочник.Наименование = ИмяЭлемента;
ОбъектСправочник.Записать();
КонецЦикла;
КонецПроцедуры
Для запуска многопоточного выполнения этой процедуры в обработке пропишем следующий код:
Процедура ЗаполнитьСправочникДанными(КоличествоПотоков)Экспорт
ОбщееКоличетсвоДанных = 80000;
КоличествоДанныхВОдномПотоке = ОбщееКоличетсвоДанных / КоличествоПотоков;
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(КоличествоДанныхВОдномПотоке);
МассивФоновыхЗаданий = Новый Массив;
Для индекс = 1 По КоличествоПотоков Цикл
ЗаданиеЗагрузки = ФоновыеЗадания.Выполнить(
"ФоновыеЗаданияЗагрузки.ДобавитьЭлементыСправочника"
, МассивПараметров);
МассивФоновыхЗаданий.Добавить(ЗаданиеЗагрузки);
КонецЦикла;
ФоновыеЗадания.ОжидатьЗавершения(МассивФоновыхЗаданий);
КонецПроцедуры
У этого механизма есть очень большой плюс - значительное сокращение времени обработки данных, и более полное использование аппаратных мощностей. Приведенное в примере решение блокирует форму обработки из-за использования метода фоновых заданий "ОжидатьЗавершения". Но есть и другие способы проверки окончания фоновых заданий, которые не блокируют работу пользователя. Например использование метода "ПолучитьФоновыеЗадания"
Но решение не лишено и недостатков:
- для реализации многопоточности необходим сервер 1С предприятия. На файловой БД многопоточность работать не будет, потоки будут идти один за другим по очереди;
- невозможно реализовать решение во внешней обработке (по крайней мере я не нашел способов). Решение будет обоснованным только при необходимости выполнения периодической обработки данных, по причине создания или редактирования общего модуля приложения.
Но решение не лишено и недостатков:
- для реализации многопоточности необходим сервер 1С предприятия. На файловой БД многопоточность работать не будет, потоки будут идти один за другим по очереди;
- невозможно реализовать решение во внешней обработке (по крайней мере я не нашел способов). Решение будет обоснованным только при необходимости выполнения периодической обработки данных, по причине создания или редактирования общего модуля приложения.
Комментариев нет:
Отправить комментарий