Автоматизация бизнес-процессов в Power Automate — облачные потоки, потоки на компьютере и обработка ошибок

· Обновлено: · · Power Automate, RPA, Автоматизация бизнес-процессов, Поток на компьютере, Облачный поток, PowerShell, VBA, Excel, Office, Использование существующих активов, Техническая консультация

История изменений (2 обновлений, последнее 30 Aug 2026)

Журнал изменений этой статьи. Там, где версия до правки была заархивирована, она остаётся доступной для чтения по постоянной ссылке с DOI.

Ссылки на лицензии Power Automate направлены на маршруты /ru/. Утверждения статьи не менялись.
Русский текст переписан как полноценный технический перевод, а не калька с японского. Утверждения статьи не менялись.
Первая публикация
Цитирование статьи(DOI (зарегистрированный архив): 10.5281/zenodo.21619923)

Приведённые ниже DOI относятся к ранее зарегистрированным архивным версиям, которые могут отличаться от текущего текста. Для ссылки на текущий текст используйте URL этой страницы.

Го Комура (2026). Автоматизация бизнес-процессов в Power Automate — облачные потоки, потоки на компьютере и обработка ошибок. KomuraSoft LLC. https://comcomponent.com/ru/blog/power-automate-business-automation-guide/

DOI (зарегистрированный архив)
10.5281/zenodo.21619923
DOI (последняя зарегистрированная версия)
10.5281/zenodo.21619924

«Каждое утро собирать CSV из общей папки, сводить их в Excel и отправлять руководителю по почте». «Вручную копировать значения из нескольких учётных систем и сводить их в отчёт». Такие задачи всё чаще просят автоматизировать через Power Automate.

Первый небольшой поток обычно удаётся запустить за считаные десятки минут. Сложности начинаются дальше. После того как поток поработал в продакшене, он время от времени останавливается с ошибкой. Чуть меняется раскладка экрана целевой системы — и поток ломается. Где хранить пароль, так и не решили, и он до сих пор прописан прямо во входной переменной. «Рабочий поток» есть, но когда что-то идёт не так, чинить его некому — такие проекты мы уже не раз видели.

У Power Automate низкий порог входа: начать можно без кода или почти без кода. Именно из-за этой лёгкости поток часто попадает в продакшен раньше, чем продумано проектирование. В этой статье — в том порядке, в котором с этим обычно сталкиваются на практике, — разберём различия между облачными потоками и потоками на компьютере, разделение ролей с PowerShell и VBA, обработку ошибок, как стабилизировать UI-автоматизацию, работу с учётными данными, управление и эксплуатацию, а также момент, когда задача выходит за рамки Power Automate.

1. Сначала — выводы

  • У Power Automate два больших направления: облачные потоки (соединяют облачные службы через коннекторы) и потоки на компьютере (RPA, которая автоматизирует экраны Windows и настольные приложения). Первое проектное решение — понять, какое из них действительно нужно.
  • Если требуется просто автоматизировать «типовую работу на ПК», во многих случаях в первую очередь стоит рассматривать PowerShell, а не Power Automate Desktop. Если клики и ввод на экране не обязательны, PowerShell обычно проще сопровождать и проще вести в системе контроля версий.
  • Power Automate особенно оправдан, когда нужно управлять экраном существующей системы с малым числом API или без них либо когда требуется быстро собрать уведомления и согласования на коннекторах Microsoft 365 (Outlook, SharePoint, Teams и т. д.).
  • Перед выводом в продакшен в проект с самого начала стоит заложить четыре вещи: обработку ошибок (On Block Error), стабилизацию UI-селекторов, безопасное управление учётными данными и контроль через политики DLP. Добавлять их потом — прямой путь к инциденту.12
  • Для выполнения без участия пользователя (unattended) нужна отдельная от режима с участием пользователя (attended) лицензия и другие предпосылки. Если лицензирование отложить, легко получить ситуацию, когда поток работал в тестовой среде, а в продакшене его не запустить.34

На схеме сплошная линия обозначает отношение, которое выполняется всегда, а пунктирная — условное отношение (условия указаны в пояснении к каждому отношению на странице сведений). Полный список отношений (всего 21, с доказательствами и степенью уверенности) и определения основных понятий собраны на странице сведений карты знаний (на японском). Данные: JSON-LD / Turtle

2. Общая картина Power Automate

Power Automate — это не столько один продукт, сколько платформа, которая объединяет несколько способов автоматизации.

