Обработчики
В Экстракторе 1С есть много разных обработчиков, уже запрограммированных для Вас, они называются «Предопределенные обработчики». Кроме того, есть возможность самостоятельно создать обработчик.
Все они различаются только событиями, при возникновении которых они срабатывают.
События, когда какие обработчики срабатывают, можно посмотреть на схеме:
Обработчики строки проекта
Обработчики строки проекта настраиваются в окне «Настройки строки проекта». Для того, чтобы открыть это окно нажмите в окне создания/редактирования проекта.
Обработчики формирования очереди для первичной/полной выгрузки данных
Отвечает за формирование очереди выгрузки при нажатии на кнопку «Сформировать очередь» в окне проекта. Это делается при конструировании выгрузки конструктором, или в любой момент, когда Вы захотите полностью выгрузить данные. Этот обработчик устанавливается автоматически (см. Инструкцию по созданию проекта конструктором).
«Инициализация очереди выгрузки по периоду»
Этот обработчик может быть использован вами для случаев сегментирования по 1 параметру, если это параметр типа Дата (например «Период регистра» или «Дата документа») и вы хотите сегментировать выгрузку по функции ,применяемой к этой дате (например по месяцам, или по неделям).
Например: выгрузка регистра накопления ВыручкаИСебестоимостьПродаж по месяцам, начиная с 01.01.2023.
Параметры обработчика нужно настроить или полностью вручную, нажав на () или воспользоваться функцией автозаполнения параметров обработчика инициализации.
Для обработчика «Инициализация очереди выгрузки по периоду» необходимо заполнить следующие параметры:
Вид объекта (вид объекта конфигурации, к которому относится параметр сегментирования);
Имя объекта (имя объекта, как оно задано в конфигурации.);
Поле даты (имя
реквизита объекта, как оно задано в конфигураторе);Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое вы задали в конструкторе проекта);
Периодичность (функция сегментирования для параметра типа «Дата»).
«Инициализация очереди выгрузки по периоду по остаткам»
Этот обработчик формирует записи в очереди даже за те дни, где не было движений.
Данный обработчик можно использовать, если в дни выбранной периодичности нет движений (например, в субботу и воскресенье).
Параметры обработчика нужно настроить или полностью вручную, нажав на () или воспользоваться функцией автозаполнения параметров обработчика инициализации.
Для обработчика «Инициализация очереди выгрузки по периоду по остаткам» необходимо заполнить следующие параметры:
Вид объекта (вид объекта конфигурации, к которому относится параметр сегментирования);
Имя объекта (имя объекта, как оно задано в конфигурации.);
Поле даты (имя
реквизита объекта, как оно задано в конфигураторе);Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое вы задали в конструкторе проекта);
Периодичность (функция сегментирования для параметра типа «Дата»).
«Инициализация очереди выгрузки по подстроке реквизита»
Этот обработчик может быть использован вами для случаев сегментирования по 1 параметру, если это параметр строковый (например «Наименование в справочнике Номенклатуры») и вы хотите сегментировать выгрузку по части этого наименования (например по первым буквам).
Параметры обработчика нужно настроить или полностью вручную, нажав на () или воспользоваться функцией автозаполнения параметров обработчика инициализации.
Для обработчика «Инициализация очереди выгрузки по подстроке реквизита» необходимо заполнить следующие параметры:
Вид объекта (вид объекта конфигурации, к которому относится параметр сегментирования);
Имя объекта (имя объекта, как оно задано в конфигурации.);
Поле реквизита (имя реквизита объекта, как оно задано в конфигураторе);
Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое Вы задали в конструкторе проекта);
Начало подстроки (начальная позиция той части строки реквизита, которая используется для сегментирования.);
Длина подстроки (количество символов, начиная с начала подстроки, которое следует учитывать при сегментировании).
«Инициализация очереди выгрузки по реквизиту»
Этот обработчик может быть использован вами для случаев сегментирования по 1 параметру, если это параметр ссылочного типа (например, Вы решили выгрузить справочник номенклатуры и 1 сегмент у Вас — это все записи справочника, относящиеся к 1 Производителю).
Параметры обработчика нужно настроить или полностью вручную, нажав на () или воспользоваться функцией автозаполнения параметров обработчика инициализации.
Для обработчика «Инициализация очереди выгрузки по реквизиту» необходимо заполнить следующие параметры:
Вид объекта (вид объекта конфигурации, к которому относится параметр сегментирования);
Имя объекта (имя объекта, как оно задано в конфигурации);
Поле реквизита (имя реквизита объекта, как оно задано в конфигураторе);
Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое вы задали в конструкторе проекта).
«Инициализация очереди выгрузки по набору данных»
Данный обработчик устанавливается по умолчанию для типа данных «Объект» и работает только для него.
Этот обработчик универсален, т.к. подходит для использования при любых комбинациях параметров сегментирования, выбранных вами на этапе проектирования выгрузки объектом. В том числе, для множественных, когда сегмент определяется по совокупности 2 или более параметров с примененными к ним функциями. (см. Сегментирование многопоточность). У данного обработчика нет необходимых для настройки параметров.
Обработчики формирования очереди при изменении объектов
Данный вид обработчиков отвечает за добавление в очередь выгрузки тех сегментов, по которым произошли изменения в базе данных. Изменения фиксируются подписками на события. Это делается для поддержки актуальности данных, иными словами для инкрементальной выгрузки данных.
«Регистрация изменений по периоду»
Начиная с релиза 3.8.1.53, оптимизировали обработчики формирования очереди при изменении объектов (ранее было три обработчика «Регистрация изменений регистра по периоду по остаткам», «Регистрация изменений регистра по периоду», «Регистрация изменений объекта по периоду» преобразованы в один — «Регистрация изменений по периоду»).
Параметры обработчика необходимо настраивать вручную ( ). Для обработчика «Регистрация изменений по периоду» необходимо заполнить следующие параметры:
Поле даты (имя
реквизита объекта, как оно задано в конфигураторе);Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое Вы задали в конструкторе проекта);
Режим (режим регистрации изменений. «Стандартный» — будут зарегистрированы изменения за выбранный период, «Остатки» — от даты изменения до текущего дня);
Периодичность (функция сегментирования для параметра типа «Дата»).
«Регистрация изменений объекта по подстроке реквизита»
Этот обработчик может быть использован вами, если вы в своем проекте настроили сегментирование по 1 параметру и это параметр строковый (например «Наименование Номенклатуры») и вы настроили сегментирование по части этого наименования (например по первым буквам).
Параметры обработчика необходимо настраивать вручную ( ). Для обработчика «Регистрация изменений объекта по подстроке реквизита» необходимо заполнить следующие параметры:
Поле реквизита (имя реквизита объекта, как оно задано в конфигураторе);
Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое Вы задали в конструкторе проекта);
Начало подстроки (начальная позиция той части строки реквизита, которая используется для сегментирования.);
Длина подстроки (количество символов, начиная с начала подстроки, которое следует учитывать при сегментировании).
«Регистрация изменений объекта по реквизиту»
Этот обработчик может быть использован Вами для случаев сегментирования по 1 параметру, если это параметр ссылочного типа (например вы решили выгрузить справочник номенклатуры и 1 сегмент у Вас — это все записи справочника, относящиеся к 1 виду номенклатуры).
Параметры обработчика необходимо настраивать вручную ( ). Для обработчика «Регистрация изменений объекта по реквизиту» необходимо заполнить следующие параметры:
Поле реквизита (имя реквизита объекта, как оно задано в конфигураторе);
Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое Вы задали в конструкторе проекта).
«Регистрация изменений объекта по набору данных» или «Регистрация изменений регистра по набору данных»
Данные обработчики устанавливаются по умолчанию для типа данных «Объект» и работает только для него.
Это 2 универсальных обработчика , т.к. они подходят для использования при любых вариантах параметров сегментирования, выбранных вами на этапе проектирования выгрузки. В том числе, для множественных, когда сегмент определяется по совокупности 2 или более параметров с примененными к ним функциями. (см. Сегментирование и многопоточность). Как видно из названия, один из них применим только для регистров, другой для любых объектов, кроме регистров. Эти обработчики подставляются автоматически при проектировании выгрузки на шаге 13 (см. Инструкцию по созданию проекта конструктором). У данных обработчиков нет необходимых для настройки параметров.
Обработчики событий строки проекта
Перед выполнением строки:
Установка параметра проекта текущей датой. Используются для установки значения параметров проекта, если у вас есть в вашем наборе данных параметр типа «Дата» и вам надо чтобы каждый раз перед началом выгрузки он устанавливался в значение текущей даты.
(см. пример: Пример установки параметра текущей датой)Добавление очереди выгрузки строки проекта текущей датой. Используется для выгрузки остатков, если нет движений за день (например, в очереди есть запись за пятницу, а в субботу и воскресенье никто не работал (поэтому в очереди нет записей) при этом выгрузка настроена по ночам). Пример использования данного обработчика описан в статье.
После выполнения строки: Отправка на email результата выполнения проекта (см. пример Отправка на email результата выполнения проекта)
Инициализация очереди строки проекта: Инициализации очереди выгрузки. Данный обработчик "имитирует" нажатие кнопки "Сформировать очередь" при каждом запуске выгрузки.
Обработчики событий проекта
Для проекта обработчики назначаются прямо в форме проекта, во вкладке «Обработчики».
Здесь можно установить обработчики как перед выгрузкой, так и после нее.
Доступны следующие предопределенные обработчики:
Перед выгрузкой: Установка параметра проекта текущей датой. Используется для установки значения параметров проекта, если у вас есть в вашем наборе данных параметр типа «Дата» и вам надо чтобы каждый раз перед началом выгрузки он устанавливался в значение текущей даты.
(см. пример: Пример установки параметра текущей датой)После выгрузки: Отправка на email результата выполнения проекта (см. пример Отправка на email результата выполнения проекта).
Обработчики данных источника
Эти функции и обработчики используются на этапе 5 “Настройка вычисляемых полей”. при проектировании строки проекта мастером.
Полный список доступных предопределенных функций для вычисляемых полей Вы можете найти в Справочнике функций для вычисляемых полей.
Создание собственного обработчика
Вы можете написать свой собственный обработчик, выбрав в выпадающем списке вместо значение «Обработчик» или «Произвольный код» в любом месте, где используются обработчики. В обоих случаях будет необходимо написать код на языке 1С. Различие лишь в том, что в случае выбора значения «Обработчик» будет создаваться элемент справочника «Обработчики» и, в дальнейшем, можно будет использовать этот обработчик в других проектах. А в случае выбора значения «Произвольный код»— код будет сохранен только в текущем проекте.
Подробнее о том, как именно пишутся любые обработчики мы разберем в инструкции: Как написать собственный обработчик и сохранить его в справочнике?
В данной же статье более подробно рассмотрим предопределенные обработчики: их виды и параметры.