Этап 11: Настройки строки проекта

Форму настроек строки проекта можно вызвать, выбрав строку и нажать на .

1

2

Настройка строки проекта состоит из следующих разделов:

  • Основное;

  • Оптимизация;

  • Обработчик формирования очереди для первичной/полной выгрузки;

  • Обработчики формирования очереди при изменении объектов;

  • Обработчики событий строки проекта;

  • Дополнительные настройки.

Основное

Способ выгрузки

  • Блоками. Стандартный способ выгрузки, используя инструкцию INSERT (вставка строк).

  • Через файл. Данный способ работает быстрее. Вы можете выбрать его, но если Вы делаете выгрузку в MS SQL, то не забудьте указать каталоги обмена на этапе создания подключения.

Примечание

Подробнее о способах выгрузки можно прочитать в статье. Данная статья написана про MS SQL, но для Clickhouse суть та же.

Способ обновления

  • Обновление сегмента. Данный способ обновления устанавливается автоматически, если при создании проекта было настроено сегментирование.

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

  • Добавление. Данный способ используется для добавление новых или измененных сегментов или партиций в уже существующую таблицу-приемник без удаления/изменения старых. Такой способ к примеру используется здесь: Пример выгрузки справочника почти в режиме реального времени.

  • Полное. Данный способ используется для полной замены данных всей таблицы. Этот метод используется в основном для разовых выгрузок таблиц целиком, без использования сегментирования или партицирования.

Оптимизация

Очередь выгрузки

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

Распараллеливание выгрузки

Здесь располагаются тонкие настройки для распараллеливания выгрузки:

  • Максимальное количество одновременно выполняющихся потоков. Чем их больше, тем быстрее все выгрузится (однако, конечно, все зависит и от мощностей вашего сервера).

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

Настройки буфера

Размер буфера. Если таблица очень большая, она может вся просто не поместиться в памяти, разумнее «подгружать» ее по частям. Для этих целей и устанавливается размер буфера. Т.е. количество записей, единовременно извлекаемых в память для последующей обработки и выгрузки. По умолчанию равен 1000. Если установить отрицательное значение, то данные будут извлекаться полностью. Данная настройка позволяет минимизировать риск фатальной ошибки выгрузки из-за нехватки оперативной памяти. Если способ выгрузки «Блоками», то данные вставляются во временную таблицу, если файлами, то будет дописываться файл.

Размер блока и размер блока удаляемых данных

Для выгрузок со способом выгрузки «Блоками» в этом разделе появится еще 2 настройки, которые не видны на форме при настройках выгрузки способом «Через файл».
Вот эти настройки:

  • Размер блока. Если вы выбрали способ выгрузки Блоками - то можете ограничить размер 1 блока определенным количеством записей. Будьте внимательны, уменьшая размер блока - вы увеличиваете количество запросов к серверу. Если оставить значение = 0, то будет выгружаться все записи 1 партиции в одном блоке.

  • Удалять блоками. Если флаг не стоит, то выполняется один запрос удаления сразу всей партиции. Если стоит, то удаляется по заданному количеству записей (количество записей задается параметром «Размер блока удаляемых данных»).

  • Размер блока удаляемых данных: чем больше блок, тем дольше длится транзакция. Этот параметр только для выгрузок в транзакционные базы данных (таких как MS SQL), здесь речь идет об ограничении количества удаляемых записей в 1 транзакции (для Clickhouse это не нужно, т.к. там нет понятия транзакции).

Данные

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

Расширение параметров

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

Обработчик формирования очереди для первичной/полной выгрузки

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

«Инициализация очереди выгрузки по периоду»

Этот обработчик может быть использован вами для случаев сегментирования по 1 параметру, если это параметр типа Дата (например «Период регистра» или «Дата документа») и вы хотите сегментировать выгрузку по функции ,применяемой к этой дате (например по месяцам, или по неделям).
Например: выгрузка регистра накопления ВыручкаИСебестоимостьПродаж по месяцам, начиная с 01.01.2023.