Power AutomateОблачные потокиПотоки на компьютере / RPAProcess miningAI BuilderАвтоматический потоктриггер по событиюПоток по расписаниюпериодический запускМгновенный потокручной запуск / кнопкаКоннекторыSharePoint / Outlook / Teams / SQL и др.С участием пользователявыполняется на глазах у пользователяБез участия пользователяна сервере / выделенном ПКUI-автоматизацияуправление экраном, интеграция с существующими приложениями
  • Облачный поток соединяет облачные службы через коннекторы. По типу триггера он делится на автоматический (по событию), поток по расписанию (периодический запуск) и мгновенный (запуск вручную).
  • Поток на компьютере — это RPA (Robotic Process Automation), которая напрямую управляет приложениями и экранами Windows. Его можно вызывать из облачного потока или запускать отдельно.5
  • Потоки на компьютере дальше делятся на выполнение с участием пользователя (attended) — когда человек сидит перед экраном — и выполнение без участия пользователя (unattended) на выделенном ПК или сервере.4

«Выделенная машина» для режима без участия пользователя — это не просто «не заблокирована». В Windows 10/11 выполнение без участия пользователя завершится ошибкой, если сессия любого пользователя осталась в заблокированном состоянии, независимо от того, чья учётная запись используется для подключения. В Windows Server область уже: выполнение не стартует, только если заблокированная сессия принадлежит тому же пользователю, что используется для подключения. После обслуживания или после RDP другого администратора часто ограничиваются «блокировкой» или «отключением», но нужно, чтобы все именно вышли из системы (sign out).6

Когда к нам приходят с запросом, мы обычно начинаем с разделения: речь о соединении облачных служб или об управлении экраном. Уже одно это заметно проясняет картину.

3. Как выбирать между облачным потоком, потоком на компьютере, PowerShell и VBA

Слово одно — «автоматизация», а сильные стороны очень разные.

Аспект Облачный поток Поток на компьютере PowerShell VBA
Среда выполнения Облако Microsoft Windows PC / сервер Windows PC / сервер Внутри приложения Office
Сильные стороны Интеграция между SaaS, уведомления, согласование Управление экраном, интеграция с устаревшими приложениями Работа с файлами, пакетная обработка, вызовы API Операции внутри Office, формирование отчётов
Триггер Событие, расписание, вручную Вызов из облачного потока, расписание Планировщик заданий, вручную События приложения Office, вручную
Сложность логики Средняя (комбинация коннекторов) От средней до низкой (в основном UI) Высокая (полноценный язык программирования) Высокая (гибко, но в рамках Office)
Обработка ошибок Через журнал выполнения потока On Block Error, настройки повтора try/catch, коды завершения On Error Resume Next и т. п. (слабее)
Управление исходным кодом Условно возможно через экспорт (zip) Условно возможно через экспорт (zip) Удобно хранить как текст в Git Встроен в книгу, сложно вести
Подходящие сценарии Согласования, уведомления, интеграция с SaaS, процессы вокруг Microsoft 365 Управление экраном существующих систем без API, интеграция с устаревшими приложениями Большие объёмы данных, регулярные пакетные задания, серверное выполнение, легко тестируемая логика Задачи, которые целиком укладываются в Excel/Access, для одного человека или небольшой команды

Частое заблуждение на практике — думать: «нужна автоматизация → значит, сразу Power Automate». Если у системы уже есть API, а её всё равно автоматизируют через UI в Power Automate Desktop, стабильнее вызывать API напрямую из PowerShell или .NET. И наоборот: если нужно управлять экраном старой учётной системы или Win32-приложения без API, UI-автоматизация потока на компьютере — реалистичный выбор.

Дополнение: ограничения Excel и VBA и подходы к замене разобраны в статье «Что такое VBA — ограничения, перспективы, когда стоит заменить и как мигрировать». Там же затронут паттерн, в котором процессы на Microsoft 365 собирают из Office Scripts и Power Automate.7

4. Лицензии — только то, без чего не запустить выполнение без участия пользователя

Общую картину лицензий (что входит в seed-лицензии Microsoft 365, граница между стандартными и премиум-коннекторами, что дешевле считать по Premium или по Process, кредиты AI Builder) мы собрали с таблицей решений в статье «Лицензии Power Automate — насколько хватает Microsoft 365 и когда нужен Premium». Здесь оставляем только три пункта, без которых выполнение без участия пользователя не вывести в эксплуатацию — это тема этой статьи.3

