Книга: «1С:Предприятие.Элемент». Возможности встроенного языка
Назад: Параметры запроса
На главную: Предисловие

Загрузка данных

В языке «1С:Предприятия» использовалось свойство объекта и набора записей ЗагрузкаДанных, в котором существовало свойство Загрузка. Оно отключало выполнение обработчиков и проверок при записи данных, что позволяло упростить и ускорить загрузку при обмене данными.

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

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

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

В этих случаях обработчик, выполняющий то или иное действие, должен выполняться и в режиме загрузки данных тоже. Для этого он помечается аннотацией @ВыполнятьПриЗагрузкеДанных. Например:

@ВыполнятьПриЗагрузкеДанных

метод ПередЗаписью()

ОперацияВыполняемаяВсегда()

// проверяем состояние режима загрузки

если не ОбменДанными.Загрузка

ТолькоИнтерактивнаяОперация()

;

;

Использование режима загрузки данных можно рассмотреть на следующем примере. Пусть в переменной МассивОписанийЗадач находятся описания задач, прочитанные из JSON-файла. По этим описаниям нужно создать элементы в справочнике Задачи:

исп Загрузка = ГрупповаяОперация.Начать(РежимЗагрузкиДанных = Истина) // устанавливает режим загрузки

для каждого ОписаниеЗадачи из МассивОписанийЗадач

знч объектЗадача = новый Задачи.Объект()

// Экземпляр объектЗадача, созданный в контексте режима загрузки,

// будет иметь флаг объектЗадача.ОбменДанными.Загрузка == Истина

объектЗадача.Код = ОписаниеЗадачи.id

объектЗадача.Наименование = ОписаниеЗадачи.name

объектЗадача.Записать()

;

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

В модуле элемента справочника задачи метод ПриЗаписи() будет выполняться в режиме загрузки, а метод ПередЗаписью() – нет:

@ВыполнятьПриЗагрузкеДанных

метод ПриЗаписи()

ВыполнитьДействияНужныеВЛюбомСлучае(); // будет выполнен всегда

если не ОбменДанными.Загрузка

ОтправитьУведомления(); // не будет выполнен в режиме загрузки

;

;

метод ПередЗаписью() // не будет выполнен в режиме загрузки

ЗдесьМногоКода()

;

Назад: Параметры запроса
На главную: Предисловие