# Рекомендации по созданию коммерческих сценариев

При разработке коммерческих сценариев на платформе Sherpa RPA следует придерживаться выполнения следующих требований и рекомендаций:

1. **Обеспечение бесперебойной работы.**

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

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

2. **Обеспечение устойчивости сценария.**

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

3. **Обеспечение адекватного объема отладочных сообщений в логе.**

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

4. **Обеспечение корректной работы открываемых файлов.**

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

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

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

6. **Рекомендации по разработке сценариев, которые предназначены для работы по расписанию.**

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

7. **Рекомендации по разработке Attended-роботов.**

* Attended-робот должен регулярно информировать пользователя о текущей стадии работы и обрабатываемом документе (сайте и т.д. - в зависимости от логики бизнес-сценария) надписью в верхней части экрана (для этого надо проставить флаг "Отображать в статусе" в блоке "Лог").
* Необходимо настроить вывод сообщений так, чтобы выводить не более одного сообщения в секунду и не реже одного сообщения в 10 секунд.
* Наиболее значимая для пользователя часть текста сообщения должна идти первой и помещаться на экране.
* Вывод сообщений не должен мешать нормальной работе робота, а также взаимодействию пользователя с интерфейсом компьютера, если предполагается что пользователь может работать параллельно с роботом.
* Допускается не выводить сообщения в тех случаях, когда действия, стадия и прогресс работы робота полностью очевидны из того, что происходит на экране.
* Выводимые в лог сообщения должны отвечать на следующие вопросы: "что сейчас происходит?", "всё ли идёт по плану", "как скоро это закончится?" или "как быстро обрабатывается заданный объем работы?"

8. **Рекомендации по хранению исходников.**

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/sherpa-rpa/sherpa-designer/rabota-v-sherpa-designer/nachalo-raboty-v-sherpa-designer/rekomendacii-po-sozdaniyu-kommercheskikh-scenariev.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