Что нужно На что назначается Где ошибаются
Power Automate Process Машина, которая выполняет поток без участия пользователя (или один облачный поток) Лицензии только на режим с участием пользователя недостаточно. Прежняя надстройка «Unattended RPA add-on» считается устаревшей; для новых назначений нужна Process384
Пользователь с Power Automate Premium Люди (кто регистрирует машину; пользователь подключения, через которое облачный поток вызывает поток на компьютере) Process не заменяет пользовательскую лицензию. Машину регистрирует пользователь с Premium, и у пользователя подключения, через которое облачный поток вызывает поток на компьютере, тоже должна быть Premium (или лицензия с правом на потоки на компьютере)3
Решение (solution) Предпосылка, если Process назначают облачному потоку Решение — контейнер Power Platform, в котором вместе ведут потоки, приложения, ссылки на подключения и переносят их между средами. Назначить Process личному потоку из раздела «Мои потоки», которым часто пользуются на этапе проверки, нельзя. Если без участия пользователя уже в поле зрения, поток лучше рано положить в решение39

Если физическую машину разворачивать не хочется, есть Power Automate Hosted Process: выполнение без участия пользователя на машинах и группах машин, которые размещает Microsoft.8

Ещё один принцип, который не только про режим без участия пользователя: чья лицензия работает, определяется не тем, кто создал поток, а тем, как его запускают (автоматические потоки и потоки по расписанию — владелец, мгновенный поток по кнопке — тот, кто нажал, RPA без участия пользователя — машина). Это соответствие сведено в таблицу в статье про лицензии. В любом случае, если лицензирование отложить, типичный стоп — «в тестовой среде работало, в продакшене не запускается». Три пункта выше стоит проверить ещё на этапе PoC.

5. Практическое проектирование — собрать CSV из общей папки, сделать отчёт Excel и отправить по почте

В качестве примера возьмём обычную задачу — ежедневный отчёт.

Сразу о характере этой главы. Это не пошаговая инструкция по экрану, а концептуальное проектирование: как собрать действия, переменные, разбиение на вложенные потоки и что делать при ошибке. Раскладку экрана и щелчки в Power Automate for desktop надёжнее сверять с официальной документацией и текущей версией, поэтому здесь только «какие действия, с какой гранулярностью и какой передачей переменных собирать». Чтобы пример можно было почти сразу собрать, в 5.1 — список переменных (имя, тип, пример значения), в 5.2 — структура вложенных потоков.

Имена действий в статье даны по английской UI. Если работаете в русской UI, в таблице действий и в таблице переменных 5.1 рядом указаны русское имя / английское имя.

Что нужно сделать

  1. Собрать CSV за текущий день из общей папки
  2. Свести данные и записать их в шаблон отчёта Excel
  3. Сохранить отчёт в заданную папку
  4. Отправить уведомление заинтересованным лицам по почте
  5. При сбое уведомить ответственного и записать причину в лог
НетДаошибкаЗапуск по расписанию 06:30On Block Error: агрегацияGet files in folderполучить CSV за текущий деньЕсть нужные файлы?Зафиксировать отсутствие файлов и завершитьRead from CSV fileцикл по файламСвести значения в переменныхLaunch Excelоткрыть шаблонWrite to Excel worksheetзаписать результаты агрегацииСохранить и закрыть ExcelSend an emailотправить отчёт ответственнымДописать результат выполнения в лог-файлУспешное завершениеОбработчик ошибокЗакрыть Excel, если он остался открытЗафиксировать ошибку в логеПисьмо администратору о сбоеЗафиксировано как аварийное завершение

Основные действия и их роль. Рядом указаны имена в русской UI (как в русской версии справочника действий10).

Действие (русское имя / английское имя) Роль На что смотреть при проектировании
Получить файлы в папке / Get files in folder Список целевых CSV Ясно задать шаблон имени файла и условие отбора «за текущий день»
Чтение из CSV-файла / Read from CSV file, Чтение из листа Excel / Read from Excel worksheet Чтение данных Проверить наличие строки заголовка и кодировку (например, UTF-8)
Задать переменную / Set variable, Увеличить переменную / Increase variable Хранение агрегированных значений Читаемость повышают префиксы, по которым виден тип (txtPath, numTotal, dtToday, lstFiles; см. 5.1)
Запустить Excel / Launch Excel Работа с шаблоном Excel Запуск и завершение экземпляра всегда вести парой (если забыть закрыть, останется EXCEL.EXE). Поток рассчитан на выполнение без участия пользователя, поэтому стоит проверить, есть ли у учётной записи RPA лицензия Microsoft 365 Apps for enterprise (unattended). Без неё Office идёт в режиме ограниченной функциональности, и поведение может отличаться от интерактивного запуска11
Запись на лист Excel / Write to Excel worksheet Запись результатов агрегации Не хардкодить адреса ячеек: позицию искать через именованные диапазоны или заголовок
Отправить сообщение электронной почты (V2) / Send an email (V2) (Office 365 Outlook) Уведомление о результате Путь к файлу нельзя передать как вложение напрямую. Сначала действием Преобразовать файл в двоичные данные / Convert file to binary data получить двоичные данные, затем в Attachments в Name указать имя файла отчёта, в ContentBytes — эту двоичную переменную12. Получателей и тему тоже лучше вынести в шаблон
Записать текст в файл / Write text to file (режим добавления) Журнал выполнения По одной строке на запуск: дата и время, число обработанных записей, результат (успех/сбой)

