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

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

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

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

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

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

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

На

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

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

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

На

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

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

3 Comments

  1. user-z99999

    А если заменить?

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

    на

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

    Какое из условий чаще возникает, то и должно быть на первом месте.

    Reply
  2. w.r.

    (1) это уже вам самим решать, какое условие у вас будет чаще возникать. Я оставил по умолчанию условие типовое на первом месте

    Reply
  3. Rustig

    (0) интересно

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *