Привет! Тема с RPA становится всё более хайповой. Принцип работы программных роботов и отличие RPA от других способов автоматизации освещаются на тематических порталах. Я же решил сосредоточиться на подходах к моделированию RPA-процессов. Для примера выбрал процесс регистрации счета покупателю. Остановился именно на нем, так как этот процесс универсален и актуален для компаний любой отрасли и масштаба.

Обобщенно регистрацию счета можно представить так:
  1. Менеджер по продажам отправляет бухгалтеру заявку на счет.
  2. Бухгалтер создает счет в учетной системе, формирует печатную форму счета и высылает ее обратно менеджеру.
  3. Если с покупателем ведется обмен электронными документами, то бухгалтер создает и отправляет ему счет в системе ЭДО.


В каждом конкретном случае этот кейс будет организован по-разному. Менеджер может работать в CRM-системе. Заявка на счет может отправляться через BPM-систему. А в качестве учетной могут использоваться различные конфигурации 1С, SAP или Oracle.

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

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

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

Технология RPA лучше всего показывает себя в рутинных задачах, где требуется простой перенос данных через заполнение форм, нажатие клавиш. В таких задачах не должно быть логики, которую нельзя представить в виде системы очень четких правил. Чем проще логика – тем дешевле реализовать такой процесс. Чем чаще он повторяется в бизнес-процессах компании, тем ощутимее будет выгода от его внедрения.

Робот выполняет процесс со скоростью немного превышающей скорость человека. На одном роботе может одновременно выполняться только одна задача. Поэтому, если с помощью автоматизации мы планируем переключить на робота операции, которые сейчас выполняются вручную, то RPA – подходящий вариант, если же данные должны обрабатываться с высокой скоростью – лучше рассмотреть другие способы.

В моем примере, где требуется простой перенос данных между системами и сверхчеловеческая скорость не обязательна, интеграция через RPA — оптимальное решение.

Моделирование процесса в RPA


Конкретный кейс регистрации счета, который я смоделировал, выглядит следующим образом:

  1. Менеджер по продажам запускает процесс формирования счета в BPM-системе.
  2. Бухгалтер, получив заявку на счет, создает его в 1С, формирует печатную форму счета и прикладывает ее к задаче.
  3. Если в заявке была информация, что с покупателем есть договоренность и работе через ЭДО, то бухгалтер создает счет в Контур Диадок, прикрепляет к нему печатную форму и отправляет покупателю.

Бизнес процесс регистрации счета

Робот берет на себя создание счета в 1С и отправку его в Диадок, таким образом процесс будет полностью автоматизирован.

Конечно, нет смысла описывать здесь пошаговую инструкцию, потому что в основном при моделировании выполняются повторяющиеся шаги. Да и в вашем случае реализация наверняка будет в чем-то отличаться. Я хочу рассказать скорее об общих подходах к реализации RPA-процессов и показать, как выполняются самые часто используемые шаги в дизайнере RPA.

RPA-процесс – это в первую очередь про взаимодействие с пользовательским интерфейсом. Робот должен повторить действия пользователя. А пользователь для навигации внутри окна приложения чаще всего использует клики мышкой по соответствующим визуальным элементам интерфейса. Если нужно закрыть окно, пользователь нажмет «крестик», для подтверждения действия — кнопку «ОК», если нужно ввести дату — предпочтет найти ее в выпадающем календаре. Чтобы повторить такое действие, в процессе записывается указатель для поиска нужного элемента. В общем случае это заголовок окна, где должен находиться элемент и его название. Приложения могут быть организованы по-разному, не всегда удается выделить такой текстовый указатель. В этом случае робот может ориентироваться по изображению, тогда в качестве указателя в процессе будет записана картинка.

Поиск элемента по указателю-картинке будет работать медленнее, чем поиск по текстовому указателю. Кроме того, такой поиск менее надежен: изменение разрешение экрана или фона под элементом – и робот может не найти элемент. Есть еще один вариант – использовать для навигации клавиши. С их помощью можно открывать приложения, перемещаться между элементами, нажимать кнопки. Поиск при этом не нужен. Это самый быстрый и надежный вариант, именно он самый предпочтительный для RPA. После него – текстовый указатели и в крайнем случае – поиск по изображению.

Для моделирования я взял бесплатную RPA систему от ELMA.

Вызов 1С


Создаю в дизайнере новый процесс.

Создание процесса вызова 1С в RPA системе ELMA

Первое, что должен сделать робот – запустить приложение 1С. Надежнее всего работают действия, выполняемые нажатием клавиш. Поэтому запускаю 1С с помощью команды «Выполнить».

Для этого перемещаю на графическую модель процесса действие «Сочетание клавиш» и указываю, какие клавиши должны быть нажаты – Win + R. Далее перемещаю действие «Ввод текста» и указываю адрес исполняемого файла 1С, например, «C:\Program Files\1cv8\8.3.16.1063\bin\1cv8s.exe». И наконец действие «Сочетание клавиш», которое и должно нажать клавишу Enter.