Русские имена — не жёсткое взаимно однозначное соответствие. Например, Send an email (V2) в официальной русской документации встречается и как «Отправить сообщение электронной почты (V2)», и в близких формулировках. Если в UI не находите действие, ищите по английскому имени.12

5.1 Проектирование переменных — имена, типы, примеры значений

Хорошие переменные — те, по которым человек потом читает поток и понимает смысл без пояснений. Для этого примера минимум нужно решить заранее. Значения подставьте под свою среду.

Имя переменной Тип Пример значения / откуда берётся Назначение
txtSourceFolder Текст \\fileserver\daily\in Общая папка-источник. Если сделать входным параметром потока, в тестовой среде её легко подменить
txtTemplatePath Текст C:\ProgramData\KsReport\template.xlsx Путь к шаблону отчёта Excel
txtOutputFolder Текст \\fileserver\daily\report Куда класть готовый отчёт
txtLogPath Текст C:\ProgramData\KsReport\logs\daily.log Куда дописывать журнал выполнения
dtToday Дата и время Выход «Получить текущие дату и время / Get current date and time» Проверка, относится ли файл к текущему дню
txtToday Текст 20260630 (dtToday через «Преобразовать дату и время в текст / Convert datetime to text» в пользовательском формате yyyyMMdd) Фильтр имён файлов и сборка имени report_20260630.xlsx
lstFiles Список Выход «Получить файлы в папке» Список CSV за текущий день. Нужен для ветки «0 файлов»
numTotal Число Инициализация 0, в цикле «Увеличить переменную» Агрегированное значение
numProcessed Число Инициализация 0 Сколько файлов удалось обработать. Идёт в лог и в тело письма

Три важных момента. Пути не писать внутри действия, а вынести в переменные (тогда подмена тестовой и продуктивной среды — в одном месте). Дату держать отдельно как тип «дата и время» и как текст для отображения (сравнивать типом даты, имя файла собирать из текста). Обязательно иметь переменные-счётчики (это материал для лога и отличие «0 записей, но нормальное завершение» от «0 записей, потому что получение сорвалось»).

5.2 Разбиение на вложенные потоки

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

Main (основной поток)
  ├─ Инициализация: задать переменные из 5.1
  ├─ [On Block Error] начало блока
  │    ├─ Выполнить «Собрать CSV»          → выход: lstFiles
  │    ├─ Если 0 файлов — записать «нет объектов» и завершить
  │    ├─ Выполнить «Свести»               → вход: lstFiles / выход: numTotal, numProcessed
  │    ├─ Выполнить «Записать в Excel»     → вход: numTotal, txtTemplatePath / выход: txtReportPath
  │    ├─ Выполнить «Уведомить»            → вход: txtReportPath, numProcessed
  │    └─ Выполнить «Писать лог»           → вход: результат выполнения (успех)
  └─ [Обработчик ошибок]
       ├─ Выполнить «Прибрать Excel» (закрыть экземпляр, если он ещё открыт)
       ├─ Выполнить «Писать лог»           → вход: результат выполнения (сбой + текст ошибки)
       └─ Выполнить «Уведомить»            → вход: письмо администратору о сбое

Критерий разреза: можно ли этот кусок перезапустить отдельно, не сломав остальное. Шаги вроде «Писать лог» и «Уведомить», которые вызывают и успешная ветка, и ветка ошибки, лучше сразу делать вложенными потоками, иначе логика начнёт дублироваться. Если вложенные потоки начинают молча опираться на общие глобальные переменные — это признак слишком мелкой нарезки; вернитесь к гранулярности, где всё явно передаётся как вход и выход.

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

6. Как проектировать обработку ошибок

В Power Automate Desktop есть действие On Block Error: общую обработку ошибок задают сразу на блок. Вместо «поведения при ошибке» у каждого действия по отдельности одну обработку применяют ко всем действиям внутри блока.1

[On Block Error] Блок агрегации
  ├─ List files in folder
  ├─ Read from CSV file (цикл)
  ├─ Launch Excel / Write to Excel worksheet
  └─ Save Excel / Close Excel

