Отправка письма с данными из нескольких блоков скрипта
Документация
Главная

Отправка письма с данными из нескольких блоков скрипта

В этом документе показано, как в Proceset передать в блок Отправить письмо данные из разных блоков одного скрипта: сформировать CSV по строкам SQL-запроса, передать тему из другого SQL-запроса, а адрес и параметры альтернативного письма получить из блока Ручной запуск. Такой сценарий подходит для регулярной рассылки отчетов, когда данные и параметры письма формируются в разных частях процесса.

Контекст

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

Параметры письма формируются в разных местах скрипта: адрес и дополнительная тема приходят из блока Ручной запуск, тема отчета — из SQL-запроса, а файлы — из блоков подготовки файлов. Блок Отправить письмо собирает эти значения в одно письмо, поэтому один и тот же процесс можно использовать для отправки CSV-отчета или его архива.

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

В примере используются следующие значения:

  • Адрес получателя — адрес тестового почтового ящика из блока Ручной запуск
  • Тема письма — Отчет по заказам за июнь 2026 из блока Выбрать строки через SQL-запрос
  • CSV-вложение — результат блока Сформировать CSV
  • Архив — результат блока Архивировать

Настройка отправки отчета с данными из нескольких блоков

Настройка отправки отчета выполняется в три этапа:

  • Этап 1 — подготовка параметров запуска, темы, строк отчета, CSV-файла и архива
  • Этап 2 — настройка маппинга адреса, темы и вложения для CSV-отчета и архива
  • Этап 3 — проверка выбранного варианта и публикация скрипта для последующих запусков

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

Подготовка источников данных и файлов

Для кейса нужна версия Proceset 2606 или новее. Письмо отправляется блоком из пакета Системная почта. Подготовьте почтовый ящик, в котором вы сможете проверить результат.

Блоки выполняются последовательно: Ручной запуск → Выбрать строки через SQL-запрос (тема) → Выбрать строки через SQL-запрос (данные отчета) → Сформировать CSV → Архивировать → Отправить письмо. Эта цепочка остается одинаковой для обоих вариантов письма.

  1. В рабочем пространстве откройте Панель управления, нажмите Добавить и выберите Скрипт. Задайте название «Отправка отчета по заказам» и нажмите Добавить.
  2. В блоке Выберите триггер выберите Ручной запуск. Блок «Ручной запуск» на схеме скрипта
  3. Откройте Ожидаемые поля блока Ручной запуск. Нажмите Добавить и создайте два поля:
    НазваниеТип поляМассивОбязательное поле
    recipientСтрокаВыключенВключено
    archive_subjectСтрокаВыключенВключено
  4. Нажмите Тестировать в панели блока. Введите в recipient адрес своего тестового почтового ящика, а в archive_subject — Архив отчета по заказам за июнь 2026. Выполните тест и проверьте, что в выходных данных появилась одна запись с этими полями. После теста поля будут доступны для маппинга в следующих блоках.
  5. Нажмите + под блоком Ручной запуск. В группе Пространство добавьте блок Выбрать строки через SQL-запрос для темы письма. Введите запрос, который возвращает одну строку:
    SELECT 'Отчет по заказам за июнь 2026' AS email_subject
    
    Проверьте блок и убедитесь, что в выходных данных есть поле email_subject. Добавленный и настроенный блок SQL-запроса для темы письма
  6. Под первым SQL-блоком нажмите + и добавьте второй блок Выбрать строки через SQL-запрос для строк отчета. Введите запрос с тестовыми данными:
    SELECT region, order_count, total_amount
    FROM (
        SELECT 'Север' AS region, 42 AS order_count, 128500.00 AS total_amount
        UNION ALL SELECT 'Юг', 37, 98400.00
        UNION ALL SELECT 'Центр', 51, 176300.00
    )
    ORDER BY region
    
    Проверьте блок. Он должен вернуть три строки с регионами и показателями заказов. Добавленный и настроенный блок SQL-запроса с данными отчета
  7. Под вторым SQL-блоком нажмите + и добавьте блок Сформировать CSV. В разделе Колонки CSV задайте имена region, order_count и total_amount, а в соответствующих полях Данные для колонки выберите одноименные поля второго SQL-блока через маппинг. Включите Добавлять заголовки колонок и в поле Разделитель выберите Точка с запятой. После тестирования блок должен вернуть один CSV-файл с тремя строками. Добавленный и настроенный блок «Сформировать CSV»
  8. Под блоком Сформировать CSV нажмите + и добавьте блок Архивировать. В поле Файлы подставьте файловую переменную из блока Сформировать CSV. Проверьте блок: он должен вернуть архив в формате .gzip. Добавленный и настроенный блок «Архивировать»

