Разработка RPA-роботов для тендерных закупок в PIX Studio с основами C#

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

1. Введение в PIX Studio: интерфейс, переменные и базовая логика процессов

Введение в PIX Studio: интерфейс, переменные и базовая логика процессов

Добро пожаловать на курс «Разработка RPA-роботов для тендерных закупок в PIX Studio с основами C#». Мы начинаем путь, который превратит вас из обычного пользователя ПК в архитектора цифровой рабочей силы. Наша конечная цель — создать робота, который самостоятельно ищет тендеры, анализирует документацию и готовит отчеты, освобождая человека от рутины.

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

Что такое RPA и почему PIX Studio?

RPA (Robotic Process Automation) — это технология автоматизации бизнес-процессов с помощью программных роботов. Представьте себе цифрового сотрудника, который сидит за вашим компьютером, нажимает на кнопки, копирует текст и заполняет таблицы, но делает это в сотни раз быстрее и без ошибок.

Мы выбрали PIX Studio по нескольким причинам:

  • Это мощная российская платформа, входящая в реестр отечественного ПО.
  • Она поддерживает как визуальное программирование (Low-Code), так и написание скриптов на C#.
  • Она идеально подходит для работы с офисными приложениями и веб-порталами, что критически важно для тендерных закупок.
  • Интерфейс PIX Studio: Пульт управления роботом

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

    !Схема основных рабочих зон интерфейса PIX Studio

    1. Панель Активностей (Activities)

    Она находится слева. Это «словарь» действий вашего робота. Здесь хранятся все команды, которые робот умеет выполнять: «Кликнуть», «Открыть браузер», «Прочитать ячейку Excel», «Отправить письмо». Вы просто перетаскиваете эти кубики в рабочую область.

    2. Рабочая область (Designer / Canvas)

    Центральная часть экрана. Здесь вы собираете процесс, соединяя активности стрелками. Это похоже на сборку конструктора LEGO или рисование блок-схемы.

    3. Панель Свойств (Properties)

    Находится справа. Когда вы выделяете активность в рабочей области (например, «Кликнуть»), здесь появляются её настройки: куда именно кликнуть, с какой задержкой, что делать при ошибке.

    4. Панель Переменных и Вывода (Variables / Output)

    Обычно располагается снизу. Здесь мы создаем «память» робота (переменные) и видим сообщения, которые робот пишет нам в процессе работы (логи).

    Переменные: Память робота

    Робот не умеет интуитивно запоминать информацию. Если вы попросили его скопировать цену тендера с сайта, он тут же её забудет, если вы не скажете: «Сохрани это число в переменную».

    Переменная — это именованная ячейка памяти, в которой хранятся данные. Представьте, что это подписанная коробка. На коробке написано «ЦенаТендера», а внутри лежит бумажка с числом «1 000 000».

    Основные типы данных в RPA

    Для работы с тендерами нам понадобятся следующие типы «коробок»:

    * String (Строка): Любой текст. Названия закупок, ссылки, имена файлов. Пример: "Поставка канцелярских товаров". * Int32 (Целое число): Числа без дробной части. Количество лотов, номер строки в Excel. Пример: 42. * Boolean (Булево значение): Логический тип, который может быть только True (Истина) или False (Ложь). Используется для проверок: «Найдена ли кнопка?», «Цена меньше лимита?». * DataTable (Таблица данных): Самый важный тип для нас. Это виртуальная таблица Excel в памяти робота. В ней мы будем хранить списки тендеров с порталов. * DateTime (Дата и время): Дата публикации тендера или дедлайн подачи заявки.

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

    Базовая логика процессов

    Просто последовательность действий (сделай А, потом Б, потом В) — это самый простой робот. Но умный робот должен уметь принимать решения. Для этого используются управляющие конструкции.

    1. Условный оператор (If)

    Это развилка на дороге. Робот проверяет условие и идет либо направо, либо налево.

    Пример логики для тендера: * Условие: Цена закупки > 10 000 000 рублей? * Если Да (Then): Отправить уведомление руководителю. * Если Нет (Else): Пропустить тендер.

    В математическом смысле мы проверяем неравенство. Например, для расчета маржинальности мы можем использовать формулу:

    Где — маржинальность в процентах, — цена контракта (Price), — себестоимость исполнения (Cost). Если ниже заданного порога, робот может отбросить этот тендер.

    2. Циклы (Loops)

    Циклы позволяют роботу повторять одни и те же действия много раз. Самый популярный цикл в RPA — For Each (Для каждого).

    Представьте, что у вас есть таблица (DataTable) со списком из 50 найденных тендеров. Вам нужно проверить каждый из них. Вы говорите роботу:

    > «Для каждой строки в этой таблице: прочитай название, проверь ключевые слова, запиши результат».

    Робот выполнит этот набор действий ровно 50 раз, переходя от одной строки к другой.

    !Логика работы цикла For Each при обработке списка закупок

    Основы C# в контексте PIX Studio

    PIX Studio — это Low-Code платформа, что означает «мало кода». Большую часть задач мы решаем перетаскиванием готовых активностей. Однако, иногда стандартных кубиков не хватает, или они слишком громоздкие для простых операций. Здесь на сцену выходит язык программирования C#.

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

    Где используется C#?

    В PIX Studio код на C# используется в полях ввода свойств и в специальной активности Assign (Присвоить).

    Примеры простых выражений

  • Склеивание строк (Конкатенация):
  • Допустим, у нас есть переменная serverUrl и documentId. Чтобы получить полную ссылку, мы пишем: serverUrl + "/view/" + documentId

  • Преобразование типов:
  • Часто данные приходят в виде текста, а нам нужно число. Или наоборот. * Convert.ToInt32(priceString) — превращает строку "500" в число 500. * myNumber.ToString() — превращает число 500 в строку "500".

  • Работа с датами:
  • Получить текущую дату и время: DateTime.Now

    В следующих статьях мы будем углубляться в C# по мере необходимости, изучая методы работы со строками (поиск подстроки, замена текста) и массивами, так как это необходимо для парсинга данных с веб-страниц.

    Практический пример: «Привет, Тендер!»

    Давайте мысленно соберем нашего первого простейшего робота. Его задача: создать переменную с названием тендера и вывести её на экран.

  • Создаем проект в PIX Studio.
  • В панели Переменные создаем новую переменную:
  • * Имя: TenderName * Тип: String * Значение по умолчанию: "Закупка серверов"
  • Из панели Активности перетаскиваем в центр активность Show Message (Показать сообщение).
  • В свойствах активности, в поле «Текст», пишем имя нашей переменной: TenderName.
  • Нажимаем кнопку Запуск.
  • Робот скомпилирует процесс и покажет всплывающее окно с текстом «Закупка серверов». Поздравляю! Вы только что использовали переменную и активность вывода данных.

    Заключение

    Сегодня мы познакомились с интерфейсом PIX Studio, узнали, что такое переменные и зачем они нужны, а также разобрали базовую логику ветвления и циклов. Мы также коснулись роли языка C# как инструмента для расширения возможностей робота.

    В следующей статье мы перейдем к практике работы с веб-браузером: научим робота открывать сайты торговых площадок и взаимодействовать с элементами интерфейса.

    2. Автоматизация браузера: селекторы, авторизация на площадках и парсинг данных о тендерах

    Автоматизация браузера: селекторы, авторизация на площадках и парсинг данных о тендерах

    В предыдущей статье мы разобрали интерфейс PIX Studio, переменные и базовую логику. Теперь пришло время вывести нашего цифрового сотрудника во внешний мир. Для RPA-разработчика в сфере закупок «внешний мир» — это веб-браузер. Именно там, на порталах вроде ЕИС Закупки (zakupki.gov.ru), B2B-Center или Fabrikant, живут интересующие нас тендеры.

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

    Как робот видит веб-страницу?

    Для человека веб-сайт — это набор красивых картинок, текстов и кнопок. Для робота сайт — это структурированный код, дерево элементов. Чтобы робот нажал на кнопку «Войти», он должен точно знать её адрес в этом коде. Этот адрес называется селектором.

    DOM-дерево и Селекторы

    Любая веб-страница строится на основе DOM (Document Object Model). Это иерархическая структура тегов. Представьте себе генеалогическое древо, где есть предок <html>, у него есть дети <head> и <body>, а внутри <body> вложены таблицы, блоки <div>, кнопки <button> и поля ввода <input>.

    !Структура DOM-дерева, показывающая иерархию элементов на веб-странице

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

    Селекторы опираются на атрибуты элементов: * id: Уникальный идентификатор элемента (например, id="loginButton"). Это самый надежный ориентир. * name: Имя элемента (часто используется в формах). * class: Класс стилей (например, class="btn btn-primary"). Менее надежен, так как дизайн сайта может измениться. * tag: Тип элемента (например, input, div, a). * innertext: Текст внутри элемента (например, «Войти»).

    Подготовка к работе: Расширение для браузера

    Прежде чем начать, убедитесь, что у вас установлено расширение PIX Browser Extension для вашего браузера (Chrome, Edge или Яндекс.Браузер). Без него студия не сможет «общаться» с веб-страницей. Обычно PIX Studio предлагает установить его при первом запуске, но вы всегда можете найти его в настройках студии или магазине расширений.

    Шаг 1: Открытие браузера и навигация

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

  • Найдите в панели активностей группу Веб (Web).
  • Перетащите активность Open Browser (Открыть браузер).
  • В свойствах укажите:
  • * Browser Type: Chrome (или другой, который вы используете). * URL: Ссылка на целевой сайт, например, "https://zakupki.gov.ru".

    Теперь, все действия, которые должны происходить внутри этого окна браузера, нужно помещать внутрь контейнера активности Open Browser (или использовать активность Attach Browser для присоединения к уже открытому окну).

    Шаг 2: Взаимодействие с элементами (UI Automation)

    Допустим, нам нужно ввести поисковый запрос «Поставка бумаги» в строку поиска.

    Активность Type Into (Ввод текста)

    Эта активность имитирует нажатие клавиш клавиатуры.

  • Перетащите Type Into внутрь контейнера браузера.
  • Нажмите кнопку «Указать элемент» (Indicate Element) в студии.
  • Браузер выйдет на передний план. Наведите курсор на строку поиска на сайте — она подсветится рамкой.
  • Кликните по ней. PIX Studio автоматически сформирует селектор.
  • В свойстве Text напишите: "Поставка бумаги".
  • Активность Click (Клик)

    После ввода текста нужно нажать кнопку поиска (лупу).

  • Используйте активность Click.
  • Снова нажмите «Указать элемент» и выберите кнопку поиска на сайте.
  • > Совет: Иногда сайты долго грузятся. В свойствах активностей есть параметр Timeout (по умолчанию 30 секунд). Если элемент не появится за это время, робот выдаст ошибку. Также полезна галочка Wait For Page Load (Ждать загрузки страницы).

    Проблема динамических селекторов

    Тендерные площадки часто имеют сложную верстку. Бывает так, что сегодня кнопка имеет id="btn_123", а завтра — id="btn_456". Если робот будет искать btn_123, он упадет с ошибкой.

    Чтобы этого избежать, мы используем Wildcards (Джокеры): Символ заменяет любое количество символов. * Символ ? заменяет один символ.

    Если ID меняется, но часть btn_ остается, мы можем отредактировать селектор вручную в PIX Studio, изменив атрибут на id='btn_*'.

    Шаг 3: Авторизация и безопасность

    Для доступа к личном кабинету нужно ввести логин и пароль. Никогда не пишите пароли открытым текстом в свойствах активности или в коде! Это грубейшее нарушение безопасности.

    Как делать правильно:

  • Используйте активность Get Password (Получить пароль) или интеграцию с PIX Master (оркестратором).
  • Эта активность безопасно извлекает пароль из защищенного хранилища Windows (Credential Manager) и сохраняет его в переменную типа SecureString.
  • В активности Type Into для поля пароля используйте эту переменную и поставьте галочку SecureText.
  • Шаг 4: Парсинг данных (Data Scraping)

    Робот нашел список тендеров. Теперь нужно «прочитать» их и сохранить в таблицу. Есть два пути: простой (поэлементный) и продвинутый (структурированный).

    Метод 1: Get Text (Получить текст)

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

  • Используйте активность Get Text.
  • Укажите элемент с ценой.
  • В свойствах создайте выходную переменную, например, strPrice.
  • Метод 2: Парсинг таблиц

    Если нужно собрать список из 20 тендеров со страницы поиска, кликать по каждому 20 раз — долго и ненадежно. В PIX Studio есть инструменты для извлечения структурированных данных, которые позволяют указать образец элемента (например, название первого тендера), и робот сам найдет все похожие элементы на странице.

    Результатом работы такого парсинга обычно является переменная типа DataTable, которую мы разбирали в прошлой статье.

    C# в помощь: Очистка данных

    Когда робот забирает данные с сайта, они часто приходят в «грязном» виде. Например, цена может выглядеть так: "1 250 000,00 ₽" или "Цена: 500 руб.". Чтобы производить математические сравнения (например, «цена < 1 млн»), нам нужно чистое число.

    Здесь нам пригодятся методы обработки строк на C#.

    Пример задачи

    У нас есть переменная rawPrice (String) со значением "1 250 000,00 ₽". Нам нужно получить переменную finalPrice (Double).

    Решение на C#

    Мы можем использовать активность Assign (Присвоить) или написать скрипт.

    Логика действий:

  • Убрать символ валюты.
  • Убрать пробелы (разделители тысяч).
  • Заменить запятую на точку (если системные настройки требуют этого) или использовать правильную культуру парсинга.
  • Преобразовать в число.
  • Код на C# для правой части активности Assign:

    Если разделитель дробной части — запятая, Convert.ToDouble в русской локали Windows сработает корректно. Если же сайт использует точку, а Windows ждет запятую, нужно указывать CultureInfo.

    Извлечение данных из текста

    Иногда информация «склеена». Например, строка: "Закупка №037210000 от 12.10.2023". Нам нужен только номер.

    Мы можем использовать метод Split (разделить):

    Этот код разобьет фразу на массив слов, возьмет слово №037210000 и удалит значок номера, оставив чистый ID.

    Практический кейс: Робот-сборщик

    Давайте объединим полученные знания в алгоритм робота для сбора тендеров:

  • Open Browser: Открыть zakupki.gov.ru.
  • Type Into: Ввести ключевое слово (переменная Keyword) в строку поиска.
  • Click: Нажать кнопку поиска.
  • Element Exists: Проверить, появились ли результаты (защита от пустой выдачи).
  • Data Scraping: Собрать таблицу с результатами в переменную TendersTable.
  • For Each Row (Цикл): Пройтись по собранной таблице.
  • * Внутри цикла: Assign: Очистить цену от лишних символов с помощью C#. * Внутри цикла: If: Если цена подходит, добавить в отчет.

    Заключение

    Сегодня мы научили робота «видеть» интернет. Мы разобрали, что такое селекторы и как они помогают находить элементы на странице, научились безопасно вводить пароли и использовать мощь C# для превращения «сырого» текста с сайта в полезные данные.

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