[Обработчик ошибок]
  ├─ Действием Get last error получить содержимое ошибки (имя, место, действие, подробное сообщение) в переменную
  ├─ Закрыть экземпляр Excel, если он остался открыт (именно при сбое уборку не пропускать)
  ├─ Записать в лог действием Write text to file (Append)
  ├─ Уведомить администратора действием Send an email (V2)
  └─ Выбрать «продолжить с конца блока» или «остановить выполнение потока»

Здесь стоит зафиксировать несколько правил.

  • Обработка ошибки отдельного действия имеет приоритет над обработкой блока. Индивидуально настраивают только те действия, где поведение должно отличаться; остальное собирают в On Block Error.1
  • «Retry action if an error occurs» позволяет при временных ошибках (задержка сети, блокировка файла) автоматически повторять действие заданное число раз с заданным интервалом. Если повторять все ошибки без разбора, это только тратит время: отдельно подумайте, какие ошибки стоит повторять, а какие нет (например, рассогласование данных).1
  • Чтобы в обработчике обратиться к последней ошибке, нужно явно поставить действие Get last error. Оно возвращает переменную с шестью свойствами возникшей ошибки — имя, место, действие, вложенный поток, детали и сообщение; неявной переменной для этого нет. Чтобы то же значение потом случайно не переиспользовать, после получения безопаснее очистить его опцией «Clear error».1
  • В лог пишите не только «успех/сбой», но и число обработанных записей, имя целевого файла и текст ошибки. Потом единственная зацепка, почему всё остановилось, — это лог.
  • В постобработке блока явно выбирают, продолжить с конца блока или остановить выполнение потока. Если остановить поток при открытом Excel, в следующий раз может остаться висящий процесс — поэтому именно при ошибке важно закрыть экземпляр.13

Тем, кто привык к try/catch/finally в PowerShell, удобно смотреть так: «блок» On Block Error близок к try, обработчик ошибок — к catch, последовательность уборки — к finally.

7. Как стабилизировать UI-автоматизацию

Главная причина нестабильности потоков на компьютере чаще всего — способ идентификации UI-элементов, то есть селектор.

  • По умолчанию UI element picker записывает элемент экрана как селектор — комбинацию атрибутов. Если в неё попадают атрибуты, которые легко ломаются при обновлении приложения или смене отображаемого содержимого (порядковые индексы, динамические ID), поток может сломаться даже при внешне том же экране.14
  • Для атрибутов с меняющимся значением замените Equals на Contains или регулярное выражение, а значения, которые зависят от предыдущего действия, вынесите в переменные — селектор станет динамичнее и устойчивее.14
  • Если задать несколько селекторов, при сбое первого поток автоматически перейдёт к следующему. Для важных операций запасной селектор заметно повышает стабильность.14
  • Если селектор сломался, Repair selector может автоматически предложить кандидатов на исправление. Прежде чем собирать селектор вручную с нуля, стоит сначала попробовать это.14
  • Переходы между экранами и запуск приложений занимают время. Не опирайтесь только на фиксированный Wait: сочетайте действия условного ожидания — «дождаться окна», «дождаться появления UI-элемента» — и настройте автоматический повтор, если элемент сразу не найден.15
  • Если объект автоматизации в принципе не удаётся стабилизировать (виртуализированные экраны, экраны с часто меняющейся раскладкой), не цепляйтесь за UI. Сначала проверьте, нет ли более стабильного пути: API, обмен файлами, доступ к базе данных.

Запустить UI-автоматизацию в первый раз несложно. А будет ли она жить без поломок и через полгода — почти целиком определяется тем, как собраны селекторы.

8. Как безопасно работать с учётными данными

В автоматизации бизнес-процессов чаще всего инциденты связаны с учётными данными: паролями, ключами API, строками подключения.

  • Не записывайте пароли и сведения о подключении прямо в значения входных переменных потока. Действие Get credential безопасно получает учётные данные из «учётных данных Power Automate», за которыми стоит хранилище секретов Azure Key Vault или CyberArk; полученное значение помечается как конфиденциальное и не попадает в журнал выполнения потока.1617
  • Если секреты лежат в Azure Key Vault, сведения о подключении к Key Vault можно вести в одном месте на стороне Power Automate, а не размазывать учётные данные по каждому потоку.17
  • Для выполнения без участия пользователя заведите отдельную учётную запись с минимально необходимыми правами и не используйте ту, которой человек пользуется каждый день. Чем шире права, тем больше ущерб от бага в потоке или ошибки настройки.
  • Пароль, записанный открытым текстом во входную переменную «временно, лишь бы заработало», имеет свойство доезжать в таком виде до продакшена. Безопаснее уже на этапе проверки привыкнуть к Get credential.