Настройка блока «Отправить письмо»

Создайте один блок письма и последовательно проверьте два варианта маппинга.

Отправка CSV-отчета с темой из SQL-запроса

  1. Нажмите + под блоком Архивировать и добавьте блок Отправить письмо из пакета Системная почта. Если в скрипте уже есть блок старой версии, замените его на новую версию блока, доступную с обновления 2606.
  2. В поле Адрес получателя выберите значение recipient из блока Ручной запуск.
  3. В поле Тема письма выберите поле email_subject из первого блока Выбрать строки через SQL-запрос.
  4. В поле Вложения оставьте одну строку и выберите файловую переменную из блока Сформировать CSV. Для поля Сообщение выберите формат Текст и введите Отчет подготовлен автоматически.
  5. Нажмите Тестировать в правом верхнем углу редактора, чтобы запустить весь скрипт. Для recipient укажите свой тестовый почтовый ящик, для archive_subject — Архив отчета по заказам за июнь 2026. Дождитесь статуса Выполнено. CSV-файл подготовлен для вложения в письмо
  6. Откройте полученное письмо. Проверьте тему Отчет по заказам за июнь 2026 и одно CSV-вложение. В файле должны быть заголовки region, order_count, total_amount и три строки по регионам. Сверьте значения с данными из архива примера. После этой проверки переходите ко второму варианту.

В этом варианте адрес, тема и вложение поступают из трех блоков: Ручной запуск, первого SQL-блока и Сформировать CSV.

Отправка архива с адресом и темой из параметров запуска

  1. В поле Адрес получателя оставьте значение recipient из блока Ручной запуск.
  2. В поле Тема письма замените маппинг на archive_subject из блока Ручной запуск.
  3. В поле Вложения замените файловую переменную на результат блока Архивировать. В поле Сообщение укажите Архив отчета приложен для хранения.
  4. Снова нажмите Тестировать в правом верхнем углу и заполните recipient и archive_subject теми же значениями. Дождитесь статуса Выполнено.
  5. Проверьте полученное письмо: тема — Архив отчета по заказам за июнь 2026, вложение — один GZIP-архив. Распакуйте его и убедитесь, что внутри тот же отчет с тремя строками по регионам. Проверка письма с архивом отчета

В этом варианте тема и адрес берутся из Ручной запуск, а вложение — из Архивировать. Чтобы отправить оба файла одним письмом, добавьте две строки в режиме списка полей или передайте массив файлов в режиме формулы fx.

Публикация скрипта

Сохраните вариант, который будете использовать для отправки отчета.

  1. Оставьте в блоке Отправить письмо маппинг нужного варианта. Если после проверки второго варианта вы вернулись к CSV-вложению, восстановите тему из первого SQL-блока и файл из блока Сформировать CSV, затем повторите тест всего скрипта.
  2. После успешного теста нажмите Опубликовать. Для последующей отправки откройте опубликованный скрипт и нажмите Активировать. При запуске заполните recipient и archive_subject. Блок Ручной запуск выполняет скрипт один раз и отключается после завершения.

Результат

За один запуск отправляется одно письмо. В обоих вариантах непосредственный предшественник письма — блок Архивировать: он получает единственный CSV-файл и передает дальше одну запись. Тема и вложение могут браться из других блоков выше по цепочке, но это не меняет количество отправляемых писем.

В первом варианте получатель получает CSV-отчет с темой из SQL-запроса. Во втором — архив отчета с темой из параметров ручного запуска. Для смены варианта достаточно изменить маппинг письма: связи между блоками остаются прежними.

