Групповые операции

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

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

В общем виде управление контекстом групповой операции выглядит следующим образом: с помощью типа ГрупповаяОперация контекст открывается, выполняются операции записи данных и контекст закрывается.

исп Загрузка = ГрупповаяОперация.Начать(РежимЗагрузкиДанных = Истина)  // устанавливает режим загрузки
  
для каждого ОписаниеЗадачи из МассивОписанийЗадач
  
    знч объектЗадача = новый Задачи.Объект()
    // Экземпляр объектЗадача, созданный в контексте режима загрузки,
    // будет иметь флаг объектЗадача.ОбменДанными.Загрузка == Истина
   
    объектЗадача.Код = ОписаниеЗадачи.id
    объектЗадача.Наименование = ОписаниеЗадачи.name
    объектЗадача.Записать()

;
Загрузка.Закрыть()   // завершает групповую операцию загрузки

В данном примере групповая операция устанавливает единственный режим — режим загрузки данных. На самом деле таких режимов несколько и их можно устанавливать одновременно.

РежимЗагрузкиДанных
В этом режиме отключаются проверки логической целостности при записи данных, отключаются обработчики событий у таких типов как имя-справочника.Объект, имя-регистра-сведений.НаборЗаписей и др.
Есть ряд ситуаций, при которых обработчики элементов проекта должны работать всегда. Например, когда нужно выполнить в той же транзакции регистрацию изменений по элементу. Или когда нужно положить элемент в исходящую очередь обмена данными, когда сам факт записи элемента надо зарегистрировать для дальнейшей обработки.
В этих случаях обработчик, выполняющий то или иное действие, должен выполняться и в режиме загрузки данных тоже. Для этого он помечается аннотацией @ВыполнятьПриЗагрузкеДанных. Например:
@ВыполнятьПриЗагрузкеДанных
@Обработчик
метод ПередЗаписью()
    ОперацияВыполняемаяВсегда()

    // проверяем состояние режима загрузки
    если не ОбменДанными.Загрузка
        ТолькоИнтерактивнаяОперация()
    ;
; 
ОтложенныйРасчетПрав
В этом режиме права доступа рассчитываются не сразу при записи, а пакетно, по множеству экземпляров. Фактический расчет прав доступа запускается при закрытии контекста. Также требует наличия привилегированного режима и транзакции.
Транзакция
В этом режиме в начале операции открывается транзакция, которая закрывается по завершении операции
ПривилегированныйРежим
В этом режиме отключается контроль прав доступа на время операции