9. Управление и эксплуатация

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

  • Политики предотвращения потери данных (DLP) классифицируют коннекторы, доступные потокам и приложениям, как «только данные организации», «не данные организации» или «заблокировано» и не дают сочетать в одном потоке коннектор для данных организации с коннектором, который для них не предназначен. Это первый уровень управления, который стоит выстроить: он снижает риск непреднамеренного ухода данных организации во внешнюю службу.18
  • Действия потоков на компьютере тоже можно классифицировать и блокировать в той же схеме DLP, но по умолчанию это выключено. В параметрах клиента (tenant) центра администрирования Power Platform один раз включают «Show desktop flow actions in DLP policies»; это включение потом нельзя откатить. Даже после включения под контролем оказываются только модули и действия, которые политика явно классифицировала. «DLP-политику создали» само по себе не значит, что под контролем весь набор потоков на компьютере.2
  • Машины для выполнения без участия пользователя лучше собирать в группы машин и явно вести, какой поток на какой машине выполняется.
  • Заранее решите, где смотреть журнал выполнения. Для отдельного облачного потока: войдите в Power Automate → «Мои потоки» → нужный поток → на странице сведений «Журнал выполнения»; в упавшем запуске видно на каком действии он упал и подробности ошибки. В верхнем меню той же страницы «Analytics» показывает долю успехов и сбоев и журнал за последние 30 дней. Чтобы без пробелов видеть сбои по клиенту и по среде, наиболее полный обзор даёт Monitor (Монитор) в центре администрирования Power Platform.1920 Каскадные сбои (последующие действия тоже помечаются как сбой, потому что упало предыдущее) идут списком, поэтому в журнале выполнения принцип такой: смотреть первое упавшее действие.19
  • Знайте пределы стандартных уведомлений о сбое и добавляйте свои. Power Automate шлёт при сбое облачного потока два вида писем. Первое — оповещение на конкретный запуск: оно уходит владельцу и совладельцам только если причину удалось отнести к «известному и исправимому» (обрыв подключения, троттлинг и т. п.). Его ещё нужно включить в параметрах потока, а после отправки по тому же потоку действует пауза 28 дней. Второе — еженедельный дайджест, куда попадают и обычные сбои, по которым оповещение не уходило.19 То есть «каждый раз, сразу, ответственному» стандартными средствами не закрыть. Обработку из главы 6, которая пишет администратору письмо или сообщение в Teams, стоит встроить в сам поток.
  • Если облачному потоку нужны ресурсы во внутренней сети, до которых облако напрямую не достаёт — база данных, файловый ресурс, — используют локальный шлюз данных (on-premises data gateway). Шлюзу не нужно открывать входящий порт со стороны облака: мост строится только исходящим соединением.21
  • Разделение сред (environments) на тестовую и продуктивную с отдельными потоками на компьютере и сведениями о подключении для каждой среды не даёт правкам во время проверки задеть продуктивные потоки.

10. Границы Power Automate и когда эскалировать

Power Automate силён, но не универсален. В следующих ситуациях стоит рассмотреть переход на PowerShell или приложение на .NET.

Ситуация Решение Почему
Нужна обработка данных на сотни тысяч строк PowerShell или приложение для пакетной обработки Циклы в потоках на компьютере не рассчитаны на такие объёмы
Сложная бизнес-логика, для которой нужны автотесты Приложение на .NET Юнит-тесты самого потока затруднены, и с ростом сложности логики растёт стоимость проверки
Нужен постоянно работающий процесс с высокой частотой и низкой задержкой Служба Windows / Generic Host + BackgroundService Стоимость запуска и выполнения потока не подходит для обработки в реальном времени
У целевой системы уже есть API Прямой вызов API Интеграция через API стабильнее UI и дешевле в сопровождении
Раскладка целевого экрана часто меняется Избегать UI-автоматизации, искать альтернативу Затраты на сопровождение селекторов начинают превышать пользу
Обязательны строгая история изменений и код-ревью на уровне исходного кода PowerShell / .NET под Git Экспорт потока (zip) годится как условная резервная копия, но не для код-ревью

Когда появляется ощущение, что «то, что собрали в Power Automate, разрослось и стало слишком сложным», чаще выгоднее не продолжать через силу расширять поток, а вынести основную логику в .NET или PowerShell и оставить Power Automate триггеры и уведомления. Практический пример автоматизации разбора логов и архивирования на PowerShell — в статье «PowerShell на практике — безопасная автоматизация анализа логов, архивирования и отчётов».