Пример рабочего процесса

Ситуация

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

  • CSV — чтобы руководитель мог сразу открыть файл и проверить показатели по регионам;
  • GZIP-архив — чтобы сохранить отчет в почте или передать его как единый пакет.

Скрипт готовит оба файла за один запуск. Оператор выбирает только итоговый вариант письма: CSV с темой из SQL-запроса или архив с темой, введенной при запуске.

Какие данные вводит оператор

Перед запуском блок Ручной запуск запрашивает два обязательных значения:

ПолеПример значенияКак используется
recipientregional.manager@example.comАдрес получателя в обоих вариантах письма
archive_subjectАрхив отчета по заказам за июнь 2026Тема письма с архивом

Оператор вводит эти значения в форме запуска и выполняет тест. После выполнения блока они становятся доступны для маппинга в блоке Отправить письмо.

Настройка параметров ручного запуска

Как формируется отчет

  1. Первый SQL-блок подготавливает тему для обычного письма — Отчет по заказам за июнь 2026. Эта тема не зависит от введенных оператором параметров и всегда соответствует отчетному периоду. SQL-блок с темой письма
  2. Второй SQL-блок возвращает строки отчета: регион, число заказов и сумму. В примере это три региона — Север, Юг и Центр. В рабочем сценарии вместо тестовых литералов используйте запрос к своей модели данных. SQL-блок с данными отчета
  3. Блок Сформировать CSV получает три колонки из второго SQL-блока и создает один файл с заголовками. Именно этот файл используется как вложение в первом варианте рассылки. Подготовка CSV-файла для вложения
  4. Блок Архивировать получает CSV-файл и создает его GZIP-копию. CSV при этом не изменяется, поэтому оба варианта письма используют один и тот же набор исходных данных. Создание архива с отчетом

Как скрипт собирает письмо

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

Параметр письмаCSV-отчетАрхив отчета
Адрес получателяrecipient из Ручной запускrecipient из Ручной запуск
Темаemail_subject из первого SQL-блокаarchive_subject из Ручной запуск
Вложениефайл из Сформировать CSVфайл из Архивировать
Текст сообщенияОтчет подготовлен автоматически.Архив отчета приложен для хранения.

На следующем скриншоте видно, что адрес, тема и вложение выбираются независимо друг от друга: адрес берется из Ручной запуск, тема — из первого SQL-блока, вложение — из Архивировать. Для рабочего варианта выберите сочетание из таблицы выше; например, перед отправкой архива замените тему на archive_subject.

Настройка маппинга параметров письма

Что делает оператор после запуска

  1. Открывает опубликованный скрипт и нажимает Активировать.
  2. Вводит адрес получателя и тему архивного письма.
  3. Дожидается статуса Выполнено.
  4. Открывает письмо в тестовом почтовом ящике.
  5. Проверяет тему, одно вложение и содержимое файла: в CSV должны быть заголовки region, order_count, total_amount и три строки; в архиве — тот же CSV-файл.

Если получателю нужен CSV, оператор оставляет маппинг темы из первого SQL-блока и вложение из Сформировать CSV. Если нужен архив, он заменяет тему на archive_subject, а вложение — на результат Архивировать. Блоки подготовки данных и связи между ними менять не требуется.

Результат и дальнейшие действия

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

Если рассылку нужно повторять каждый месяц, обновите SQL-запросы под новый период и опубликуйте новую версию скрипта. Для отправки обоих файлов в одном письме добавьте в поле Вложения две строки: одну с файлом из Сформировать CSV, вторую — с файлом из Архивировать.

Преимущества для пользователя

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

Насколько полезной была статья?

Предыдущая
Анализ действий пользователей по скриншотам мониторинга в дашборде
Следующая
Агент мониторинга: Пошаговые решения для администраторов по установке, обновлению и обслуживанию
8 (800) 555-89-02
430006, Саранск,
Северо-восточное шоссе, д. 3
Код вида деятельности
в области ИТ 15.02 и 17.01
ОКВЭД 62.01
ИНН 1328​909857
Языки программирования: