Параметры при запуске объектов ETL - Публичная база знаний Modus
В ETL параметры помогают передавать значения в запросы и обработчики получения данных. Параметры могут быть заданы на трёх уровнях: в документе «Установка правил выгрузки» (см. «Настройка правил выгрузки данных»), в «Составе выгрузки» (см. «Настройка состава выгрузки данных») и в «Пакете обработки данных» (см. «Настройка пакетов обработки данных»).
Как работают уровни параметров
При запуске состава выгрузки система собирает параметры последовательно. Для разделения параметров, относящихся к разным частям запроса, используется номер набора параметров:
- Берёт исходные параметры из установки правил выгрузки.
- Дополняет их параметрами состава выгрузки. Если параметр уже есть, значение состава выгрузки заменяет исходное.
- Дополняет или переопределяет результат параметрами пакета обработки данных.
Таким образом, для одного и того же параметра действует приоритет: пакет → состав выгрузки → установка правил. Если объект запускается самостоятельно, без пакета, пакетный уровень не участвует.
Как определяется совпадение параметров
| Уровень | По каким полям ищется параметр | Что происходит при совпадении |
| Состав выгрузки | Имя параметра и номер набора параметров | Значение состава заменяет значение установки правил в этом наборе. |
| Пакет обработки данных | Имя параметра | Значение пакета заменяет одноимённые значения во всех найденных наборах. |
Набор параметров — это набор значений, который передаётся в запрос для его выполнения. Один состав выгрузки может содержать несколько наборов параметров (например, если нужно выполнить один и тот же запрос за разные месяцы). Наборы различаются по номеру набора.
Если в «Установке правил выгрузки» нет какого-то параметра, но он есть в «Составе выгрузки», система просто добавит его в соответствующий набор параметров. В этом случае параметр начинает участвовать в формировании запроса.
Добавление и переопределение из пакета обработки данных: логика работы пакета отличается. Пакет ищет параметры только по имени, игнорируя номера наборов.
- Если пакет находит параметр с таким именем, он заменяет его значение сразу во всех наборах параметров, где этот параметр встречается.
- Если параметра с таким именем нет ни в одном наборе, система добавит его. Но здесь есть ограничение: новый параметр пакета может быть добавлен только в те наборы, которые уже существуют (то есть имеют номер набора). Если в исходных параметрах состава выгрузки вообще нет ни одного набора (пустой список), параметры пакета всё равно подставляются в итоговый запрос при условии совпадения их имен с параметрами, ожидаемыми в установке правила выгрузки.
Значения и вычисляемые параметры
В параметре можно указать обычное значение или выражение встроенного языка. Выражение вычисляется при подготовке параметров к запуску. Параметры состава и установки правил также могут содержать дополнительное значение; при передаче в обработчик оно используется, если заполнено, иначе используется основное значение.
Что происходит при запуске
После объединения система сортирует параметры по номеру набора параметров и готовит запросы и задания для источников данных. Если для состава выгрузки настроено деление на потоки по параметрам, задания распределяются по номерам наборов параметров. При помощи специального обработчика подготовки параметров (кода на языке 1С, который задается на вкладке «Обработчики» в документе «Состав выгрузки» — подробнее см. раздел «Обработчики» в статье «Настройка состава выгрузки данных») можно влиять на параметры перед постановкой в очередь или после получения параметров.
Система сохраняет параметры в следующих местах:
- В документе «Факт выгрузки», в таблице параметров запроса, сохраняется собранный набор параметров состава.
- В записи очереди обработки для источника сохраняются параметры, относящиеся к конкретному заданию или потоку.
- В документе «Выполнение пакета» сохраняются параметры, с которыми был запущен пакет. Это позволяет видеть параметры запуска в контексте выполнения пакета.
Эти записи обеспечивают и выполнение запроса, и возможность проследить параметры в журнале выполнения.
Вложенные пакеты
Если один пакет запускает вложенный пакет, параметры родительского пакета могут переопределить одноимённые параметры вложенного. Такое переопределение применяется к параметрам, уже заданным во вложенном пакете; родительский пакет не добавляет во вложенный новые параметры.
Примеры
Переопределение одного параметра на трёх уровнях
Пусть в установке правил задано ДатаНачала = 01.01, в составе выгрузки — ДатаНачала = 01.02, а в пакете — ДатаНачала = 01.03.
- При запуске состава из пакета в запрос передаётся
01.03. - При самостоятельном запуске состава передаётся
01.02.
Одинаковое имя в разных наборах параметров
Внутри одного «Состава выгрузки» параметры с одинаковым именем могут иметь разные значения, если они относятся к разным номерам наборов.
Например, вы настроили Регион = Север для набора № 1 и Регион = Юг для набора № 2. До применения настроек это считаются два независимых параметра, и каждый набор будет использовать своё значение. Однако, если в «Пакете обработки данных» задать Регион = Центр, пакет найдёт этот параметр по имени и переопределит его. В результате и в наборе № 1, и в наборе № 2 значение Регион станет Центр.
Новый параметр из состава выгрузки
В установке правил нет параметра СтатусЗаказа, а состав выгрузки задаёт СтатусЗаказа = Проведен для набора № 1. Параметр добавится в итоговый набор № 1 и будет доступен запросу.
Новый параметр из пакета
В исходных параметрах уже есть набор № 1, а пакет задаёт отсутствующий параметр Регион = Север. Параметр будет добавлен в набор № 1. Если исходных параметров нет вообще (и, следовательно, нет номера набора), добавить параметр пакета некуда — он не попадёт в результат.
Значение из родительского пакета
Во вложенном пакете задано Организация = Альфа, а родительский пакет передаёт Организация = Бета. Для совпадающего имени используется значение родительского пакета. Имена, которых нет во вложенном пакете, таким способом не добавляются.
Параметры сценариев обработки данных
Сценарий обработки данных (см. «Сценарии обработки данных») хранит собственную таблицу параметров. Если сценарий запускается самостоятельно, используются эти параметры. Если сценарий является шагом пакета обработки данных, пакет передаёт сценарию параметры текущего этапа, которые могут переопределить параметры сценария.
Как параметры пакета применяются к сценарию
- Система отбирает параметры пакета, относящиеся к текущему этапу выполнения (
НомерЭтапа). Поэтому параметры, заданные для другого этапа пакета, не передаются этому сценарию. - Сценарий загружает свою таблицу параметров.
- Для каждого параметра сценария ищется одноимённый параметр среди параметров текущего этапа пакета.
- Если совпадение найдено, значение сценария заменяется значением пакета. Если совпадения нет, остаётся значение сценария.
- Параметр пакета, имя которого не объявлено в сценарии, в итоговый набор сценария не добавляется.
Таким образом, в сценариях параметры пакета работают как переопределения объявленных параметров сценария. Это отличается от составов выгрузки, где параметры пакета могут дополнять набор параметров запроса.
Где сохраняются и используются параметры
После объединения итоговая таблица параметров записывается в документ «Выполнение сценария». При выполнении значения доступны шагам сценария:
- запросы к внешней базе получают их как параметры запроса;
- запросы и обработки 1С получают их как параметры запроса;
- другие шаги могут использовать их через контекст выполнения.
Примеры для сценариев
Пакет переопределяет значение сценария. В сценарии указано ДатаНачала = 01.01, а в параметрах этапа пакета — ДатаНачала = 01.03. При запуске из пакета сценарий использует 01.03; при самостоятельном запуске — 01.01.
Для разных этапов заданы разные значения. На этапе 1 пакет передаёт Организация = Альфа, на этапе 2 — Организация = Бета. Сценарий на первом этапе получит Альфа, а на втором — Бета, если в его параметрах объявлена Организация.
В пакете есть параметр, которого нет в сценарии. Пакет передаёт Регион = Север, но сценарий не содержит параметра Регион. Это значение не добавится в параметры сценария.
Пакет не переопределяет параметр сценария. В сценарии задано Валюта = RUB, а пакет передаёт только Организация = Альфа. Значение валюты останется RUB; организация будет переопределена только в том случае, если такой параметр объявлен в сценарии.
Параметр задан выражением. Если параметр сценария или пакета настроен как вычисляемый, выражение вычисляется при подготовке запуска. Если пакет переопределяет одноимённый параметр сценария вычисляемым параметром, сценарий получает вычисленное значение пакета.
Вложенные пакеты и сценарии
Если вложенный пакет содержит шаг-сценарий, сценарий получает параметры именно того этапа вложенного пакета, на котором он расположен. Параметры родительского пакета могут предварительно переопределить одноимённые параметры вложенного пакета; после этого к сценарию применяются параметры его этапа по правилам выше.