11. Итог

Первый шаг в Power Automate делается на удивление легко. Обратная сторона этой лёгкости в том, что поток может заработать, даже если проектирование урезали. Останется ли продуктивный поток удобным в сопровождении надолго, почти целиком зависит от того, сколько «незаметных» решений приняли в самом начале.

Что выбрать — облачный поток или поток на компьютере, и какие задачи лучше отдать PowerShell или .NET. Если это развести заранее, переделок потом заметно меньше. Обработка ошибок, UI-селекторы, учётные данные, лицензии и политики DLP несравнимо дешевле заложить сразу, чем чинить после того, как что-то уже сломалось. И то, хватит ли решимости, когда поток разрастётся, не расширять его через силу, а вынести обработку в .NET или PowerShell, тоже определяет, проживёт ли решение долго.

Именно такая разница в проектировании отделяет «поток, который просто работает» от «потока, которому можно спокойно доверять». Чем сильнее автоматизация завязана на существующие учётные системы и активы Excel/VBA, тем сильнее ранние решения влияют на стоимость сопровождения.

Похожие статьи

Смежные области консультирования

KomuraSoft LLC (合同会社小村ソフト) консультирует по поэтапной автоматизации и модернизации с сохранением существующих бизнес-активов на Excel, VBA и Windows, а также проводит ревью проектирования платформ автоматизации, включая Power Automate.

Справочные материалы

  1. Microsoft Learn, Handle errors in desktop flows. Об обработке ошибок на уровне блока через On Block Error, приоритете настроек отдельных действий и настройке повторов.  2 3 4 5

  2. Microsoft Learn, Data loss prevention (DLP) policies. О применении политик DLP к потокам на компьютере и о классификации «данные организации / не данные организации / блокировка».  2

  3. Microsoft Learn, Types of Power Automate licenses. О видах пользовательских и потоковых лицензий и о лицензионном контексте автоматических и мгновенных потоков.  2 3 4 5

  4. Microsoft Learn, Attended and unattended scenarios for process automation. О различии между выполнением с участием пользователя и без него и о лицензиях и форме запуска для каждого режима.  2 3

  5. Microsoft Learn, Trigger desktop flows from cloud flows. О конфигурации, в которой облачный поток вызывает поток на компьютере.  2

  6. Microsoft Learn, Run unattended desktop flows. О том, что в Windows 10/11 выполнение без участия пользователя завершается ошибкой, если у кого-либо осталась заблокированная сессия; что в Windows Server речь идёт только о заблокированной сессии самого пользователя подключения; и о том, что нужен именно выход из системы, а не блокировка или отключение. 

  7. Microsoft Learn, Run Office Scripts with Power Automate. Об автоматизации, которая сочетает Office Scripts и Power Automate, и о необходимых лицензиях. 

  8. Microsoft Learn, Deep dive on specific licenses. Подробности о лицензиях Power Automate Premium, Process и Hosted Process.  2

  9. Microsoft Learn, Solutions in Power Apps. О том, что решение — это механизм переноса приложений и компонентов между средами и применения пакета настроек к существующему приложению; что в одном решении можно собрать несколько видов компонентов, включая потоки; и что через решения продукты Power Platform, включая Power Automate, реализуют ALM (управление жизненным циклом приложений). 

  10. Microsoft Learn (русская версия справочника действий), Действия с папками, Действия с файлами, Действия Excel, Действия с переменными, Действия с датой и временем, Действия с текстом, Действия управления потоком. Источник русских имён действий, которые в тексте указаны рядом с английскими (Получить файлы в папке, Чтение из CSV-файла, Записать текст в файл, Преобразовать файл в двоичные данные, Запустить Excel, Запись на лист Excel, Задать переменную, Увеличить переменную, Получить текущие дату и время, Преобразовать дату и время в текст, При ошибке блока, Получить последнюю ошибку, Запустить вложенный поток). 

  11. Microsoft Learn, Overview of the unattended robotic process automation with Microsoft 365 Apps for enterprise. О том, что без лицензии Microsoft 365 Apps for enterprise (unattended) приложения Office при выполнении без участия пользователя работают в режиме ограниченной функциональности. 

  12. Microsoft Learn, Office 365 Outlook actions reference. О том, что для вложения в Send an email (V2) файл нужно предварительно преобразовать действием Convert file to binary data и передать как Name / ContentBytes.  2

  13. Microsoft Learn, Employ robust error handling. Рекомендации по проектированию обработки ошибок. 

  14. Microsoft Learn, Build a custom selector. О том, как сделать селектор динамичным, о переходе на запасные селекторы и о функции Repair selector.  2 3 4

  15. Microsoft Learn, Automate using UI elements. О способах указания UI-элементов и о подходах к ожиданию и повтору. 

  16. Microsoft Learn, Secure your data. О безопасном получении учётных данных действием Get credential и об их отсутствии в журнале выполнения. 

  17. Microsoft Learn, Create an Azure Key Vault credential. О настройке Azure Key Vault как хранилища секретов.  2

  18. Microsoft Learn, Data policies. О подходе к управлению через классификацию коннекторов (только данные организации / не данные организации / заблокировано). 

  19. Microsoft Learn, Understand flow failure notifications in Power Automate. О том, что оповещение на конкретный запуск уходит владельцу и совладельцам только если причину удалось отнести к «известному и исправимому»; что по одному потоку действует пауза 28 дней; что письмо не уйдёт, если оповещение не включено в параметрах потока; что еженедельный дайджест включает и обычные сбои без оповещения; что полный обзор дают Monitor в центре администрирования Power Platform или журнал выполнения на странице сведений о потоке; и что смотреть нужно первое упавшее действие, а не каскад сбоев.  2 3

  20. Microsoft Learn, Monitor your flows. О том, что на странице сведений о потоке в Analytics видны доля успехов и сбоев и журнал за последние 30 дней; что анализ по среде, включая журнал за последние 28 дней, смотрят в центре администрирования Power Platform; и о вариантах наблюдения через Automation Center, Application Insights и таблицу FlowRun в Dataverse. 

  21. Microsoft Learn, On-premises data gateway. О механизме безопасного моста между локальными данными и облачными службами. 

Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.

