Автоматизация переноса данных в базовую систему с помощью Power Automate for Desktop — замена ручного ввода из Excel и с бумаги автоматизацией интерфейса
· Го Комура · Power Automate, RPA, Поток рабочего стола, Автоматизация интерфейса, Excel, Базовая система, Автоматизация бизнес-процессов, Техническая консультация
«Заказы, поступающие через веб-форму или по электронной почте, сотрудник каждый день вручную перепечатывает в корпоративную систему управления продажами». «Перенос данных об учёте рабочего времени и заявок из Excel в базовую систему в конце месяца занимает целых два дня». Такие обращения мы получаем очень часто. Общее в них то, что система назначения — это старое бизнес-приложение, которое используется уже 10–20 лет (экран времён WinForms или VB6, специализированный клиент), без API и без функции импорта CSV.
Модернизация системы решила бы проблему в корне, но нередко ручной ввод продолжается по причинам вроде «поставщика уже не существует», «исходного кода нет» или «затраты на доработку не окупаются». Практичный инструмент, закрывающий этот разрыв, — автоматизация интерфейса средствами Power Automate for desktop (PAD). Поскольку она просто воспроизводит те же нажатия клавиш и действия мышью, что выполняет человек, автоматизировать перенос данных можно без вмешательства в саму систему назначения. К тому же на Windows 11 её можно опробовать без какой-либо дополнительной установки.
Впрочем, автоматизация интерфейса — это ещё и инструмент, который «легко запустить в первый раз, но трудно поддерживать в стабильной работе». В этой статье, сосредоточившись именно на переносе данных, мы разберём всё: от того, стоит ли вообще выбирать автоматизацию интерфейса, через границу между бесплатным использованием и лицензированием, до проектирования устойчивой работы и восстановления после сбоев. Общие принципы использования разных частей Power Automate и обработки ошибок мы рассмотрели в статье «Автоматизация бизнес-процессов с Power Automate ── выбор между облачным потоком и потоком рабочего стола, проектирование обработки ошибок», а здесь — частный случай применительно к переносу данных.
1. Сначала вывод
- Автоматизация интерфейса — это последнее средство. Сначала стоит проверить, нет ли у системы назначения импорта CSV, прямой записи в базу данных, API или файлового обмена. Если найдётся хотя бы один из этих вариантов, он окажется заведомо более стабильным.
- PAD встроен в Windows 11 по умолчанию, а на Windows 10 его можно бесплатно установить. С помощью рекордера и более чем 400 действий поток, который читает Excel и вводит данные на экран, можно собрать без единой строчки кода.12
- Если только создавать поток и запускать его вручную (в режиме присутствия оператора), дополнительных затрат не требуется — это верно и для рабочей/учебной учётной записи, и для учётной записи Microsoft. А вот автоматический запуск из облачного потока, выполнение по расписанию и совместное использование потока требуют лицензии Power Automate Premium.34
- Для безучастного выполнения (unattended), как в случае ночных пакетных заданий, дополнительно требуются регистрация машины и лицензия Power Automate Process. Есть и специфические технические требования — например, все пользователи на машине должны быть предварительно разлогинены.56
- Ключ к стабильной работе — три вещи: правильное построение селекторов, ожидание появления элементов и обработка исключений в расчёте на одну запись. Поток, состоящий из одних фиксированных пауз (Wait), рано или поздно обязательно сломается.789
- Чтобы при сбое можно было понять, «докуда дошёл ввод», с самого начала закладывайте в проект колонку статуса и колонку номера регистрации в исходном файле Excel, обновляемые после каждой записи. Тогда повторный запуск не приведёт к двойному вводу.
- Поскольку риск поломки при изменении экрана никуда не девается, процессы с большим количеством записей, критичные к простоям или связанные с часто обновляемым приложением, относятся к области разработки интеграции данных или модернизации базовой системы. Где именно проходит эта граница, разберём в главе 8.
2. В чём проблема с переносом данных
Перенос данных из Excel или с бумаги в базовую систему создаёт проблемы, которые выходят далеко за рамки «простая работа отнимает время». В обращениях к нам чаще всего повторяются три момента.
- Время концентрируется вокруг даты закрытия периода. Ежедневный ввод заказов ещё как-то распределён во времени, но обработка счетов и сведение учёта рабочего времени на конец месяца превращаются в аврал, сжатый в 1–2 дня сразу после даты закрытия. В этот период сотрудник почти не может заниматься ничем другим. Скорее всего, многие компании компенсируют это переработками или привлечением помощи.
- Ошибки ввода утекают дальше по цепочке. Опечатка в разряде числа, сдвиг строки, перепутанный код товара. Ошибка переноса данных обнаруживается уже после того, как превратилась в неверный счёт или неправильный остаток на складе, поэтому расследование причины и исправление занимают в разы больше времени, чем сама ошибка ввода. Двойная проверка снижает число ошибок, но увеличивает затраты времени.
- Работа становится делом одного конкретного человека. Знания вроде «на этом экране нужно вводить именно в таком порядке, иначе будет ошибка» или «для этого одного клиента нужен особый способ ввода» накапливаются исключительно в голове исполнителя, и его отсутствие останавливает всю работу.
Ценность автоматизации не сводится к экономии времени. Поток всегда вводит данные строго так, как задано, поэтому ошибки переноса исчезают, а поскольку процедура фиксируется в виде самого потока, снижается и зависимость от конкретного человека. Немаловажно и то, что можно сгладить пик нагрузки вокруг даты закрытия периода.
Отметим, что если источником данных служит бумага или факс, перед переносом нужен ещё этап «распознавания». Про OCR факсимильных бланков заказа мы пишем в статье, опубликованной одновременно с этой, — «Как распознавать факсимильные бланки заказов с помощью AI Builder и обрабатывать их в Power Automate», а в этой статье исходим из того, что источник переноса уже представлен в виде данных, например Excel.
3. Варианты автоматизации — автоматизация интерфейса как последнее средство
Первое, что хочется подчеркнуть: автоматизация действий на экране (автоматизация интерфейса) — это последний вариант в списке. Она зависит от «особенностей отображения» — раскладки экрана, разрешения, скорости отклика, — поэтому как бы аккуратно её ни делать, она неизбежно окажется менее надёжной, чем способ прямой передачи данных. Сначала стоит проверить, нет ли у базовой системы назначения одного из следующих способов интеграции.
| Способ интеграции | Что проверить | Стабильность | Примечание |
|---|---|---|---|
| Импорт CSV или файлов фиксированной длины | Нет ли в глубине меню пункта «импорт внешних данных» или «массовая регистрация». Уточнить у поставщика по документации или поддержке | Высокая | Даже старые бизнес-системы неожиданно часто это умеют. Генерацию файла импорта можно автоматизировать через PAD или PowerShell |
| Прямая запись в базу данных | Известны ли тип СУБД и параметры подключения, разрешена ли прямая запись условиями договора на сопровождение с поставщиком | Высокая | Есть риск обойти бизнес-логику (нумерацию, проверки целостности), поэтому чтение — напрямую, а запись — с осторожностью. Требует проверки |
| API или интеграционное middleware | Есть ли опция интеграции у более новой версии пакета | Высокая | Сопоставить со стоимостью опции |
| Файловая интеграция (наблюдаемая папка) | Есть ли механизм, забирающий файлы из указанной папки | Высокая | Часто встречается в системах отчётности и складских системах |
| Автоматизация интерфейса (PAD) | Когда ничего из перечисленного выше нет | Средняя | Единственный способ, не требующий вмешательства в экран. Тема этой статьи |
Ещё один вариант — двигаться в сторону «устранения» переноса как такового, то есть модернизации или переработки самой базовой системы. Решения вроде добавления функции импорта в приложение на VB6 или полной переработки точки входа заказов в веб-форму мы разбираем в статьях «До каких пор будут работать приложения VB6 ── состояние поддержки среды выполнения и практичный путь миграции на .NET» и «Когда не стоит переводить Windows-приложение в веб: таблица решений и «разделение» как реальный выход». Модернизация требует бюджета на разработку, поэтому вполне реалистичен и такой порядок действий: сначала автоматизировать через PAD, чтобы выиграть время, а инвестировать в модернизацию — когда объём работы вырастет и станут видны пределы автоматизации.
4. Основы Power Automate for Desktop
Низкий порог входа
PAD встроен в Windows 11 по умолчанию. Достаточно найти «Power Automate» через поиск в меню «Пуск» — приложение обнаружится, а при первом запуске автоматически загрузится, и им можно будет сразу пользоваться.2 На Windows 10 и Windows Server 2016 тоже есть право на использование, и его можно бесплатно установить из Центра загрузки.2 Существует два способа установки — версия из Microsoft Store и версия с MSI-инсталлятором; если вы уже смотрите в сторону облачной интеграции (регистрации машины, о которой пойдёт речь ниже), выбирайте MSI-версию — вместе с ней ставится и приложение среды выполнения на машине (machine runtime).10
Рекордер: строим черновик
В PAD есть рекордер, который записывает действия и превращает их в последовательность шагов. Он записывает операции мыши и клавиатуры в привязке к элементам интерфейса, чего вполне достаточно для построения черновика потока переноса данных. Здесь для задач переноса данных важно, что можно выбрать один из двух способов записи — UIA (UI Automation) или MSAA (Microsoft Active Accessibility). UIA — рекомендуемый способ для относительно новых приложений вроде WPF или WinForms, а MSAA — способ для старых приложений, чьи элементы UIA не может распознать, таких как VB6 или классический Win32. Если на экране старой базовой системы элементы не захватываются как следует, переключение режима записи рекордера на MSAA иногда помогает.11
Впрочем, рекордер годится только для черновика. Он не умеет записывать условные переходы и циклы, поэтому предполагается, что после записи поток дорабатывается вручную в дизайнере.11
Элементы интерфейса и селекторы
PAD запоминает кнопки и текстовые поля на экране как «элементы интерфейса». По сути, за этим стоит селектор — способ определить элемент через сочетание иерархии окон и атрибутов. Срок жизни потока переноса данных почти целиком определяется тем, насколько хорошо построены эти селекторы. Если селектор содержит порядковый индекс или динамически меняющийся ID, он однажды может внезапно перестать распознавать элемент, даже если экран выглядит точно так же. Атрибуты с изменяющимися значениями стоит переводить с Equals на Contains или регулярное выражение, для важных операций задавать резервные селекторы с механизмом отката, а при поломке использовать функцию Repair selector для генерации вариантов восстановления. Об этих базовых принципах мы уже писали в общей статье-руководстве.7
Есть одна особенность, специфичная именно для переноса данных. Действия автоматизации интерфейса рассчитаны на то, что целевое окно находится на переднем плане, и если это не так, автоматически выводят его вперёд.12 Иными словами, ПК, на котором выполняется поток, по сути «отдан ему в единоличное пользование». Не стоит запускать поток на той же машине, где сотрудник параллельно занимается другой работой, — это верный путь к случайным кликам и ошибочному вводу.
Базовая структура переноса: чтение из Excel, запись на экран
Базовая форма потока переноса данных — «прочитать действием Excel → в цикле построчно записать через UI-операции». Файл открывается действием Launch Excel, а диапазон читается действием Read from Excel worksheet, превращаясь в переменную типа таблицы данных. Если включить опцию «использовать первую строку как имена столбцов», в последующем цикле можно будет обращаться к значениям по имени столбца, например CurrentItem['CustomerCode'], что делает поток устойчивее к перестановке столбцов.13 Для записи результатов обратно используется Write to Excel worksheet. Если нужно дописать данные в конец, свободную строку можно найти действием Get first free row on column.13
5. Что доступно бесплатно и где проходит граница лицензирования
При принятии решения о внедрении PAD обязательно возникает вопрос: «где заканчивается бесплатное использование и начинается платное?» Граница проходит между «создавать и запускать вручную» и «запускать автоматически и управлять на уровне организации».
| Что можно делать | Учётная запись Microsoft | Рабочая/учебная учётная запись (без доп. лицензии) | Power Automate Premium |
|---|---|---|---|
| Создание потоков, рекордер, более 400 действий, обработка исключений | Да | Да | Да |
| Место хранения потоков | OneDrive (личный) | Dataverse среды по умолчанию | Dataverse в нескольких средах |
| Запуск вручную из консоли PAD (в режиме присутствия оператора) | Да | Да | Да |
| Запуск из облачного потока (по расписанию/событию) | Нет | Нет | Да |
| Совместное использование потоков, централизованное управление журналами выполнения | Нет | Нет | Да |
Создание и ручной запуск не требуют дополнительных затрат ни для какого типа учётной записи.34 С учётной записью Microsoft потоки сохраняются в OneDrive, а с рабочей/учебной учётной записью — в Dataverse среды по умолчанию. Если инструмент используется в компании, разумно с самого начала работать с рабочей учётной записью — это удобнее для последующего управления.4
Граница пересекается в тот момент, когда возникает желание, чтобы поток работал «без нажатия кнопки человеком». Чтобы запускать поток рабочего стола в заданное время или по событию, его нужно настроить на вызов из облачного потока, а для этого требуется следующая подготовка.14
- Регистрация машины: ПК, на котором будет выполняться поток, регистрируется в облаке Power Automate. Регистрация происходит при входе через приложение среды выполнения машины, входящее в MSI-версию. Обратите внимание: редакции Home Windows 10/11 не поддерживают это прямое подключение.10
- Подключение потока рабочего стола: создаётся подключение (учётные данные учётной записи Windows), по которому облачный поток входит в систему на этой машине.14
- Лицензия: пользователь, создающий подключение, должен иметь лицензию, соответствующую режиму выполнения.14 Для запуска на ПК, где выполнен вход пользователя, — то есть для выполнения в режиме присутствия оператора (attended) — нужна Power Automate Premium (пользовательская лицензия, включающая права attended RPA).106
- Для безучастного выполнения (unattended) дополнительно требуется назначить машине лицензию Power Automate Process. Лицензия Process привязывается не к пользователю, а к машине (или потоку), и даёт один слот безучастного выполнения (безучастного бота) на машину. Важный нюанс: машина, которой назначается лицензия Process, должна быть уже зарегистрирована пользователем с лицензией Premium. Иными словами, купить только Process недостаточно — без пользователя с Premium настроить это не получится.56
Подводя итог: если сценарий работы такой — «сотрудник утром нажимает кнопку и наблюдает, как перед ним выполняется перенос данных», — всё укладывается в бесплатные рамки. А сценарий «всё само заканчивается посреди ночи» требует Premium + Process (плюс зарегистрированную машину). Если перенос занимает около 30 минут в день, вполне достаточно начать с бесплатного выполнения в режиме присутствия оператора, а переход к безучастному режиму рассматривать уже при росте объёма. Общий подход к лицензированию (включая границу между стандартными и премиум-коннекторами) подробно разобран в статье, опубликованной одновременно с этой, — «Лицензирование Power Automate и граница между стандартными и премиум-коннекторами».
6. Проектирование для стабильной работы
Ждать элемент, а не фиксированную паузу
У старых базовых систем время отклика на поиск и регистрацию сильно колеблется в зависимости от нагрузки. Поток, подстроенный под фиксированную паузу вроде «подождать 3 секунды», обязательно сломается в день, когда система работает медленно. Базовый подход — использовать действие Wait for window content, чтобы «ждать появления (или исчезновения) конкретного элемента интерфейса или текста».8 У получения окна (Get window) также можно задать тайм-аут, выбрав между «завершить с ошибкой через заданное время, если не найдено» и «ждать, пока не появится».8 В потоке переноса данных особенно важно ожидание вида «дождаться сообщения о завершении регистрации и только потом переходить к следующей строке». Если начать следующий ввод без ожидания, экран переключится раньше, чем завершится регистрация предыдущей строки, и данные перемешаются.
Обработка исключений — на уровне одной записи
Стандартный приём для обработки исключений в потоке переноса данных — оборачивать в On Block Error не весь поток целиком, а одну запись внутри цикла. При ошибке фиксируются сведения о сбое для этой строки, экран возвращается в исходное состояние (например, экран ввода закрывается, происходит возврат в меню), и обработка переходит к следующей строке. Тогда даже если из 100 записей ошибка окажется только в коде товара одной из них, остальные 99 будут введены, а вручную разбираться придётся только с одной неудачной. Для временных сбоев (например, задержки отклика) можно дополнительно использовать настройку повторных попыток на уровне отдельного действия.9 Более тонкие приёмы обработки ошибок (получение сведений об ошибке через Get last error, проектирование очистки после сбоя и т. п.) мы оставляем общей статье-руководству и статье «Обработка ошибок и проектирование повторных попыток в Power Automate», опубликованной одновременно с этой.
Чтобы при сбое было понятно, «докуда дошёл ввод»
В автоматизации интерфейса нет транзакций, как в веб-системах. Если поток падает на середине и непонятно, «до какой строки данные уже зарегистрированы в базовой системе», остаётся выбор из двух зол: либо получить двойной ввод при повторном запуске, либо вручную сверять всё целиком. Есть два приёма проектирования, которые это предотвращают.
- Добавить в исходный Excel-файл колонку статуса. Подготовьте колонку статуса со значениями «не обработано», «в обработке», «завершено», «ошибка» и колонку с номером регистрации, присвоенным базовой системой. Перед началом ввода одной записи статус ставится в «в обработке», после подтверждения завершения регистрации на экране и считывания номера регистрации записывается «завершено» плюс номер. Поскольку поток всегда обрабатывает только строки со статусом «не обработано», сколько бы раз его ни перезапускали, уже введённые строки он не трогает (безопасность при повторном запуске).
- Человеку нужно проверять только строки, оставшиеся в статусе «в обработке». Если поток падает, то это происходит посреди ввода, поэтому под подозрением оказываются только строки со статусом «в обработке». Достаточно проверить эту одну строку в базовой системе перед повторным запуском — область сверки сокращается со 100 записей до одной.
Эта колонка статуса заодно служит журналом выполнения. Ответ на вопрос «весь ли вчерашний перенос данных завершён» можно получить, просто открыв Excel, даже не заглядывая в историю выполнения потока — форма, которую легко объяснить сотрудникам на местах.
Ловушки среды безучастного выполнения
Мы очень часто получаем обращения о том, что поток, работавший в режиме присутствия оператора, перестаёт работать, стоит только перевести его в безучастный режим. Причина почти всегда — в различиях среды выполнения.
- Требования к сеансу: в безучастном режиме Power Automate создаёт на целевой машине новый сеанс удалённого рабочего стола (RDP) и завершает сеанс выходом после выполнения. Пока поток работает, экран целевой машины остаётся заблокированным. Обязательное условие — все пользователи на машине должны быть предварительно разлогинены: на Windows 10/11 выполнение завершится ошибкой, если останется хотя бы чья-то сессия (даже заблокированная). На Windows Server ошибка возникает, если остаётся заблокированная сессия того же пользователя, что используется для подключения. Если после обслуживания есть привычка уходить через «блокировку» или «отключение» вместо выхода из системы, ночной поток остановится. Лозунг здесь простой: обязательно выходите из системы.5
- Права: пользователь, используемый для подключения, должен иметь возможность создавать RDP-сеанс на этой машине (обычно за счёт членства в группе Remote Desktop Users). Кроме того, безучастное выполнение не поддерживает операции, требующие повышения до прав администратора.5
- Разрешение экрана: разрешение RDP-сеанса по умолчанию может отличаться от экрана, на котором создавался поток. Если разрешение ниже, элементы интерфейса, видимые во время создания потока, оказываются за пределами экрана, что приводит к сбою «элемент не найден», либо операция по координатам попадает совсем в другое место.5 В качестве меры противодействия в свойствах потока можно зафиксировать «разрешение экрана для безучастного выполнения» таким же, каким оно было при создании.15 Разница в масштабировании DPI приводит к сбоям того же рода, поэтому безопаснее выставить 100% и при создании, и при выполнении.16
Проверив всё это, настраивайте запуск по расписанию (например, каждое утро буднего дня в 6:00) уже на стороне облачного потока. Проектирование расписания с учётом определения рабочих дней и обработки конца месяца рассмотрено в статье «Регулярное выполнение потоков Power Automate и проектирование с учётом рабочих дней», опубликованной одновременно с этой.
7. Пример проектирования потока переноса данных
Если собрать воедино все рассмотренные выше элементы, получится вот такой типичный поток переноса данных: «Excel-файл со списком заказов → экран ввода заказов базовой системы → запись результата обратно в Excel».
flowchart TD
Start([Начало: запуск вручную или из облачного потока]) --> ReadX[Read from Excel worksheet<br/>Чтение списка заказов, первая строка — имена столбцов]
ReadX --> Filter{Есть ли строки со статусом «не обработано»?}
Filter -- Нет --> Report[Собрать итоги, записать лог и уведомить] --> End([Конец])
Filter -- Есть --> Launch[Запустить базовую систему и войти<br/>Дождаться появления главного меню ожиданием элемента]
Launch --> Loop[Цикл по необработанным строкам по одной<br/>Тело цикла обёрнуто в On Block Error]
Loop --> Mark[Обновить статус строки на «в обработке»]
Mark --> Entry[Открыть экран ввода заказа и заполнить поля<br/>Wait for window content при каждом переходе экрана]
Entry --> Confirm[Кнопка регистрации → ожидание сообщения о завершении<br/>Считать присвоенный номер регистрации с экрана]
Confirm --> WriteBack[Установить статус «завершено» и записать номер регистрации]
WriteBack --> Loop
Loop -. Ошибка на одной записи .-> Handler[Записать в строку сведения об ошибке<br/>Сбой до регистрации → «ошибка», сбой после регистрации → оставить «в обработке»<br/>Вернуть экран в меню и перейти к следующей строке]
Handler --> Loop
Loop -- Все записи обработаны --> Close[Выйти из базовой системы и закрыть её] --> Report
Несколько замечаний по проектированию.
- Проверяйте входные значения до любой UI-операции. Число разрядов кода товара, наличие текста в числовом поле, отсутствие обязательных полей — всё это стоит проверять на стороне потока сразу после чтения Excel, помечая подозрительные строки как «ошибка» ещё до того, как они коснутся базовой системы. Отсекать некорректные данные заранее в разы надёжнее, чем разбирать диалоги ошибок базовой системы через UI-операции.
- Помечать статус «ошибка» допустимо только для сбоев до нажатия кнопки регистрации. Если обработка ошибок единообразно переписывает колонку статуса в «ошибка», в неё попадут и строки, для которых операция регистрации прошла успешно, но сбой произошёл позже (например, во время ожидания сообщения о завершении или при записи результата обратно) — это чревато тем, что сотрудник повторно запустит эту строку и получит двойную регистрацию в базовой системе. Для сбоев, произошедших после операции регистрации, колонку статуса нужно оставлять в значении «в обработке», не включать строки, застрявшие в «в обработке», в повторный запуск, а переводить их в «завершено» или «не обработано» только после того, как человек вручную сверит наличие регистрации в базовой системе. Суть этого подхода — не устранять неоднозначность, а сознательно передавать неоднозначные случаи на проверку человеку.
- Учитывайте диалоги ошибок на экране. Ошибки на этапе ввода (нехватка товара на складе, ошибка кредитного лимита клиента и т. п.) всё равно будут случаться. Диалоги, которые можно предвидеть, следует перехватывать условным переходом «содержит ли окно…» и записывать в сведения об ошибке строки, а непредвиденные случаи оставлять на откуп On Block Error.9
- Держите в уме ориентировочные объёмы и время. Автоматизация интерфейса нередко занимает десятки секунд на одну запись. Если 100 записей укладываются в час, это вполне вписывается в ночное безучастное выполнение, а вот несколько тысяч записей в день — это сигнал пересмотреть саму автоматизацию интерфейса как способ решения (следующая глава).
- Нормализацию исходных данных выполняйте заранее. Ловушки, связанные с CSV и Excel — расхождения в кодировках и форматах дат, смешение полноширинных и полуширинных символов, — разобраны в статье «CSV — не «просто текст»: практика работы с CSV в бизнес-приложениях на C# (кодировки, совместимость с Excel, защита от инъекций)».
8. Где заканчивается зона ответственности PAD
Автоматизация интерфейса рано или поздно ломается, как только меняется экран. Это не то, что можно решить проектированием, — это неизбежная особенность самого метода. Именно поэтому важно заранее провести границу между переносом данных, который допустимо автоматизировать через PAD, и переносом, который стоит выносить в разработку или модернизацию.
| Ситуация | Решение |
|---|---|
| Десятки–сотни записей в день, повторный запуск на следующий рабочий день допустим даже при сбое | PAD достаточно. Начинать с режима присутствия оператора |
| Экран целевого приложения не менялся годами («замороженное» легаси-приложение) | Хорошо подходит для PAD. Как ни странно, «неизменный экран» отлично сочетается с автоматизацией интерфейса |
| Целевое приложение часто обновляется (например, веб-экран SaaS) | Решать с расчётом на постоянное сопровождение селекторов. Если ломается при каждом обновлении, автоматизация интерфейса не подходит |
| Несколько тысяч и более записей в день, время выполнения давит на рабочие часы | Скорость обработки автоматизации интерфейса упирается в потолок. Область разработки функции импорта CSV или интеграции данных (на заказ) |
| Критичный процесс, остановка которого останавливает отгрузку/выставление счетов в тот же день | Если недопустимо «вернуться к ручному вводу до устранения сбоя», автоматизация интерфейса не подходит. Рассмотреть модернизацию базовой системы или разработку интеграции между системами |
| Хочется, чтобы поток заодно принимал сложные бизнес-решения (резервирование товара, определение цены) | Встраивать бизнес-логику в поток невозможно поддерживать в долгосрочной перспективе. Бизнес-логика должна оставаться на стороне системы |
В качестве ориентира для решения мы используем такой критерий: «если этот поток останется сломанным на неделю, сможет ли бизнес работать, вернувшись к ручному вводу?» Если сможет — автоматизация через PAD вполне оправдана. Если нет — этот перенос данных уже не относится к «автоматизации», а является требованием к «интеграции систем», и пора рассматривать добавление функции импорта, интеграцию с базой данных или даже полную электронизацию самого приёма заказов (см. «Что такое EDI? Как это упрощает приём и оформление заказов между компаниями — от факса, e-mail и ручного ввода к обмену данными» и «Как перевести приём заказов по факсу в веб ── проектирование периода двойной эксплуатации и практика поэтапного перехода»).
Ещё один момент: потоки PAD тоже склонны превращаться в «актив, к которому может прикоснуться только тот, кто его создал». Вопрос о том, кто примет на себя содержимое потока, подключения и машину выполнения, разобран в статье «Меры против зависимости от одного человека в Power Automate ── проектирование владельца, подключений и передачи дел», опубликованной одновременно с этой.
9. Итог
Перенос данных в базовую систему без API и без импорта CSV можно автоматизировать через автоматизацию интерфейса PAD, «не вмешиваясь в саму систему». На Windows 11 начать можно сразу из коробки, а создание потока и его запуск вручную не требуют дополнительных затрат. Одного только освобождения сотрудника от часа ежедневного переноса данных и исчезновения расследования и исправления ошибок переноса достаточно, чтобы усилия по внедрению окупились с лихвой.
Однако важно не ошибиться в порядке действий и в проектировании. Перед автоматизацией интерфейса искать возможности импорта CSV, работы с БД, API или файловой интеграции. Начинать с бесплатного режима присутствия оператора, а для перехода к безучастному режиму учитывать необходимость лицензий Premium + Process и предварительно разлогиненной машины. Обеспечивать стабильность за счёт селекторов, ожидания элементов и обработки исключений на уровне одной записи, а записью колонки статуса всегда сохранять сведения о том, «докуда дошёл ввод». И как только объём, критичность или частота изменения экрана выходят за пределы возможностей автоматизации интерфейса — не пытаться развивать её через силу, а переключаться на модернизацию базовой системы или разработку интеграции данных.
Мы принимаем обращения на всём этом пути — от ревью проектирования автоматизации переноса данных через PAD до заказной разработки функций импорта, интеграции между системами и миграции легаси-приложений. Обращайтесь даже на стадии вопроса «а получится ли это у нас с нашей базовой системой».
Похожие статьи
- Автоматизация бизнес-процессов с Power Automate ── выбор между облачным потоком и потоком рабочего стола, проектирование обработки ошибок
- До каких пор будут работать приложения VB6 ── состояние поддержки среды выполнения и практичный путь миграции на .NET
- Когда не стоит переводить Windows-приложение в веб: таблица решений и «разделение» как реальный выход
- Обработка ошибок и проектирование повторных попыток в Power Automate
- CSV — не «просто текст»: практика работы с CSV в бизнес-приложениях на C# (кодировки, совместимость с Excel, защита от инъекций)
Смежные области консультирования
KomuraSoft LLC (合同会社小村ソフト) занимается консультированием по проектированию и стабилизации автоматизации переноса данных на Power Automate for desktop, а также разработкой интеграции данных для базовых систем и модернизацией легаси-приложений — там, где автоматизация интерфейса уже не справляется.
Справочные ссылки
-
Microsoft Learn, Get started with Power Automate in Windows 11. О приложении Power Automate, предустановленном в Windows 11, и о том, что более 400 действий и рекордер позволяют создавать потоки даже без опыта программирования. ↩
-
Microsoft Learn, Power Automate licensing FAQ. О том, что пользователи Windows 11 могут бесплатно использовать потоки рабочего стола с attended RPA в среде по умолчанию (без возможности совместного использования или создания в других средах), что поиск Power Automate в панели поиска Windows запускает автоматическую загрузку при первом запуске, а также о том, что Windows 10 и Windows Server 2016 тоже обладают правом на использование и приложение можно получить из Центра загрузки. ↩ ↩2 ↩3
-
Microsoft Learn, Get started with a work or school account. О том, что использование Power Automate for desktop с рабочей/учебной учётной записью не требует дополнительных затрат, что среде по умолчанию нужна база данных Dataverse, и что для разблокировки RPA-функций вроде автоматического запуска и совместного использования потоков требуется переход на Premium. ↩ ↩2
-
Microsoft Learn, Prerequisites and limitations. Сравнение возможностей по типу учётной записи (Microsoft / рабочая-учебная / премиум-учётная запись организации): рекордер, действия и обработка исключений доступны для всех типов, тогда как подключение к облачным потокам (запуск, расписание), совместное использование и централизованное управление/отчётность доступны только с Premium; о том, что местом хранения служит OneDrive или Dataverse. ↩ ↩2 ↩3
-
Microsoft Learn, Run unattended desktop flows. О необходимости плана Power Automate Process для безучастного выполнения, о создании Power Automate сеанса RDP и выходе из системы после выполнения, о блокировке экрана во время выполнения, о необходимости выхода из системы всех пользователей (на Windows 10/11 выполнение завершается ошибкой при наличии оставшихся сеансов, включая заблокированные), о необходимости у пользователя подключения прав на создание RDP-сеанса (группа Remote Desktop Users), о невозможности выполнения операций с повышением до прав администратора, а также о том, что разрешение RDP-сеанса по умолчанию может отличаться от использовавшегося при создании и приводить к сбоям «элемент не найден». ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Types of Power Automate licenses. О том, что права attended RPA (регистрация машины, запуск выполнения с присутствием оператора и т. п.) входят в пользовательскую лицензию Premium, что для unattended RPA требуется лицензия Process, назначаемая машине (один безучастный бот на машину), и что назначение лицензии Process машине предполагает её предварительную регистрацию пользователем с лицензией Premium. ↩ ↩2 ↩3
-
Microsoft Learn, Build a custom selector. О построении динамических, менее хрупких селекторов за счёт замены Equals на Contains или регулярное выражение для атрибутов с изменяющимися значениями, об откате через несколько селекторов и о генерации вариантов восстановления функцией Repair selector. ↩ ↩2
-
Microsoft Learn, UI automation actions. О действии Wait for window content, ожидающем появления/исчезновения определённого текста или элемента интерфейса, и о настройке тайм-аута действия Get window (выбор между завершением с ошибкой, если элемент не найден за заданное время, и ожиданием без ограничения). ↩ ↩2 ↩3
-
Microsoft Learn, Handle errors in desktop flows. Об обработке исключений на уровне блока действием On Block Error и о настройке повторных попыток на уровне отдельного действия (Retry action if an error occurs). ↩ ↩2 ↩3
-
Microsoft Learn, Manage machines. О регистрации машины через приложение среды выполнения машины (входит в MSI-инсталлятор), о том, что Windows 10 Home и Windows 11 Home не поддерживают прямое подключение, что запуск потока рабочего стола из облачного потока требует премиум-плана пользователя с attended RPA, а безучастное выполнение требует назначения машине объёма процесса (безучастного бота). ↩ ↩2 ↩3
-
Microsoft Learn, Record desktop flows. О том, что рекордер записывает операции мыши и клавиатуры в привязке к элементам интерфейса и превращает их в действия, что в качестве способа записи можно выбрать UIA (рекомендуется для новых фреймворков вроде WPF и WinForms) или MSAA (для легаси-приложений вроде VB6 и классического Win32, не поддерживаемых UIA), а также о том, что условные переходы и циклы не записываются и требуют доработки после записи. ↩ ↩2
-
Microsoft Learn, Automate desktop applications. О том, что действия автоматизации интерфейса требуют, чтобы целевое окно находилось на переднем плане, и автоматически выводят его вперёд, если это не так. ↩
-
Microsoft Learn, Excel actions. О создании экземпляра действием Launch Excel, о чтении отдельной ячейки или диапазона (с преобразованием в таблицу данных и опцией использования первой строки как имён столбцов) действием Read from Excel worksheet, о записи действием Write to Excel worksheet и о получении свободной строки действием Get first free row on column. ↩ ↩2
-
Microsoft Learn, Trigger desktop flows from cloud flows. О предпосылках запуска потока рабочего стола из облачного потока (зарегистрированная машина или группа машин, рабочая/учебная учётная запись, подключение потока рабочего стола, наличие у создателя подключения лицензии, соответствующей режиму выполнения), а также о передаче данных между облаком и рабочим столом через входные/выходные переменные. ↩ ↩2 ↩3
-
Microsoft Learn, Set screen resolution on unattended mode. О том, что если разрешение при безучастном выполнении оказывается ниже, чем при создании потока, и элементы скрываются, вызывая сбои, разрешение можно зафиксировать через свойства потока (Display resolution for unattended runs) или через реестр. ↩
-
Microsoft Learn, Troubleshoot unattended desktop flow execution failures. О том, что разница в разрешении или масштабировании DPI между сеансами с присутствием оператора и безучастными сеансами становится причиной сбоев, и о мерах вроде выравнивания DPI на 100% как при проектировании, так и при выполнении. ↩
Похожие статьи
Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.
Автоматизация бизнес-процессов с Power Automate — выбор между облачным потоком и потоком рабочего стола, проектирование обработки ошибок
Разбираем различия между облачными потоками и потоками рабочего стола в Power Automate, выбор между PowerShell и VBA, лицензирование, обр...
Перенос макросов Excel VBA на Power Automate — что можно заменить Office Scripts, а что оставить как VBA
Разбираем, можно ли перенести макросы Excel VBA на Power Automate: что заменяется Office Scripts, что умеет только VBA, ограничения конне...
Обработка ошибок и повторные попытки в Power Automate — как не допустить, чтобы работающий поток незаметно остановился
Сборник паттернов проектирования, которые не дают потокам Power Automate незаметно останавливаться: значения политики повторов по умолчан...
Проектирование регулярных потоков в Power Automate — практика обработки конца месяца, проверки рабочих дней и напоминаний
Практическое руководство по автоматизации регулярных процессов через триггер Recurrence в Power Automate: ловушка часового пояса UTC по у...
Автоматическая обработка PDF-файлов заказов и счетов, приходящих по почте, в Power Automate — проектирование сохранения, распределения, уведомлений и распознавания
Разбираем проектирование автоматизации сохранения, распределения и уведомлений для PDF-файлов заказов и счетов, приходящих по почте, сред...
Связанные темы
Эти страницы показывают тему статьи в более широком контексте услуг и решений.
Технические темы Windows
Раздел о разработке Windows, расследовании сбоев и использовании существующих активов.
Услуги по этой теме
Статья напрямую связана со следующими услугами.
Использование и перенос существующих активов
Помогаем использовать и переносить активы COM / ActiveX / OCX и зависимости 32/64 бит.
Частые вопросы
Вопросы, которые часто возникают при консультациях по теме статьи.
- Можно ли использовать Power Automate for desktop бесплатно?
- Да. Приложение Power Automate встроено в Windows 11 по умолчанию, а на Windows 10 его тоже можно бесплатно установить из Центра загрузки Microsoft. Рабочая или учебная учётная запись получает весь набор функций для создания потоков и ручного (присутствие оператора) выполнения — рекордер, более 400 действий, обработку исключений — без дополнительных затрат. Однако автоматический запуск из облачного потока, совместное использование потоков и централизованное управление журналами выполнения требуют платной лицензии Power Automate Premium.
- Что нужно, чтобы запускать поток переноса данных ночью или рано утром, когда рядом никого нет?
- Для безучастного выполнения (unattended) нужна конфигурация с вызовом из облачного потока, а для неё — регистрация целевой машины, создание подключения потока рабочего стола и назначение машине лицензии Power Automate Process. Саму регистрацию машины тоже должен выполнять пользователь с лицензией Premium. С технической стороны безучастное выполнение работает через создание нового сеанса удалённого рабочего стола, поэтому все пользователи на целевой машине должны быть уже разлогинены — если останется хотя бы одна заблокированная сессия, на Windows 10/11 выполнение завершится ошибкой.
- Говорят, что автоматизация интерфейса ненадёжна. Годится ли она для практического использования?
- Она вполне пригодна для практики, если экраны целевой базовой системы стабильны. Причина большинства поломок — способ определения элементов интерфейса (селекторы) и недостаточное ожидание, поэтому стабильность заметно повышается за счёт таких приёмов, как замена изменчивых атрибутов на Contains или регулярные выражения, настройка резервных селекторов и ожидание появления элемента вместо фиксированной паузы. Тем не менее сама судьба «сломаться при изменении раскладки экрана» никуда не девается, поэтому если целевое приложение обновляется часто, а объём или критичность работы таковы, что простой недопустим, стоит рассмотреть разработку интеграции данных или доработку самой базовой системы, а не автоматизацию интерфейса.
- Если поток переноса данных упадёт на середине, разве не потеряется информация о том, докуда дошёл ввод?
- Это можно предотвратить правильным проектированием. Суть в том, чтобы в исходном файле Excel была колонка статуса (не обработано / в обработке / завершено / ошибка) и колонка номера регистрации, а после ввода каждой записи — проверять результат регистрации в базовой системе и записывать статус обратно. Тогда при сбое в самом Excel останется информация о том, до какой строки данные уже зарегистрированы, а повторный запуск будет затрагивать только строки со статусом «не обработано», из-за чего двойной ввод не возникнет. Если обрабатывать исключения на уровне одной записи — фиксировать ошибочную строку и переходить к следующей, — единичная ошибка ввода не остановит весь процесс целиком.
Об авторе
Страница с профилем автора статьи.
Го Комура
Представитель KomuraSoft LLC
Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.
Публичные ссылки