Параметры обработчика нужно настроить или полностью вручную, нажав на () или воспользоваться функцией автозаполнения параметров обработчика инициализации.

Для обработчика «Инициализация очереди выгрузки по периоду» необходимо заполнить следующие параметры:

  • Вид объекта (вид объекта конфигурации, к которому относится параметр сегментирования);

  • Имя объекта (имя объекта, как оно задано в конфигурации.);

  • Поле даты (имя реквизита объекта, как оно задано в конфигураторе);

  • Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое вы задали в конструкторе проекта);

  • Периодичность (функция сегментирования для параметра типа «Дата»).

«Инициализация очереди выгрузки по периоду по остаткам»

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

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

Параметры обработчика нужно настроить или полностью вручную, нажав на () или воспользоваться функцией автозаполнения параметров обработчика инициализации.

Для обработчика «Инициализация очереди выгрузки по периоду по остаткам» необходимо заполнить следующие параметры:

  • Вид объекта (вид объекта конфигурации, к которому относится параметр сегментирования);

  • Имя объекта (имя объекта, как оно задано в конфигурации.);

  • Поле даты (имя реквизита объекта, как оно задано в конфигураторе);

  • Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое вы задали в конструкторе проекта);

  • Периодичность (функция сегментирования для параметра типа «Дата»).

«Инициализация очереди выгрузки по подстроке реквизита»

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

Параметры обработчика нужно настроить или полностью вручную, нажав на () или воспользоваться функцией автозаполнения параметров обработчика инициализации.

Для обработчика «Инициализация очереди выгрузки по подстроке реквизита» необходимо заполнить следующие параметры:

  • Вид объекта (вид объекта конфигурации, к которому относится параметр сегментирования);

  • Имя объекта (имя объекта, как оно задано в конфигурации.);

  • Поле реквизита (имя реквизита объекта, как оно задано в конфигураторе);

  • Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое Вы задали в конструкторе проекта);

  • Начало подстроки (начальная позиция той части строки реквизита, которая используется для сегментирования.);

  • Длина подстроки (количество символов, начиная с начала подстроки, которое следует учитывать при сегментировании).

«Инициализация очереди выгрузки по реквизиту»

Этот обработчик может быть использован вами для случаев сегментирования по 1 параметру, если это параметр ссылочного типа (например, Вы решили выгрузить справочник номенклатуры и 1 сегмент у Вас — это все записи справочника, относящиеся к 1 Производителю).

Параметры обработчика нужно настроить или полностью вручную, нажав на () или воспользоваться функцией автозаполнения параметров обработчика инициализации.

Для обработчика «Инициализация очереди выгрузки по реквизиту» необходимо заполнить следующие параметры:

  • Вид объекта (вид объекта конфигурации, к которому относится параметр сегментирования);

  • Имя объекта (имя объекта, как оно задано в конфигурации);

  • Поле реквизита (имя реквизита объекта, как оно задано в конфигураторе);

  • Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое вы задали в конструкторе проекта).

«Инициализация очереди выгрузки по набору данных»

Обратите внимание!

Данный обработчик устанавливается по умолчанию для типа данных «Объект» и работает только для него.

Этот обработчик универсален, т.к. подходит для использования при любых комбинациях параметров сегментирования, выбранных вами на этапе проектирования выгрузки объектом. В том числе, для множественных, когда сегмент определяется по совокупности 2 или более параметров с примененными к ним функциями. (см. Сегментирование и многопоточность). У данного обработчика нет необходимых для настройки параметров.

Обработчики событий строки проекта

  • Перед выполнением строки:

    • Установка параметра проекта текущей датой. Используются для установки значения параметров проекта, если у вас есть в вашем наборе данных параметр типа «Дата» и вам надо чтобы каждый раз перед началом выгрузки он устанавливался в значение текущей даты.
      (см. пример: Пример установки параметра текущей датой)

    • Добавление очереди выгрузки строки проекта текущей датой. Используется для выгрузки остатков, если нет движений за день (например, в очереди есть запись за пятницу, а в субботу и воскресенье никто не работал (поэтому в очереди нет записей) при этом выгрузка настроена по ночам). Пример использования данного обработчика описан в статье.

  • После выполнения строки: Отправка на email результата выполнения проекта (см. пример Отправка на email результата выполнения проекта)

  • Инициализация очереди строки проекта: Инициализации очереди выгрузки. Данный обработчик "имитирует" нажатие кнопки "Сформировать очередь" при каждом запуске выгрузки.

