Ускоряем типовую обработку "Групповое изменение реквизитов" правкой пары строчек кода
Данные правки помогут ускорить выполнение обработки для большого числа изменяемых объектов (выполнения задания в фоне) без использования транзакций.
- Описание
- Подробнее
Описание
Заметил такую не очень приятную особенность выполнения типовой обработки — выполнение задания в фоне идет только когда указываешь в форме "Дополнительные параметры" ИзменятьВТранзакции = Истина, иначе выполнение обработки идет в текущем сеансе
Изменение в транзакции не очень подходит для большого числа объектов, так как генерируется очень большой блок отката, который чаще всего просто не нужен, а выполнение задания в пользовательском сеансе не очень быстрое
Поэтому с помощью всего пары правок можно заставить обработку выполняться в фоне, когда число выбранных объектов, например, больше 100
Для этого в модуле формы обработки в процедуре ИзменитьОбъекты() нужно заменить строчку
Если Объект.ИзменятьВТранзакции ТогдаНа
Если Объект.ИзменятьВТранзакции Или КоличествоОбъектовДляОбработки >= 100 ТогдаИ в функции ИзменитьНаСервере(Знач ОстанавливатьИзменениеПриОшибке) заменить
Если Не Объект.ИзменятьВТранзакции Или Не ПодсистемаСуществует("СтандартныеПодсистемы.БазоваяФункциональность") ТогдаНа
Если (Не Объект.ИзменятьВТранзакции И КоличествоВыбранныхОбъектов() < 100) Или Не ПодсистемаСуществует("СтандартныеПодсистемы.БазоваяФункциональность") ТогдаТеперь если выбранных объектов больше и равно 100, то задание изменения будет выполняться всегда в фоне