Моделирование процесса вызова 1С в дизайнере бесплатной системы роботизации

Выбор конфигурации


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

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

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

Работа рекордера для автоматического выбора конфигурации 1С

Ввод логина-пароля


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

Редактирование параметров процесса роботизации регистрации счета

Теперь нужно ввести значения этих переменных в соответствующие поля 1С. Для этого воспользуюсь рекордером. В режиме записи после наведения на нужный элемент можно вызвать особое меню рекордера, позволяющее применить к элементу дополнительные действия. Например, вставку значения из контекстной переменной.

Рекордер RPA программы записывает ввод логина и пароля для входа в 1С

Записываю клик по полю «Пользователь», затем применяю к нему действие «Вставить», указав переменную login, затем Tab, функция «Вставить» для поля «Пароль» и наконец ввод клавиши Enter.

Переход к форме «Документы поставщика»


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

Программный робот заходит в документы поставщика

Следующим действием нам нужно открыть форму «Документы покупателей». Скорее всего, вы уже догадались, что нужно для этого сделать: запускаем рекордер, кликаем по меню «Продажа», а затем по «Документы поставщиков».

Новый документ


Дальше нужно создать новый документ. В 1С нажимаю клавишу Insert. Добавляю это действие в процесс с помощью рекордера или вручную, перетащив из палитры действие «Сочетание клавиш».

Выбор вида документа


1С попросит нас выбрать вид документа. Мне нужен «Счет на оплату покупателю».

Работа с таблицами и списками часто вызывает сложности. Не всегда определяются указатели. Или сложно с помощью простых действий, доступных роботу, построить процесс, требующий анализа таблицы, где много полей, много строк. Универсального способа тут нет, для каждой задачи подбирается свой подход.

Но в данном случае все просто. Можно или записать клик по нужному типу документа или воспользоваться строкой поиска вверху формы или начать набирать название нужного нам документа и 1С выделит его. Затем Enter, и мы готовы к вводу данных счета.

Выбираем нужный вид документа по записи клика

Шапка счета


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

1С позволяет просто ввести эти значения в соответствующие поля, открывать формы справочников и выбирать в них не обязательно. Запускаю рекордер и с помощью быстрого меню записываю вставку значений контекстных переменных в нужные поля и перемещение между полями с помощью клавиши Tab

Запись вставки значений в бесплатной RPA системе ELMA

Строка счета


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

Для передачи коллекции строк я создаю контекстную переменную с типом «Массив». Отдельная строка такой коллекции будет представлять собой текстовую строку с перечислением значений полей.

Чтобы процесс мог работать с отдельными полями строк, воспользуюсь действием «Сценарий». Это действие позволяет включить в логику процесса произвольный программный код на C#. В нашем случае программа будет вызываться в цикле и при каждом следующем выполнении брать следующую строку коллекции, выполнять ее разбор и присваивать значения полей соответствующим переменным. Для выхода из цикла я буду использовать специальную переменную с типом «Да/Нет», значение которой будет изменяться в коде сценария при разборе последней строки.

Чтобы организовать цикл выбираю действие «Повторять, пока…». Он представляет из себя контейнер, куда нужно поместить действия, которые должны повторяться.

Использование цикла в дизайнере RPA программы ELMA

Печать, сохранение файла


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

Отправка счета в Контур Диадок


Все базовые приемы моделирования на примере 1С подходят и для моделирования работы в любых других приложениях.

Следующая этап обработки счета – отправка его клиенту через Диадок. Создание счета в 1С и его отправку лучше моделировать как два разных процесса. Это позволит независимо их отлаживать и запускать на разных машинах.

Робот будет взаимодействовать с Диадок через web-интерфейс. Не во всех браузерах рекордеру удается хорошо распознать указатели. Лучше всего они определяются в IE и Firefox.

Для открытия web-страницы Диадок используем команду «Выполнить». В качестве параметра указываю «iexplore diadoc.kontur.ru». Дальше создайте необходимые входные параметры. Дальше используя рекордер моделирую логирование в системе, загрузку файла счета, ввод параметром и отправку. Там, где это возможно, выполняю действия при помощи нажатия клавиш, где нет – использую указатели.

Роботизация отправки счета в Контур Диадок

Подытожу


В процессе появились две новые зоны ответственности: Робот и Администратор по роботизации. При выполнении процесса робот может столкнуться с чем-то, что мы не предусматривали при моделировании. Например, 1С выдаст непредвиденную ошибку или в Контур Диадок после обновления изменится интерфейс, и робот не найдет нужных контролов. В этом случае требуется, чтобы специалист, отвечающий за поддержку роботов, проверил, что пошло не так и восстановил работу робота. Описанный мной процесс предусматривает такую ситуацию. Получив статус задания робота «Ошибка», система создаст соответствующую задачу администратору, после его проверки робот запускается повторно.

Роботизированный бизнес-процесс выставления счета для бухгалтерии