Обработчики формирования очереди при изменении объектов

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

«Регистрация изменений по периоду»

Начиная с релиза 3.8.1.53, оптимизировали обработчики формирования очереди при изменении объектов (ранее было три обработчика «Регистрация изменений регистра по периоду по остаткам», «Регистрация изменений регистра по периоду», «Регистрация изменений объекта по периоду» преобразованы в один — «Регистрация изменений по периоду»).

Параметры обработчика необходимо настраивать вручную ( ). Для обработчика «Регистрация изменений по периоду» необходимо заполнить следующие параметры:

  • Поле даты (имя реквизита объекта, как оно задано в конфигураторе);

  • Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое Вы задали в конструкторе проекта);

  • Режим (режим регистрации изменений. «Стандартный» — будут зарегистрированы изменения за выбранный период, «Остатки» — от даты изменения до текущего дня);

  • Периодичность (функция сегментирования для параметра типа «Дата»).

«Регистрация изменений объекта по подстроке реквизита»

Этот обработчик может быть использован вами, если вы в своем проекте настроили сегментирование по 1 параметру и это параметр строковый (например «Наименование Номенклатуры») и вы настроили сегментирование по части этого наименования (например по первым буквам).

Параметры обработчика необходимо настраивать вручную ( ). Для обработчика «Регистрация изменений объекта по подстроке реквизита» необходимо заполнить следующие параметры:

  • Поле реквизита (имя реквизита объекта, как оно задано в конфигураторе);

  • Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое Вы задали в конструкторе проекта);

  • Начало подстроки (начальная позиция той части строки реквизита, которая используется для сегментирования.);

  • Длина подстроки (количество символов, начиная с начала подстроки, которое следует учитывать при сегментировании).

«Регистрация изменений объекта по реквизиту»

Этот обработчик может быть использован Вами для случаев сегментирования по 1 параметру, если это параметр ссылочного типа (например вы решили выгрузить справочник номенклатуры и 1 сегмент у Вас — это все записи справочника, относящиеся к 1 виду номенклатуры).

Параметры обработчика необходимо настраивать вручную ( ). Для обработчика «Регистрация изменений объекта по реквизиту» необходимо заполнить следующие параметры:

  • Поле реквизита (имя реквизита объекта, как оно задано в конфигураторе);

  • Имя параметра (имя параметра источника данных, т.е. имя параметра запроса или имя параметра, которое Вы задали в конструкторе проекта).

«Регистрация изменений объекта по набору данных» или «Регистрация изменений регистра по набору данных»

Обратите внимание!

Данные обработчики устанавливаются по умолчанию для типа данных «Объект» и работает только для него.

Это 2 универсальных обработчика , т.к. они подходят для использования при любых вариантах параметров сегментирования, выбранных вами на этапе проектирования выгрузки. В том числе, для множественных, когда сегмент определяется по совокупности 2 или более параметров с примененными к ним функциями. (см. Сегментирование и многопоточность). Как видно из названия, один из них применим только для регистров, другой для любых объектов, кроме регистров. Эти обработчики подставляются автоматически при проектировании выгрузки. У данных обработчиков нет необходимых для настройки параметров.

Дополнительные настройки

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

Выгружать строку при отсутствии данных

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

Параметры источника инициализируются из очереди

При выборе способа обновления «Добавление» или «Полное» доступна настройка «Параметры источника инициализируются из очереди выгрузки». Если снять данный флаг, то параметры, которые были указаны в нашем запросе, будут заполняться значениями, заданными в процессе создания набора данных 1С на вкладке «Параметры» на Этапе 4.

Значение партиции инициализируется из очереди

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