Эти страницы показывают тему статьи в более широком контексте услуг и решений.

Статья напрямую связана со следующими услугами.

Частые вопросы

Вопросы, которые часто возникают при консультациях по теме статьи.

Как выбирать между облачным потоком и потоком на компьютере?
Облачный поток соединяет облачные службы через коннекторы и хорошо подходит для согласований, уведомлений, интеграции с SaaS и процессов вокруг Microsoft 365. Поток на компьютере — это RPA, которая напрямую управляет приложениями и экранами Windows; это реалистичный выбор, когда нужно работать с экраном старой системы без API или с Win32-приложением. На консультации полезно сразу разделить: речь о соединении облачных служб или об управлении экраном — от этого дальше всё становится понятнее.
Что выбрать — Power Automate или PowerShell?
Если нужно просто автоматизировать типовую работу на ПК и клики или ввод на экране не обязательны, PowerShell обычно проще сопровождать, и его легче вести в Git. Управлять через UI системой, у которой уже есть API, в принципе менее стабильно, чем вызывать этот API напрямую из PowerShell или .NET. Обработка данных на сотни тысяч строк, сложная логика, для которой нужны автотесты, и высокочастотные постоянно работающие процессы — тоже задачи для PowerShell или .NET. Если поток стал слишком сложным, основную логику лучше вынести наружу, а Power Automate оставить для триггеров и уведомлений: так сопровождать проще.
Какая лицензия нужна для выполнения без участия пользователя в Power Automate?
Для выполнения без участия пользователя нужна отдельная от режима с участием пользователя лицензия — Power Automate Process, которую привязывают к потоку или машине. Прежняя надстройка Unattended RPA add-on считается устаревшей и заменена лицензией Process. Сама по себе Process не заменяет пользовательскую лицензию: машину должен зарегистрировать пользователь с Power Automate Premium. Кроме того, в Windows 10/11 выполнение без участия пользователя завершается ошибкой, если у кого-либо осталась заблокированная сессия, поэтому все должны полностью выйти из системы (sign out).
Из-за чего UI-автоматизация потоков на компьютере становится нестабильной?
Чаще всего причина — способ идентификации UI-элементов, то есть селектор. Если в него попадают атрибуты, которые легко меняются, например порядковые индексы или динамические ID, поток ломается даже при внешне том же экране. Имеет смысл для изменяющихся атрибутов заменить Equals на Contains или регулярное выражение, задать несколько селекторов с переходом на запасной при сбое первого, а при поломке селектора воспользоваться Repair selector, чтобы получить кандидатов на исправление. Не стоит полагаться только на фиксированный Wait: его нужно сочетать с действиями условного ожидания. Будет ли автоматизация работать и через полгода, почти целиком зависит от того, как собраны селекторы.

Об авторе

Страница с профилем автора статьи.

Го Комура

Представитель KomuraSoft LLC

Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.

Публичные ссылки

Вернуться в блог