Как мы автоматизировали загрузку документов на сайте федеральной таможенной службы

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

Сайт федеральной таможенной службы
Сайт федеральной таможенной службы

И одно дело, когда это одна-две заявки в неделю, другое — от 10 в день. При этом никакой интеграции по API на сайте ФТС нет. Поэтому даже если у тебя документ полностью формируется в 1С, тебе всё равно придется загружать его вручную: заходить на сайт, логиниться через цифровую подпись, открывать нужную ссылку, заливать туда готовый файл и отправлять заявку, снова подтверждая действие цифровой подписью.

И получается, что бизнесу приходится отдельно выделять человека, который будет изо дня в день выполнять эту рутинную задачу. А все, кто работал с сайтом ФТС знают, что он еще с постоянной периодичностью глючит и может совсем не работать полдня. Плюс сюда можно прибавить то, что любой человек в компании может заболеть, уйти в отпуск, декрет и пр. А значит, нужно эту ответственность постоянно перекладывать на кого-то другого и контролировать.

Задача

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

Создаем Unattended робота

Приняли решение разработать Unattended робота, который будет по расписанию выполнять определенный порядок действий по загрузке документов на сайт ФТС без участия пользователя.

В качестве среды разработки рассматривали несколько платформ, таких как с++(QT creator), UiPath, Selenium. Остановились на UiPath, так как уже был опыт работы с ним.

Создали виртуальную машину

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

Настроили автологин и установили цифровую подпись

Так как роботу необходим доступ к рабочему столу, настроили автологин на виртуальной машине и установили цифровую подпись. Без неё не зайти в личный кабинет сайта ФТС и не отправить документы.

Автоматическая выгрузка из 1С

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

Это был один из самых сложных и долгих вопросов. Потому что как только вопрос касается 1С, он сразу становится очень сложным и долгим: )

По итогу пары недель уговоров, 1С-специалисты нам сделали автоматическую выгрузку XML-файлов в нужную папку нашей виртуальной машины.

Сортировка выгружаемых файлов

Каждый день из 1С у нас выгружается в среднем от 5 до 20 файлов. Чтобы не запутаться, какие из них уже обработаны роботом, а какие еще нет, сразу создали папки Error и Finished, в которые робот после обработки перемещает файлы соответственно с ошибками и удачно отправленные.

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

Написали первую версию робота

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

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

Скриншот с несколькими всплывающими окнами подтверждения сертификата для подписи
Скриншот с несколькими всплывающими окнами подтверждения сертификата для подписи

После этого мы написали еще порядка 30 обработок разных вариантов развития событий, но про них так подробно я не буду писать: )

Уведомления о сбоях в работе робота

Чтобы держать руку на пульсе и моментально реагировать, когда робот не смог загрузить файл на сайт ФТС, мы запрограммировали отправку email-уведомлений на случай, если робот не смог выполнить это действие.

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

Но после того, как разобрали все уведомления, поняли, что у нас всего два варианта ошибок: либо глючит сайт ФТС, либо в XML-файле неправильно вбиты данные. Причем первый вариант возникает гораздо чаще.

Также поняли, что если робот присылает просто уведомление, что файл содержит ошибку, то сотрудникам приходилось каждый раз заходить на сайт ФТС и повторять тот же путь робота, чтобы узнать, что за ошибку он выдает. Поэтому решили в уведомлении на почте прикладывать еще скриншот экрана, на котором сразу была бы видна ошибка. Это позволило сразу из письма понимать, кто из сотрудников может быстро её устранить.

Скриншот загрузки файла с ошибками
Скриншот загрузки файла с ошибками

Разделили уведомления с ошибками по вине глючности сайта ФТС и с ошибками в XML-файлах. Первые теперь уходят на техническую почту, которую проверяем только в случае необходимой проверки, а вторые отправляем на специалистам, чтобы они сразу видели проблему и решили её.

Расписание работы роботов

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

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

Второй робот, контролирующий работу первого робота

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

Поэтому решили запрограммировать второго робота, который будет проверять два раза в сутки количество необработанных XML-файлов в папке. Если их накопилось больше 10 шт, значит есть какая-то проблема, и он просто присылает уведомление на почту, чтобы сотрудники отреагировали и проверили, в чем дело.

Уведомление от второго робота
Уведомление от второго робота

Результаты

Уже две недели всё работает без единого сбоя. Даже в моменты, когда полдня не работает сайт ФТС, робот спокойно проверяет его каждые 5 мин, и как только сайт начинает работать, загружает и отправляет все документы.

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

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

44
5 комментариев

Для работы такого робота нужен отдельный ПК? или это где-то в виртуалке все лежит?

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

"По итогу пары недель уговоров, 1С-специалисты нам сделали автоматическую выгрузку XML-файлов" - АХАХАХ, 1Сники такие 1Сники))
А так капец вы заморочились, молодцы конечно, но я бы поискал другие пути...