Ускоряем типовую обработку "Групповое изменение реквизитов" правкой пары строчек кода

Публикация № 1023998

Разработка - Практика программирования

7
Данные правки помогут ускорить выполнение обработки для большого числа изменяемых объектов (выполнения задания в фоне) без использования транзакций.

Заметил такую не очень приятную особенность выполнения типовой обработки - выполнение задания в фоне идет только когда указываешь в форме "Дополнительные параметры" ИзменятьВТранзакции = Истина, иначе выполнение обработки идет в текущем сеансе

Изменение в транзакции не очень подходит для большого числа объектов, так как генерируется очень большой блок отката, который чаще всего просто не нужен, а выполнение задания в пользовательском сеансе не очень быстрое

Поэтому с помощью всего пары правок можно заставить обработку выполняться в фоне, когда число выбранных объектов, например, больше 100

Для этого в модуле формы обработки в процедуре ИзменитьОбъекты() нужно заменить строчку

Если Объект.ИзменятьВТранзакции Тогда

На

Если Объект.ИзменятьВТранзакции Или КоличествоОбъектовДляОбработки >= 100 Тогда

И в функции ИзменитьНаСервере(Знач ОстанавливатьИзменениеПриОшибке) заменить

Если Не Объект.ИзменятьВТранзакции Или Не ПодсистемаСуществует("СтандартныеПодсистемы.БазоваяФункциональность") Тогда

На

Если (Не Объект.ИзменятьВТранзакции И КоличествоВыбранныхОбъектов() < 100) Или Не ПодсистемаСуществует("СтандартныеПодсистемы.БазоваяФункциональность") Тогда

Теперь если выбранных объектов больше и равно 100, то задание изменения будет выполняться всегда в фоне

7

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. user-z99999 18 19.03.19 12:53 Сейчас в теме
А если заменить?
Если Объект.ИзменятьВТранзакции Или КоличествоОбъектовДляОбработки >= 100 Тогда

на
Если КоличествоОбъектовДляОбработки >= 100 Или Объект.ИзменятьВТранзакции  Тогда

Какое из условий чаще возникает, то и должно быть на первом месте.
2. w.r. 459 19.03.19 13:31 Сейчас в теме
(1) это уже вам самим решать, какое условие у вас будет чаще возникать. Я оставил по умолчанию условие типовое на первом месте
3. Rustig 1189 29.04.19 22:18 Сейчас в теме
Оставьте свое сообщение