diff --git a/docs/HelloStudio.md b/docs/HelloStudio.md index a8bce59..4dff996 100644 --- a/docs/HelloStudio.md +++ b/docs/HelloStudio.md @@ -1,160 +1,641 @@ -#
+## Интерфейс главного окна + +Пользовательский интерфейс студии Lexema-RPA Studio характеризуется +областью для работы с проектами (рабочей областью), расположенной в +центре главного окна программы. Прямо над рабочей областью располагается +полоса с кнопками управления проектом. Слева от рабочей области +находится меню, в котором собраны модули для создания роботов, справа – +обозреватель решений, прямо под рабочей областью – отладочный вывод. -## Интерфейс главного окна -
Пользовательский интерфейс студии Lexema-RPA Studio характеризуется областью для работы с проектами (рабочей областью), расположенной в центре главного окна программы. Прямо над рабочей областью располагается полоса с кнопками управления проектом. Слева от рабочей области находится меню, в котором собраны модули для создания роботов, справа – обозреватель решений, прямо под рабочей областью – отладочный вывод.
### Главное окно -Главное окно студии имеет несколько разделов и основные кнопки управления проектом/ -
Все панели (меню, обозреватель решений и отладочный вывод) могут быть закреплены или открываться при наведении на них. -
Чтобы открепить или закрепить панель необходимо нажать на иконку с изображением канцелярской кнопки  в правом верхнем углу панели. -
Студия имеет две цветовые схемы – светлая тема, та, которая идет по умолчанию, и темная. Для перехода на темную тему необходимо нажать на слайдер «Темная тема», находящийся между кнопками управления и информацией о текущем пользователе. -
Функционал разделов главного окна студии будет описан ниже.
+
+Главное окно студии имеет несколько разделов и основные кнопки
+управления
+
+проектом (Рис. 1.1.1).
+
+
+
+Рис. 1.. Главное окно студии
+
+Все панели (меню, обозреватель решений и отладочный вывод) могут быть
+закреплены или открываться при наведении на них (Рис. 1.1.2).
+
+Чтобы открепить или закрепить панель необходимо нажать на иконку с
+изображением канцелярской кнопки
+
+в правом верхнем углу панели.
+
+
+
+Рис. 1... Скрытая панель «Обозреватель решений»
+
+Студия имеет две цветовые схемы – светлая тема, та, которая идет по
+умолчанию, и темная. Для перехода на темную тему необходимо нажать на
+слайдер «Темная тема», находящийся между кнопками управления и
+информацией о текущем пользователе.
+
+Функционал разделов главного окна студии будет описан ниже.
+
+### Личный кабинет
+
+По нажатию на логин текущего пользователя можно открыть окно с подробной
+информацией об аккаунте – ФИО пользователя, e-mail, сроком действия
+лицензии. В этом же окне можно изменить пароль или любое из полей с
+информацией о пользователе.
+
+При продлении лицензии через лицензионный ключ, необходимо войти в
+личный кабинет и ввести ключ в поле «Ключ лицензии». После сохранения
+данных лицензия будет продлена.
+
+
+
+Рис. 1... Личный кабинет
+
### Кнопки управления
-
Кнопки управления проектом находятся на верхней панели главного окна студии и предназначены для осуществления основных манипуляций с проектом: создания  , сохранения  , открытия  , выполнения описанных в проекте действий  и выхода из программы  . -
Также поддерживаются различные комбинации горячих клавиш. Например, для создания проекта можно использовать комбинацию Ctrl+N. -
Более подробно поддерживаемые комбинации горячих клавиш описаны в разделе «Горячие клавиши».
+
+Кнопки управления проектом находятся на верхней панели главного окна
+студии и предназначены для осуществления основных манипуляций с
+проектом: создания
+,
+сохранения
+
,
+открытия
+
,
+выполнения описанных в проекте действий
+
+и выхода из программы
+
.
+
+Также поддерживаются различные комбинации горячих клавиш. Например, для
+создания проекта можно использовать комбинацию Ctrl+N.
+
+Более подробно поддерживаемые комбинации горячих клавиш описаны в
+разделе «Горячие клавиши».
+
#### Создать
-
Нажатие на кнопку «Создать» вызывает окно создания нового проекта. -
В открывшемся окне необходимо ввести имя нового проекта, дополнительно можно указать его описание. Нажатие на кнопку «Создать» в указанном окне завершит процесс создания проекта. Новый проект будет открыт в главном окне студии. Ключ проекта – уникальный идентификатор проекта, который необходим для загрузки проекта в оркестратор. По этому ключу происходит обновление проекта, который уже загружен в оркестратор, при его повторной загрузке. Если необходимо загрузить в оркестратор проект, основанный на проекте с ключом, который уже загружен в оркестратор, необходимо изменить его ключ. -
Кнопка «Сохранить» вызывает стандартный диалог сохранения файла. -
Для нового проекта в диалоговом окне необходимо выбрать папку назначения и название файла, в котором будет сохранен проект (по умолчанию, предлагается название проекта, которое вы задали при его создании). Файлы проектов Lexema-RPA Studio имеют расширение «.rpa». После выбора папки для сохранения, необходимо нажать на кнопку «Сохранить». По завершении операции, файл проекта будет сохранен по указанному расположению. Существующий проект будет сохранен в его текущем расположении. + +Кнопка «Сохранить» вызывает стандартный диалог сохранения файла. + +Для нового проекта в диалоговом окне необходимо выбрать папку назначения +и название файла, в котором будет сохранен проект (по умолчанию, +предлагается название проекта, которое вы задали при его создании). +Файлы проектов Lexema-RPA Studio имеют расширение «.rpa». После выбора +папки для сохранения, необходимо нажать на кнопку «Сохранить» (Рис. +1.1.6). По завершении операции, файл проекта будет сохранен по +указанному расположению. Существующий проект будет сохранен в его +текущем расположении. + #### Сохранить как -
Кнопка «Сохранить как» вызывает стандартный диалог сохранения файла, аналогичный окну сохранения нового проекта. -
В диалоговом окне предоставляется возможность для изменения наименования или расположения файла проекта. + +Кнопка «Сохранить как» вызывает стандартный диалог сохранения файла, +аналогичный окну сохранения нового проекта. + +В диалоговом окне предоставляется возможность для изменения наименования +или расположения файла проекта. + #### Открыть -
Кнопка «Открыть» вызывает стандартный диалог выбора файла. -
Выбранный файл проекта будет загружен в главное окно студии. -
Кнопка «Проиграть» запускает выполнение всех описанных в проекте действий. -
Попытка запуска будет осуществляться только в случае, если в проекте имеется хотя бы одно действие. Действия выполняются в порядке, описанном в структуре проекта. -
В случае возникновения ошибок или исключительных ситуаций, они будут выведены в область «Отладочный вывод» (далее будет дано подробное описание области отладочного вывода). -#### Опубликовать -
Кнопка «Опубликовать»  вызывает диалог публикации текущего проекта в оркестратор роботов .
+
+Кнопка «Проиграть» запускает выполнение всех описанных в проекте
+действий.
+
+Попытка запуска будет осуществляться только в случае, если в проекте
+имеется хотя бы одно действие. Действия выполняются в порядке, описанном
+в структуре проекта.
+
+В случае возникновения ошибок или исключительных ситуаций, они будут
+выведены в область «Отладочный вывод» (далее будет дано подробное
+описание области отладочного вывода).
+
+#### Открыть оркестратор
+
+Кнопка «Открыть оркестратор»
+
+вызывает диалог публикации текущего проекта в оркестратор роботов[5].
+
#### Форум
-
Кнопка «Форум»  позволяет перейти на веб-сайт форума технической поддержки приложения.
+
+Кнопка «Техподдержка в Telegram»
+
+позволяет открыть чат по техподдержке в мессенджере Telegram -
+
Кнопка «О программе»  выводит диалоговое окно, содержащее информацию о текущей версии студии. -
В разделе «Меню» выводится список доступных для добавления в проект модулей. Каждый модуль отвечает за выполнение конкретного действия или за взаимодействие с определенной программой. + +В разделе «Меню» выводится список доступных для добавления в проект +модулей. Каждый модуль отвечает за выполнение конкретного действия или +за взаимодействие с определенной программой. + #### Список доступных модулей -
В программе Lexema-RPA Studio имеются следующие модули: Excel, Кликер, Поиск изображения (2 варианта), Запустить/Завершить процесс, Условие, Цикл, Вычисления, Работа с файлами, Код С#, Распознавание текста (обычное и ABBYY), SQL, Отправить/Считать письмо, HTTP GET/POST запросы, Break, JSON, Интерфейс, Закрыть Excel-файл, While. -
В списке доступных модулей выводятся все имеющиеся модули. + +В программе Lexema-RPA Studio имеются следующие модули: Excel, Word, +Кликер, Поиск изображения (2 варианта), Получить активное окно, +Запустить/Завершить процесс, Условие, Case, Цикл, Вычисления, Лог, +Работа с файлами, Извлечь текст, Распознавание текста (Tesseract и +ABBYY), Работа с браузером, Обработка текста, PDF, SQL, +Отправить/Считать письмо, Действия над письмами, Telegram (beta), HTTP +OData, HTTP запрос, FTP запрос, Break, Continue, JSON, Интерфейс, +Закрыть Excel-файл, While, Пауза, Return, XML, Word, Создать скриншот, +Прокси, Try/Catch. + +В списке доступных модулей выводятся все имеющиеся модули (Рис. 1.1.8. +Меню доступных модулей.). + #### Поиск модуля -
Поиск модуля можно выполнить с помощью текстового поля, расположенного над списком доступных модулей. Список будет фильтроваться по мере ввода поисковой фразы. + +Поиск модуля можно выполнить с помощью текстового поля, расположенного +над списком доступных модулей. Список будет фильтроваться по мере ввода +поисковой фразы (Рис. 1.1.9. Поиск в списке модулей). + #### Добавление модуля в проект -
Для добавления выбранного модуля в проект необходимо перетащить его в рабочую область с помощью указателя мыши. Новый модуль можно расположить в нужной позиции в общей последовательности действий. Для этого необходимо навести курсор на соседний с нужной позицией модуль. При этом соседний модуль будет подсвечен красным выделением и положение нового модуля будет отображаться в виде яркого выделения сверху или снизу: сверху – если новый модуль будет добавлен перед соседним, снизу – если после него. -
Раздел «Обозреватель решений» находится в правой части главного окна. В верхней части раздела расположена панель управления переменными и функциями, прямо под панелью - область текущих проектов. Активный проект (окно которого сейчас открыто) выделен зеленым цветом и помечен маркером зеленая точка. -Панель управления переменными и функциями содержит следующие кнопки (перечисление слева направо): «Переменные», «Создать новую переменную», «Узнать значение переменной», «Локальное хранилище», «Создать локальную переменную», «Функции». При нажатии на одну из этих кнопок будут открыты или созданы те переменные или функции, которые относятся к активному проекту. Подробное описание кнопок будет приведено далее. -
В рабочей области студии можно вывести информацию о доступных в активном проекте переменных. -
Окно обзора переменных отображается во вкладке «Переменные» при нажатии на кнопку «Переменные»  в обозревателе решений. -
Окно содержит строку для поиска переменной по её названию и таблицу со списком всех доступных проекту переменных. Таблица имеет три столбца: -
• Название переменной -
• Константа — флаг, показывающий можно ли изменять значение данной переменной -
• Значение переменной -
По умолчанию, переменные автоматически создаются при указании их в том или ином модуле. При создании проекта автоматически создаются системные переменные: -
• @CurrentDirectory – директория, в которой установлена студия; -
• @UserNameWindows – название пользователя ОС; -
• @MachineName – имя компьютера. -
При двойном щелчке по строке с переменной открывается диалоговое окно редактирования свойств переменной. В диалоговом окне предоставляется возможность изменять свойства переменной или удалять переменную из проекта. Подробное описание работы с переменными будет рассмотрено ниже. -
Обзор функций -
Доступные в проекте функции выводятся в рабочей области студии во вкладке «Функции» по нажатию на кнопку  в обозревателе решений. В окне имеется строка для поиска функции по её названию или описанию. -
Список доступных функций представлен в виде таблицы со следующими столбцами: -
• Название функции — название функции и пример аргументов, которые она принимает; -
• Пример использования — пример результата выполнения функции первого столбца; -
• Описание — общее описание функции. -
Lexema-RPA Studio позволяет хранить конфиденциальную информацию, например, пароли, логины или почтовые адреса, в переменных, которые будут зашифрованы и сохранены на вашем компьютере. Обзор ваших локальных переменных доступен по кнопке «Локальное хранилище»  в панели управления переменными и функциями. Окно состоит из трех столбцов: -
• Имя – название переменной; -
• Значение; -
• Описание – ваш комментарий относительно переменной. -
При двойном нажатии по переменной откроется окно её редактирования, аналогичное окну создания локальной переменной. -
В раздел «Отладочный вывод» главного окна студии выводятся все сообщения, возникающие в ходе выполнения настроенных действий проекта после нажатия на кнопку «Проиграть». Сообщения выводятся для всех действий по порядку их выполнения в проекте. -
В отладочном выводе выводится информация о времени начала робота, общее время работы. Для каждого модуля выводится информация о начале времени его выполнения и затраченное время. -
В случае возникновения исключения в работе модуля, робот приостановит выполнение, и в отладочном выводе, в последней строке, будет содержаться информация об ошибке. Текст первой и последней строки отладочного вывода будет написан красным цветом. -
Переменные предназначены для хранения данных, которые должны быть доступны для всех действий проекта. Большинство модулей поддерживает чтение и запись данных в переменные. -
К наименованию переменных предъявляется следующее требование: название переменной должно всегда начинаться с символов ‘v.’. -
Обращаться к переменным можно в полях окон настройки модулей приложения. При обращении необходимо указывать полное название переменной согласно описанному выше требованию. -
В проекте можно создавать переменные четырех типов: -
• Элемент – переменная, имеющая одно значение. Это может быть строка или число; -
• Список – переменная, состоящая из нескольких элементов; -
• Таблица – переменная в виде таблицы, в ячейках которой содержатся элементы. -
• Объект – переменная, имеющая именованные поля - ключи и их значения-элементы. -
Для создания переменной нажмите на кнопку «Создать переменную» в обозревателе решений, предварительно выбрав нужный проект (сделав его активным). Для создания локально хранимой и зашифрованной переменной необходимо нажать кнопку «Создать локальную переменную». После выполнения действия откроется окно создания переменной, это окно аналогично окну редактирования свойств переменной. Локальные переменные могут создаваться только с типом «Элемент», поэтому окно их настройки немного отличается от настройки обычных переменных. -
В окне создания переменной укажите название переменной согласно требованиям приложения (в начале наименования обязательно должны быть символы v.) и выберите тип переменной из списка. При изменении типа переменной изменяются доступные настройки. -
Для переменных с типом «Элемент» доступны следующие настройки: -
• поле для ввода значения; -
Переменные с типом «Список» хранят набор (массив) переменных. Обращение к каждому элементу списка осуществляется по его индексу, индекс начинается с 0. Индекс указывается в квадратных скобках, следующих сразу за названием переменной. Например, для обращения ко второму элементу – v.array[1]. -
Заполнение переменных-списков производится посредством ввода значения в поле «Значение», затем нажатием кнопки «Добавить», после чего введенный элемент добавится в список элементов в нижней части окна. -
Переменные с типом «Таблица» представляют собой таблицу (двумерный массив), т.е. это список, элементами которого являются списки. Другими словами, это набор простых элементов, доступ к которым осуществляется по двум индексам. Наглядно двумерный массив удобно представлять в виде таблицы, в которой n строк и m столбцов, а под ячейкой таблицы, стоящей в i-й строке и j-м столбце, понимают некоторый элемент массива a[i-1,j-1] (так как индекс начинается с нуля). Это означает, что для обращения к элементу в 3 строке и 5 столбце, отвечающему за ячейку таблицы, необходимо указывать два индекса: v.table[2, 4]. -
Для заполнения значений переменных с типом «Таблица» становится доступной таблица, набор столбцов которой можно расширять с помощью кнопки «Добавить столбец». Добавление новых строк производится по нажатию клавиши «Enter». Вводить значения можно для каждой ячейки. Незаполненные столбцы не будут использоваться при создании переменной. -
И последний возможный тип переменных в программе – переменные-объекты. Для создания переменной необходимо заполнять поля «Ключ» и «Значение» указанного ключа. В примере показана переменная v.person, которая состоит из двух полей – name и age, значения которых John и 18 соответственно. Для обращения к полям такой переменной в программе необходимо указать название переменной с символов «v.» и через точку поле, к которому хотите обратиться: v.person.name (результатом будет строка John). -
При нажатии в обозревателе решений на кнопку «Узнать значение переменной» открывается окно, с помощью которого можно проверить значение переменной активного проекта. Для проверки значения необходимо ввести полное наименование переменной (включая символы v.). -
Предустановленный набор вспомогательных функций позволяет выполнять различные вычисления в действиях проекта. -
Для вызова встроенной функции необходимо перед её названием ввести знак #, например, #OperationPlus(1, 1). Аргументы функции, над которыми должна производится операция, перечисляются в круглых скобках через запятую (если функция работает с несколькими аргументами). Между наименованием вызываемой функции и скобками с её аргументами не должно быть пробела.
+
+Переменные предназначены для хранения данных, которые должны быть
+доступны для всех действий проекта. Большинство модулей поддерживает
+чтение и запись данных в переменные.
+
+К наименованию переменных предъявляется следующее требование:
+***название переменной должно всегда начинаться с символов ‘v.’.***
+
+Обращаться к переменным можно в полях окон настройки модулей приложения.
+При обращении необходимо указывать полное название переменной согласно
+описанному выше требованию.
+
+В проекте можно создавать переменные четырех типов:
+
+- Элемент – переменная, имеющая одно значение. Это может быть строка
+ или число;
+
+- Список – переменная, состоящая из нескольких элементов;
+
+- Таблица – переменная в виде таблицы, в ячейках которой содержатся
+ элементы;
+
+- Объект – переменная, имеющая именованные поля - ключи и их
+ значения-элементы.
+
+Для создания переменной нажмите на кнопку «Создать переменную» в
+обозревателе решений, предварительно выбрав нужный проект (сделав его
+активным). Для создания локально хранимой и зашифрованной переменной
+необходимо нажать кнопку «Создать локальную переменную». После
+выполнения действия откроется окно создания переменной. Локальные
+переменные могут создаваться только с типом «Элемент», поэтому окно их
+настройки немного отличается от настройки обычных переменных.
+
+ Это основной раздел главного окна студии. Здесь осуществляется настройка структуры проекта и выполняемых в нём действий.
+
+Это основной раздел главного окна студии. Здесь осуществляется настройка
+структуры проекта и выполняемых в нём действий.
+
#### Структура проекта
- Действия добавляются с помощью меню доступных модулей. После добавления модуля в структуру проекта он отображается в виде элемента, обозначающего выполняемое действие.
- Элемент действия имеет несколько составляющих:
- • порядковый номер действия;
- • название действия;
- • настраиваемое пользователем примечание;
- • кнопку удаления действия.
- В структуре проекта по нажатию правой кнопкой мыши на добавленное действие доступно контекстное меню со следующими пунктами:
- • отключить/включить;
- • снять/поставить точку остановки;
- • копировать;
- • вставить.
- Пункт «Отключить/Включить» позволяет переключать активность выбранного действия. Выключенное действие будет пропущено при запуске проекта.
- Пункт «Снять/поставить точку остановки» создаёт или отключает точку остановки выполнения проекта. Точки остановки упрощают процесс наладки последовательности действий.
- Пункт «Копировать» копирует в буфер обмена выбранное действие для последующей вставки.
- Пункт «Вставить» вставляет скопированное действие после выделенного действия. Данный пункт доступен также при вызове контекстного меню в рабочей области главного окна студии.
- Пункт «Удалить» удаляет данный модуль из списка модулей (аналогичен нажатию крестика в правой части модуля).
- Точка остановки – это инструмент, который помогает отлаживаться при написании робота. Такой инструмент позволяет остановить работу робота перед выполнением выбранного модуля, при этом в панели отладочного вывода отображаются текущие переменные и их значения, модуль, который должен будет выполняться после продолжения подсвечивается красной рамкой, а в панели инструментов появляются две новые кнопки, позволяющие управлять пошаговой отладкой.
- Пошаговая отладка позволяет выполнять каждый модуль робота друг за другом, при этом можно следить за значениями всех переменных. Для выполнения подсвечиваемого модуля и остановки робота после его выполнения, то есть, для перехода к следующему модулю (шагу), необходимо нажать кнопку «Следующий шаг отладки» . Для прекращения выполнения работы робота необходимо нажать кнопку «Остановить» . Если требуется остановить робота в другом месте, через несколько модулей, то во время отладки можно поставить новую точку остановки на модуле, перед выполнением которого необходимо остановить работу робота, и нажать «Продолжить выполнение» . Изменения, внесенные в модули во время отладки, в текущем выполнении применены не будут.
-#### Настройка добавленных действий
- Окно настройки свойств действия, добавленного в структуру проекта, открывается с помощью двойного щелчка левой кнопкой мыши по указанному действию. Набор свойств, доступных в этом окне, зависит от выбранного действия. Подробнее о доступных свойствах каждого действия будет описано далее в руководстве.
+
+Точка остановки – это инструмент, который помогает отлаживаться при
+написании робота. Такой инструмент позволяет остановить работу робота
+перед выполнением выбранного модуля, при этом в панели отладочного
+вывода отображаются текущие переменные и их значения, модуль, который
+должен будет выполняться после продолжения подсвечивается красной
+рамкой, а в панели инструментов появляются две новые кнопки, позволяющие
+управлять *пошаговой отладкой*.
+
+ Комбинация клавиш Действие Руководство предназначено для людей, которые хотят научиться писать роботов в программе Lexema-RPA Studio. Вы познакомитесь со всеми инструментами студии и основными модулями, применяемыми для создания роботов. Lexema-RPA Studio, далее именуемая просто студия, предоставляет пользователю возможность настраивать последовательность взаимодействий с разнообразными программами. Взаимодействие настраивается с помощью программных модулей, которые поставляются в составе студии. Каждый модуль представляет собой отдельный функционал, необходимый для выполнения конкретного действия, и механизмы для его настройки.
+
+Рис. 1... Кнопки создания переменной
+
+
+
+Рис. 1... Окна создания переменной (слева – обычной, справа – локальной)
+
+***Для работы с локальными переменными*** требуется наличие
+установленного сертификата Windows. Он может быть выпущен вами или вы
+можете установить существующий сертификат нашей компании. Для установки
+предоставляемого нами сертификата откройте папку «certificate» в
+директории с установленной Lexema Studio и запустите файл Lexema-RPA
+sert.pfx, далее следуйте инструкциям по установке (пароль от сертификата
+– 12345). Подробнее о сертификатах вы можете прочитать по ссылке:
+
+
+Рис. 1... Окно создания обычной переменной-элемента
+
+Переменные с типом «Список» хранят набор (массив) переменных. Обращение
+к каждому элементу списка осуществляется по его индексу, индекс
+начинается с 0. Индекс указывается в квадратных скобках, следующих сразу
+за названием переменной. Например, для обращения ко второму элементу –
+v.array\[1\].
+
+Заполнение переменных-списков производится посредством ввода значения в
+поле «Значение», затем нажатием кнопки «Добавить», после чего введенный
+элемент добавится в список элементов в нижней части окна.
+
+
+
+Рис. 1... Создание переменной-списка
+
+Переменные с типом «Таблица» представляют собой таблицу (двумерный
+массив), т.е. это список, элементами которого являются списки. Другими
+словами, это набор простых элементов, доступ к которым осуществляется по
+двум индексам. Наглядно двумерный массив удобно представлять в виде
+таблицы, в которой n строк и m столбцов, а под ячейкой таблицы, стоящей
+в i-й строке и j-м столбце, понимают некоторый элемент массива
+a\[i-1,j-1\] (так как индекс начинается с нуля). Это означает, что для
+обращения к элементу в 3 строке и 5 столбце, отвечающему за ячейку
+таблицы, необходимо указывать два индекса: v.table\[2, 4\].
+
+
+
+Рис. 1... Создание переменной-таблицы
+
+Для заполнения значений переменных с типом «Таблица» становится
+доступной таблица, набор столбцов которой можно расширять с помощью
+кнопки «Добавить столбец». Добавление новых строк производится по
+нажатию клавиши «Enter». Вводить значения можно для каждой ячейки.
+***Незаполненные столбцы не будут использоваться при создании
+переменной.***
+
+И последний возможный тип переменных в программе – переменные-объекты.
+Для создания переменной необходимо заполнять поля «Ключ» и «Значение»
+указанного ключа. В примере показана переменная v.person, которая
+состоит из двух полей – name и age, значения которых John и 18
+соответственно. Для обращения к полям такой переменной в программе
+необходимо указать название переменной с символов «v.» и через точку
+поле, к которому хотите обратиться: v.person.name (результатом будет
+строка John).
+
+
+
+Рис. 1... Создание объектной переменной
+
+При нажатии в обозревателе решений на кнопку «Узнать значение
+переменной» открывается окно, с помощью которого можно проверить
+значение переменной активного проекта (рис. 1.2.7–1.2.8). ***Для
+проверки значения необходимо ввести полное наименование переменной
+(включая символы v.).***
+
+
+
+Рис. 1... Кнопка «Узнать значение переменной»
+
+
+
+Рис. 1... Окно проверки значения переменной
+
### Рабочая область
-

-
-
+
+Действия добавляются с помощью меню доступных модулей. После добавления
+модуля в структуру проекта он отображается в виде элемента,
+обозначающего выполняемое действие.
+
+
+
+Рис. 1... Структура проекта
+
+Элемент действия имеет несколько составляющих:
+
+- порядковый номер действия;
+
+- название действия;
+
+- настраиваемое пользователем примечание;
+
+- кнопку удаления действия.
+
+В структуре проекта по нажатию правой кнопкой мыши на добавленное
+действие доступно контекстное меню со следующими пунктами:
+
+- отключить/включить;
+
+- снять/поставить точку остановки;
+
+- запустить с действия;
+
+- копировать;
+
+- вставить;
+
+- удалить.
+
+
+
+Рис. 1... Контекстное меню структуры проекта
+
+**Пункт «Отключить/Включить»** позволяет переключать активность
+выбранного действия. Выключенное действие будет пропущено при запуске
+проекта.
+
+**Пункт «Снять/поставить точку остановки»** создаёт или отключает точку
+остановки выполнения проекта. Необходимо для отладки проекта, при
+установленной точке выполнение робота приостановится перед отмеченным
+модулем.
+
+**Пункт «Запустить с действия»** позволяет запустить робота с выбранного
+действия, то есть все ранее стоящие модули будут пропущены.
+
+**Пункт «Копировать»** копирует в буфер обмена выбранное действие для
+последующей вставки.
+
+**Пункт «Вставить»** вставляет скопированное действие **после
+выделенного действия**. Данный пункт доступен также при вызове
+контекстного меню в рабочей области главного окна студии.
+
+**Пункт «Удалить»** позволяет удалить выбранный модуль.
+
+
+
+Рис. 1... Проект с отключенным действием и точкой остановки
+
#### Точка остановки
-

-
+
+Рис. 1... Пошаговая отладка
+
+Пошаговая отладка позволяет выполнять каждый модуль робота друг за
+другом, при этом можно следить за значениями всех переменных. Для
+выполнения подсвечиваемого модуля и остановки робота после его
+выполнения, то есть, для перехода к следующему модулю (шагу), необходимо
+нажать кнопку «Следующий шаг отладки»
+
.
+Для прекращения выполнения работы робота необходимо нажать кнопку
+«Остановить»
+
.
+Если требуется остановить робота в другом месте, через несколько
+модулей, то во время отладки можно поставить новую точку остановки на
+модуле, перед выполнением которого необходимо остановить работу робота,
+и нажать «Продолжить выполнение»
+
.
+Изменения, внесенные в модули во время отладки, в текущем выполнении
+применены **не будут**.
+
+#### Настройка добавленных модулей
+
+Окно настройки свойств модуля, добавленного в структуру проекта,
+открывается с помощью двойного щелчка левой кнопкой мыши по указанному
+действию. Набор свойств, доступных в этом окне, зависит от выбранного
+модуля. Подробнее о доступных свойствах каждого модуля будет описано
+далее в руководстве.
+
+### Горячие клавиши
+
+Приложение поддерживает следующий набор комбинаций горячих клавиш:
+
+
+
+
\ No newline at end of file
diff --git a/docs/file.md b/docs/file.md
new file mode 100644
index 0000000..cabd5e0
--- /dev/null
+++ b/docs/file.md
@@ -0,0 +1,4874 @@
+
+
+
+
+
+
+
+
+
+
+
+Ctrl+N
Создать новый проект. Открывает диалог создания нового проекта.
+
+
+
+Ctrl+S
Сохранить проект. Сохраняет проект в текущем расположении.
+
+
+
+Ctrl+Shift+S
Сохранить проект как. Аналогично кнопке «Сохранить как» открывает диалог для указания нового расположения или имени файла проекта.
+
+
+
+Ctrl+O
Открыть проект. Открывает сохраненный ранее проект с помощью системного диалога выбора файлов.
+
+
+
+Esc
Закрыть программу.
+
+
+
+F1
Перейти в базу знаний по адресу https://lexema-rpa-studio-docs.readthedocs.io/ru/latest/.
+
+
+
+F5
Запустить робота.
+
+
+
+F10
Перейти к следующему шагу отладки. Только в режиме отладки.
+
+
+
+
+
+
+
+Инструкция пользователя
+Lexema-RPA Studio
+
+# **СОДЕРЖАНИЕ**
+
+[ВВЕДЕНИЕ 8](#введение)
+
+[Назначение программы 8](#назначение-программы)
+
+[Что такое RPA? 8](#что-такое-rpa)
+
+[Что могут роботы? 8](#что-могут-роботы)
+
+[Сколько нужно времени для создания роботов?
+9](#сколько-нужно-времени-для-создания-роботов)
+
+[Области использования роботов 9](#области-использования-роботов)
+
+[С чего начать 10](#с-чего-начать)
+
+[Часть I. ЗНАКОМСТВО СО СТУДИЕЙ 14](#знакомство-со-студией)
+
+[Глава 1. Интерфейс главного окна 14](#интерфейс-главного-окна)
+
+[Глава 2. Основы работы 27](#основы-работы)
+
+[Часть II. МОДУЛЬ «EXCEL» 35](#модуль-excel)
+
+[Глава 3. Основные моменты модуля 35](#основные-моменты-модуля)
+
+[Глава 4. Набор полей в составе модуля
+41](#набор-полей-в-составе-модуля)
+
+[Глава 5. Описание действий, доступных в модуле
+45](#описание-действий-доступных-в-модуле)
+
+[Глава 6. Модуль «Закрыть Excel-файл» 80](#модуль-закрыть-excel-файл)
+
+[Часть III. МОДУЛЬ «WORD» 81](#модуль-word)
+
+[Глава 7. Основные моменты модуля 81](#основные-моменты-модуля-1)
+
+[Глава 8. Действия модуля 84](#действия-модуля)
+
+[Часть IV. МОДУЛЬ «КЛИКЕР» И МОДУЛИ, РАБОТАЮЩИЕ С ЭКРАНОМ
+88](#модуль-кликер-и-модули-работающие-с-экраном)
+
+[Глава 9. Модуль «Кликер» 88](#модуль-кликер)
+
+[Глава 10. Модуль «Поиск изображения» 97](#модуль-поиск-изображения)
+
+[Глава 11. Модуль «Поиск изображений» 99](#модуль-поиск-изображений)
+
+[Глава 12. Модуль «Создать скриншот» 102](#модуль-создать-скриншот)
+
+[Глава 13. Модуль «Получить активное окно»
+103](#модуль-получить-активное-окно)
+
+[Часть V. МОДУЛЬ «РАБОТА С ФАЙЛАМИ» 104](#модуль-работа-с-файлами)
+
+[Глава 14. Основные моменты модуля 104](#основные-моменты-модуля-2)
+
+[Глава 15. Описание действий, доступных в модуле
+106](#описание-действий-доступных-в-модуле-2)
+
+[Часть VI. МОДУЛИ-ОПЕРАТОРЫ: «ЦИКЛ», «УСЛОВИЕ», «WHILE», «TRY-CATCH»,
+«BREAK», «RETURN», «SWITCH»
+113](#модули-операторы-цикл-условие-while-try-catch-break-return-switch)
+
+[Глава 16. Модуль «Условие» 113](#модуль-условие)
+
+[Глава 17. Модуль «Цикл» 119](#модуль-цикл)
+
+[Глава 18. Модуль «Break» 121](#модуль-break)
+
+[Глава 19. Модуль «Return» 122](#модуль-return)
+
+[Глава 20. Модуль «Continue» 123](#модуль-continue)
+
+[Глава 21. Модуль «While» 125](#модуль-while)
+
+[Глава 22. Модуль «Try/Catch» 127](#модуль-trycatch)
+
+[Глава 23. Модуль «Switch» 129](#модуль-switch)
+
+[Часть VII. МОДУЛИ «ПОЧТОВЫЕ АГЕНТЫ» 131](#модули-почтовые-агенты)
+
+[Глава 24. Модуль «Отправить письмо» 131](#модуль-отправить-письмо)
+
+[Глава 25. Модуль «Считать письма» 136](#модуль-считать-письма)
+
+[Глава 26. Модуль «Действия над письмами»
+144](#модуль-действия-над-письмами)
+
+[Часть VIII. МОДУЛЬ «РАБОТА С БРАУЗЕРОМ»
+146](#модуль-работа-с-браузером)
+
+[Глава 27. Основные моменты модуля 146](#основные-моменты-модуля-3)
+
+[Глава 28. Описание действий 149](#описание-действий)
+
+[Часть IX. МОДУЛЬ «ИНТЕРФЕЙС» 156](#модуль-интерфейс)
+
+[Глава 29. Основные моменты 156](#основные-моменты)
+
+[Глава 30. Настройки окна 157](#настройки-окна)
+
+[Глава 31. Добавление элемента интерфейса
+161](#добавление-элемента-интерфейса)
+
+[Часть X. МОДУЛИ ДЛЯ РАБОТЫ С ТЕКСТОМ 169](#модули-для-работы-с-текстом)
+
+[Глава 32. Модуль «Обработка текста» 169](#модуль-обработка-текста)
+
+[Глава 33. Модуль «Распознавание текста»
+171](#модуль-распознавание-текста)
+
+[Глава 34. Модуль «Распознавание текста ABBYY»
+173](#модуль-распознавание-текста-abbyy)
+
+[Часть XI. МОДУЛЬ «TELEGRAM» 175](#модуль-telegram)
+
+[Глава 35. Основные моменты модуля 175](#основные-моменты-модуля-4)
+
+[Глава 36. Описание действий 178](#описание-действий-1)
+
+[Часть XII. ДРУГИЕ МОДУЛИ 181](#другие-модули)
+
+[Глава 37. Модуль «Вычисления» 181](#модуль-вычисления)
+
+[Глава 38. Модуль «Запустить процесс» 183](#модуль-запустить-процесс)
+
+[Глава 39. Модуль «Завершить процесс» 185](#модуль-завершить-процесс)
+
+[Глава 40. Модуль «SQL» 186](#модуль-sql)
+
+[Глава 41. Модуль «HTTP OData» 188](#модуль-http-odata)
+
+[Глава 42. Модуль «HTTP запрос» 190](#модуль-http-запрос)
+
+[Глава 43. Модуль «FTP запрос». 191](#модуль-ftp-запрос.)
+
+[Глава 44. Модуль «JSON» 192](#модуль-json)
+
+[Глава 45. Модуль «XML» 194](#модуль-xml)
+
+[Глава 46. Модуль «PDF» 195](#_Toc68096788)
+
+[Глава 47. Модуль «Пауза» 198](#модуль-пауза)
+
+[Глава 48. Модуль «Прокси» 198](#модуль-прокси)
+
+[Глава 49. Модуль «Лог» 198](#модуль-лог)
+
+[Часть XIII. ОРКЕСТРАТОР 200](#оркестратор)
+
+[Глава 50. Общая информация 200](#общая-информация)
+
+[Глава 51. Создание новой задачи 202](#создание-новой-задачи)
+
+[Глава 52. Раздел «Роботы» 206](#раздел-роботы)
+
+[Глава 53. Просмотр истории выполнений
+208](#просмотр-истории-выполнений)
+
+[Часть XIV. КОНФИГУРИРОВАНИЕ LEXEMA-RPA STUDIO
+210](#конфигурирование-lexema-rpa-studio)
+
+[Глава 54. Файл конфигурации 210](#файл-конфигурации)
+
+
+
+
+
+# МОДУЛЬ «EXCEL»
+
+## Основные моменты модуля
+
+Модуль «Excel» является самым обширным модулем в программе. Данный
+модуль предназначен для обработки Excel-файлов в фоновом режиме,
+незаметном для пользователя компьютера. Модуль последовательно выполнит
+заданный ему список команд.
+
+### Интерфейс модуля
+
+Окно модуля состоит из нескольких разделов: «Общие настройки» (верхняя
+часть окна), «Добавить команду», «Список команд» и окна с
+предварительным просмотром файла.
+
+
+
+Рис. 2... Окно модуля Excel
+
+Окно предварительного просмотра позволяет просматривать все листы
+загруженного файла с помощью вкладок с названиями листов и полосы
+прокрутки. Также есть возможность вписывать в ячейки свои значения,
+применять различное форматирование, но эти изменения сохранены не будут,
+то есть данный функционал доступен только для «примерки».
+
+
+
+Рис. 2... Элементы управления окна предварительного просмотра
+
+### Раздел «Общие настройки»
+
+***Загрузить файл***
+
+Раздел «Общие настройки» состоит из поля «Имя файла», «Пароль» и кнопку
+«Выбрать ячейку». Поле «Пароль» подлежит заполнению только у
+запароленных книг.
+
+Работу с модулем Excel советуем начинать с выбора рабочего файла. После
+того, как по кнопке «Открыть файл» в поле «Имя файла» будет выбран файл,
+необходимо подождать несколько секунд и указанный файл будет отображен в
+окне предварительного просмотра (рис. 2.3.3).
+
+
+Рис. 2... Общие настройки
+
+### Разделы «Добавить команду» и «Список команд»
+
+Раздел «Добавить команду» является основным «полотном» данного модуля. В
+нем создаются действия, имитирующие работу пользователя, например, такие
+как считать некоторый диапазон ячеек, затем перенести его на другой
+лист, удалить дубликаты и построить круговую диаграмму. В данном случае
+было описано 4 действия. Эти 4 действия необходимо последовательно
+выбирать и добавлять в раздел «Список команд» - таблицу, отображающую
+все действия, которые будут выполняться данным модулем. Набор полей в
+данном разделе не всегда одинаков – он меняется в зависимости от
+выбранного действия в первом поле.
+
+Кнопки «Добавить», «Редактировать» и «Удалить» предназначены для работы
+с разделами «Добавить команду» и «Список команд».
+
+#### Добавление команды
+
+Для добавления команды предусмотрена кнопка «Добавить». Она заносит
+созданное действие в таблицу «Список команд».
+
+
+
+Рис. 2... Добавление команды
+
+При выборе строки в списке команд информация по выбранному действию
+отобразится в разделе «Добавить команду».
+
+Помимо описанного функционала, кнопка «Добавить» служит для копирования
+уже имеющихся действий в списке команд. Для этого необходимо выбрать
+строку в списке команд и нажать на кнопку «Добавить». Таким образом,
+если нужно выполнить действие несколько раз, достаточно его копировать,
+а не создавать вновь.
+
+
+
+Рис. 2... Отображение команды
+
+#### Редактирование команды
+
+Для редактирования команды предусмотрена кнопка «Редактировать». Чтобы
+изменить команду, выделите ее в списке команд, внесите необходимые
+изменения в разделе «Добавить команду» и нажмите на кнопку
+«Редактировать» для сохранения изменений.
+
+#### Изменение порядка действий
+
+Для изменения порядка действий предусмотрены кнопки «Поднять» и
+«Опустить». Кнопки расположены справа сверху от списка команд.
+
+Изменение порядка действий бывает необходимо, когда требуется добавить
+действие, которое не предусмотрели сразу и не внесли в список команд. В
+таком случае вы можете добавить действие стандартным способом, а затем
+переместить его.
+
+
+
+
+
+Рис. 2... Изменение порядка действий
+
+#### Удаление команды
+
+Кнопка «Удалить» удаляет выбранную строку из списка команд.
+
+#### Отключение команды
+
+Если вы не хотите удалять команду, так как хотели бы, например,
+проверить, как работает робот без неё, а затем вернуть её в работу, то
+можно отключить команду, нажав на соответствующую ей строку правой
+кнопкой мыши и отключить или, наоборот, включить её.
+
+
+
+Рис. 2... Контекстное меню команды
+
+#### Выбор ячейки
+
+Кнопка «Выбрать ячейку» работает для каждого действия по-своему, но
+смысл у неё один – она заполняет поле «Ячейки» или «Диапазон» (в
+зависимости от того, какое из них используется в выбранном действии)
+названием выбранной в окне предварительного просмотра ячейки / диапазона
+и вписывает в поле «Лист» название листа, на котором находятся выбранные
+ячейки. ***В некоторых действиях по кнопке заполняется только одна
+ячейка, хотя был выбран диапазон – это означает, что в данном действии
+использование диапазона невозможно.***
+
+
+
+Рис. 2... Выбор диапазона в окне предварительного просмотра
+
+
+
+Рис. 2... Выбрать ячейку
+
+В некоторых действиях кнопка «Выбрать ячейку» заполняет номера колонок,
+строк, какие-либо значения. При работе с файлами рекомендуется её
+использование для минимизации возникновения синтаксических ошибок.
+
+#### Сохранение команды
+
+Для сохранения команды в модуле Excel нажмите на кнопку «Сохранить» в
+правом нижнем углу модуля.
+
+
+
+Рис. 2.. Сохранение в модуле Excel
+
+## Набор полей в составе модуля
+
+Для каждого действия в разделе «Добавить команду» существует свой набор
+необходимых для него полей, который будет отображен при выборе действия.
+По умолчанию, отображены поля «Лист», «Ячейки», «Формула» и
+«Переменная». Почти все команды имеют именно такой набор полей, но
+некоторые требуют несколько иной информации для выполнения действия.
+
+### Перечень возможных полей с правилами их заполнения
+
+1. Лист – поле, в которое необходимо указать имя или номер листа
+ (начиная с 0), на котором необходимо выполнить указанное действие;
+
+2. Ячейки – поле, в котором ожидается либо адрес одной ячейки (A1),
+ либо диапазон ячеек (A1:C10). Если адрес ячейки вычисляется
+ динамически и неизвестен, то можно использовать номера колонок и
+ строк ячеек, то есть вместо «C1» можно написать «3,1», где 3 – номер
+ колонки, 1 – номер строки. Так же можно указать диапазон – вместо
+ «A3:D4» - «1,3:4,4». Второй формат написания ячеек может быть
+ использован только по отношению к полям «Ячейка(-и)», но невозможен
+ в полях «Формула» (см. след. пункт);
+
+3. Формула – поле для ввода формулы в стандартном формате Excel.
+ Например «=ЕСЛИ(A2 > B2:1:0)». Для более удобного ввода длинных
+ формул поле можно расширить, нажав на кнопку со стрелочкой в поле
+ ввода:
+
+
+
+Рис. 2... Поле «Формула»
+
+4. Переменная – поле для ввода названия переменной, в которую будет
+ помещен результат выполнения действия. Название вводится с символов
+ «v.»;
+
+5. Значение – поле для ввода текста или названия переменной, в которой
+ лежит значение, используемое в выбранном действии;
+
+6. Столбец – номер (с 1) или название столбца;
+
+7. Строка – номер строки (с 1). В некоторых действиях («Найти данные»,
+ «Найти лист») – текстовая строка для поиска в файле;
+
+8. Путь к файлу – путь до папки, в которую будет помещен файл. Можно
+ выбрать с помощью диалога выбора папки по нажатию на кнопку в поле:
+
+
+
+Рис. 2... Поле «Путь к файлу»
+
+9. Имя файла – название файла, можно указать как с расширением, так и
+ без, в таком случае будет создан файл с расширением xlsx;
+
+10. Путь копируемого файла – путь до файла вместе с его расширением,
+ который будет использоваться в данном действии помимо основного
+ файла для копирования данных из него. Можно выбрать с помощью
+ диалога выбора файлов по нажатию на кнопку в поле:
+
+
+
+Рис. 2... Поле «Путь копируемого файла»
+
+11. Лист копируемого файла – название или номер листа (с 0) в копируемом
+ файле;
+
+12. Колонки (ч/з ;) – аналогично полю «Столбец», только здесь возможно
+ их перечисление через символ «;»;
+
+13. Значения (ч/з ;) – строковые значения (или переменные, хранящие их),
+ перечисленные через «;»;
+
+14. Строка, колонка – номер строки и номер колонки, перечисленные через
+ запятую;
+
+15. Ячейка из диапазона значений – любая ячейка из таблицы, к которой
+ применяется действие (например, если таблица A1:D10, то любая ячейка
+ из этого диапазона – B5);
+
+16. Функция – выпадающий список с набором функций, который меняется в
+ зависимости от выбранного действия; обязателен выбор одного из
+ представленных значений;
+
+17. По убыванию – флажок, использующийся в действии «Добавить
+ сортировку», который ставится, если необходимо сортировать по
+ убыванию, и не ставится в противном случае;
+
+18. Диапазон таблицы – аналогично полю «Ячейки», но с обязательным
+ условием, что это должен быть именно диапазон (то есть должен
+ присутствовать символ «:»);
+
+19. Лист для вставки – название или номер листа (с 0);
+
+20. Уникальные столбцы – используется в действии «Получить уникальные
+ значения столбца», необходим ввод названий или номеров столбцов (с
+ 1-цы), которые должны быть уникальными;
+
+21. Для колонок – аналогично полю «Столбец»;
+
+22. При каждом изменении в колонке – аналогично полю «Столбец»;
+
+23. Лист, диапазон - поле, в которое должен быть введен лист файла
+ (аналогично полю «Лист»), затем поставлена запятая и указан диапазон
+ или ячейка (аналогично полю «Ячейки»);
+
+24. Лист, диапазон источника – аналогично полю «Лист, диапазон»;
+
+25. Лист, диапазон для вставки – аналогично полю «Лист, диапазон»;
+
+26. Поля в столбцах – используется в действии «Сводная таблица»,
+ необходимо ввести название колонки из рабочей таблицы (не A, B, C и
+ т.д., а именно название столбца вашей таблицы, например «Дата
+ создания», без использования кавычек);
+
+27. Поля в значениях – аналогично «Поля в столбцах»;
+
+28. Поля в строках – аналогично «Поля в столбцах»;
+
+29. Копируемый лист – аналогично полю «Лист»;
+
+30. Копируемый диапазон/ячейка – аналогично полю «Ячейки»;
+
+31. Диапазон/ячейка для вставки – аналогично полю «Ячейки»;
+
+32. Файл для вставки (необяз.) – путь до файла с его расширением,
+ является необязательным полем;
+
+33. Расположение (лев. верхн.,прав. нижн.) – две ячейки, разделенные
+ запятой, которые обозначают положение - первая – левый верхний угол,
+ вторая – правый нижний;
+
+34. Диапазон названий – аналогично полю «Ячейки»;
+
+35. Диапазон аргументов - аналогично полю «Ячейки»;
+
+36. Диапазон значений - аналогично полю «Ячейки»;
+
+37. Ячейка для вставки - аналогично полю «Ячейки», но только в
+ единственном числе;
+
+38. Тип данных – выпадающий список, обязателен выбор одного значения из
+ представленных;
+
+39. Операция – аналогично «Типу данных»;
+
+40. Критерии (ч/з ;) – аргументы для выбранной операции, могут быть как
+ числами, так и строками, перечисляются через «;»;
+
+41. Цвет заливки – цвет в формате ARGB, с перечислением каждого
+ параметра через запятую или в формате HEX (например, \#FFFFFF),
+ возможен выбор цвета через диалог выбора цвета по кнопке в поле:
+
+
+
+Рис. 2... Поле «Цвет заливки»
+
+42. Цвет текста – аналогично «Цвет заливки»;
+
+43. Цвет – аналогично полю «Цвет заливки»;
+
+44. Значение для сравнения – текстовое или числовое значение;
+
+45. Ячейка/диапазон – аналогично полю «Ячейки»;
+
+46. Столбцы – перечисление номеров (с 1-цы) или названий необходимых
+ столбцов через запятую;
+
+47. Ширина – число, как целое, так и дробное (через «.» или «,»);
+
+48. Строки – перечисление номеров (с 1-цы) строк через запятую;
+
+49. Высота – аналогично полю «Ширина»;
+
+50. Общее положение – выпадающий список, обязателен выбор одного из
+ предложенных значений;
+
+51. Выравнивание содержимого – аналогично полю «Общее положение»;
+
+52. Шрифт – выпадающий список со всеми шрифтами, имеющимися в Microsoft
+ Office, необходимо выбрать один из них;
+
+53. Стиль текста – аналогично полю «Общее положение»;
+
+54. Размер – аналогично полю «Ширина»;
+
+55. Расположение – аналогично полю «Общее положение»;
+
+56. Стиль – аналогично полю «Общее положение».
+
+Во всех полях можно использовать переменные, но в них должно содержаться
+то, что требуют поля, то есть, в поле «Столбец» можно написать v.column,
+но тогда в v.column должен содержаться номер столбца, начинающийся с
+единицы, либо его название. Поля, которые закрашены серым цветом, не
+используются в выбранном действии.
+
+## Описание действий, доступных в модуле
+
+Действия разделены на группы для удобной навигации по выпадающему
+списку. Если вы знаете точное название действия, то вы можете начать
+вводить его в поле «Действие», и программа постарается подсказать вам то
+действие, которое вы ищите.
+
+### Группа «Работа с данными»
+
+#### Действие «Считать данные»
+
+Данное действие позволяет считать значение из одной конкретной ячейки,
+либо из диапазона ячеек. Если будет указана одна ячейка, то создастся
+переменная с типом «Элемент», если же диапазон, то будет создана
+переменная с типом «Таблица».
+
+
+
+Рис. 2... Пример настройки действия «Считать данные»
+
+#### Действие «Записать данные»
+
+Действие позволяет записать указанное значение в одну или в диапазон
+ячеек.
+
+
+
+Рис. 2... Пример настройки действия «Записать данные»
+
+#### Действие «Формула»
+
+Действие позволяет записать формулу в указанную ячейку (или в диапазон)
+и вернуть её результат в указанную переменную. Поле «Переменная» можно
+оставить пустым, если результат выполнения данной формулы не важен.
+
+
+
+Рис. 2... Пример настройки действия «Формула»
+
+**СОВЕТ.** Предположим, что вам необходимо написать формулу, применимую
+к текущей строке, и «растянуть» её на несколько других строк, как в
+Excel. Начните с создания действия «Формула» для первой строки. Затем
+«растяните» её с помощью действия «Скопировать и вставить
+ячейку/диапазон» применительно к настроенной формуле. То есть для выше
+предложенной формулы «растягивание» будет выглядеть так:
+
+
+
+Рис. 2... Пример настройки действия «Скопировать и вставить
+ячейку/диапазон»
+
+#### Действие «Получить формулу»
+
+Действие возвращает формулу из ячейки в указанную переменную.
+
+
+
+Рис. 2... Пример настройки действия «Получить формулу»
+
+#### Действие «Заменить формулу на её значение»
+
+Данное действие заменяет формулу в ячейке или диапазоне ячеек на её
+результат.
+
+
+
+Рис. 2... Пример настройки действия «Заменить формулу на ее значение»
+
+### Группа «Работа со строками»
+
+#### Действие «Добавить строку»
+
+Действие вставляет новую строку в указанное место.
+
+
+
+Рис. 2... Пример настройки действия «Добавление строки»
+
+#### Действие «Удалить строку»
+
+Действие удаляет указанную строку.
+
+
+
+Рис. 2... Пример настройки действия «Удаление строки»
+
+#### Действие «Получить количество строк»
+
+Действие возвращает номер последней используемой строки в листе в
+указанную переменную.
+
+
+
+Рис. 2... Пример настройки действия «Получение количества строк»
+
+#### Действие «Получить количество отфильтрованных строк»
+
+Действие возвращает количество видимых строк при примененном фильтре в
+указанную переменную.
+
+
+
+Рис. 2... Пример настройки действия «Получение количества
+отфильтрованных строк»
+
+#### Действие «Переместить строку»
+
+Действие помещает указанную в поле «Перемещаемая строка» строку на листе
+из поля «Лист» вместо указанной в поле «Номер строки для вставки» листа
+«Лист для вставки».
+
+
+
+Рис. 2... Пример настройки действия «Переместить строку»
+
+В данном примере строка 14 с листа Лист1 будет перемещена на место 16
+строки листа Лист2.
+
+#### Действие «Сгруппировать строки»
+
+С помощь данного действия создаются группы строк в Excel. На вход
+подается название листа, на котором происходит группировка, и перечень
+номеров строк. Перечислить строки можно просто через запятую, либо, если
+диапазон не разрывный, через двоеточие, например – «1,2,3,7,8,9» или
+«1:5», что равносильно «1,2,3,4,5».
+
+
+
+Рис. 2... Пример настройки действия «Сгруппировать строки»
+
+#### Действие «Удалить группировку строк»
+
+Действие предназначено для удаления 1-го уровня существующей группировки
+по строкам. Входные данные аналогичны действию «Сгруппировать строки».
+
+
+
+Рис. 2... Пример настройки действия «Удалить группировку строк»
+
+#### Действие «Уровень группировки строки»
+
+Действие позволяет получить уровень группировки выбранной строки и
+записать результат в указанную переменную.
+
+
+
+Рис. 2... Пример настройки действия «Уровень группировки строк»
+
+### Группа «Работа с колонками»
+
+#### Действие «Добавить столбец»
+
+Действие добавляет новый столбец в указанное место.
+
+
+
+Рис. 2... Пример настройки действия «Добавление столбца»
+
+#### Действие «Удалить столбец»
+
+Действие удаляет указанный столбец.
+
+
+
+Рис. 2... Пример настройки действия «Удаление столбца»
+
+#### Действие «Получить количество столбцов»
+
+Действие возвращает номер самого последнего используемого столбца.
+
+
+
+Рис. 2... Пример настройки действия «Получение количества столбцов»
+
+#### Действие «Сгруппировать столбцы»
+
+Действие объединяет указанные столбцы в группу. Входными данными
+являются лист и перечень столбцов через запятую или в виде диапазона
+через двоеточие («A,B,C,D,E» или «A:E»). В качестве столбца можно
+указывать как его название, так и его порядковый номер, начиная с
+единицы.
+
+
+
+Рис. 2... Пример настройки действия «Сгруппировать столбцы»
+
+#### Действие «Удалить группировку колонок»
+
+Действие позволяет удалить один уровень группировки у указанных
+столбцов.
+
+
+
+Рис. 2... Пример настройки действия «Удалить группировку колонок»
+
+#### Действие «Уровень группировки столбца»
+
+Данное действие позволяет получить уровень группы указанного столбца и
+записать его в переменную.
+
+
+
+Рис. 2... Пример настройки действия «Уровень группировки столбца»
+
+### Группа «Работа с листами и файлами»
+
+#### Действие «Создать новый лист»
+
+Действие создает новый лист с указанным именем.
+
+
+
+Рис. 2... Пример настройки действия «Создание нового листа»
+
+#### Действие «Удалить лист»
+
+Действие удаляет лист с указанным именем.
+
+
+
+Рис. 2... Пример настройки действия «Удаление листа»
+
+#### Действие «Очистить лист»
+
+Действие очищает ячейки листа от данных. **Не очищает форматирование!**
+
+
+
+Рис. 2... Пример настройки действия «Очищение листа»
+
+#### Действие «Получить список листов»
+
+Возвращает переменную-список, содержащую названия всех листов файла.
+
+
+
+Рис. 2... Пример настройки действия «Получение списка листов»
+
+#### Действие «Ориентация страницы»
+
+Изменение ориентации страницы Excel. Доступные ориентации – книжная и
+альбомная.
+
+
+
+Рис. 2... Пример настройки действия «Ориентация страницы»
+
+#### Действие «Настройки печати»
+
+Действие позволяет выбрать область листа, которая должна быть отображена
+на странице при печати, а также масштаб этой области. Аналогично
+одноименной настройке в Excel.
+
+
+
+Рис. 2... Пример настройки действия «Настройки печати»
+
+#### Действие «Создать новый файл»
+
+Действие создает в указанной папке новый файл с названием и указанным
+расширением (если расширение не указано, создается файл .xlsx). Если
+поле «Лист» заполнено, то первый лист файла будет назван так, как
+указано в поле, иначе - по умолчанию (Лист 1, Sheet 1, в зависимости от
+языка системы).
+
+
+
+Рис. 2... Пример настройки действия «Создание нового файла»
+
+#### Действие «Заполнить лист на основе Excel-файла»
+
+Данное действие производит заполнение листа текущего файла по аналогии с
+листом какого-либо другого файла. В поле «Лист» указывается лист
+текущего файла.
+
+
+
+Рис. 2... Пример настройки действия «Заполнение листа»
+
+#### Действие «Экспортировать в PDF»
+
+Действие позволяет сохранить Excel-файл в формате PDF стандартными
+методами Windows, то есть деление листа Excel-файла на листы в документе
+PDF будет производиться по стандартным настройкам, указанным в файле
+Excel (по умолчанию размер листа А4, с обычными полями). Действие не
+имеет дополнительной настройки.
+
+
+
+Рис. 2... Пример настройки действия «Экспортирование в PDF»
+
+Название файла и его расположение будут совпадать с экспортируемым
+файлом (расширение файла будет pdf).
+
+### Группа «Поиск»
+
+#### Действие «Найти данные»
+
+Ищет заданную строку в указанном листе и возвращает адрес ***первой***
+найденной ячейки. Флажок «Строгое сравнение» ставится в том случае, если
+текст в ячейке должен полностью совпадать с текстом, введенном в поле
+«Строка».
+
+
+
+Рис. 2... Пример настройки действия «Найти данные»
+
+#### Действие «Поиск строки по значениям колонок»
+
+Данное действие ищет и возвращает номера строк, в заданных колонках
+которых записаны указанные значения. Флажок «Строгое сравнение» ставится
+в том случае, если текст в ячейках должен полностью совпадать с текстом,
+введенном в поле «Значения». Флажок «Массив» вернет массив всех
+найденных строк, результирующая переменная будет являться массивом
+чисел, если флажок не установлен, то в результирующую переменную будет
+записан номер первой найденной строки или «Строка не найдена», если
+таких строк нет.
+
+
+
+Рис. 2... Пример настройки действия «Поиск строки»
+
+В данном случае будет искаться одна строка, в колонке A которой
+23.03.2020, а в колонке B – Уфа.
+
+#### Действие «Найти лист»
+
+Ищет лист, в котором есть ячейка с указанным в поле «Строка» значением и
+возвращает его название в указанную переменную. Флажок «Строгое
+сравнение» ставится в том случае, если текст в ячейке должен полностью
+совпадать с текстом, введенном в поле «Строка».
+
+
+
+Рис. 2... Пример настройки действия «Найти лист»
+
+### Группа «Другие функции»
+
+#### Действие «Сместить ячейку»
+
+Смещает заданную ячейку на указанное количество строк и колонок, затем
+возвращает результат в переменную (в данном примере результатом будет
+ячейка D13).
+
+
+
+Рис. 2... Пример настройки действия «Сместить ячейку»
+
+#### Действие «Наложить фильтр»
+
+Данное действие добавляет фильтр в таблицу на указанном листе, ячейка из
+которой указана в поле «Ячейка из диапазона значений». В поле столбец
+записывается столбец, к которому необходимо применить фильтр.
+Фильтруемый столбец должен быть один. Если необходимо применить
+несколько фильтров к одной таблице, то необходимо добавить для каждого
+фильтра свое действие в рамках одного Excel-модуля. Функция, по которой
+должно происходить сравнение, выбирается из выпадающего списка в поле
+«Функция», значение, с которым будет происходить сравнение при
+фильтрации, указано в поле «Значение».
+
+Если необходимо просто включить фильтр в таблице, но без определенной
+фильтрации, то нужно оставить поле «Функция» пустым.
+
+
+
+Рис. 2... Пример настройки действия «Наложить фильтр»
+
+#### Действие «Удалить фильтр»
+
+Действие удаляет все фильтры с листа.
+
+
+
+Рис. 2... Пример настройки действия «Удаление фильтра»
+
+#### Действие «Добавить сортировку»
+
+Действие добавляет сортировку к указанному диапазону по выбранному
+столбцу. В зависимости от флажка определяется, сортируется столбец по
+убыванию или по возрастанию. Столбец для сортировки должен быть один.
+
+
+
+Рис. 2.5.. Пример настройки действия «Добавление сортировки»
+
+#### Действие «Очистить диапазон»
+
+Действие удаляет все значения и форматирования ячеек в указанном
+диапазоне.
+
+
+
+Рис. 2... Пример настройки действия «Очищение диапазона»
+
+#### Действие «Получить уникальные значения столбца»
+
+Аналогично действию «Удалить дубликаты» в Excel, данное действие
+возвращает только уникальные значения указанных столбцов из диапазона.
+Итоговая таблица может быть вставлена как в тот же лист, так и в другой
+в лист, но в тот же диапазон. В зависимости от наличия дубликатов,
+количество строк может быть уменьшено.
+
+
+
+Рис. 2... Пример настройки действия «Получение уникальных значений»
+
+#### Действие «Промежуточные итоги»
+
+Действие добавляет операцию Excel «Промежуточные итоги» на указанный
+лист к указанному диапазону.
+
+
+
+Рис. 2... Пример настройки действия «Промежуточные итоги»
+
+Поле «Для колонок» соответствует полю в Excel «Добавить итоги по»
+(выделено зеленым на рисунке 2.5.40), поле «При каждом изменении в
+колонке» соответствует аналогичному полю в Excel, но должно быть
+заполнено названием колонки Excel (A, B, … или 1, 2, …) (выделено
+красным на рисунке 2.5.40, поле «Функция» заполняется операцией, которая
+должна быть применена для выбранных колонок (выделено синим на рисунке
+2.5.40).
+
+
+
+Рис. 2... Настройка действия «Промежуточные итоги» в Excel
+
+#### Действие «Сводная таблица»
+
+Добавляет сводную таблицу в указанные лист и диапазон (поле «Лист,
+диапазон для вставки) на основе данных таблицы из поля «Лист, диапазон
+источника».
+
+
+
+Рис. 2... Пример настройки действия «Сводная таблица»
+
+В поля «Поля в столбцах», «Поля в значениях» и «Поля в строках»
+вписываются **названия колонок таблицы-источника** (а не Excel-таблицы),
+как в программе Excel:
+
+«Поля в столбцах» соответствуют названиям столбцов таблицы, значения
+которых должны быть расположены в столбцах сводной таблицы (выделено
+зеленым на рисунке 2.5.42);
+
+«Поля в строках» соответствуют названиям столбцов таблицы, значения
+которых должны быть расположены в строках сводной таблицы (выделено
+синим на рисунке 2.5.42);
+
+«Поля в значениях» соответствуют названиям столбцов таблицы, значения
+которых должны быть расположены в значениях сводной таблицы (выделено
+красным на рисунке 2.5.42);
+
+
+
+Рис. 2... Настройка действия «Сводная таблица» в Excel
+
+#### Действие «Скопировать и вставить ячейку/диапазон»
+
+Данное действие позволяет скопировать данные и форматирование и вставить
+их в тот же или в другой файл. С помощью него можно «растягивать»
+формулы (см. «Действие «Формула»).
+
+
+
+Рис. 2... Пример настройки действия «Скопировать и вставить
+ячейку/диапазон»
+
+#### Действие «Отобразить в виде процентов»
+
+Действие переводит выбранный диапазон в проценты.
+
+
+
+Рис. 2... Пример настройки действия «Отображение в виде процентов»
+
+#### Действие «Круговая диаграмма»
+
+Действие создает на указанном листе круговую диаграмму. Значения
+диаграммы берутся из диапазона, указанного в поле «Ячейки», диапазон с
+названиями значений указывается в поле «Диапазон названий». В поле
+«Расположение» указываются границы расположения круговой диаграммы, а
+именно левый верхний угол и правый нижний через запятую.
+
+
+
+Рис. 2... Пример настройки действия «Создание круговой диаграммы»
+
+**ПРИМЕР.**
+
+Построение круговой диаграммы для двух параметров, указанных в столбце
+A, по соответствующим им параметрам, указанным в столбце B. Заполнение
+действия для данного примера указано на рисунке 2.5.45.
+
+Пример исходных данных представлен на рисунке 2.5.46.
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат построения круговой диаграммы представлен на рисунке 2.5.47.
+
+
+
+Рис. 2... Результат выполнения действия «Круговая диаграмма»
+
+#### Действие «График»
+
+Действие создает линейный график с одним или несколькими рядами. Ряд
+необходимо указать в поле «Диапазон значений» в виде одномерного
+диапазона (по одной колонке или по одной строке). Если рядов больше, чем
+один, то последующие ряды нужно указать в таком же виде через «;», как
+указано на рисунке 2.5.48. Диапазон аргументов должен быть один и
+указывается аналогично ряду. «Ячейки с названиями рядов» заполняются
+названиями ячеек через «;», их количество должно быть равно количеству
+рядов, первая ячейка отображает название первого ряда и т.д. В ячейку
+для вставки записывается ячейка, в которой будет располагаться левый
+верхний угол графика.
+
+
+
+Рис. 2... Пример настройки действия «График»
+
+**ПРИМЕР.**
+
+В качестве примера возьмем курс доллара и евро за некоторый промежуток
+времени. Так как валют две, то график должен состоять из двух рядов. В
+качестве аргументов выступит столбец с указанием дат – A, в качестве
+значений будет два столбца, первый – B, курс евро, и второй – C, курс
+доллара. Заполнение действия представлено на рисунке 2.5.48.
+
+Пример исходных данных представлен на рисунке 2.5.49.
+
+
+
+Рис. 2... Пример настройки действия «График»
+
+Результат работы программы представлен на рисунке 2.5.50.
+
+
+
+Рис. 2... Результат выполнения действия «График»
+
+#### Действие «Проверка значений»
+
+Действие создает ограничение типов данных, которые можно ввести в
+выбранные ячейки, путем выбора предложенных правил. В поле **«Лист»**
+вводится лист, в ячейки которого добавляются ограничения, в поле
+**«Ячейки»** вводится диапазон ячеек, на которых будет проводиться
+проверка значений при вводе. В поле **«Тип данных»** выбирается один из
+предложенных типов данных – целое или действительное число, список,
+дата, длина текста, время. Поле **«Операция»** состоит из списка
+доступных операций для составления правила проверки – равно, не равно,
+больше, меньше, больше или равно, меньше или равно, между и вне. При
+использовании типа данных «Список» заполнение поля «Операция» не
+требуется, поэтому оно не доступно для редактирования.
+
+Последнее поле меняется в зависимости от типа данных – для типа «Список»
+это будет «Источник данных», для всех остальных – «Критерии (ч/з ;)».
+Поле **«Источник данных»** заполняется диапазоном значений (внутри
+одного столбца или одной строки), в которой будет указан в списке (если
+список статичный, то указывайте абсолютную ссылку). Поле **«Критерии
+(ч/з ;)»** заполняется значениями, относительно которых будет
+применяться правило проверки.
+
+Поле «Сообщение об ошибке» заполняется текстом ошибки, которая будет
+отображаться, если в ячейку введено значение, не удовлетворяющее
+заданному для неё правилу. Является необязательным полем. Если оставить
+его пустым, то будет отображаться ошибка «Введенное значение неверно.
+Набор значений, которые могут быть введены в ячейку, ограничен».
+
+
+
+Рис. 2... Пример настройки действия «Проверка значений»
+
+**ПРИМЕР.**
+
+Для создания списка, состоящего из некоторых заданных в какой-либо
+колонке значений, действие заполняется так, как указано на рисунке
+2.5.51. Пусть в ячейках А2:А6 будут следующие значения:
+
+
+
+Рис. 2... Пример исходных данных
+
+Тогда после работы робота при нажатии на любую ячейку из диапазона С2:С6
+будет появляться стрелочка для открытия выпадающего списка, в котором
+будут содержаться выбранные значения:
+
+
+
+Рис. 2... Результат выполнения действия «Проверка значений»
+
+Второй пример - создание правила, позволяющего вводить в диапазон ячеек
+A1:A5 только действительные числа, находящиеся в промежутке между 5 и
+10. Пусть при введении неверного значения будет выдаваться ошибка:
+«Введено неверное значение. Должно быть введено действительное число
+между 5 и 10»:
+
+
+
+Рис. 2... Пример создания правила для проверки значений
+
+После работы робота при попытке ввести число, находящееся вне диапазона
+от 5 до 10, появляется ошибка:
+
+
+
+Рис. 2... Результат выполнения действия «Проверка значений»
+
+#### Действие «Добавить изображение»
+
+Действие добавляет выбранное изображение в текущий Excel-файл. Если
+изображение имеет прозрачный фон, то оно также сохранит прозрачность при
+его добавлении в файл Excel. В поле «Ячейки» указывается левый верхний
+угол расположения изображения.
+
+
+
+Рис. 2... Пример настройки действия «Добавить изображение»
+
+### Группа «Форматирование»
+
+#### Действие «Условное форматирование»
+
+Действие форматирует указанные ячейки на выбранном листе в зависимости
+от того, удовлетворяют ли они указанному условию. В поле «Лист,
+диапазон» через запятую вводятся лист и диапазон или одна ячейка из
+этого листа, к которым будет применяться условное форматирование. В
+полях «Цвет заливки» и «Цвет текста» указываются цвета, которыми будет
+залита ячейка и окрашен текст в ней, если она будет удовлетворять
+условию. Условие составляется из выбора функции и указания значения для
+сравнения. Доступные функции – равно, не равно, больше, меньше, больно
+или равно, меньше или равно, формула. Если выбрана функция «формула», то
+в поле «Значение для сравнения» следует вписать формулу в формате Excel,
+начиная со знака «=».
+
+
+
+Рис. 2... Пример настройки действия «Условное форматирование»
+
+**ПРИМЕР.**
+
+Окрасим все ячейки в столбцах B и C в зеленый цвет, если значение курса
+меньше или равно 82. Действие заполняется как на рисунке 2.5.57.
+
+Исходные данные представлены на рисунке 2.5.58.
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы программы представлен на рисунке 2.5.59.
+
+
+
+Рис. 2... Результат выполнения действия «Условное форматирование»
+
+#### Действие «Цвет ячейки/диапазона»
+
+Действие меняет цвет заливки текста и самого текста в указанном
+диапазоне / ячейке.
+
+
+
+Рис. 2... Пример настройки действия «Цвет ячейки/диапазона»
+
+**ПРИМЕР.**
+
+На рисунке 2.5.60 представлено, как залить диапазон ячеек A17:C19 в
+голубой цвет, а текст в этих ячейках окрасить в фиолетовый.
+
+Исходные данные представлены на рисунке 2.5.61:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы робота представлен на Рис. 2.5.62:
+
+
+
+Рис. 2... Результат выполнения действия «Цвет ячейки/диапазона»
+
+***Действие «Ширина столбца(-ов)»***
+
+Действие изменяет ширину указанных столбцов. Столбцы можно перечислять
+через запятую, писать их номера вместо названий (с 1-цы). Ширина
+указывается в той же единице измерения, которая используется в Excel.
+
+
+
+Рис. 2... Пример настройки действия «Ширина столбца(-ов)»
+
+**ПРИМЕР.**
+
+На Рис. 2.5.63 представлено, как заполнить действие для установки ширины
+столбцов B и C в 16 пунктов. В поле «Столбцы» можно было бы написать
+«2,3», то есть второй и третий столбцы.
+
+Исходные данные представлены на рисунке 2.5.64:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы представлен на Рис. 2.5.65:
+
+
+
+Рис. 2... Результат выполнения действия «Ширина столбца(-ов)»
+
+#### Действие «Высота строки (-ок)»
+
+Действие изменяет высоту указанных строк. Используется та же единица
+измерения, что и в Excel.
+
+
+
+Рис. 2... Пример настройки действия «Высота строки(-ок)»
+
+**ПРИМЕР.**
+
+Изменим высоту первой строки, сделав её равной 30 пунктам. Для этого
+заполняем действие так, как указано на рисунке 2.5.66.
+
+Исходные данные представлены на рисунке 2.5.67:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы робота представлен на рисунке 2.5.68:
+
+
+
+Рис. 2... Результат выполнения действия «Высота строки(-ок)»
+
+#### Действие «Объединить ячейки»
+
+Действие объединяет указанные ячейки на выбранном листе. В модуле
+предусмотрено три вида объединений:
+
+- простое объединение – то есть объединяются и колонки, и столбцы
+ диапазона;
+
+- объединение по строкам;
+
+- объединение по столбцам.
+
+
+
+Рис. 2... Пример настройки действия «Объединить ячейки»
+
+**ПРИМЕР.**
+
+На рисунке 2.5.69 представлено заполнение действия для объединения
+колонок в диапазоне ячеек A2:C4.
+
+Исходные данные представлены на рисунке 2.5.70:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы представлен на рисунке 2.5.71:
+
+
+
+Рис. 2... Результат выполнения действия «Объединить ячейки»
+
+***Действие «Очистить форматирование»***
+
+Действие очищает форматирование в указанном диапазоне выбранного листа.
+
+
+
+Рис. 2... Пример настройки действия «Очистить форматирование»
+
+**ПРИМЕР.**
+
+Очистим форматирование, которое содержится в диапазоне A17:C19. Для
+этого заполним действие так, как указано на рисунке 2.5.72 и запустим
+робота.
+
+Исходные данные представлены на рисунке 2.5.73:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы представлен на рисунке 2.5.74:
+
+
+
+Рис. 2... Результат выполнения действия «Очистить форматирование»
+
+***Действие «Формат ячейки»***
+
+Действие меняет формат указанной ячейки на выбранный. По умолчанию, все
+значения, заносимые в Excel студией, имеют строковый формат, поэтому,
+для корректного пересчета формул или сортировки, необходимо привести
+данные к нужному формату.
+
+
+
+Рис. 2... Пример настройки действия «Формат ячейки»
+
+#### Действие «Формат числа»
+
+Действие отображает число по определенным правилам числового формата
+Excel.
+
+
+
+Рис. 2... Пример настройки действия «Формат числа»
+
+Примеры форматов можно посмотреть в программе Excel, кликнув правой
+кнопкой левой кнопкой мыши по ячейке – «Формат ячейки» – вкладка «Число»
+- (все форматы):
+
+
+
+Рис. 2... Просмотр примеров форматов числа в Excel
+
+Наиболее часто используемые форматы числа предлагаются в студии при
+наведении на поле для ввода формата.
+
+
+
+Рис. 2... Просмотр примеров форматов числа в студии
+
+**ПРИМЕР.**
+
+Отформатируем число, содержащееся в ячейке A1 в денежный долларовый
+формат. Для этого заполним действие так, как указано на рисунке 2.5.78.
+
+Исходные данные представлены на рисунке. 2.5.79:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы представлен на рисунке ниже:
+
+
+
+Рис. 2... Результат выполнения действия «Формат числа»
+
+#### Действие «Выравнивание»
+
+Действие применяет заданное выравнивание в указанных ячейках. В поле
+«Общее положение» предлагается выбрать одно из двух – по вертикали или
+по горизонтали применять выравнивание, выбранное в поле «Выравнивание
+содержимого», которое, в свою очередь, предлагает выбрать выравнивание
+содержимого по левому/правому краю, либо по верхнему/нижнему краю, либо
+по центру.
+
+
+
+Рис. 2... Пример настройки действия «Выравнивание»
+
+**ПРИМЕР.**
+
+В заполненном на рисунке 2.5.81 действии настраивается выравнивание
+ячейки А1 по центру относительно вертикали.
+
+Исходное положение текста в ячейке представлено на рисунке 2.5.82:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы представлен на рисунке 2.5.83:
+
+
+
+Рис. 2... Результат выполнения действия «Выравнивание»
+
+#### Действие «Перенос текста»
+
+Действие добавляет в указанный диапазон надстройку ячеек «Перенос
+текста», функция которой – отображение текста ячейки в несколько строк,
+если он не помещается в одну.
+
+
+
+Рис. 2... Пример настройки действия «Перенос текста»
+
+#### Действие «Шрифт»
+
+Действие меняет шрифт, стиль или размер выбранных ячеек на указанном
+листе. Модуль предоставляет выбор всех стандартных шрифтов, доступных в
+пакете Microsoft Office.
+
+
+
+Рис. 2... Пример настройки действия «Изменение шрифта»
+
+**ПРИМЕР.**
+
+Изменим шрифт текста, находящегося в ячейке B1 так, как указано в
+действии на рисунке 2.5.85 – сам шрифт изменим на Batang, зададим стиль
+текста – полужирный курсив, а размер текста 16.
+
+Исходное форматирование текста представлен на рисунке 2.5.86:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы представлен на рисунке 2.5.87:
+
+
+
+Рис. 2... Результат выполнения действия «Шрифт»
+
+#### Действие «Границы»
+
+Действие добавляет или изменяет границы выбранных ячеек на указанном
+листе. Предполагает настройку расположения границ – внешние, внутренние,
+только правая и др., цвет границ и их стиль – толстая, тонкая, штриховая
+линия и др.
+
+
+
+Рис. 2... Пример настройки действия «Границы»
+
+**ПРИМЕР.**
+
+Добавим штрихпунктирную внешнюю границу для блока текста, находящегося в
+диапазоне A2:A6. Для этого необходимо заполнить действие так, как
+указано на рисунке 2.5.88.
+
+Исходный вид блока текста представлен на рисунке 2.5.89:
+
+
+
+Рис. 2... Пример исходных данных
+
+Результат работы представлен на рисунке 2.5.90:
+
+
+
+Рис. 2... Результат выполнения действия «Границы»
+
+## Модуль «Закрыть Excel-файл»
+
+Excel-модуль работает с файлами следующим образом – как только он
+начинает работу с некоторым файлом, то он открывает его (в фоновом,
+незаметном для пользователя, режиме), и держит открытым до конца работы
+робота. Это было сделано для ускорения работы модуля Excel – если
+модулей, использующих один и тот же файл, к примеру, несколько, пришлось
+бы несколько раз открывать и сохранять файл столько раз, сколько он
+используется что отразилось бы на быстродействии программы. В связи с
+этим, файл открывается при первом его использовании в модуле Excel и
+сохраняется только один раз – в самом конце. Но! Так как файл является
+открытым, с самим файлом нельзя ничего делать – переносить,
+архивировать, удалять за ненадобностью (например, провели расчеты в
+новом файле, взяли данные и затем его удалили), так как он занят. Для
+таких задач существует модуль «Закрыть Excel-файл» - он закрывает и
+сохраняет заданные ему файлы. Если эти файлы впоследствии снова будут
+использоваться – они опять откроются и, в следующий раз, будут закрыты
+либо этим же модулем, либо в конце работы робота.
+
+Интерфейс модуля состоит из одного поля и списка путей к файлам, которые
+необходимо закрыть.
+
+
+
+Рис. 2... Окно «Закрыть Excel-файл»
+
+**Поле «Путь к файлу»** заполняется путем до файла, который необходимо
+закрыть. Он может содержаться в переменной, или можно выбрать его
+вручную, нажав на кнопку с изображением папки, находящуюся в поле для
+ввода.
+
+По кнопке «Добавить» указанный в поле «Путь к файлу» путь будет занесен
+в «Список файлов».
+
+По кнопке «Удалить» можно удалить выбранный путь из «Списка файлов».
+
+# Модуль «Word»
+
+## Основные моменты модуля
+
+Модуль Word обеспечивает работу с документами Microsoft Word пакета
+Microsoft Office. С помощью модуля можно создавать и редактировать
+документы с популярными текстовыми расширениями, такими как .doc, .docx,
+.html.
+
+### Интерфейс окна
+
+Окно модуля состоит из трех основных частей, первая – часть, содержащая
+в себе поля для создания команд и кнопок управления ими, вторая –
+таблица «Список команд», которая будет содержать все добавленные
+действия для работы с файлом, и третья – окно с предварительным
+просмотром загруженного файла.
+
+
+
+Рис. 3... Интерфейс окна
+
+Окно предварительного просмотра позволяет просмотреть весь загруженный
+документ в том же виде, в котором он виден в самом Microsoft Word.
+
+Раздел настройки модуля состоит из нескольких полей, доступность которых
+варьируется от необходимых для работы действий. Три первых поля являются
+основными и доступными всегда, причем обязательными являются только два
+из них:
+
+- «Путь к файлу» - поле с кнопкой, открывающей диалог выбора файла.
+ Данное поле предназначено для выбора существующего файла, с которым
+ предстоит далее работать, либо для введения в него пути, по которому
+ необходимо будет создать новый файл. Обязательное поле;
+
+- «Действие» - выпадающий список, состоящий из действий, которые можно
+ применить к загруженному файлу или создать новый с указанным путем в
+ поле «Путь к файлу». Обязательное поле;
+
+
+
+Рис. 3... Перечень доступных действий модуля
+
+- «Описание» - поле, необходимое для удобной навигации по действиям,
+ заполняется комментарием разработчика о создаваемом действии.
+ Необязательное поле.
+
+Все возможные действия будут описаны в следующей главе.
+
+Для добавления действия в таблицу «Список команд» необходимо
+воспользоваться кнопкой «Добавить» под полями настройки действия.
+
+
+
+Рис. 3... Расположение кнопки «Добавить»
+
+После нажатия на кнопку созданное действие добавится в «Список команд».
+Для редактирования существующей команды или её удаления, необходимо
+выбрать строку с командой в таблице команд и нажать «Удалить» для её
+удаления, или отредактировать необходимые поля действия и затем нажать
+«Редактировать».
+
+Для того, чтобы поменять существующие действия местами, необходимо
+выбрать одно действие и нажать на необходимые кнопки «Поднять» или
+«Опустить», которые расположены в правом углу над таблицей с командами.
+
+
+
+Рис. 3... Кнопки «Поднять/Опустить» и выбор строки в таблице
+
+## Действия модуля
+
+#### Создать файл
+
+Данное действие создает файл с указанным путем, именем и расширением.
+Для настройки действия необходимо заполнить поле «Путь к файлу» строкой
+типа «*Путь до файла*/*Название файла*.*Требуемое расширение*»,
+например, «C:/Reports/Documents/Test.docx».
+
+
+
+Рис. 3... Пример заполнения действия «Создать файл»
+
+#### Получить текст
+
+Действие «Получить текст» позволяет считать весь текст из загруженного
+файла в переменную. Для настройки действия появляется еще одно поле
+помимо стандартных трёх – «Переменная», в которую записывается название
+переменной (с символов «v.»), в которую будет записан считанный текст.
+
+
+
+Рис. 3... Пример настройки действия «Получить текст»
+
+#### Записать текст
+
+С помощью действия можно записать имеющийся текст, например, считанный
+из другого текстового файла, в текущий загруженный файл. Для настройки
+обязательно заполнение поля «Значение», куда вводится либо переменная (с
+символов «v.»), содержащая текст, либо сам текст. Обратите внимание, что
+текст, введенный данным действием, полностью затрет существующий текст в
+файле.
+
+
+
+Рис. 3... Пример настройки действия «Записать текст»
+
+#### Добавить текст
+
+Данное действие позволяет добавлять текст к существующему с применением
+необходимого форматирования. Для редактирования открываются все поля
+модуля. Далее будет подробно описано каждое поле, отличное от основных
+трёх.
+
+«После символа №» - данное поле ожидает ввод целого числа,
+обозначающего, после какого по счету символа необходимо вставить текст
+(с учетом пробелом и символов переноса строки или разрыва страницы).
+
+
+
+Рис. 3... Пример настройки действия «Добавить текст»
+
+«Размер текста» - аналогичен полю «Размер шрифта» в Microsoft Word –
+устанавливает размер добавляемого текста. Ожидается ввод целого или
+десятичного числа.
+
+«Шрифт» - выпадающий список, содержащий в себе набор стандартных шрифтов
+пакета Micrisift Office – устанавливает шрифт добавляемого текста.
+
+«Цвет текста» и «Цвет фона» – поля с иконкой палетки сбоку, по нажатию
+на которые открывается диалог выбора цвета – устанавливают цвет
+добавляемого текста и его фона соответственно. Вводится в формате цвета
+HEX – шестнадцатеричное представление RGB.
+
+«Текст» - поле, в которое указывается добавляемый текст или переменная,
+которая его содержит.
+
+#### Добавить перенос строки
+
+Данное действие добавляет символ переноса строки в файл. Не требует
+заполнения дополнительных полей.
+
+
+
+Рис. 3... Пример настройки действия добавление перехода на новую строку
+
+#### Удалить текст
+
+С помощью данного действия можно удалить текст, зная количество символов
+в нем и его расположение. Для настройки необходимо ввести в поле «После
+символа №, количество» два целых числа через запятую, где первое число –
+номер символа, после которого необходимо удалить текст, а второе –
+количество символов в удаляемом тексте.
+
+
+
+Рис. 3... Пример настройки действия «Удалить текст»
+
+#### Экспорт
+
+С помощью данного действия можно менять расширение загруженного файла.
+Для настройки действия нужно выбрать из выпадающего списка «Тип» тип
+файла, в который нужно экспортировать, и указать путь с названием и
+расширением будущего файла в поле «Путь выходного файла».
+
+
+
+Рис. 3... Пример настройки действия «Экспорт»
+
+# МОДУЛЬ «КЛИКЕР» И МОДУЛИ, РАБОТАЮЩИЕ С ЭКРАНОМ
+
+## Модуль «Кликер»
+
+Модуль «Кликер» предназначен для записи последовательности действий,
+выполняемых пользователем, а именно кликов по определенным местам экрана
+и нажатий кнопок на клавиатуре или мыши. С помощью этого модуля можно
+производить интеграции между самыми разными программами, так как он
+точно имитирует действия пользователя, то есть, если Вы сможете это
+сделать, то это сможет сделать и «Кликер».
+
+Использование роботов-кликеров, которые ищут координаты или изображения,
+рекомендуется на компьютерах с таким же разрешением, как и тот, на
+котором был написан данный робот.
+
+### Создание макроса
+
+При открытии модуля «Кликер» появится диалоговое окно «Запись действий
+макроса», состоящее из трех элементов – кнопки «Начать запись», области,
+в которой будут отображены записанные действия, и кнопки «Сохранить».
+
+
+
+Рис. 4... Запись действий макроса
+
+По нажатию кнопки «Начать запись» программа переходит в режим
+***ожидания нажатия кнопки «TAB»**,* по которой открывается окно
+создания действия (команды).
+
+
+
+Рис. 4... Создание команды
+
+В открывшемся окне происходит настройка действия (описание всех
+возможных действий будет дано ниже). По завершению создания команды и
+нажатию кнопки сохранить, новое действие будет добавлено в макрос.
+
+
+
+Рис. 4... Добавление команды
+
+Изменить положение действия в списке команд можно с помощью кнопок с
+изображением стрелок, расположенных в правой части блока.
+
+
+
+Рис. 4... Изменение порядка команды
+
+Кнопка с изображением крестика, расположенная между стрелками,
+предназначена для удаления действия из списка команд.
+
+Для сохранения макроса необходимо нажать на кнопку «Сохранить».
+
+### Создание команды
+
+Окно создания команды состоит из статичных и изменяющихся полей.
+Статичными являются такие поля, как «Действие», «Пауза» и «Примечание».
+
+### Статичные поля
+
+***Действие***
+
+Поле «Действие» состоит из перечня доступных действий для записи макроса
+– нажатие кнопок мыши и клавиатуры, наиболее часто встречающиеся
+сочетания кнопок (скопировать, вставить). Далее будут приведены все
+действия, доступные в модуле.
+
+***Пауза***
+
+Поле «Пауза» предназначено для создания эффекта ожидания после
+выполняемой команды. Значение указывается в миллисекундах.
+
+Например, после нажатия на иконку браузера роботу следует подождать
+несколько секунд, пока браузер запустится и будет готов к работе – в
+данном примере в команде открытия браузера (кликнуть мышкой по его
+иконке) в поле «Пауза» следует написать некоторое значение, например,
+5000, т.е. 5 секунд.
+
+***Примечание***
+
+Поле «Примечание» позволяет писать комментарии, чтобы не запутаться в
+командах.
+
+### Поля, появляющиеся только при определенных действиях
+
+***Переключатели «Изображение», «Координаты» и «Селекторы»***
+
+При создании действий, связанных с кликом или наведением мыши, вам
+предлагается выбрать, куда кликать – по определенным координатам или по
+изображению. Если программа, с которой вы работаете, статичная и не
+меняет расположение своих кнопок, то можно воспользоваться кликом по
+координатам. Тогда возникает вопрос, как рассчитать координаты? Все
+очень просто – при нажатии кнопки «TAB» нужно располагать мышь ровно в
+том месте, куда следует нажать. В диалоговом окне создания команды
+координаты уже будут заполнены.
+
+Если программа может менять расположение её элементов, то настоятельно
+рекомендуем использовать клик по изображению. Для этого нажмите на
+переключатель «**Изображение**».
+
+
+
+Рис. 4... Создание команды
+
+При изменении переключателя изменится нижняя часть окна – появятся
+кнопки «Выбрать изображение», «Выделить изображение» и поле для ввода
+«Процент совпадения».
+
+Изображение, по которому потребуется кликнуть для выполнения действия,
+можно настроить двумя способами:
+
+1\) загрузить имеющееся изображение, нажав на кнопку «Выбрать
+изображение»
+
+2\) выбрать фрагмент снимка окна, в котором будет воспроизводиться
+действие, с помощью кнопки «Выделить изображение». После нажатия на
+кнопку студия сделает снимок экрана и предложит вам выбрать фрагмент
+получившегося изображения.
+
+При использовании клика по изображению, ***обратите внимание*** на то,
+что, если на экране таких изображений будет несколько, действие будет
+применено к ***первому*** найденному!
+
+Поле «Процент совпадения» необходимо для случаев, когда искомое
+изображение может немного отличаться от того, что может быть в
+реальности (например, наличие выделения вокруг кнопки, если она
+выбиралась ранее, и отсутствие такого выделения). В подобных случаях
+уменьшайте процент совпадения до тех пор, пока изображение не будет
+находиться и в том, и в другом случае. Однако если процент совпадения
+уменьшить слишком сильно, модуль может найти то, что не планировали
+искать.
+
+
+
+Рис. 4... Пример отличия искомого изображения от действительного
+
+Поля «Количество попыток» и «Пауза между ошибками» предназначены для
+случаев, когда программа не смогла найти заданное ей изображение. Вы
+можете указать, сколько раз следует пытаться искать требуемое
+изображение и сколько секунд ждать между попытками. Например, после
+запуска браузера нужно нажать на кнопку с иконкой «Плюсик» – создание
+новой вкладки. Если браузер будет загружаться слишком долго, больше 5-ти
+секунд (это время указано в паузе команды открытия браузера), тогда
+программа начнёт искать «плюсик», которого еще нет. Затем программа
+подождет указанное ей количество секунд между попытками и попробует
+снова. Как только изображение будет найдено, программа подождет то
+количество секунд, которое указано в поле «Пауза» данной команды, и
+перейдет к следующей.
+
+Последний вариант поиска места для наведения мыши – «**Селекторы**».
+Этот вариант считается самым надежным, но поддерживается узким кругом
+программ. Селекторы Windows позволяют находить путь к элементу на экране
+используя не просто координаты или изображение, а путь относительно
+родительского компонента экрана с использованием специальной разметки.
+Они работают с системой компьютера, некоторыми desktop-приложениями.
+Использование подобно работе с координатами – необходимо навестить на
+искомый элемент и вызвать окно настройки действия по кнопке «TAB». При
+переключении настроек на «Селекторы», путь до элемента уже будет введен.
+
+
+
+Рис. 4... Рис. 4... Создание команды через селекторы Windows
+
+***Прокрутка мыши***
+
+Данное поле появляется при действии «Прокрутка мыши». В него вводится
+значение в пикселях, на сколько необходимо прокрутить колесико мыши.
+Если прокрутка вверх, то значение должно быть положительным, если вниз,
+то отрицательным.
+
+Во всех полях окна создания команды ***возможно использование
+переменных.***
+
+### Описание действий, доступных в модуле
+
+#### Действие «Кликнуть мышкой»
+
+Основное действие модуля – нажатие левой кнопкой мыши по указанным
+координатам или изображению.
+
+#### Действие «Кликнуть мышкой дважды»
+
+Двойной клик по указанным координатам или изображению, например, для
+открытия приложения с рабочего стола.
+
+#### Действие «Кликнуть правой кнопкой мыши»
+
+Клик правой кнопкой мыши, например, по приложению на рабочем столе,
+чтобы открыть его контекстное меню.
+
+#### Действие «Кликнуть колесиком мыши»
+
+В некоторых программах есть возможность использовать клик колесика мыши
+для исполнения некоторых действий, например, закрыть вкладку в браузере.
+
+#### Действие «Прокрутка мыши»
+
+Прокрутка колесом мыши вниз или вверх по странице. Здесь координаты
+играют роль того, где будет находиться курсор при прокрутке колеса, так
+как ползунков на экране может быть несколько. Для прокрутки экрана вниз
+в поле «Прокрутка мыши» должно быть введено отрицательное значение
+(-150), вверх - положительное (150).
+
+Число прокрутки измеряется в количестве прокруток колесом мыши.
+
+**ПРИМЕР.**
+
+Для прокрутки вниз конкретного ползунка необходимо навести на него
+курсор, нажать клавишу «TAB» на клавиатуре, выбрать действие «прокрутка
+мыши» и заполнить поле «Прокрутка мыши», как показано на рисунке 4.9.9:
+
+
+
+Рис. 4... Пример настройки команды
+
+#### Действие «Ввести текст»
+
+Данное действие вводит текст, который записан в поле «Текст». Поле, куда
+вводится текст, должно быть выделено (должен быть фокус, стоять
+каретка).
+
+В некоторых программах необходим специфичный ввод текста – в конкретной
+кодировке. В подобных случаях следует выбрать кодировку из предложенных
+в выпадающем списке «Использовать кодировку», или указать свою. Текст
+может лежать в переменной и быть скопированным из какой-либо программы,
+использующей конкретную кодировку. В таком случае, при вставке
+скопированного текста в другую программу, необходимо сначала считать его
+в кодировке исходной программы. Кодировка исходной программы вводится
+или выбирается в поле «Начальная кодировка». Заполнение этих полей
+**необязательно**.
+
+Флажок «Использовать WinInput» позволяет включить режим более
+корректного и быстрого ввода текста, но он может не поддерживаться
+некоторыми программами. Его использование **необязательно**.
+
+Пример заполнения действия:
+
+
+
+Рис. 4... Пример заполнения
+
+#### Действие «Нажать кнопку»
+
+Имитирует нажатие клавиши клавиатуры. Необходимую клавишу следует
+выбрать в выпадающем списке «Кнопка». В списке предложены все возможные
+клавиши, которые могут присутствовать как на простых, так и на
+расширенных клавиатурах (изменение громкости звука, запуск/остановка
+музыки и другие нестандартные кнопки).
+
+
+
+Рис.4... Действие «Нажать кнопку»
+
+#### Действие «Нажать две кнопки»
+
+Имитирует нажатие сочетания двух клавиш клавиатуры, например CTRL+A –
+выделение всего текста в поле. Необходимые кнопки выбираются в двух
+выпадающих списках «Кнопка». Список кнопок тот же, что и в действии
+«Нажать кнопку».
+
+
+
+Рис. 4... Действие «Нажать две кнопку»
+
+#### Действие «Скопировать»
+
+Имитирует нажатие сочетания клавиш клавиатуры CTRL+C. Копирует
+выделенное заранее значение в буфер обмена и записывает его, при
+необходимости, в переменную, указанную в поле «Записать в». Данное поле
+**не обязательно** к заполнению. Ввод переменной начинается с символов
+«v.».
+
+
+
+Рис. 4... Действие «Скопировать»
+
+#### Действие «Вставить»
+
+Имитирует нажатие сочетания клавиш клавиатуры CTRL+V. Вставляет в
+выбранное поле значение из буфера обмена.
+
+#### Действие «Пока не пропадет изображение»
+
+Ожидает отсутствия заданного изображения на экране в течение времени,
+дающегося на обнаружение ошибки (значение поля «Кол-во попыток»
+умноженное на значение поля «Пауза между ошибками»).
+
+## Модуль «Поиск изображения»
+
+Модуль «Поиск изображения», в основном, используется в связке с модулем
+«Кликер». Его задача – определить, существует ли на текущем экране
+заданное изображение, и если да, то вернуть координаты его центра.
+
+### Интерфейс модуля
+
+Окно модуля выглядит следующим образом:
+
+
+
+Рис. 4... Окно модуля
+
+Кнопки «Выбрать изображение» и «Выделить изображение» позволяют выбрать
+изображение для поиска.
+
+**Поле «Координата x».** В поле вводится ***переменная*** (начиная с
+символов «v.»), в которую будет записана координата x искомого
+изображения, если оно найдется.
+
+**Поле «Координата y».** Аналогично полю «Координата x», в данном поле
+указывается переменная, в которую будет записана координата y.
+
+**Поле «Результат».** В поле вводится название переменной, в которой
+будет итоговый результат поиска изображения (после использования всех
+попыток его найти». Результирующее значение будет представлено в виде
+строки: «true» - найдено, «false» - не найдено.
+
+Поля «Кол-во попыток», «Пауза» и «Процент совпадения» аналогичны полям
+модуля «Кликер».
+
+**Поле «Кол-во попыток».** В поле указывается количество попыток поиска
+изображения.
+
+**Поле «Пауза»** предназначено для указания паузы между попытками поиска
+в миллисекундах.
+
+**Поле «Процент совпадения»** - насколько сильно совпадает изображение,
+которое будет искаться, с фрагментом изображения на текущем экране.
+Вводится число от 0 до 100, чем больше, тем больше должно быть сходства
+между изображениями.
+
+## Модуль «Поиск изображений»
+
+Модуль «Поиск изображений» аналогичен модулю «Поиск изображения» с одним
+лишь отличием в том, что этот модуль возвращает список всех найденных
+изображений, а не одного.
+
+### Интерфейс модуля
+
+Интерфейс этого модуля очень похож на интерфейс модуля «Поиск
+изображения», но в нем вместо полей «Координата X», «Координата Y» и
+«Результат» только одно поле – «Переменная», а также появилось поле
+«Минимальная дистанция».
+
+
+
+Рис. 4... Окно модуля
+
+**В поле «Переменная»** вводится название переменной с символов «v.», в
+которую запишется результат поиска.
+
+**Поле «Кол-во попыток»** заполняется числом, указывающим, сколько раз
+пробовать искать изображения, если с первого раза ни одного найти не
+удалось.
+
+**Поле «Пауза»** предназначено для указания паузы между попытками поиска
+в миллисекундах.
+
+**В поле «Процент совпадения»** вводится значение от 0 до 100,
+указывающее, насколько сильно совпадают изображение, которое будет
+искаться, с фрагментом изображения на текущем экране. Чем больше число,
+тем сильнее они должны совпадать.
+
+**Поле «Минимальная дистанция»** заполняется числом, указывающим, какое
+минимальное количество пикселей должно быть между двумя одинаковыми
+изображениями. В некоторых задачах может быть потребоваться отсекать
+изображения, которые расположены достаточно близко друг к другу и
+получать только первое из этих изображений (начиная с верхнего левого
+угла). ***Обратите внимание***, если это расстояние поставить совсем
+маленьким (не менее 5 пикселей) или равным 0, то одно изображение может
+быть найдено несколько раз!
+
+### Выходные данные
+
+В указанную переменную будет записан список объектов, количество которых
+будет равно количеству найденных изображений на экране. Каждый объект
+соответствует найденному изображению. Для обращения к конкретному
+изображению списка необходимо указывать его номер (нумерация с 0) в
+квадратных скобках после названия переменной, например
+v.listImages\[0\].
+
+Каждый объект содержит три поля: «x», «y» и «similarity». В поле «x»
+содержится координата x выбранного изображения, в поле «y» - координата
+y, а в поле «similarity» - процент совпадения найденного изображения с
+искомым.
+
+**ПРИМЕР.**
+
+Пусть мы хотим с помощью робота найти количество одинаковых изображений,
+например, непрочитанных писем с Яндекс-почты, которые выделены небольшим
+синим кружочком около письма:
+
+
+
+Рис. 4... Пример
+
+Для этого создадим действие «Поиск изображений» и выберем в нем в
+качестве искомого изображения эту синенькую точку:
+
+
+
+Рис. 4... Настройка действия
+
+Для нажатия на каждую такую точку и прочтения сообщений, необходимо
+добавить цикл по количеству изображений, и в каждому шаге цикла нажимать
+на координаты v.listImages\[v.i\].x и v.listImages\[v.i\].y, где v.i –
+текущий шаг цикла.
+
+Для определения количества элементов массива можно воспользоваться
+методом языка JavaScript – v.listImages.length.
+
+## Модуль «Создать скриншот»
+
+Данный модуль позволяет делать скриншот экрана во время работы робота,
+что удобно для проведения отладки кликерных роботов (роботов,
+преимущественно работающих на модуле Кликер).
+
+Окно модуля состоит из двух полей:
+
+Поле «Сохранить в папку» должно содержать путь до папки, в которую будет
+сохранен скриншот экрана. По кнопке папки в поле вызывается диалог
+выбора директории;
+
+В поле «Имя файла» должно быть название скриншота. Если расширение не
+будет указано, то изображение будет сохранено в формате png.
+
+
+
+Рис. 4... Окно модуля «Создать скриншот»
+
+## Модуль «Получить активное окно»
+
+Данный модуль получает название активного окна и записывает его в
+переменную. Он помогает определить, какая программа является активной на
+данной момент, что упрощает работу с модулем «Кликер». Модуль позволяет
+исключить множество ошибок при работе кликерных роботов.
+
+Модуль состоит из одного настроечного поля – Переменная, в которое
+необходимо ввести название переменной. В результате работы модуль
+записывает в указанную переменную название активного окна ***строчными
+буквами***.
+
+
+
+Рис. 4... Пример заполнения модуля «Получить активное окно»
+
+Пример переменной в результате заполнения модулем:
+
+
+
+Рис. 4... Результат работы модуля
+
+# МОДУЛЬ «РАБОТА С ФАЙЛАМИ»
+
+## Основные моменты модуля
+
+Модуль «Работа с файлами» предназначен для изменения расположения
+файлов, их копирования, архивирования, создания папки и переноса файлов
+в неё, в общем, для манипуляции с файлами и директориями.
+
+### Интерфейс модуля
+
+Окно модуля объединяет три группы элементов.
+
+Первая группа элементов – это набор полей и кнопок для создания команды.
+Вторая – непосредственно список команд. И третья – это область
+предварительного просмотра текстовых файлов.
+
+
+
+Рис. 5... Окно модуля
+
+Набор доступных полей для заполнения меняется в зависимости от
+выбранного действия, подробное описание всех полей будет дано в Глава
+15.
+
+### Функциональность модуля
+
+#### Создание команды
+
+Команда создается следующим образом – выбирается необходимое действие,
+заполняются остальные поля – нажимается кнопка «Добавить», по которой
+команда добавляется в «Список команд».
+
+#### Редактирование команды
+
+Для того чтобы отредактировать команду, выделите её в списке команд
+щелчком левой кнопкой мыши, после чего все поля в левой верхней части
+окна «Работа с файлами» заполнятся в соответствии с выбранной командой.
+Измените те поля, которые требуется отредактировать, и, убедившись, что
+в списке команд все еще выбрано нужное действие, нажмите на кнопку
+«Редактировать».
+
+#### Удаление команды
+
+Для удаления команды необходимо выбрать её в списке команд и нажать на
+кнопку «Удалить».
+
+#### Отключение/включение команды
+
+Созданные команды можно отключать и обратно включать. Отключенные
+команды не будут выполняться. Сделать это можно, нажав на
+соответствующую отключаемой команде строку правой кнопкой мыши и выбрав
+«Отключить/включить».
+
+
+
+Рис. 5... Контекстное меню команды
+
+#### Выбор файла/папки
+
+Кнопка
+
+в заполняемых полях открывает стандартный диалог выбора файла или папки,
+в зависимости от выбранного действия.
+
+## Описание действий, доступных в модуле
+
+Модуль содержит 19 действий, позволяющих работать с папками и файлами,
+каждое из которых состоит из своего набора полей для настройки. Ниже
+описаны все действия модуля.
+
+Модуль имеет возможность работы с сетевыми папками, для этого
+предусмотрены поля «Домен», «Пользователь» и «Пароль». Остальные поля
+заполняются в соответствии с выбранным действием.
+
+### Перечень и описание действий
+
+#### Действие «Сохранить в файл»
+
+Действие перезаписывает существующий текстовый файл, записывая в него
+строку, указанную в поле «Значение».
+
+
+
+Рис. 5... Пример настройки действия «Сохранить в файл»
+
+#### Действие «Считать файл»
+
+Действие считывает весь текст из выбранного файла и записывает его в
+указанную переменную.
+
+
+
+Рис. 5... Пример настройки действия «Считать файл»
+
+Поле «Начальная кодировка» отвечает за выбор кодировки, которая будет
+использоваться при чтении из файла.
+
+#### Действие «Получить список файлов в папке»
+
+Действие создает переменную-список, в которой лежат пути до каждого
+файла в папке.
+
+
+
+Рис. 5... Пример настройки действия «Получение списка файлов»
+
+**ПРИМЕР.**
+
+Пусть имеется папка «Робот», в которой находится 3 Excel-файла. Тогда в
+модуле Excel мы можем работать с каждым из файлов, например, чтобы
+работать с первым, нужно записывать в поле «Имя файла» v.files\[0\].
+
+Переменная после выполнения действия будет выглядеть как на рисунке
+4.11.4:
+
+
+
+Рис. 5... Пример переменной, в которой содержится список файлов
+
+#### Действие «Добавить текст в файл»
+
+Действие добавляет текст к уже существующему в файле, не перетирая его
+данных.
+
+
+
+Рис. 5... Пример настройки действия «Добавить текст в файл»
+
+#### Действие «Добавить переход на новую строку»
+
+Действие добавляет символ перехода на новую строку в текст файла.
+
+
+
+Рис. 5... Пример настройки действия «Добавить переход на новую строку»
+
+#### Действие «Переместить файл»
+
+Действие перемещает выбранный файл в указанную папку. В поле
+«Переменная» можно, но не обязательно, ввести название переменной, в
+которую будет возвращен новое расположение до файла (в ниже
+представленном примере –
+C:\\Users\\user\\Desktop\\Документы\\text.docx).
+
+
+
+Рис. 5... Пример настройки действия «Перемещение файла»
+
+#### Действие «Переименовать файл»
+
+Действие меняет имя выбранного файла на указанное в поле «Имя файла».
+
+
+
+Рис. 5... Пример настройки действия «Переименовать файл»
+
+#### Действие «Создать файл txt»
+
+Действие создает новый файл с расширением .txt. Если поле «Переменная»
+будет заполнено, то в указанную в нем переменную будет возвращено
+расположение созданного файла.
+
+
+
+Рис. 5... Пример настройки действия «Создать файл txt»
+
+#### Действие «Удалить файл»
+
+Действие удаляет выбранный файл.
+
+
+
+Рис. 5... Пример настройки действия «Удалить файл»
+
+#### Действие «Скопировать файл»
+
+Действие копирует выбранный файл в указанную директорию.
+
+В поле «Путь до конечного файла» необходимо ввести путь до папки, в
+которую файл должен скопироваться, и его название с расширением так, как
+будто файл уже есть. Новое название может отличаться от исходного.
+
+Если поле «Переменная» будет заполнено, то в указанную в нем переменную
+будет возвращено расположение нового файла.
+
+
+
+Рис. 5... Пример настройки действия «Скопировать файл»
+
+#### Действие «Проверить существование файла»
+
+Действие проверяет существование указанного файла и записывает результат
+в переменную.
+
+«true» - если существует, и иначе «false».
+
+
+
+Рис. 5... Пример настройки действия «Проверить существование файла»
+
+#### Действие «Переместить папку»
+
+Действие перемещает папку, указанную поле «Путь к папке», в директорию,
+указанную в поле «Путь до конечной папки». Если поле «Переменная» будет
+заполнено, то в указанную в нем переменную будет возвращено новое
+расположение перемещаемой папки.
+
+
+
+Рис. 5... Пример настройки действия «Перемещение папки»
+
+#### Действие «Создать папку»
+
+Действие создает папку с указанным названием в выбранной директории.
+Если поле «Переменная» будет заполнено, то в указанную в нем переменную
+будет возвращено расположение новой папки.
+
+
+
+Рис. 5... Пример настройки действия «Создание папки»
+
+#### Действие «Удалить папку»
+
+Действие удаляет выбранную папку.
+
+
+
+Рис. 5... Пример настройки действия «Удалить папку»
+
+#### Действие «Проверить существование папки»
+
+Действие проверяет существование указанной папки и записывает результат
+в переменную.
+
+«true» - если существует, и иначе «false».
+
+
+
+Рис. 5... Пример настройки действия «Проверить существование папки»
+
+#### Действие «Получить список папок в папке»
+
+Действие создает переменную-список, в которой лежат пути до каждого
+файла в папке.
+
+
+
+Рис. 5... Пример настройки действия «Проверить существование папки»
+
+#### Действие «Заархивировать папку»
+
+Действие создает ZIP-архив с указанным именем, добавляя в него
+содержимое выбранной папки. Если поле «Переменная» будет заполнено, то в
+указанную в нем переменную будет возвращено расположение созданного
+архива.
+
+
+
+Рис. 5... Пример настройки действия «Заархивировать папку»
+
+#### Действие «Распаковать архив»
+
+Действие распаковывает ZIP-архив в указанную папку.
+
+
+
+Рис. 5... Пример настройки действия «Распаковать архив»
+
+# МОДУЛИ-ОПЕРАТОРЫ: «ЦИКЛ», «УСЛОВИЕ», «WHILE», «TRY-CATCH», «BREAK», «RETURN», «SWITCH»
+
+## Модуль «Условие»
+
+Описываемые в этой части модули сами по себе ничего не делают, их
+следует использовать вместе с любыми другими. У описываемых модулей
+(кроме модуля «Break»), помимо привычного «Примечания», есть еще
+несколько параметров, обязательных для заполнения, но нет отдельного
+окна с настройками.
+
+Модуль «Условие» позволяет в зависимости от указанного условия выполнять
+те или иные действия. Условием может быть любое выражение, которое
+приводится к значению «True» или «False».
+
+### Интерфейс модуля
+
+Модуль состоит из полей «Примечание» и «Условие». Действия, которые
+должны выполняться при значении условия «True», добавляются в раздел
+«THEN», при значении «False» - в раздел «ELSE». Действия добавляются в
+модуль перетаскиванием их из меню или другого места рабочей области.
+
+
+
+Рис. 6... Условный модуль
+
+**Поле «Примечание»** предназначено для внесения комментария от
+разработчика робота.
+
+**Поле «Условие»** заполняется по правилам языка программирования JS.
+Для пользователей, незнакомых с этим языком, предлагается помощь в виде
+«Конструктора условий», доступная по кнопке справа от условия -
+
.
+
+### Конструктор условий
+
+Конструктор условий позволяет составлять условия в соответствии с
+синтаксисом языка JS.
+
+
+
+Рис. 6... Конструктор условий
+
+#### Добавление
+
+Для того чтобы составить условие, необходимо заполнить оба операнда,
+выбрать тип операндов (строки или числа), выбрать оператор между ними из
+предложенного и нажать на кнопку «Добавить»:
+
+
+
+
+
+Рис. 6... Добавление условий
+
+Список операций для строк и для чисел отличается, поэтому сначала
+выберите тип операндов, а лишь затем операцию.
+
+#### Связывание
+
+Несколько условий можно связать с помощью логического «И» либо
+логического «ИЛИ».
+
+Делается это следующим образом – удерживая клавишу Shift, выбираются
+несколько условий, которые должны быть соединены одним оператором, затем
+нажимается кнопка с соответствующим логическим оператором:
+
+
+
+Рис. 6.16.4. Связывание условий
+
+
+
+Рис. 6... Результат связывания условий
+
+Символ «\|\|» означает логическое ИЛИ, символ «&&» - логическое И.
+
+#### Разъединение
+
+Условия, состоящие из нескольких простых условий, то есть те, которые
+используют логическое И или ИЛИ, можно разъединить, нажав на
+соответствующую кнопку. Разъединение происходит по логическим
+операторам.
+
+
+
+Рис. 6.16.6. Разъединение условий
+
+
+
+Рис. 6... Результат разъединения условий
+
+#### Сохранение
+
+Для сохранения условия необходимо нажать на кнопку «Сохранить».
+Получившиеся условие вставится в поле «Условие» условного модуля:
+
+
+
+Рис. 6.16.8. Сохранение условия
+
+
+
+Рис. 6... Отображение условия
+
+Законченный модуль может выглядеть следующим образом:
+
+
+
+Рис. 6... Заполненный модуль «Условие»
+
+#### Сворачивание
+
+Для уменьшения занимаемого места в рабочей области проекта, можно
+свернуть каждый блок данного модуля по кнопке «Свернуть».
+
+
+
+Рис. 6... Свернутый блок ELSE
+
+
+
+Рис. 6... Свернутые THEN и ELSE
+
+## Модуль «Цикл»
+
+Модуль «Цикл» применяется для неоднократного (цикличного) выполнения
+набора действий. Действия, добавленные в модуль, будут выполняться до
+тех пор, пока не пройдёт указанное в настройках количество итераций.
+
+### Интерфейс модуля
+
+Модуль состоит из полей «Примечание», «Количество итераций» и
+«Переменная». Действия, которые должны выполняться в цикле, добавляются
+в блок, расположенный в нижней части модуля. Действия добавляются в
+модуль перетаскиванием их из меню или другого места рабочей области.
+
+Модуль выглядит следующим образом:
+
+
+
+Рис. 6... Вид модуля
+
+**Поле «Примечание»**, как и во всех других модулях, служит для внесения
+комментария от разработчика робота.
+
+Остальные поля присущи только этому модулю.
+
+**Поле «Количество итераций»** предназначено для ввода числа,
+означающего, сколько раз необходимо выполнить действия, содержащиеся в
+модуле.
+
+**Поле «Переменная»** - переменная, в которой будет храниться число –
+текущий шаг цикла. Цикл начинается с единицы.
+
+Пример заполненного цикла представлен на рисунке 6.17.2.
+
+
+
+Рис. 6... Пример заполнения модуля
+
+По кнопке «Свернуть» можно свернуть действия цикла для более компактного
+отображения команды.
+
+
+
+Рис. 6... Свернутый вид модуля
+
+## Модуль «Break»
+
+Для «аварийного» выхода из простого цикла используют модуль «Break».
+Например, в цикле ведется поиск конкретного изображения, и если такое
+изображение найдётся, следует нажать на него, считать какие-либо данные
+и перейти к следующему действию, иначе – выйти из цикла и не проигрывать
+следующее действие. Для такого сценария необходимо создать цикл, в
+котором будет модуль «Условие», в одной из веток которого будет
+находиться модуль «Break» (модуль «Break» представлен самым последним
+модулем на примере):
+
+
+
+Рис. 6... Пример использования модуля «Break»
+
+Модуль «Break» не требует настройки, но может применяться только внутри
+модуля «Цикл».
+
+## Модуль «Return»
+
+Бывают ситуации, когда при некотором условии необходимо завершить работу
+робота, например, нужно обработать письмо, которое должно прийти на
+почту, а оно не пришло. Для таких целей существует модуль «Return».
+
+
+
+Рис. 6... Внешний вид модуля
+
+Данный модуль заканчивает работу всего робота и не требует настройки.
+Может использоваться в любом месте.
+
+**ПРИМЕР.**
+
+На рисунке ниже представлен пример использования модуля: пусть с помощью
+модуля «Считать письма» считываются все письма за определенный
+промежуток времени. Все темы письма и их содержания необходимо внести в
+Excel-файл. Но что, если этих писем нет? Для этого проверяем наличие
+писем, и, если их нет, робот прекратит работу, иначе – продолжит.
+
+
+
+Рис. 6... Пример использования модуля «Return»
+
+Благодаря этому модулю можно писать робота в общей рабочей области, а не
+в ветках модуля «Условие». Так робот выглядит более аккуратным и
+наглядным.
+
+## Модуль «Continue»
+
+Модуль «Continue» позволяет перейти к следующей итерации цикла без
+использования модуля «Условие» или других методов ветвления алгоритма.
+Модуль не требует дополнительной настройки. Единственное требование –
+модуль должен находиться внутри модуля «Цикл» или внутри любого модуля,
+который в свою очередь находится внутри цикла (вложенность модулей не
+ограничена).
+
+
+
+Рисунок 6... Модуль «Continue»
+
+### ПРИМЕР
+
+Допустим, что необходимо провести действия с файлом, но лишь в том
+случае, если он присутствует в определенной папке. Для этого достаточно
+в начале цикла проверить наличие файла и, если его нет, то перейти к
+следующей итерации цикла.
+
+
+
+Рисунок 6... Пример работы с «Continue»
+
+Отличие от работы с условием лишь в лучшей читабельности алгоритма (то
+есть, без модуля Continue пришлось бы все действия над файлом делать
+внутри ветки ELSE модуля «Условие»).
+
+## Модуль «While»
+
+Модуль «While» (цикл с условием) выполняет добавленные в него действия
+до тех пор, пока указанное условие возвращает значение «True».
+
+### Интерфейс модуля
+
+В окне модуля расположены поля «Примечание» и «Условие». В блоке,
+расположенном в нижней части модуля, следует располагать действия,
+которые требуется выполнять в цикле.
+
+
+
+Рис. 6... Вид модуля
+
+**Поле «Условие».** В поле вводится условие, как и в модуле «Условие»,
+которое необходимо писать в соответствии с синтаксисом языка JS, поэтому
+здесь присутствует кнопка, открывающая «Конструктор условий» (см. Глава
+16).
+
+Добавление действий в модуль происходит с помощью перетаскивания из меню
+модулей или из рабочей области проекта.
+
+
+
+Рис. 6... Добавление действий
+
+При нажатии на кнопку «Свернуть» действия, описанные в цикле,
+сворачиваются для более компактного отображения команды.
+
+
+
+Рис. 6... Свернутый вид
+модуля
+
+## Модуль «Try/Catch»
+
+Данный модуль позволяет обрабатывать ошибки, которые могут возникнуть в
+процессе выполнения некоторого блока модулей.
+
+
+
+Рис. 6... Внешний вид модуля Try/Catch
+
+Модуль состоит из двух блоков – TRY и CATCH. Блок TRY содержит набор
+модулей или целого робота, который должен выполниться, блок CATCH
+содержит набор модулей на случай, если произойдет ошибка исполнения
+модулей блока TRY.
+
+Модуль имеет два текстовых поля, первое – поле «Примечание», в которое
+можно ввести описание модуля для более удобной навигации по роботу, а
+второе поле предназначено для сохранения возникшей в модуле TRY ошибки.
+Так как есть возможность узнать, какая ошибка возникла, каждую возможную
+ошибку можно корректно обработать в блоке CATCH.
+
+**ПРИМЕР.**
+
+Пусть стоит задача – скачать письмо с почты с определенным названием
+вложения в заранее заданную папку и обработать это вложение модулем
+Excel, причем в модуле Excel путь до файла будет всегда одинаковым.
+Например, вложение называется «Отчет за день», путь до папки
+«C:\\Reports», тогда в Excel будет всегда открываться файл
+«C:\\Reports\\Отчет за день.xlsx», а вложения с почты всегда будут
+скачиваться в вышеназванную папку.
+
+Если письмо с необходимым вложением еще не пришло, то модуль Excel
+выдаст ошибку «Не удалось открыть документ C:\\Reports\\Отчет за
+день.xlsx». В таком случае необходимо как-то обработать эту ошибку,
+предложить пользователю запустить робота позже, или сказать ему
+подождать в течение некоторого времени и попробовать снова.
+
+Для обработки ошибки с выводом информационного окна необходимо добавить
+модуль «Try/Catch», где в блоке TRY будут содержаться модули считывания
+письма и Excel, а в блоке CATCH модуль «Интерфейс» для вывода
+пользовательского окна.
+
+
+
+Рис. 6... Пример использования модуля «Try/Catch»
+
+В результате работы такого робота будет либо стандартное сообщение
+«Скрипт отработал успешно!», если письмо было на почте, либо окно с
+текстом «Письмо еще не пришло» в ином случае. В переменной v.error будет
+содержаться текст «Не удалось открыть документ C:\\Reports\\Отчет за
+день.xlsx».
+
+
+
+Рис. 6... Пример обработки ошибки – окно с информацией
+
+## Модуль «Switch»
+
+Оператор Switch – это оператор выбора, который выбирает для выполнения
+один раздел case из списка кандидатов, сравнивая их с выражением,
+указанным в самом switch. Аналогичен нескольким модулям «Условие», как
+если бы необходимо было сравнить одно значение с несколькими другими и
+для каждого был бы отдельный набор действий для выполнения, то есть он
+используется в тех случаях, когда развилок условий больше двух, но
+сравнение идет с одним и тем же значением.
+
+**Внутри блока Switch могут быть только блоки Case и наоборот – блоки
+Case могут быть только внутри блока Switch**.
+
+### Интерфейс модуля
+
+Модуль Switch имеет поле «Условие», в которое записывается переменная, с
+которой в дальнейшем будут сравниваться подмодули case для выбора
+необходимого алгоритма. По кнопке «Добавить» добавляются эти самые
+подмодули.
+
+
+
+Рисунок 6... Модуль «Switch»
+
+После нажатия на кнопку «Добавить», внутри модуля появится блок Case,
+который может быть использован только внутри блока Switch. Блоки Case
+также содержат поле «Условие», но в этом случае в них указывается
+ожидаемое значение переменной, указанной в модуле Switch. Если
+переменная из Switch будет равна значению Case, то этот Case будет
+выполняться, остальные блоки Case выполнены не будут (даже если они
+содержат то же значение).
+
+
+
+Рисунок 6... Модули «Switch – Case»
+
+Внутри блоков Case располагаются любые модули программы, подобно модулю
+«Группа».
+
+# МОДУЛИ «ПОЧТОВЫЕ АГЕНТЫ»
+
+## Модуль «Отправить письмо»
+
+Модуль «Отправить письмо» предназначен для отправки письма одному или
+нескольким получателям.
+
+### Интерфейс модуля
+
+Окно модуля состоит из нескольких вкладок: «Настройки», «Получатель»,
+«Письмо». Рассмотрим по порядку все вкладки. Начнем знакомство с
+рассмотрения вкладки «Настройки».
+
+#### Вкладка «Настройки»
+
+
+
+Рис. 7... Окно модуля
+
+**Поле «Настройки»** – выпадающий список, в котором предложены несколько
+почтовых служб. При выборе почтовой службы будут заполнены поля «Хост»,
+«Порт», «Безопасность» согласно её настройкам. Пункт "Пользовательские"
+предоставляет возможность самостоятельной настройки параметров доступа к
+почтовой службе.
+
+
+
+Рис. 7... Пример настройки почтовый службы «Mail»
+
+**Поля «Хост», «Порт, «Безопасность»** необходимы к заполнению только
+при выборе пользовательских настроек. Представляют собой набор
+обязательных полей для подключения к почтовым сервисам.
+
+**Поле «Доменное имя»** необходимо для некоторых почтовых служб (в
+основном, корпоративных) для указания доменного имени, необходимого для
+авторизации.
+
+**Поле «E-mail»** предназначено для указания адреса электронной почты, с
+которой будут отправлены сообщения, в формате
+
+Рис. 7... Пример заполненной вкладки «Настройки»
+
+#### Вкладка «Получатель»
+
+На данной вкладке заполняется информация о лицах, которым будет
+отправлено письмо.
+
+Модуль предоставляет различные способы указания получателей, а именно:
+
+- ручной ввод списка получателей (имена и e-mail’ы);
+
+- из переменной-элемента, в виде одного e-mail’а;
+
+- из переменной-списка, в виде нескольких e-mail’ов.
+
+
+
+Рис. 7... Вкладка «Получатель»
+
+Если выбран переключатель «Список», то поле «Переменная» недоступно для
+ввода, иначе – наоборот, доступно поле «Переменная», но недоступны
+другие поля.
+
+Для ввода получателей методом «Список» необходимо заполнить поля «Имя
+получателя» и «E-mail получателя», затем нажать на кнопку под полями
+«Добавить». После этого введенные значения появятся в таблице в центре
+окна. Если необходимо удалить какого-либо получателя из таблицы,
+необходимо выбрать строку с ним и нажать на кнопку «Удалить».
+
+
+
+Рис. 7... Пример заполнения таблицы получателей
+
+Если используется метод выбора получателей через переменную, то поля
+«Имя получателя», «E-mail получателя» и таблица становятся недоступными.
+В поле «Переменная» необходимо ввести название переменной, начиная с
+символов «v.», из которой будут взяты email’ы получателей. Переменная
+может быть списком из email’ов, либо строкой с перечислением их через
+запятую.
+
+
+
+Рис. 7... Вкладка «Получатель»
+
+#### Вкладка «Письмо»
+
+На данной вкладке настраивается письмо, которое будет отправлено
+получателям, указанным на вкладке «Получатель». Все поля необязательны
+для заполнения, если не заполнить ни одного из них будет отправлено
+пустое письмо с темой «<Без темы>».
+
+
+
+Рис. 7... Вкладка «Письмо»
+
+Для прикрепления одного файла во вложение следует нажать на кнопку
+«Выбрать файл» и в открывшемся диалоговом окне выбрать требуемый файл.
+
+Для прикрепления сразу нескольких файлов необходимо нажать на кнопку
+«Выбрать папку» и в открывшемся диалоговом окне выбрать папку со всеми
+требуемыми файлами.
+
+Каждое из полей формы может быть заполнено переменной.
+
+## Модуль «Считать письма»
+
+Модуль «Считать письма» предназначен для получения списка писем с почты
+для дальнейшей их обработки или просто для скачивания вложений. Для
+работы модуля обязательно разрешение подключения по IMAP или POP3
+протоколу на используемой почте (подробнее про включение протоколов
+описано этой главе, пункте «Включение IMAP и POP3 протоколов»).
+
+### Интерфейс модуля
+
+Модуль состоит из трех вкладок: «Настройки», «Настройки чтения» и
+«Параметры загрузки».
+
+Вкладка «Настройки» аналогична одноименной вкладке в модуле «Отправить
+письмо», с одним существенным отличием - в данном модуле предоставляется
+выбор протокола отправки: IMAP или POP3. Так же нет поля «Доменное имя»,
+если именно оно требуется для авторизации в почтовой слу
+
+При выборе соответствующего протокола и его настроек, поля «Хост»,
+«Порт» и «Безопасность» заполняются автоматически (кроме режима
+«Пользовательские настройки»).
+
+
+
+Рис. 7... Окно модуля с примером авто-заполнения полей
+
+#### Вкладка «Настройки чтения»
+
+Вкладка «Настройки чтения» представляет собой набор полей, которые
+заполняются в зависимости от того, какие письма следует считать.
+
+
+
+Рис. 7... Вкладка «Настройка чтения»
+
+**Поле «Переменная».** В поле ожидается ввод названия переменной, в
+которую будет внесена информация о считанных письмах. В программе это
+поле будет представлено списком объектов, имеющих шесть полей:
+
+1. Subject – тема письма;
+
+2. Body – тело письма, его основной текст;
+
+3. Sender – отправитель;
+
+4. Receivers – получатели, перечисленные через запятую;
+
+5. Attachments – список путей до скачанных вложений;
+
+6. Date – дата получения письма;
+
+7. Id – уникальный идентификатор письма.
+
+Примеры работы с переменными
+
+- v.mails\[2\].Attachments\[0\] – получение пути первого вложения
+ третьего считанного письма:
+
+
+
+Рис. 7... Пример получения пути до первого вложения второго письма
+
+- v.mails\[3\].Subject – получение темы четвертого скачанного
+ сообщения:
+
+
+
+Рис. 7... Пример получения темы первого письма
+
+**Поле «Скачивать вложения в папку»** предназначено для ввода пути до
+папки, в которую загрузятся все вложения считанных писем. Если оставить
+поле пустым, то файлы будут загружаться во временную директорию
+компьютера.
+
+**Поле «Новая папка для каждого письма»** позволяет сохранять вложения
+из каждого письма в свою отдельную папку для того, чтобы файлы, имеющие
+одинаковые названия, но содержащиеся в разных письмах, не перетирали
+друг друга. При скачивании вложений во временную системную папку
+компьютера галочка является обязательной.
+
+**Флажок «Только непрочитанные»** позволяет настроить считывание только
+новых писем. *Доступно только для протокола IMAP.*
+
+**Флажок «Отмечать как прочитанные»** позволяет после считывания
+устанавливать пометку о прочтении письма. *Доступно только для протокола
+IMAP*.
+
+**Поле «Читать из папки»** предназначено для настройки конкретной папки
+в почтовом ящике, из которой следует считывать письма. По умолчанию,
+письма считываются из папки «Входящие». *Доступно только для протокола
+IMAP.*
+
+**Поле «Фильтр по отправителям»** позволяет искать сообщения,
+отправленные от одного из указанных отправителей. Перечислить всех можно
+через запятую, либо подав в это поле переменную-список, содержащую
+отправителей.
+
+**Поле «Фильтр по получателям»** позволяет искать сообщения, в которых
+присутствуют указанные получатели. Перечислить всех можно через запятую,
+либо подав в это поле переменную-список, содержащую получателей.
+*Доступно только для протокола IMAP.*
+
+**Поле «Фильтр по теме сообщений»** предназначено для настройки фильтра
+по теме сообщений. Если необходимо скачать письма с темой, содержащей
+или не содержащей определенную строку, то следует выбрать одноименную
+операцию в выпадающем списке и вписать нужную строку в появившемся поле
+(Рис. 7.25.5. Фильтр по теме сообщений). *Доступно только для протокола
+IMAP.*
+
+
+
+Рис. 7... Фильтр по теме сообщений
+
+**Поле «Фильтр по дате»** предназначено для настройки фильтрации
+считывания писем по дате. При указании значения в данном поле, робот
+будет считывать только те сообщения, которые удовлетворяют заданному
+условию.
+
+Доступны следующие методы фильтрации:
+
+- за определенную дату – «На дату»;
+
+- начиная с какой-либо даты, включая её – «С даты»;
+
+- все письма, до какой-либо даты, включая её – «До даты»;
+
+- «Между датами».
+
+После выбора метода фильтрации под полем «Фильтр по дате» появится одно
+или два поля для внесения в них нужных значений в формате ДД.ММ.ГГГГ.
+*Доступно только для протокола IMAP.*
+
+#### Вкладка «Параметры загрузки»
+
+С помощью данной вкладки можно ограничить информацию, скачиваемую с
+почтового сервера, для уменьшения затрачиваемых ресурсов. По умолчанию
+скачивается вся доступная информация.
+
+Доступно следующее разграничение для скачивания:
+
+- Загрузка информации об отправителе, получателях, теме и дате
+ сообщения (шапка письма);
+
+- Загрузка только текста сообщения;
+
+- Загрузка вложений (по умолчанию так же скачивается текст сообщения);
+
+- Загрузка только даты сообщения.
+
+
+
+Рис. 7... Вкладка «Параметры загрузки»
+
+С помощью данной функции можно загрузить только, например, «шапки»
+писем, отобрать из них необходимые, и догрузить по ним всю информацию с
+помощью модуля «Действия над письмами», который будет описан в следующей
+главе.
+
+### Включение IMAP и POP3 протоколов
+
+1. Яндекс
+
+ 1. IMAP
+
+> Для использования протокола IMAP в почтовой службе Яндекс необходимо
+> перейти в настройки почты (1), затем «Почтовые программы» (2) и
+> разрешить доступ к почтовому ящику с помощью почтовых клиентов с
+> сервера imap.yandex.ru (3), способы авторизации – по портальному
+> паролю (4).
+
+
+
+Рис. 7... Включение IMAP протокола в Яндекс
+
+Если настройки «Портальный пароль» нет, значит в вашем аккаунте
+предусмотрено использование паролей приложений, которые для работы
+Lexema-RPA Studio необходимо выключить. Для этого перейдите в управление
+аккаунтом - «Пароли и авторизация» - «Пароли приложений» - «Выключить
+пароли приложений».
+
+
+
+Рис. 7... Пароли приложений в настройках аккаунта
+
+
+
+Рис. 7.. Выключение паролей приложения
+
+Затем вернитесь на страницу с включением настроек почтовых программ и
+установите галочку напротив «Портального пароля», как это изображено на
+рисунке 7.25.7.
+
+2. POP3
+
+Для включения протокола POP3 необходимо войти в те же настройки, что и
+при включении протокола IMAP: «Настройки» (1) – «Почтовые программы» (2)
+- разрешить доступ к почтовому ящику с помощью почтовых клиентов с
+свервера pop.yandex.ru (3).
+
+
+
+Рис. 7... Включение протокола POP3 в Яндекс
+
+2. GMail
+
+ 1. IMAP
+
+Для включения IMAP протокола в почтовой службе GMail необходимо перейти
+в настройки почты (1), затем выбрать пункт «Пересылка и POP/IMAP» (2) -
+«Доступ по IMAP» и затем в «Состоянии» включить IMAP (3):
+
+
+
+Рис. 7... Включение протокола IMAP в Gmail
+
+2. POP3
+
+Аналогично проводится включение протокола POP3: настройки (1) –
+«Пересылка и POP/IMAP» (2) - «Доступ по протоколу POP» - «Включить POP
+для всех писем» (3):
+
+
+
+Рис. 7... Включение POP3 протокола в Gmail
+
+## Модуль «Действия над письмами»
+
+С помощью данного модуля можно переносить уже считанные письма в другие
+папки в почте, удалять письма с сервера и догружать информацию. Для
+использования модуля предварительно необходимо получить письма с помощью
+модуля «Считать письма».
+
+### Интерфейс модуля
+
+Интерфейс модуля состоит из двух вкладок – «Настройки» и «Действие».
+
+#### Вкладка «Настройки»
+
+Вкладка настроек не отличается от аналогичной вкладки в модуле «Считать
+письма», но доступен только один протокол – IMAP. При выборе в поле
+«Настройки» необходимой почтовой службы, поля «Хост», «Порт» и «SSL»
+заполнятся автоматически, при пользовательских настройках их необходимо
+заполнять вручную.
+
+
+
+Рис. 7... Вкладка «Настройки» модуля «Переместить письмо»
+
+#### Вкладка «Действие»
+
+На данной вкладке производится настройка действия, совершаемого над
+сообщением.
+
+
+
+Рис. 7... Вкладка «Параметры перемещения»
+
+**Поле «Действие»** позволяет выбрать одно из трёх доступных действий –
+«Переместить письмо», «Удалить письмо» и «Загрузить всю информацию из
+письма».
+
+В **поле «Id письма»** вносится id письма, над которым производится
+действие, который может быть получен с помощью модуля «Считать письма».
+Может быть передано несколько идентификаторов через запятую, либо
+переменная-список, содержащая их.
+
+**Поле «Папка»** доступно только для действия «Переместить письмо». В
+него указывается название папки на почте, в которую должно быть
+перемещено письмо.
+
+**Поле «Переменная»** доступно только для действия «Загрузить всю
+информацию из письма», в которое вводится название переменной, которая
+будет являться результирующей для выполнения действия.
+
+# МОДУЛЬ «РАБОТА С БРАУЗЕРОМ»
+
+## Основные моменты модуля
+
+Модуль «Работа с браузером» построен на базе Selenium WebDriver[6] и
+позволяет реализовывать основные методы работы со страницей браузера –
+открыть вкладку, перейти на вкладку, найти элемент на странице по её
+ключу и как-то его обработать.
+
+### Интерфейс модуля
+
+Окно модуля делится на блок настройки браузера, область создания команды
+для работы с браузером, группу кнопок управления действиями и таблицу,
+содержащую список созданных команд. Область создания команды состоит из
+нескольких полей для заполнения, причем, количество доступных для
+редактирования полей меняется в зависимости от выбранного действия в
+поле «Действие». Группа кнопок состоит из трех кнопок – «Добавить»,
+«Редактировать» и «Удалить».
+
+
+
+Рис. 8... Окно модуля «Работа с браузером»
+
+Создание команды начинается с выбора действия. После его выбора список
+доступных полей в окне может измениться. Необходимо заполнить поля,
+требующиеся для выбранного действия и нажать на кнопку «Добавить».
+Созданное действие отобразится в таблице «Список команд». Для
+редактирования команды следует выбрать её в списке команд, изменить
+необходимые поля и нажать «Редактировать». Если при этом нажать на
+кнопку «Добавить», то будет добавлено новое действие, похожее на то, что
+было выбрано в списке команд, но с внесенными изменениями. Можно ничего
+не менять и нажать на кнопку «Добавить», тогда получится полное
+копирование команды.
+
+Для удаления ненужных команд необходимо выбрать команду в таблице и
+нажать «Удалить».
+
+Робот будет выполнять все указанные команды последовательно, поэтому для
+изменения порядка команд в таблице можно воспользоваться кнопками в
+правом верхнем углу таблицы. Делается это следующим образом – выбирается
+строка, положение которой необходимо изменить, а затем нажимаются кнопки
+«Поднять» или «Опустить», в зависимости от того, где эта строка должна
+находиться.
+
+
+
+Рис. 8... Кнопки для изменения порядка команд
+
+Для всех действий некоторые поля остаются неизменными, это все поля для
+настройки браузера, «Действие» и «Примечание».
+
+### Поля для настройки браузера
+
+**Поле «Драйвер»** на данный момент недоступно для редактирования и в
+нем по умолчанию выбран драйвер для браузера Chrome, но в обозримом
+будущем этот список планируется дополнять другими браузерами.
+
+**Поля «Proxy Server» - «Proxy Password»** предназначены для ввода
+настроек прокси-сервера, если это необходимо.
+
+**Поле «Путь до папки с профилями пользователя»** - для того, чтобы
+запустить не новый экземпляр браузера, а с авторизованным профилем (с
+сохранением истории браузера, авторизацией на сайтах и другое)
+необходимо указать путь до папки с этим профилем. Если указанного пути
+не существует, то будет создана новая папка с профилем, в которую будет
+сохраняться текущая деятельность в браузере. Папки с профилями
+пользователя в Google Chrome лежат в директории
+«C:\\Users\\ИмяПользователя\\AppData\\Local\\Google\\Chrome», где вместо
+ИмяПользователя должен стоять ваш пользователь Windows. В поле
+необходимо указывать путь до одной из тех папок, что лежат в
+вышеуказанной директории (например,
+«C:\\Users\\ИмяПользователя\\AppData\\Local\\Google\\Chrome\\User
+Data»).
+
+**Поле «Агент»** предназначено для продвинутых пользователей – оно
+отвечает за User Agent (идентификационная строка клиентского приложения,
+использующая определённый сетевой протокол), под которых будет запущен
+браузер. Если поле пустое, то агент будет считываться из конфига
+программы, где указано его значение по умолчанию.
+
+## Описание действий
+
+Модуль предлагает использование 7 основных действий – перейти на
+страницу, перезагрузить страницу, перейти назад или вперед, работа со
+страницей, работа со вкладками и закрыть браузер. Каждое действие
+требует заполнения определенных полей.
+
+***Обратите внимание***, что модуль создает свой экземпляр браузера, без
+авторизованных аккаунтов, если не заполнено поле «Путь до папки с
+профилями пользователя». Созданный браузер закрывается сам в конце
+работы робота. Нельзя закрывать браузер самостоятельно!
+
+Описание полей, которые не изменяются в зависимости от действия:
+
+**Поле «Действие»** — это выпадающий список с перечнем возможных
+действий этого модуля. Подробнее о них будет рассказываться в следующей
+главе.
+
+**Поле «Примечание»** — строка с примечанием к команде.
+
+### Перечень и описание действий
+
+#### Действие «Перейти»
+
+С помощью действия «Перейти» происходит переход на заданную страницу. В
+области создания команды откроется поле – «URL». URL необходимо вводить
+с протоколом, т.е. с http/https.
+
+
+
+Рис. 8... Пример настройки действия «Перейти»
+
+Если уже открыта какая-либо страница, то браузер перейдет от неё к
+странице, указанной в поле «URL», то есть исходная страница будет
+заменена новой. Если браузер еще не был запущен, то он будет открыт с
+этой страницы.
+
+#### Действие «Перезагрузить страницу»
+
+Действие позволяет перезагружать уже открытую страницу. Перед
+использованием данного действия, убедитесь, что в браузере есть открытая
+страница.
+
+Действие не имеет никаких дополнительных для настройки полей.
+
+#### Действие «Назад»
+
+Действие позволяет выполнять переход к странице, которая была открыта в
+браузере до текущей.
+
+#### Действие «Вперед»
+
+Действие позволяет выполнять переход к странице, которая была открыта в
+браузере после текущей, если таковая была.
+
+#### Действие «Работа со страницей»
+
+Данное действие предоставляет возможность работать с отдельным элементом
+страницы. Для настройки действия появляются следующие поля: «Тип поиска
+элемента», «Строка поиска», «Действие на странице», «Ожидание» и «Номер
+элемента». Еще два поля – «Свойство» и «Переменная» становятся
+доступными в зависимости от выбора действия на странице.
+
+
+
+Рис. 8... Поля для настройки действия «Работа со страницей»
+
+**Поле «Тип поиска элемента»** представляет собой выпадающий список с
+перечнем методов поиска элемента на странице, используется в паре с
+полем **«Строка поиска»**.
+
+***Обратите внимание!*** В поле «Строка поиска» могут быть использованы
+переменные и готовые значения для работы модуля, но нет возможности
+составлять сложные строки кода прямо в этом поле. Для составления кода
+нужно воспользоваться модулем «Вычисления», записать получившийся код в
+переменную и саму переменную затем подать в это поле в модуле.
+
+Ниже будут перечислены все типы поиска элемента с примерами заполнения
+поля «Строка поиска»:
+
+- GetElementsByName – поиск элементов по их свойству name.
+
+Листинг 8... Пример элемента со свойством name
+
+«Строка поиска» для нахождения элемента div - element.
+
+- GetElementsById – поиск элементов по их свойству id.
+
+Листинг 8... Пример элемента со свойством id.
+
+> «Строка поиска» для нахождения элемента div - element.
+
+- GetElementsByClass – поиск элементов по их свойству class.
+
+Листинг 8... Пример элемента со свойством class
+
+> «Строка поиска» для нахождения элемента div - myClass.
+
+- GetElementsByCssSelector – поиск элементов по их CSS селектору.[7]
+
+Листинг 8... Пример элемента div со свойством class
+
+> «Строка поиска» для нахождения элемента div - div.main.
+
+- GetElementByLinkText – поиск элементов-ссылок по их тексту. Ищутся
+ только элементы с полным совпадением.
+
+Листинг 8... Пример элементов – ссылок а
+
+> «Строка поиска» нахождения первого элемента a на примере – text.
+
+- GetElementsByPartialLinkText - поиск элементов-ссылок по их тексту.
+ Ищутся все элементы, содержащие заданную строку.
+
+Листинг 8... Пример элементов – ссылок а
+
+> «Строка поиска» нахождения двух элементов a – text
+
+- GetElementsByTagName – поиск элементов по их тегу[8].
+
+Листинг 8... Пример элементов с разными тегами
+
+> «Строка поиска» нахождения элемента a – a.
+
+- GetElementsByXPath – поиск элементов по языку запросов HTML – xpath.
+
+Листинг 8... Пример элементов div со свойством class
+
+«Строка поиска» для нахождения элемента div - //div\[@class='main'\].
+
+Чтобы получить строку xpath для необходимого вам элемента в консоли
+разработчика в браузере, нужно нажать по этому элементу правой кнопкой
+мыши в коде – копировать – XPath:
+
+
+
+Рисунок 8..3. Получение строки xpath из консоли браузера
+
+**Поле** **«Действие на странице»** предлагает выбор действия из
+выпадающего списка, которое необходимо произвести над найденными
+элементами. Доступны следующие действия:
+
+- Записать – вводит заданный в поле «Переменная» текст (например,
+ после нажатия на определенный элемент для ввода текста);
+
+- Получить text – получает значение свойства «text» всех найденных или
+ только выбранного элемента и возвращает результат в виде списка в
+ переменную;
+
+- Отправить – нажатие клавиши «ВВОД» («ENTER») – применение записанных
+ данных (например, в строке поиска можно ввести какой-либо текст
+ действием «Записать», а затем «Отправить» его);
+
+- Нажать – нажатие левой кнопкой мыши на заданный элемент (обязательно
+ заполнение поля «Номер элемента»);
+
+- Навести мышь – наведение мыши на конкретно заданный элемент
+ (обязательно заполнение поля «Номер элемента»);
+
+- Получить Property – при выборе действия появляется поле «Название
+ Property» - возвращает значение указанного в поле «Название
+ Property» свойства всех найденных элементов или конкретно заданного.
+ Результатом будет являться список;
+
+- Получить CSS свойство – при выборе действия появляется поле
+ «Свойство CSS» - возвращает значение указанного в поле «Свойство
+ CSS» свойства всех найденных элементов или конкретно заданного.
+ Результатом будет являться список;
+
+- Получить Attribute – при выборе действия появляется поле «Свойство
+ Attribute» - возвращает значение указанного в поле «Свойство
+ Attribute» свойства всех найденных элементов или конкретно
+ заданного. Результатом будет являться список;
+
+- Получить элементы – возвращает список указанных элементов для
+ дальнейшей работы с ними;
+
+- Выполнить JavaScript – данное действие позволяет выполнить
+ JavaScript код в браузере для получения некоторой информации. Для
+ записи результата выполнения кода в переменную, необходимо в начале
+ кода добавлять «return», например «return
+ document.querySelectorAll("\[height='24'\]").length» (такой запрос
+ вернет количество элементов на странице, высота которых равна 24);
+
+- Нажать кнопку на клавиатуре – позволяет нажать кнопку на клавиатуре
+ внутри браузера.
+
+**В поле «Переменная»** вводится название переменной, начиная с символов
+«v.», в которую будет помещен результат выполнения команды или,
+наоборот, из которой будут браться значения для её выполнения.
+
+**Поле «Ожидание (сек)»**. В поле вводится количество секунд, которые
+необходимо подождать после выполнения команды.
+
+**Поле «Номер элемента»** предназначено для указания индекса найденного
+элемента, к которому необходимо применить действие.
+
+Пример заполненного действия:
+
+
+
+Рис. 8... Пример настройки действия «Работа со страницей»
+
+На рисунке 8.28.3 представлен пример действия, настроенного для поиска
+элемента, имя которого равно «q». После того как элемент найден, в него
+будет вставлен текст «Lexema-RPA».
+
+#### Действие «Работа с вкладками»
+
+Данное действие позволяет манипулировать вкладками в окне браузера. Для
+настройки действия открывается как минимум одно поле – «Действие»,
+остальные открываются в зависимости от выбранного в нем действия.
+
+
+
+Рис. 8... Поля для настройки действия «Работа со вкладками»
+
+Доступные действия для работы с вкладками:
+
+- Добавить вкладку – создаст новую вкладку, и та станет активной;
+
+- Закрыть вкладку – закроет активную вкладку;
+
+- Перейти на вкладку – при выборе действия появляется поле «Номер
+ вкладки» - переходит на вкладку, номер которой указан в поле «Номер
+ вкладки» (начиная с 0);
+
+- Получить количество вкладок – при выборе действия появляется поле
+ «Переменная» - возвращает в указанную переменную количество вкладок
+ в браузере.
+
+#### Действие «Закрыть браузер»
+
+Закрывает браузер, открытый с помощью модуля, не требует дополнительных
+настроек.
+
+# МОДУЛЬ «ИНТЕРФЕЙС»
+
+## Основные моменты
+
+Данный модуль предназначен для создания диалоговых окон для общения с
+пользователем робота. Это могут быть окна, позволяющие прикрепить файл,
+ввести какие-либо данные – дату, имена, почтовые адреса и другое, с чем
+впоследствии будет работать робот, или наоборот, окна, отображающие
+результат работы.
+
+Создание окна заключается в добавлении на него контролов – элементов
+интерфейса таких, как надписи, текстовые поля, кнопки, выпадающие
+списки.
+
+### Основное окно
+
+Окно модуля состоит из нескольких частей:
+
+- Настройки окна – общие настройки диалогового окна;
+
+- Параметры элемента интерфейса - настройка добавляемого элемента;
+
+- Список элементов – таблица, в которой содержатся все добавленные
+ > элементы;
+
+- Окно с предварительным просмотром диалогового окна на текущий момент
+ > (правая часть окна).
+
+
+
+Рис. 9... Основное окно модуля
+
+Начинать работу с диалоговым окном следует с общих настроек, а именно с
+настройки сетки, которую можно открыть по кнопке «Настройка сетки».
+
+## Настройки окна
+
+К настройкам окна относится название окна – «Титул», его ширина и высота
+и настройка сетки. При установке флажка «На весь экран» поля «Высота» и
+«Ширина» не будут учитываться.
+
+По нажатию на кнопку «Настройка сетки» появится окно настроек строк и
+колонок сетки.
+
+
+
+Рис. 9... Настройка сетки
+
+Сетка – это условная разметка элементов интерфейса, некоторая таблица, в
+которую будут помещаться контролы. Например, если нужно создать окно, в
+которое пользователь бы вводил два каких-то параметра – конечную и
+начальную даты, за которые необходимо скачивать почту, то настроить
+диалоговое окно для ввода этих дат можно несколькими способами:
+
+- Первый способ
+
+\- в две строки, 4 элемента интерфейса – на первой строке подпись и поле
+для ввода начальной даты, на второй строке подпись и поле для ввода
+конечной даты
+
+
+
+Рис. 9... Пример окна №1
+
+Для такой настройки сетки необходимо задать две колонки – первая, для
+надписей, вторая для полей ввода, и две строки – первая для начальной
+даты, вторая - для конечной.
+
+- Второй способ
+
+\- в одну строку, 3 элемента интерфейса – подпись, поле для ввода первой
+даты, поле для ввода второй даты.
+
+
+
+Рис. 9... Пример окна №2
+
+В таком случае используется три колонки и одна строка.
+
+- Третий способ
+
+\- в одну строку, 4 элемента интерфейса – два поля для ввода и подписи к
+каждому из них.
+
+
+
+Рис. 9... Пример окна №3
+
+Здесь используются 4 колонки и 1 строка.
+
+Для каждой колонки можно задать свою ширину, для каждой строки – высоту:
+
+
+
+Рис. 9... Пример настройки сетки
+
+Высота и ширина вводятся в пикселях, но можно использовать относительные
+размеры окна, например, если одна колонка должна быть больше другой в
+два раза и их всего две, то в поле «Ширина» можно ввести «1\*» для
+первой колонки, и «2\*» для второй:
+
+
+
+Рис. 9... Пример использования относительных размеров
+
+Результат такой разметки:
+
+
+
+Рис. 9... Пример разметки
+
+Нумерация строк и колонок начинается с 0. С помощью кнопки «Удалить»
+можно удалить ненужную строку или колонку, по кнопке «Редактировать»
+можно изменить высоту или ширину.
+
+После настройки сетки она будет отображена пунктирной линией в окне
+предварительного просмотра в правой части окна, и затем можно приступить
+к добавлению контролов.
+
+## Добавление элемента интерфейса
+
+Для добавления на окно нового элемента необходимо заполнить поля,
+представленные на рисунке 9.31.1:
+
+
+
+Рис. 9... Поля для добавления нового элемента
+
+Обязательными полями являются все, кроме полей «Объединить
+колонки/строки». Поле «Фильтр по файлам» доступно только для элемента
+«Выбор файла».
+
+### Поле «Тип»
+
+
+
+Рис. 9... Выпадающий список с выбором типа элемента
+
+Сначала выбирается тип добавляемого элемента интерфейса из предложенных:
+
+- Поле для ввода – поле, в которое можно ввести любую строку;
+
+>
+
+Рис. 9... Элемент «Поле для ввода»
+
+- Надпись – статичная строка текста, которая не может быть
+ отредактирована пользователем;
+
+
+
+Рис. 9... Элемент «Надпись»
+
+- Выпадающий список – поле со стрелочкой сбоку, по нажатию которого
+ открывается список заранее определенных значений;
+
+>
+
+Рис. 9... Элемент «Выпадающий список»
+
+- Таблица – отображение в виде таблицы заранее созданной переменной.
+ Возможно редактирование полей таблицы, но невозможно создание новых
+ колонок в ней;
+
+>
+
+Рис. 9... Элемент «Таблица»
+
+- Выбор даты – поле с иконкой календаря, по нажатию на которую
+ пользователю будет предложено выбрать определенную дату. Возможен
+ ввод значения даты вручную, при вводе других строк поле
+ автоматически подберет наиболее подходящую дату к введенным данным.
+ Формат даты ДД.ММ.ГГГГ;
+
+
+
+Рис. 9... Элемент «Выбор даты»
+
+- Выбор файла – поле с иконкой в виде трех точек, по нажатию на
+ которую пользователю будет предложено выбрать файл. Путь до
+ выбранного файла запишется в это поле.
+
+
+
+Рис. 9... Элемент «Выбор файла»
+
+Для фильтрации отображаемых пользователю файлов можно воспользоваться
+полем «Фильтр по файлам», в которое вводится строка вида: «Название типа
+файлов (доступные расширения)\|доступные расширения». Можно задать
+несколько настроек фильтрации, разделителем для этого является символ
+«\|». Пример:
+
+В данном случае отображается две настройки фильтрации:
+
+1. All files (\*.\*), в которой отображаются файлы с любым расширением;
+
+2. Microsoft Excel Worksheet (\*.xl\*; \*.csv), в которой отображаются
+ файлы с расширениями .csv и начинающимися на .xl (то есть .xlsx, xls
+ и другие).
+
+
+
+- Выбор папки – поле с иконкой в виде трех точек, по нажатию на
+ которую пользователю будет предложено выбрать папку. Путь до
+ выбранной папки запишется в это поле. Выглядит так же, как и «Выбор
+ файла».
+
+### Поле «Источник данных»
+
+В это поле вводится название переменной или строка, на основе которой
+контрол будет заполнен. Немного поподробнее о поле при выборе различных
+элементов интерфейса:
+
+- Для типа элемента «Надпись» туда вводится значение, которое должно
+ быть отображено в выводимой надписи;
+
+- Для «Поле для ввода», «Выбор даты», «Выбор файла» и «Выбор файла»
+ вводится значение, которое сразу будет указано в поле, если это
+ необходимо. Если поле должно быть пустым, то не надо заполнять
+ «Источник данных»;
+
+- Для «Таблицы» необходимо подать заполненную табличную переменную для
+ её отображения;
+
+- Для элемента интерфейса «Выпадающий список» необходимо передать
+ набор значений, которые пользователю будет предложено выбрать.
+ Делается это через символ «;». Это могут быть строки,
+ переменные-элементы, переменные-списки или табличные переменные,
+ состоящие из одного столбца. Например, введено следующее значение,
+ при приведенных далее примерах заполнения переменных:
+
+
+
+Рис. 9... Пример заполнения поля «Источник данных»
+
+
+
+
+
+Рис. 9... Примеры заполнения используемых переменных
+
+Результат будет выглядеть следующим образом:
+
+
+
+Рис. 9... Пример результирующих данных
+
+### Поля «Колонка» и «Строка»
+
+В эти поля необходимо ввести номер колонки и строки сетки (таблицы), в
+которых должен располагаться добавляемый контрол. Например, в примере с
+датами (Рис. 9.30.2) контрол «Надпись» - «Начальная дата» располагается
+в 0 колонке и 0 строке, а надпись «Конечная дата» - в 0 колонке и 1
+строке.
+
+### Поля «Объединить колонки» и «Объединить строки»
+
+В некоторых случаях необходимо выводить поля не в конкретной клеточке
+сетки, а в объединении нескольких клеток. Например – нужно предложить
+пользователю выбрать Excel-файл для записи в него результатов и ввести
+начальную и конечную дату, по которым будут собираться некоторые данные.
+Хотелось бы объединить это в две строки, но для ввода даты нужно как
+минимум 2 поля, а поле для выбора файла – одно.
+
+
+
+Рис. 9... Пример окна без объединения колонок
+
+Для того, чтобы растянуть поле для выбора файла по длине полей для ввода
+даты, нам необходимо разместить его не просто в 1 колонке и 0 строке, но
+и объединить для него две колонки, чтобы оно занимало сразу обе:
+
+
+
+Рис. 9... Пример заполнения полей элемента интерфейса для настройки
+объединения колонок
+
+
+
+Рис. 9... Пример окна с объединенными колонками в первой строке сетки
+
+То есть при заполнении поля «Объединить колонки» колонки, начиная с той,
+что указана в поле «Колонка», будут объединены по горизонтали в одну.
+
+Аналогично с полем «Объединять строки» - указанное количество строк,
+начиная с той, что указана в поле «Строка», будут объединены в одну:
+
+
+
+Рис. 9... Пример окна с объединенными строками в первой колонке сетки
+
+### Поле «Переменная»
+
+В это поле вводится название переменной, в которую будет записано
+значение, введенное (для выпадающего списка – выбранное) пользователем.
+Является обязательным полем для всех типов контролов, кроме «Надписи».
+
+После заполнения всех полей необходимо нажать на кнопку «Добавить».
+После нажатия на нее элемент сразу отобразиться в окне предпросмотра в
+правой части окна.
+
+
+
+Рис. 9... Пример заполненного окна модуля «Интерфейс»
+
+По кнопке «Предпросмотр» откроется диалоговое окно в таком виде, в
+котором оно будет представлено пользователю.
+
+Удалить или отредактировать элемент можно, предварительно выбрав его в
+области «Список элементов», а затем нажав на соответствующую кнопку,
+находящуюся над списком с элементами.
+
+После добавления всех необходимых контролов нужно нажать кнопку
+«Сохранить» в правой нижней части окна.
+
+# МОДУЛИ ДЛЯ РАБОТЫ С ТЕКСТОМ
+
+## Модуль «Обработка текста»
+
+Модуль «Обработка текста» предлагает несколько методов сравнения текста.
+В некоторых задачах требуется знание о том, как сильно различен текст
+между эталонным и указанным. Это задачи, относящиеся к компьютерной
+лингвистике и искусственному интеллекту.
+
+### Интерфейс модуля
+
+Окно модуля состоит из части составления команды, кнопок управления
+командами и списком команд в виде таблицы. Часть составления команды
+состоит из следующих полей: выпадающий список «Действие» с доступным
+набором методов анализа текста, два поля «Строка 1» и «Строка 2»,
+предназначенные для ввода двух строк текста или переменных, содержащих
+текст, и поле «Переменная результат» - для названия переменной, в
+которую будет помещен результат работы модуля.
+
+
+
+Рис. 10... Окно модуля
+
+По кнопке «Добавить» созданная команда поместится в таблицу «Список
+команд». Для редактирования команды из списка нужно выбрать её в
+таблице, изменить необходимые поля и нажать на кнопку «Редактировать».
+Для удаления команды нужно выбрать ее в списке и нажать на кнопку
+«Удалить». С помощью стрелочек в углу таблицы можно менять команды
+местами.
+
+### Методы анализа текста
+
+В модуле предложены следующие методы анализа текста:
+
+1. **Расстрояние Левенштейна** – рассчитывает разницу между двумя
+ > строками. Например – «Lexema RPA» и «Lexema SR» отличаются на 3
+ > символа – слова «Lexema» совпадают полностью, остальные символы
+ > различны, то есть результат, записанный в переменную, будет равен
+ > 3;
+
+2. **3-граммы** – метод, основанный на работе с n-граммами, в нашем
+ > случае n=3 – оценивается схожесть каждых 3 символов. Чем больше
+ > число (до 1), тем большую схожесть имеют строки. В примере «Lexema
+ > RPA» и «Lexema SR» результатом будет число 0,52.
+
+3. **Сходство Джаро-Винклера** – мера схожести строк для измерения
+ > расстояния между двумя последовательностями символов. Чем меньше
+ > расстояние Джаро-Винклера для двух строк, тем больше сходства
+ > имеют эти строки друг с другом. Для примера «Lexema RPA» и «Lexema
+ > SR» результатом будет число 0,5.
+
+## Модуль «Распознавание текста»
+
+Модуль «Распознавание текста» предназначен для считывания текста с
+указанного изображения и представления полученного текста в виде
+объекта.
+
+### Интерфейс модуля
+
+Модуль состоит из двух полей – «Путь к файлу» и «Переменная», и флажка
+«Скриншот».
+
+
+
+Рис. 10... Окно модуля
+
+**Поле «Путь к файлу».** Заполняется путем до файла, который необходимо
+распознать. Это может быть картинка или PDF-документ.
+
+**Поле «Переменная».** Заполняется названием переменной, начиная с
+символов «v.», в которую будет помещен результат распознавания.
+
+**Флажок «Скриншот»**. Флажок ставится, когда необходимо распознать
+скриншот экрана в момент работы данного модуля в процессе выполнения
+робота. В таком случае поле «Путь к файлу» указывать не нужно.
+
+Структура результирующего объекта – массив листов документа, каждый
+элемент которого – объект, состоящий из двух полей – number и words.
+Поле number содержит в себе номер листа документа (с 1-цы), поле words
+представляет собой массив объектов всех слов со страницы. Структура
+объекта слова – value, x, y, page. В value содержится слово, в x и y
+координаты слова x и y соответственно, в page – номер страницы, на
+котором содержится слово.
+
+**ПРИМЕР.**
+
+Пусть имеется следующее изображение формата jpeg. Подадим его в модуль
+распознавания текста.
+
+
+
+Рис. 10... Изображение, поданное на распознавание текста
+
+Результат, записанный в переменную при распознавании изображения:
+
+
+
+Рис. 10... Пример заполнения переменной
+
+Результат содержит информацию о страницах, координате и значении каждого
+слова изображения.
+
+Пример получения некоторого слова со второго листа документа:
+v.text\[1\].words\[100\].value, где v.text – переменная, в которую
+записан результат работы модуля, \[1\] – номер листа в документе
+(нумерация по переменным-спискам начинается с 0), \[100\] – 101-ое слово
+в файле, value – само значение слова.
+
+## Модуль «Распознавание текста ABBYY»
+
+Модуль «Распознавание текста ABBYY» работает, в основном, с PDF-файлами.
+В отличие от предыдущего модуля имеет более высокую точность и скорость
+работы.
+
+Результат распознавания записывается в переменную-объект, в которой
+можно обратиться к конкретной строке, таблице, слову.
+
+### Интерфейс модуля
+
+Данный модуль состоит из двух полей – «Путь к PDF-файлу» и «Переменная».
+
+
+
+Рис. 10... Окно модуля
+
+**Поле «Путь к PDF файлу».** В поле указывается путь до распознаваемого
+файла/картинки.
+
+**Поле «Переменная»**. В поле вводится имя переменной, начиная с
+символов «v.», в которую будет занесен результат распознавания.
+
+PDF файл может состоять из нескольких страниц, поэтому переменная будет
+являться списком страниц. Например, v.text\[0\] – первая распознанная
+страница файла.
+
+Весь распознанный текст делится на две части – основной текст и
+табличная часть.
+
+### Основной текст
+
+Для обращения к тексту, необходимо обращаться к полю **rows\_word\[0\]**
+(в данной записи \[0\] означает, что идет обращение к первой текстовой
+части, в других версиях ABBYY возможно использование большего разбиения
+текста). Затем указывается, как отдельное поле, номер строки и, через
+точку, номер слова в строке – **v.text\[0\].rows\_word\[0\].2.4**.
+Затем, после выбора нужного слова, можно получить его значение,
+обратившись к полю value – **v.text\[0\].rows\_word\[0\].2.4.value** –
+такая строка выдаст значение слова, находящегося на первой странице
+распознанного документа, во второй строке и является четвертой слева.
+
+### Табличная часть
+
+Для обращения к таблице, необходимо обращаться к полю **tables\[0\]**
+(\[0\] нужен для корректной работы, его смысловая часть заложена в
+продукте ABBYY). Затем отдельным полем вводится номер таблицы, так как
+на странице их может быть несколько – **v.text\[0\].tables\[0\].0**.
+После этого вводится номер ячейки в таблице в виде одного числа. Если вы
+хотите найти ячейку и знаете её номер колонки и строки, то можно
+получить индекс рассматриваемой ячейки переменной в виде
+«строка,колонка», обратившись к полю index –
+**v.text\[0\].tables\[0\].0.5.index** (5 – пятая ячейка в массиве
+распознанных ячеек). Для получения значения из ячейки нужно обратиться к
+её значению, а затем либо собрать всю строку, записанную в ячейку, либо
+обратиться к конкретному слову по его порядковому номеру –
+**v.text\[0\].tables\[0\].0.5.value.1.value** – значение второго слова
+из пятой ячейки первой таблицы с первой страницы распознанного текста.
+
+Для получения количества ячеек в таблице используйте следующую
+конструкцию – **v.text\[0\].tables\[0\].0.length**, то есть используйся
+метод «length» после того поля, после которого идет поле, количество
+элементов которого необходимо узнать.
+
+Для получения количества слов в ячейке используйте
+**v.text\[0\].tables\[0\].0.5.length**.
+
+# Модуль «telegram»
+
+Модуль «Telegram» позволяет использовать мессенджер Telegram в роботах –
+с помощью него можно считывать и отправлять сообщения, вложения. Можно
+управлять ботом, оповещать пользователей о начале или окончании работы
+робота и многое другое.
+
+Следует заметить, что на данный момент модуль находится в стадии
+разработки и работает исключительно из самой программы (не работает
+через оркестратор).
+
+## Основные моменты модуля
+
+Интерфейс модуля состоит из блока настроек, области добавления команды,
+таблицы со списком команд и кнопок «Сохранить»/«Отмена».
+
+
+
+Рис. 11... Окно модуля «Telegram»
+
+### Настройка модуля
+
+Блок настроек состоит из двух полей и кнопки. Данный модуль отвечает за
+авторизацию в мессенджере.
+
+В **поле «Номер телефона»** должен быть введен номер телефона, на
+котором зарегистрирован аккаунт. Номер должен начинаться с кода страны,
+неважно, в каком формате (например, «8», «+7» или просто «7»). Если
+необходимо войти под учетной записью telegram-бота, то в это поле
+вписывается его токен, который выдается telegram’ом при его регистрации.
+
+После заполнения номера телефона (если это не бот), требуется нажать
+кнопку **«Запросить код»**. В этот момент по этому номеру телефона в
+telegram придет код подтверждения авторизации, как если бы вы входили с
+другого устройства. Этот код необходимо ввести в **поле «Код
+авторизации»**.
+
+*Обратите внимание*, что после того, как вы ввели код авторизации в
+поле, вы еще **не авторизовались в telegram**. Авторизация произойдет в
+момент запуска робота. В этот момент в telegram поступит сообщение, что
+был совершен вход в аккаунт. Если вы ввели код, а затем сохранили проект
+и вышли, при следующем входе и запуске робота велика вероятность того,
+что код авторизации уже не действителен, так как у него есть свой срок
+действия (несколько минут). То есть, если вы решили подключить telegram,
+то перед сохранением проекта, запустите его хотя бы на одном тестовом
+действии (считать сообщение или отправить его своему знакомому).
+
+### Функциональность модуля
+
+#### Создание команды
+
+Команда создается следующим образом – выбирается необходимое действие,
+заполняются остальные поля – нажимается кнопка «Добавить», по которой
+команда добавляется в «Список команд».
+
+#### Редактирование команды
+
+Для того чтобы отредактировать команду, выделите её в списке команд
+щелчком левой кнопкой мыши, после чего все поля в области добавления
+команд заполнятся в соответствии с выбранной командой. Измените те поля,
+которые требуется отредактировать, и, убедившись, что в списке команд
+все еще выбрано нужное действие, нажмите на кнопку «Редактировать».
+
+#### Удаление команды
+
+Для удаления команды необходимо выбрать её в списке команд и нажать на
+кнопку «Удалить».
+
+#### Отключение/включение команды
+
+Созданные команды можно отключать и обратно включать. Отключенные
+команды не будут выполняться. Сделать это можно, нажав на
+соответствующую отключаемой команде строку правой кнопкой мыши и выбрав
+«Отключить/включить».
+
+
+
+Рис. 11... Контекстное меню команды
+
+#### Выбор файла/папки
+
+Кнопка
+
+в поле «Вложения» открывает стандартный диалог выбора файла.
+
+#### Изменение порядка действий
+
+Для изменения порядка действий предусмотрены кнопки «Поднять» и
+«Опустить». Кнопки расположены справа сверху от списка команд.
+
+Изменение порядка действий бывает необходимо, когда требуется добавить
+действие, которое не предусмотрели сразу и не внесли в список команд. В
+таком случае вы можете добавить действие стандартным способом, а затем
+переместить его.
+
+#### Сохранение и выход
+
+После добавления всех необходимых действий в список команд, модуль
+необходимо сохранить. Делается это по кнопке «Сохранить» в правом нижнем
+углу модуля.
+
+
+
+Рис. 11... Кнопка «Сохранить»
+
+## Описание действий
+
+#### Отправить сообщение
+
+Данное действие позволяет отправить сообщение пользователю или в чат.
+
+В поле «Пользователь» указывается username пользователя или его номер
+телефона или полное название чата, в который необходимо отправить
+сообщение. Чтобы узнать username пользователя, необходимо открыть
+подробную информацию о нём.
+
+Чтобы отправить несколько вложений, необходимо разделить путь до каждого
+вложения символом «;». Каждое вложение будет отправлено отдельным
+сообщением. Если при этом текст сообщения так же заполнен, то **каждое
+вложение будет отправлено с этим текстом сообщения**. Если нужно
+отправить и текст, и несколько вложений, лучше разделить это на две
+отдельные команды – отправку вложений и отправку текста.
+
+
+
+Рис. 11... Пример заполнения действия «Отправить сообщение»
+
+#### Получить список всех диалогов
+
+С помощью этого действия можно получить список всех диалогов с
+пользователями. Настройка действия состоит только из указания
+переменной, в которую запишется результат выполнения действия.
+
+Переменная будет являться массивом объектов с полями: Username,
+FirstName, LastName и Phone, которые будут заполняться соответствующими
+полями из профиля Telegram текущего диалога.
+
+
+
+Рис. 11... Пример заполнения действия «Получить список всех диалогов»
+
+Результат заполнения переменной представлен на следующем рисунке.
+
+
+
+Рис. 11... Пример заполнения переменной в результате выполнения действия
+«Получить список всех диалогов»
+
+#### Получить список всех чатов и каналов
+
+С помощью этого действия можно получить список всех чатов и каналов, в
+которых присутствует авторизованный аккаунт. Настройка действия состоит
+только из указания переменной, в которую запишется результат выполнения
+действия.
+
+Переменная будет являться массивом объектов с полями: Id и Title. По
+любому из этих параметров затем можно отправлять сообщения в чат или
+канал (если авторизованный пользователь имеет соответствующие права).
+
+
+
+Рис. 11... Пример заполнения действия «Получить список всех чатов и
+каналов»
+
+#### Получить список чатов с непрочитанными сообщениями
+
+С помощью этого действия можно получить список всех чатов, в которых у
+авторизованного пользователя есть непрочитанные сообщения. Настройка
+действия состоит только из указания переменной, в которую запишется
+результат выполнения действия.
+
+Переменная будет являться массивом объектов с полями: Name и
+UnreadCount, Name будет содержать название чата, UnreadCount –
+количество непрочитанных сообщений в чате.
+
+
+
+Рис. 11... Пример заполнения действия «Получить список чатов с
+непрочитанными сообщениями»
+
+#### Получить непрочитанные сообщения от пользователя
+
+С помощью этого действия можно получить список всех непрочитанных
+сообщений от определенного пользователя. Для настройки действия
+необходимо заполнить поле «Пользователь» (username/телефон
+пользователя), из диалога с которым нужно получить непрочитанные
+сообщения, и поле «Переменная», в которую запишется результат действия.
+
+Переменная будет являться массивом объектов с полями: Massge и Date, где
+в поле Message лежит текст сообщения, в Date дата и время в формате
+дд.мм.гггг ч.мм.сс.
+
+
+
+Рис. 11... Пример заполнения действия «Получить непрочитанные сообщения
+от пользователя»
+
+# ДРУГИЕ МОДУЛИ
+
+## Модуль «Вычисления»
+
+Модуль «Вычисления» является связующим модулем или модулем пред- и
+постобработки данных из других модулей. Данный модуль необходим для
+создания, вычисления и изменения значений переменных. Модуль позволяет
+производить вычисления и обработку информации с помощью языка
+программирования JavaScript.
+
+### Интерфейс модуля
+
+Окно модуля очень простое и состоит всего лишь из поля для ввода и
+кнопок «Сохранить» и «Отмена».
+
+
+
+Рис. 12... Окно модуля
+
+**Поле «Выражение».** В поле вводится код на языке программирования
+JavaScript. Возможно использование локальных переменных модуля (с
+объявлением их через let, var или const, но они не будут видны в других
+модулях скрипта робота), либо переменных студии, которые должны
+начинаться с символов «v.».
+
+Модуль полностью подчиняется правилам языка JavaScript, то есть
+поддерживаются все стандартные функции JS, разделение строк производится
+посредством ввода символа «;» или переходом строки (клавиша Enter).
+
+### Пример работы с модулем
+
+Предположим, необходимо получить последний день предыдущего месяца.
+Сделаем это с помощью ввода следующего кода:
+
+Листинг 12... Получение последнего дня предыдущего месяца
+
+
+
+Рис. 12... Пример заполнения модуля
+
+Что делает написанный выше код? А вот что – получаем сегодняшний день,
+например, сегодня 25 марта, из этой даты мы берем информацию о текущем
+годе и месяце, затем создаем новый экземпляр даты, устанавливая в
+качестве года и месяца текущие, а в качестве дня – нулевой, вследствие
+чего язык JS создаст дату с последним днем предыдущего месяца. Более
+подробно:
+
+1 строка – создание нового экземпляра даты без передачи параметров, в
+следствиии чего создастся сегодняшняя дата (date = 25.03.2020);
+
+2 строка – использование метода getFullYear, который возвращает полный
+год даты, к которой он применен (year = 2020);
+
+3 строка – использование метода getMonth, который возвращает месяц даты,
+к которой он применен (month = 2, так как месяца в JS считаются с 0);
+
+4 строка – создание нового экземпляра даты, в качестве параметров
+подаются текущий год, текущий месяц и 0 в качестве дня (v.lastDay =
+29.02.2020);
+
+5 строка – получение числа последнего дня предыдущего месяца (v.lastDay
+= 29).
+
+В качестве знакомства с языком программирования JavaScript рекомендуем к
+изучению интернет-ресурс «Современный учебник JavaScript», доступный по
+ссылке
+
+Рис. 12... Окно модуля
+
+**Поле «Путь к файлу»**. В данное поле вводится название стандартного
+процесса Windows (например, notepad – блокнот), либо путь до корневого
+расположения программы, например, стандартный путь до браузера Google
+Chrome - C:\\Program Files
+(x86)\\Google\\Chrome\\Application\\chrome.exe.
+
+**Поле «Параметры»** является необязательным полем, в него вводятся
+аргументы вызываемого приложения. Например, для открытия нового блокнота
+или чистого листа Excel-аргументы не нужны, но если необходимо открыть
+конкретный файл, то в аргументы передается название файла, а если
+открывается браузер, то аргументом может быть ссылка на сайт.
+
+
+
+Рис. 12... Пример заполнения
+
+**Флажок «От имени администратора»** запускает процесс с правами,
+позволяющими запускаемому процессу вносить изменения в системные файлы
+компьютера. ***Если вы не доверяете приложению, то не стоит ставить этот
+флажок.***
+
+**Поле «Пауза»** устанавливает время ожидания после начала запуска
+процесса.
+
+**Поле «Переменная с именем/id процесса».** В данное поле вводятся
+переменные, в которые будут помещены имя и идентификатор (id)
+запускаемого процесса соответственно. Данные параметры нужны, чтобы в
+дальнейшем можно было завершить (закрыть) указанные процессы. ***Если у
+вас задача только запустить процессы, то можете оставить эти поля
+пустыми.***
+
+**Флажок «Скрыто»** запускает процесс со свойством hide (скрытый), то
+есть запускает фоновый процесс.
+
+**Флажок «Ожидать завершения»** позволяет данному модулю дождаться
+окончания работы процесса и только затем продолжить работу робота.
+
+## Модуль «Завершить процесс»
+
+Модуль «Завершить процесс» предназначен для завершения ранее запущенных
+процессов по их имени и идентификатору.
+
+### Интерфейс модуля
+
+Окно состоит из двух полей – имени и идентификатора (id) завершаемого
+процесса.
+
+
+
+Рис. 12... Окно модуля
+
+Если завершаемый процесс запускался через модуль «Запустить процесс», то
+в эти поля передаются переменные, указанные в одноименных полях окна
+запуска процессов. В противном случае, если известно имя процесса,
+который необходимо завершить, достаточно ввести только его, но (!) в
+таком случае ***завершатся все процессы с подобным именем.*** Например,
+если вы захотите закрыть excel-файл и напишете просто «Excel», то
+закроются все excel-файлы, которые были открыты.
+
+## Модуль «SQL»
+
+Модуль «SQL» обеспечивает работу с базами данных. Поддерживаемые СУБД:
+MS SQL и PostgreSQL.
+
+### Интерфейс модуля
+
+Данный модуль обеспечивает работу с базами данных. Поддерживаются такие
+СУБД, как MS SQL и PostgreSQL. Для работы с БД ***необходимо заполнить
+все поля*** окна «Модуль SQL».
+
+Окно состоит из следующих полей: «СУБД», «Источник данных», «База
+данных», «Логин», «Пароль», «Время ожидания», «SQL-скрипт» и
+«Переменная».
+
+
+
+Рис. 12... Пример заполнения модуля
+
+**Поля** «СУБД», **«Источник данных», «База данных», «Логин» и
+«Пароль»** обеспечивают подключение к БД.
+
+**Поле «Время ожидания»**. В данное поле вводится значение времени в
+секундах, которое должно хватить запросу на выполнение. Без этого поля
+робот может работать бесконечно долго из-за исключительных ситуаций,
+поэтому заполнение этого поля является обязательным. Для небольших
+запросов значение может быть равно 20 секунд, для больших – минута и
+более.
+
+**Поле «SQL-скрипт»**. В данное поле вводится скрипт на языке SQL,
+поддерживается ввод переменных студии. При использовании переменных
+студии необходимо подать в это поле строку в следующем виде: весь скрипт
+должен быть взят в кавычки, за исключением переменных студии (как
+показано на рисунке 11.40.1).
+
+**Поле «Переменная»**. В поле вводится название переменной, в которую
+будет записан ответ от базы данных в виде таблицы. *В одном SQL-модуле
+может возвращаться только одна таблица, последующие будут
+проигнорированы.*
+
+## Модуль «HTTP OData»
+
+Http-запросы – запросы для передачи информации между сайтами (или
+серверами) и клиентами (например, нами).
+
+Модуль «HTTP OData» предназначен для отправки запросов по протоколу
+***http***[9] к интеграционному сервису 1С – OData.
+
+### Интерфейс модуля
+
+Данный модуль состоит из полей: «Ссылка», «Логин», «Пароль»,
+«Переменная» и «Тип запроса».
+
+
+
+Рис. 12... Пример настройки GET запроса
+
+**Поле «Ссылка»**. В поле вводится необходимый URL-адрес.
+
+**Поле «Переменная»**. В поле вводится название переменной, в которую
+будет помещен ответ.
+
+**Поля «Логин» и Пароль».** Предназначены для ввода логина и пароля при
+авторизации.
+
+**Поле «Тип запроса».** Позволяет выбрать необходимый тип запроса.
+Доступны методы «GET», «PUT», «POST» и «PUTCH».
+
+**Поле «Запрос».** В поле вводится HTTP-сообщение, согласно общим
+правилам его структуры. Доступно к заполнению только при выборе типов
+запроса «PUT», «POST» и «PUTCH».
+
+## Модуль «HTTP запрос»
+
+Http-запросы – запросы для передачи информации между сайтами (или
+серверами) и клиентами (например, нами).
+
+Модуль «HTTP запрос» предназначен для отправки запросов по протоколу
+***http***.
+
+### Интерфейс модуля
+
+Данный модуль состоит из полей: «Ссылка», «Переменная», «Тип запроса» и
+вкладок Headers и Body с одинаковыми полями Name и Value. Внизу модуля
+расположена таблица с добавленными значениями аргументов.
+
+
+
+Рис. 12... Интерфейс модуля «HTTP запрос»
+
+**Поле «Ссылка»**. В поле вводится необходимый URL-адрес.
+
+**Поле «Переменная»**. В поле вводится название переменной, в которую
+будет помещен ответ.
+
+**Поле «Тип запроса».** Позволяет выбрать необходимый тип запроса.
+Доступны методы «GET» и «POST».
+
+**Поля «Name» и «Value» вкладок «Headers» и «Body»** предназначены для
+составления http-запроса.
+
+## Модуль «FTP запрос».
+
+Модуль позволяет отправлять запросы по ***FTP***[10] протоколу.
+
+### Интерфейс модуля
+
+Модуль состоит из нескольких полей для подключения к серверу, ввода
+названия переменной и выпадающего списка с выбором действия.
+
+
+
+Рис. 12... Интерфейс модуля «FTP запрос»
+
+**Поле «Ссылка»** предназначено для ввода ссылки для подключения к FTP
+серверу.
+
+**Поле «Логин»** заполняется логином подключающегося к серверу
+пользователя.
+
+**Поле «Пароль»** заполняется паролем пользователя для доступа к
+серверу.
+
+**Поле «Переменная»** предназначено для ввода названия переменной, в
+которую будет помещен результат выполнения модуля.
+
+**Пол «Действие»** предоставляет перечень доступных действий с FTP
+сервером.
+
+## Модуль «JSON»
+
+Данный модуль предназначен для обработки данных в формате JSON –
+парсинга JSON-объектов.
+
+### Интерфейс модуля
+
+В окне модуля расположены поля для ввода значений: «Переменная» и
+«JSON», и кнопки «Сохранить» и «Отмена».
+
+
+
+Рис. 12... Окно модуля
+
+**Поле «Переменная».** В поле «Переменная» вводится название переменной,
+которая будет преобразована в объектную переменную с полями, имеющимися
+в JSON-объекте.
+
+**Поле «JSON».** В поле необходимо описать объект в формате JSON, в виде
+пар «ключ»: «значение», обрамлённых в фигурные скобки. JSON-объект может
+быть описан непосредственно текстом в поле «JSON» либо быть созданным в
+процессе выполнения других модулей. В случае формирования JSON-объекта в
+других модулях, в поле необходимо ввести название переменной, в которой
+лежит необходимый объект.
+
+**ПРИМЕР.**
+
+Пусть у нас есть текст в формате JSON. Введем его в поле JSON модуля, а
+результат пусть запишется в переменную v.a.
+
+
+
+Рис. 12... Пример заполнения
+
+В результате переменная v.a станет объектом с полями «name» и «age». К
+полям объекта можно обратиться, написав название поля через точку после
+переменной. Проверить значение переменной можно с помощью функционала
+«Узнать значение переменной», доступного по кнопке
+
+в обозревателе решений.
+
+
+
+Рис. 12... Получение значения из поля «name» переменной «a»
+
+На рисунке 12.44.3 видно, что на основе текста формата JSON создалась
+переменная с указанными в нем полями и заполненными значениями.
+
+## Модуль «XML»
+
+Модуль «XML» предназначен для парсинга текста формата XML. Результатом
+работы модуля будет объект с полями и свойствами, указанными в исходном
+тексте.
+
+### Интерфейс модуля
+
+Окно модуля состоит из двух полей – поля «Переменная» и «XML».
+
+
+
+Рис. 12... Окно модуля «XML»
+
+Поле «Переменная» заполняется названием переменной, в которую будет
+возвращен объект – результат работы модуля.
+
+Поле «XML» заполняется текстом в формате XML или переменной, содержащей
+этот текст.
+
+Результат работы модуля при его настройке, указанной на рисунке 12.45.2:
+
+
+
+Рис. 12... Объект –
+результат парсинга XML
+
+## Модуль «PDF»
+
+Данный модуль позволяет работать с PDF файлами. В его возможности входит
+получение текста из документа, изображений, и объединение нескольких PDF
+файлов.
+
+### Интерфейс модуля
+
+Модуль состоит из 4-х полей, доступность которых определяется выбранным
+действием, кнопок управления создаваемым действием и таблицей-списком
+созданных действий.
+
+
+
+Рис. 12... Интерфейс модуля «PDF»
+
+**Поле «Действие».** Представляет собой выпадающий список из доступных в
+модуле действий.
+
+**Поле «Документ 1».** Поле, в которое вводится путь до рабочего файла.
+По кнопке в поле открывается диалог выбора файла.
+
+**Поле «Документ 2».** Поле, в которое вводится путь до второго рабочего
+файла, используется для действий, требующих несколько файлов (например,
+объединение 2-х PDF). По кнопке в поле открывается диалог выбора файла.
+
+**Поле «Переменная».** Поле, для ввода названия переменной, в которую
+будет возвращен результат работы модуля.
+
+### Перечень и описание действий
+
+#### Получить text
+
+Действие позволяет получить текст из файла PDF, если тот является
+непосредственно текстом, а не изображением. Полученный текст будет
+записан в указанную переменную.
+
+
+
+Рис. 12... Пример настройки действия «Получить text»
+
+#### Получить image
+
+Действие получает все изображения из PDF файла и сохраняет их в формате
+.jpg в указанную в поле «Папка» директорию. В указанную переменную будет
+записан список путей до выделенных изображений.
+
+
+
+Рис. 12... Пример настройки действия «Получить image»
+
+#### Объединить документы
+
+Действие объединяет два указанных PDF файла и сохраняет их в файле,
+который необходимо указать в поле «Значение».
+
+
+
+Рис. 12... Пример настройки действия «Объединить документы»
+
+## Модуль «Пауза»
+
+Модуль «Пауза» предназначен для создания некоторой паузы между модулями.
+
+Вся настройка модуля заключается в заполнении поля «Пауза» - количество
+миллисекунд, которые необходимо подождать. Допускается использование
+переменной.
+
+
+
+Рис. 12... Окно модуля «Пауза»
+
+## Модуль «Прокси»
+
+Модуль «Прокси» предназначен для создания подключения к прокси-серверу.
+
+Для использования модуля необходимо заполнить адрес прокси-сервера.
+
+
+
+Рис. 12... Окно модуля «Прокси»
+
+## Модуль «Лог»
+
+Модуль «Лог» предназначен для вывода некоторых сообщений или значений
+переменных в «Отладочный вывод» во время работы робота.
+
+
+
+Рис. 12... Окно модуля «Лог»
+
+# Оркестратор
+
+## Общая информация
+
+Оркестратор роботов - сервис запуска роботов по составленному расписанию
+и/или некоторым событиям. Доступ к оркестратору осуществляется по
+нажатию кнопки
+
+в панели управления главного окна студии. После нажатия на кнопку будет
+открыто окно, позволяющее опубликовать нового робота и/или настроить
+расписание запусков уже опубликованных роботов.
+
+
+
+Рис. 13... Окно оркестратора
+
+Оркестратор состоит из 3-х разделов и кнопки публикации текущего робота.
+Разделы оркестратора:
+
+- Задачи – раздел, позволяющий создавать новую задачу;
+
+- Роботы – список всех опубликованных текущим пользователем роботов;
+
+- Список задач пользователя – список всех задач, созданных текущим
+ пользователем.
+
+Кнопка «Опубликовать текущего робота» добавляет активного на данный
+момент в студии робота в список опубликованных роботов. Если данный
+робот был уже однажды загружен в оркестратор, то повторное нажатие
+кнопки его обновит. Привязка робота идет не по имени, а по его
+идентификатору, который присваивается роботу при его первоначальном
+создании.
+
+Создание задач описано далее.
+
+После создания всех задач необходимо просто закрыть окно оркестратора.
+
+Для работы оркестратора необходимо установить программу Lexema-RPA
+Client, которая, находясь в фоновом режиме работы на компьютере,
+просматривает созданные вами задачи и запускает роботов в соответствии с
+их расписанием. Для её скачивания необходимо посетить сайт
+
+
+Рис. 13... Перечень полей для настройки задачи запуска
+
+**Наименование задачи.** Название задачи для запуска конкретного робота,
+идентификатор, по которому вам будет удобнее ориентироваться среди всех
+ваших задач.
+
+**Робот.** Выбор робота, для которого составляется задача запуска. Поле
+представлено выпадающим списком, в котором предложены все ваши
+опубликованные роботы.
+
+
+
+Рис. 13... Выпадающий список с перечнем опубликованных роботов
+
+**Первый запуск.** Время первого запуска робота, после которого он будет
+запускаться с определенным интервалом. Выбираются и дата, и время.
+
+**Повторы.** Общее количество повторных запусков робота. Если робота
+повторять не нужно, и он должен отработать только 1 раз, количество
+повторов равно 0. Если необходимо, чтобы робот отрабатывал по 2 раза в
+день в течение недели, не учитывая его первый запуск, то количество
+повторов равно 2\*7-1 = 13.
+
+**Интервал запуска.** Время, через которое необходим повторный запуск
+робота (если повторы есть). Для настройки поля необходимо нажать на
+кнопку-стрелочку в углу поля.
+
+
+
+Рис. 13... Кнопка открытия настроек интервала
+
+По нажатию на неё откроется вспомогательное окно выбора интервала
+запуска робота.
+
+
+
+Рис. 13... Настройка интервала запуска робота
+
+Если необходимо, чтобы робот запускался 25 числа каждого месяца,
+необходимо в первом запуске установить дату ближайшего 25 числа месяца,
+а настройке интервала ввести значение «1» в строке «Месяц», то есть,
+осуществлять повторы каждый месяц.
+
+*Между каждым повтором будет установлен одинаковый интервал*. Если
+необходимо запускать робота с *разными* временными интервалами, то
+необходимо создать несколько задач его запуска, например, если требуется
+запуск в 10:00 и в 13:00 одного дня на протяжении недели, то необходимо
+создать *две* задачи, количество повторений которых равно 6 (каждый
+день, не считая первого запуска), интервал запуска – 24 часа или 1 день,
+отличаться у этих задач будут только время первого запуска – у одной в
+10:00 дня, когда нужно начать, у другой – в 13:00.
+
+После заполнения нужных строк в окне интервала и нажатию на кнопку
+«Сохранить», в поле «Интервал» отобразится строка вида
+«год:месяц:день:час:минуты:секунды», например, при установке интервала в
+12 часов, строка будет иметь вид «0:0:0:12:0:0». Поле «Интервал»
+является ***обязательным***, если количество повторов отличное от 0.
+
+**RPA-Client.** Если существует несколько разных машин (компьютеров), на
+которых авторизован один и тот же пользователь и запущены программы
+Lexema RPA-Client, то данное поле позволяет выбрать, на какой из этих
+машин необходимо запускать выбранного робота. Если неважно, на какой
+конкретно машине должен запускаться робот, то поле можно оставить
+пустым, тогда робот будет запускаться на одной из свободных машин.
+
+Пример заполненной задачи:
+
+
+
+Рис. 13... Пример настройки задачи
+
+По нажатию кнопки «Добавить», расположенной под полями для настройки
+задач, задача будет добавлена в список задач.
+
+
+
+Рис. 13... Список задач пользователя с добавленной задачей
+
+Для редактирования существующей задачи необходимо найти её в списке
+задач и нажать на неё (1 на рисунке 13.51.7). После этого будут
+заполнены поля для настройки задачи соответствующими полями. Затем,
+после редактирования полей (2 на рисунке 12.51.7), необходимо нажать на
+кнопку «Редактировать» и изменения сохранятся (3 на рисунке 12.51.7).
+
+
+
+Рис. 13... Пример редактирования задачи
+
+Для удаления задачи её нужно найти и выбрать в списке задач пользователя
+и затем нажать кнопку «Удалить».
+
+## Раздел «Роботы»
+
+Данный раздел состоит из поля поиска робота по его названию и списка
+опубликованных роботов. При публикации, роботу присваивается уникальный
+идентификатор, поэтому названия роботов в списке опубликованных могут
+повторяться.
+
+
+
+Рис. 13... Раздел «Роботы»
+
+Для загрузки, отладки или редактирования существующего робота,
+необходимо открыть его как проект в студии. Для этого необходимо нажать
+на иконку Lexema-RPA соответствующего робота.
+
+
+
+Рис. 13... Кнопка «Загрузить робота в студию»
+
+После редактирования робота необходимо нажать на кнопку «Опубликовать
+текущего робота», после чего редактируемый робот сохранит свои
+изменения.
+
+Для удаления робота необходимо нажать на красный крестик в его блоке.
+
+
+
+Рис. 13... Кнопка удаления робота из оркестратора
+
+## Просмотр истории выполнений
+
+При нажатии правой кнопкой мыши по задаче в списке задач появляется
+контекстное меню, позволяющее перейти к статистике выполнений или логам
+задачи.
+
+
+
+Рис. 13... Контекстное меню задачи
+
+Статистика выполнения открывается так же при двойном клике по задаче.
+
+
+
+Рис. 13... Статистика выполнения
+
+В данном окне отображаются состояния задачи – время запуска, время
+окончания и статус работы – Success (успешно) или Failed (провалено).
+Если строка пустая, значит робот по каким-то причинам был приостановлен,
+например был остановлен клиент или убит процесс в «Диспетчере задач».
+
+В окне логов отображается более детальная информация – начало и
+окончание работы модуля робота.
+
+
+
+Рис. 13... Логи
+
+# Конфигурирование Lexema-rpa studio
+
+## Файл конфигурации
+
+Lexema-RPA Studio содержит некоторые настройки, которые подходят
+большинству пользователей, но в некоторых случаях они должны быть
+изменены. Такие настройки вынесены в файл конфигурации, который
+находится в папке с программой и называется «Lexema-RPA
+Studio.exe.config». Открыть данный файл можно любым текстовым
+редактором, например Блокнотом.
+
+
+
+Рис. 14... Файл конфигурации
+
+Настройки, которые можно изменять, находятся в блоке appSettings.
+Приведенные ниже можно изменять пользователям, остальные не
+рекомендуется. Доступные для изменения настройки:
+
+1. AbbyyFreDllPath - путь до папки с драйвером ABBYY (для
+ пользователей, приобрётших лицензию ABBYY);
+
+2. useFileLog - использовать логирование в текстовый файл, по умолчанию
+ значение true, запись ведется во временную директорию системы, в
+ папку Lexema-RPA;
+
+3. useEmail – использовать логирование с отправкой письма с ошибкой на
+ почту. Настройки почты вводятся в поля emailHost, emailPort,
+ emailUseSSL, emailName и emailPass. В поле emailAdmin вводится
+ адрес, на который должно прийти письмо;
+
+4. SeleniumUserAgent – поле, отвечающее за агента, от которого
+ эмулируется запуск Google Chrome в модуле «Работа с браузером»;
+
+5. SeleniumProfilePath – путь до папки с профилем пользователя, от
+ имени которого необходимо запускать Google Chrome по умолчанию
+ (модуль «Работа с браузером»);
+
+6. SeleniumProxyExtensionPath – при использовании прокси-сервера в
+ модуле «Работа с браузером» используется расширение
+ ChromeProxyExtension.exe, если по какой-то причине программа не
+ может найти расширение, то в этом поле необходимо прописать полный
+ путь до расширения (оно находится в папке с программой);
+
+7. OrchestratorURL – адрес подключения к оркестратору (для закрытых
+ корпоративных сетей).
+
+[1] Эмуля́ция (англ. emulation) в вычислительной технике — комплекс
+программных, аппаратных средств или их сочетание, предназначенное для
+копирования (или эмулирования) функций одной вычислительной системы
+(гостя) на другой, отличной от первой, вычислительной системе (хосте)
+таким образом, чтобы эмулированное поведение как можно ближе
+соответствовало поведению оригинальной системы (гостя).
+
+[2] HR (англ.яз., Human resources) — область управления персоналом.
+
+[3] Те́ндер (англ. tender) — заявка на подряд, поданная на конкурсной
+основе.
+
+[4] Контраге́нт – лицо или учреждение, берущее на себя известные
+обязательства по договору.
+
+[5] Оркестратор роботов — сервис запуска роботов по составленному
+расписанию и событиям.
+
+[6] Selenium WebDriver – это программная библиотека для управления
+браузерами.
+
+[7] Селектор — это часть CSS-правила, которая сообщает браузеру, к
+какому элементу (или элементам) веб-страницы будет применён стиль.
+
+[8] Тег - элемент языка разметки.
+
+[9] HTTP ([англ.](https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA) HyperText
+Transfer Protocol — «протокол
+передачи [гипертекста](https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D0%B5%D1%80%D1%82%D0%B5%D0%BA%D1%81%D1%82)») — [протокол](https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB) [прикладного
+уровня](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B_%D0%BF%D1%80%D0%B8%D0%BA%D0%BB%D0%B0%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F) передачи
+данных изначально — в виде гипертекстовых документов в формате
+«[HTML](https://ru.wikipedia.org/wiki/HTML)», в настоящий момент
+используется для передачи произвольных данных.
+
+[10] FTP (англ. File Transfer Protocol) — протокол передачи файлов по
+сети, построенный на архитектуре «клиент-сервер». Широко используется
+для распространения ПО и доступа к удалённым хостам.
diff --git a/docs/index.md b/docs/index.md
index 10b0cc4..57c574a 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,39 +1,150 @@
-#
ВВЕДЕНИЕ
+# ВВЕДЕНИЕ
+
+Руководство предназначено для людей, которые хотят научиться писать
+роботов в программе Lexema-RPA Studio. Вы познакомитесь со всеми
+инструментами студии и основными модулями, применяемыми для создания
+роботов.
+
+Lexema-RPA Studio, далее именуемая просто студия, предоставляет
+пользователю возможность настраивать последовательность взаимодействий с
+разнообразными программами. Взаимодействие настраивается с помощью
+программных модулей, которые поставляются в составе студии. Каждый
+модуль представляет собой отдельный функционал, необходимый для
+выполнения конкретного действия, и механизмы для его настройки.
-
-• вводить данные с клавиатуры, манипулировать мышью, считывать информацию с экрана, получать и обрабатывать почту, взаимодействовать с офисными программами;
-• интегрировать данные из одной системы в другую без использования дополнительных средств.
+
+Роботы могут выполнять рутинные операции на компьютере вместо человека:
+
+- вводить данные с клавиатуры, манипулировать мышью, считывать
+ информацию с экрана, получать и обрабатывать почту,
+ взаимодействовать с офисными программами;
+
+- интегрировать данные из одной системы в другую без использования
+ дополнительных средств.
+
## Сколько нужно времени для создания роботов?
-Роботы создаются в простом графическом интерфейсе, и время, затраченное на робота, напрямую зависит от его сложности – простых роботов можно написать за пару часов, на более трудоемких может уйти несколько дней.
+
+Роботы создаются в простом графическом интерфейсе, и время, затраченное
+на робота, напрямую зависит от его сложности – простых роботов можно
+написать за пару часов, на более трудоемких может уйти несколько дней.
+
## Области использования роботов
-### Роботы-дублёры (интеграторы)
-• Перенос информации из одной системы в другую;
-• Перезаполнение данных.
-### HR-роботы
-• Поиск вакансий по заданным критериям.
-### Роботы-операторы
-• Регистрация и ввод данных по скан-копиям документов.
-### Роботы-консолидаторы
-• Консолидация данных в отчет;
-• Массовая отправка или печать отчетов.
-### Роботы-закупщики
-• Мониторинг торговых площадок;
-• Выгрузка информации о тендерах ;
-• Отбор поставщиков на основании заданных условий.
-### Роботы-продавцы
-• Проверка благонадежности контрагентов;
-• Формирование коммерческих предложений.
+
+***Роботы-дублёры (интеграторы)***
+
+- Перенос информации из одной системы в другую;
+
+- Перезаполнение данных.
+
+***HR-роботы***[2]
+
+- Поиск вакансий по заданным критериям.
+
+***Роботы-операторы***
+
+- Регистрация и ввод данных по скан-копиям документов.
+
+***Роботы-консолидаторы***
+
+- Консолидация данных в отчет;
+
+- Массовая отправка или печать отчетов.
+
+***Роботы-закупщики***
+
+- Мониторинг торговых площадок;
+
+- Выгрузка информации о тендерах[3];
+
+- Отбор поставщиков на основании заданных условий.
+
+***Роботы-продавцы***
+
+- Проверка благонадежности контрагентов[4];
+
+- Формирование коммерческих предложений.
+
## С чего начать
-Для начала работы скачайте студию Lexema-RPA Studio на сайте сайте. Перед началом скачивания вам будет предложена регистрация. Регистрация на сайте обязательна, так как доступ в студию осуществляется после авторизации пользователя. После окончания регистрации начнется скачивание установщика.
-После этого запустите установщик и в открывшемся диалоговом окне нажмите на кнопку «Next».
+Для начала работы скачайте студию Lexema-RPA Studio ***на сайте**
+
+
+Затем нажмите на кнопку «Install».
+
+
+
+После этого начнется установка студии.
+
+
+
+Затем начнется установка и конфигурация сервера Node.js, необходимого
+для работы студии.
+
+
+
+Наконец, нажмите на кнопку «Finish».
+
+
+
+По завершению установки появится ярлык программы на рабочем столе.
+
+
+
+**СОВЕТ.** Если у вас не получилось запустить или установить
+студию, установите (обновите*) **.NET Framework 4.7.2 ***(Runtime
+версия). Сделать это можно по
+[ссылке](https://dotnet.microsoft.com/download/dotnet-framework/net472)
+(Центр загрузки Windows).
+
+После запуска программы появится окно авторизации, в которое следует
+ввести логин и пароль, указанные при регистрации.
+
+
+
+**Флажок «Запомнить меня»** запомнит ваши логин и пароль для последующих
+входов с текущего устройства.
+
+**Кнопка «Войти».** По нажатию на кнопку произойдет вход в программу и
+откроется окно студии.
+
+**Кнопка «Восстановление пароля»**. Если вы не помните ваш пароль, то по
+нажатию этой кнопки откроется окошко, предлагающее ввести вам e-mail,
+указанный при регистрации, на него будет отправлена инструкция по
+восстановлению пароля от программы.
+
+**«Регистрация»** - по этой кнопке можно зарегистрироваться в системе,
+если у вас еще нет логина и пароля для входа.
+
+Если текущая версия программы не последняя, то перед авторизацией вам
+будет предложено скачать и установить обновление.
+
+При нажатии на *Eng* справа от названия программы, программа
+перезапустится и весь язык интерфейса будет изменен на английский. Для
+перехода обратно на русский язык нужно будет проделать аналогичные
+действия.
\ No newline at end of file
diff --git a/docs/media/image1.jpg b/docs/media/image1.jpg
new file mode 100644
index 0000000..61fdb6a
Binary files /dev/null and b/docs/media/image1.jpg differ
diff --git a/docs/media/image10.png b/docs/media/image10.png
new file mode 100644
index 0000000..d22d473
Binary files /dev/null and b/docs/media/image10.png differ
diff --git a/docs/media/image100.png b/docs/media/image100.png
new file mode 100644
index 0000000..886a16d
Binary files /dev/null and b/docs/media/image100.png differ
diff --git a/docs/media/image101.png b/docs/media/image101.png
new file mode 100644
index 0000000..5a4c3ff
Binary files /dev/null and b/docs/media/image101.png differ
diff --git a/docs/media/image102.png b/docs/media/image102.png
new file mode 100644
index 0000000..224d379
Binary files /dev/null and b/docs/media/image102.png differ
diff --git a/docs/media/image103.png b/docs/media/image103.png
new file mode 100644
index 0000000..e6724ec
Binary files /dev/null and b/docs/media/image103.png differ
diff --git a/docs/media/image104.png b/docs/media/image104.png
new file mode 100644
index 0000000..f67dcfa
Binary files /dev/null and b/docs/media/image104.png differ
diff --git a/docs/media/image105.png b/docs/media/image105.png
new file mode 100644
index 0000000..461c60d
Binary files /dev/null and b/docs/media/image105.png differ
diff --git a/docs/media/image106.png b/docs/media/image106.png
new file mode 100644
index 0000000..8ccbd5f
Binary files /dev/null and b/docs/media/image106.png differ
diff --git a/docs/media/image107.png b/docs/media/image107.png
new file mode 100644
index 0000000..140f3fa
Binary files /dev/null and b/docs/media/image107.png differ
diff --git a/docs/media/image108.png b/docs/media/image108.png
new file mode 100644
index 0000000..3d0e370
Binary files /dev/null and b/docs/media/image108.png differ
diff --git a/docs/media/image109.png b/docs/media/image109.png
new file mode 100644
index 0000000..6d8f48e
Binary files /dev/null and b/docs/media/image109.png differ
diff --git a/docs/media/image11.png b/docs/media/image11.png
new file mode 100644
index 0000000..b896ee6
Binary files /dev/null and b/docs/media/image11.png differ
diff --git a/docs/media/image110.png b/docs/media/image110.png
new file mode 100644
index 0000000..8ff9a8e
Binary files /dev/null and b/docs/media/image110.png differ
diff --git a/docs/media/image111.png b/docs/media/image111.png
new file mode 100644
index 0000000..d79a9ce
Binary files /dev/null and b/docs/media/image111.png differ
diff --git a/docs/media/image112.png b/docs/media/image112.png
new file mode 100644
index 0000000..4599573
Binary files /dev/null and b/docs/media/image112.png differ
diff --git a/docs/media/image113.png b/docs/media/image113.png
new file mode 100644
index 0000000..927b94f
Binary files /dev/null and b/docs/media/image113.png differ
diff --git a/docs/media/image114.png b/docs/media/image114.png
new file mode 100644
index 0000000..ac1e051
Binary files /dev/null and b/docs/media/image114.png differ
diff --git a/docs/media/image115.png b/docs/media/image115.png
new file mode 100644
index 0000000..6cec372
Binary files /dev/null and b/docs/media/image115.png differ
diff --git a/docs/media/image116.png b/docs/media/image116.png
new file mode 100644
index 0000000..511ef20
Binary files /dev/null and b/docs/media/image116.png differ
diff --git a/docs/media/image117.png b/docs/media/image117.png
new file mode 100644
index 0000000..4108a45
Binary files /dev/null and b/docs/media/image117.png differ
diff --git a/docs/media/image118.png b/docs/media/image118.png
new file mode 100644
index 0000000..ade5dfa
Binary files /dev/null and b/docs/media/image118.png differ
diff --git a/docs/media/image119.png b/docs/media/image119.png
new file mode 100644
index 0000000..adf4d19
Binary files /dev/null and b/docs/media/image119.png differ
diff --git a/docs/media/image12.png b/docs/media/image12.png
new file mode 100644
index 0000000..7be5c03
Binary files /dev/null and b/docs/media/image12.png differ
diff --git a/docs/media/image120.png b/docs/media/image120.png
new file mode 100644
index 0000000..59d8194
Binary files /dev/null and b/docs/media/image120.png differ
diff --git a/docs/media/image121.png b/docs/media/image121.png
new file mode 100644
index 0000000..2887103
Binary files /dev/null and b/docs/media/image121.png differ
diff --git a/docs/media/image122.png b/docs/media/image122.png
new file mode 100644
index 0000000..36dc1cf
Binary files /dev/null and b/docs/media/image122.png differ
diff --git a/docs/media/image123.png b/docs/media/image123.png
new file mode 100644
index 0000000..a233ef1
Binary files /dev/null and b/docs/media/image123.png differ
diff --git a/docs/media/image124.png b/docs/media/image124.png
new file mode 100644
index 0000000..9132158
Binary files /dev/null and b/docs/media/image124.png differ
diff --git a/docs/media/image125.png b/docs/media/image125.png
new file mode 100644
index 0000000..124156c
Binary files /dev/null and b/docs/media/image125.png differ
diff --git a/docs/media/image126.png b/docs/media/image126.png
new file mode 100644
index 0000000..b0737ea
Binary files /dev/null and b/docs/media/image126.png differ
diff --git a/docs/media/image127.png b/docs/media/image127.png
new file mode 100644
index 0000000..10791e3
Binary files /dev/null and b/docs/media/image127.png differ
diff --git a/docs/media/image128.png b/docs/media/image128.png
new file mode 100644
index 0000000..fe9c852
Binary files /dev/null and b/docs/media/image128.png differ
diff --git a/docs/media/image129.png b/docs/media/image129.png
new file mode 100644
index 0000000..e6a4356
Binary files /dev/null and b/docs/media/image129.png differ
diff --git a/docs/media/image13.png b/docs/media/image13.png
new file mode 100644
index 0000000..77af599
Binary files /dev/null and b/docs/media/image13.png differ
diff --git a/docs/media/image130.png b/docs/media/image130.png
new file mode 100644
index 0000000..e2363a2
Binary files /dev/null and b/docs/media/image130.png differ
diff --git a/docs/media/image131.png b/docs/media/image131.png
new file mode 100644
index 0000000..e30566b
Binary files /dev/null and b/docs/media/image131.png differ
diff --git a/docs/media/image132.png b/docs/media/image132.png
new file mode 100644
index 0000000..43b5deb
Binary files /dev/null and b/docs/media/image132.png differ
diff --git a/docs/media/image133.png b/docs/media/image133.png
new file mode 100644
index 0000000..c41106b
Binary files /dev/null and b/docs/media/image133.png differ
diff --git a/docs/media/image134.png b/docs/media/image134.png
new file mode 100644
index 0000000..daf8daa
Binary files /dev/null and b/docs/media/image134.png differ
diff --git a/docs/media/image135.png b/docs/media/image135.png
new file mode 100644
index 0000000..0d8c402
Binary files /dev/null and b/docs/media/image135.png differ
diff --git a/docs/media/image136.png b/docs/media/image136.png
new file mode 100644
index 0000000..c2b0f01
Binary files /dev/null and b/docs/media/image136.png differ
diff --git a/docs/media/image137.png b/docs/media/image137.png
new file mode 100644
index 0000000..c082bfc
Binary files /dev/null and b/docs/media/image137.png differ
diff --git a/docs/media/image138.png b/docs/media/image138.png
new file mode 100644
index 0000000..9d805ce
Binary files /dev/null and b/docs/media/image138.png differ
diff --git a/docs/media/image139.png b/docs/media/image139.png
new file mode 100644
index 0000000..26e36f0
Binary files /dev/null and b/docs/media/image139.png differ
diff --git a/docs/media/image14.png b/docs/media/image14.png
new file mode 100644
index 0000000..5152af0
Binary files /dev/null and b/docs/media/image14.png differ
diff --git a/docs/media/image140.png b/docs/media/image140.png
new file mode 100644
index 0000000..9729a74
Binary files /dev/null and b/docs/media/image140.png differ
diff --git a/docs/media/image141.png b/docs/media/image141.png
new file mode 100644
index 0000000..3979a3a
Binary files /dev/null and b/docs/media/image141.png differ
diff --git a/docs/media/image142.png b/docs/media/image142.png
new file mode 100644
index 0000000..aef2f12
Binary files /dev/null and b/docs/media/image142.png differ
diff --git a/docs/media/image143.png b/docs/media/image143.png
new file mode 100644
index 0000000..5cc1d19
Binary files /dev/null and b/docs/media/image143.png differ
diff --git a/docs/media/image144.png b/docs/media/image144.png
new file mode 100644
index 0000000..78a9b57
Binary files /dev/null and b/docs/media/image144.png differ
diff --git a/docs/media/image145.png b/docs/media/image145.png
new file mode 100644
index 0000000..843cfae
Binary files /dev/null and b/docs/media/image145.png differ
diff --git a/docs/media/image146.png b/docs/media/image146.png
new file mode 100644
index 0000000..d821b7f
Binary files /dev/null and b/docs/media/image146.png differ
diff --git a/docs/media/image147.png b/docs/media/image147.png
new file mode 100644
index 0000000..196acbe
Binary files /dev/null and b/docs/media/image147.png differ
diff --git a/docs/media/image148.png b/docs/media/image148.png
new file mode 100644
index 0000000..f931327
Binary files /dev/null and b/docs/media/image148.png differ
diff --git a/docs/media/image149.png b/docs/media/image149.png
new file mode 100644
index 0000000..fe783b4
Binary files /dev/null and b/docs/media/image149.png differ
diff --git a/docs/media/image15.png b/docs/media/image15.png
new file mode 100644
index 0000000..8a96dda
Binary files /dev/null and b/docs/media/image15.png differ
diff --git a/docs/media/image150.png b/docs/media/image150.png
new file mode 100644
index 0000000..cc8c544
Binary files /dev/null and b/docs/media/image150.png differ
diff --git a/docs/media/image151.png b/docs/media/image151.png
new file mode 100644
index 0000000..e4fd8dc
Binary files /dev/null and b/docs/media/image151.png differ
diff --git a/docs/media/image152.png b/docs/media/image152.png
new file mode 100644
index 0000000..871b1a1
Binary files /dev/null and b/docs/media/image152.png differ
diff --git a/docs/media/image153.png b/docs/media/image153.png
new file mode 100644
index 0000000..619a1af
Binary files /dev/null and b/docs/media/image153.png differ
diff --git a/docs/media/image154.png b/docs/media/image154.png
new file mode 100644
index 0000000..7ed2201
Binary files /dev/null and b/docs/media/image154.png differ
diff --git a/docs/media/image155.png b/docs/media/image155.png
new file mode 100644
index 0000000..8b6887f
Binary files /dev/null and b/docs/media/image155.png differ
diff --git a/docs/media/image156.png b/docs/media/image156.png
new file mode 100644
index 0000000..2cfeb98
Binary files /dev/null and b/docs/media/image156.png differ
diff --git a/docs/media/image157.png b/docs/media/image157.png
new file mode 100644
index 0000000..8ddc8b8
Binary files /dev/null and b/docs/media/image157.png differ
diff --git a/docs/media/image158.png b/docs/media/image158.png
new file mode 100644
index 0000000..4ee757e
Binary files /dev/null and b/docs/media/image158.png differ
diff --git a/docs/media/image159.png b/docs/media/image159.png
new file mode 100644
index 0000000..078f602
Binary files /dev/null and b/docs/media/image159.png differ
diff --git a/docs/media/image16.png b/docs/media/image16.png
new file mode 100644
index 0000000..d59c1bc
Binary files /dev/null and b/docs/media/image16.png differ
diff --git a/docs/media/image160.png b/docs/media/image160.png
new file mode 100644
index 0000000..cadda3e
Binary files /dev/null and b/docs/media/image160.png differ
diff --git a/docs/media/image161.png b/docs/media/image161.png
new file mode 100644
index 0000000..7f4d237
Binary files /dev/null and b/docs/media/image161.png differ
diff --git a/docs/media/image162.png b/docs/media/image162.png
new file mode 100644
index 0000000..43a6887
Binary files /dev/null and b/docs/media/image162.png differ
diff --git a/docs/media/image163.png b/docs/media/image163.png
new file mode 100644
index 0000000..654155f
Binary files /dev/null and b/docs/media/image163.png differ
diff --git a/docs/media/image164.png b/docs/media/image164.png
new file mode 100644
index 0000000..97e4321
Binary files /dev/null and b/docs/media/image164.png differ
diff --git a/docs/media/image165.png b/docs/media/image165.png
new file mode 100644
index 0000000..bbf02d5
Binary files /dev/null and b/docs/media/image165.png differ
diff --git a/docs/media/image166.png b/docs/media/image166.png
new file mode 100644
index 0000000..5493fc7
Binary files /dev/null and b/docs/media/image166.png differ
diff --git a/docs/media/image167.png b/docs/media/image167.png
new file mode 100644
index 0000000..c8fee35
Binary files /dev/null and b/docs/media/image167.png differ
diff --git a/docs/media/image168.png b/docs/media/image168.png
new file mode 100644
index 0000000..d3adffa
Binary files /dev/null and b/docs/media/image168.png differ
diff --git a/docs/media/image169.png b/docs/media/image169.png
new file mode 100644
index 0000000..9ef7b88
Binary files /dev/null and b/docs/media/image169.png differ
diff --git a/docs/media/image17.png b/docs/media/image17.png
new file mode 100644
index 0000000..922c6f3
Binary files /dev/null and b/docs/media/image17.png differ
diff --git a/docs/media/image170.png b/docs/media/image170.png
new file mode 100644
index 0000000..5cd2dd1
Binary files /dev/null and b/docs/media/image170.png differ
diff --git a/docs/media/image171.png b/docs/media/image171.png
new file mode 100644
index 0000000..883f1db
Binary files /dev/null and b/docs/media/image171.png differ
diff --git a/docs/media/image172.png b/docs/media/image172.png
new file mode 100644
index 0000000..cc4c40f
Binary files /dev/null and b/docs/media/image172.png differ
diff --git a/docs/media/image173.png b/docs/media/image173.png
new file mode 100644
index 0000000..58ce326
Binary files /dev/null and b/docs/media/image173.png differ
diff --git a/docs/media/image174.png b/docs/media/image174.png
new file mode 100644
index 0000000..4df3b09
Binary files /dev/null and b/docs/media/image174.png differ
diff --git a/docs/media/image175.png b/docs/media/image175.png
new file mode 100644
index 0000000..8d6e8ce
Binary files /dev/null and b/docs/media/image175.png differ
diff --git a/docs/media/image176.png b/docs/media/image176.png
new file mode 100644
index 0000000..5deea93
Binary files /dev/null and b/docs/media/image176.png differ
diff --git a/docs/media/image177.png b/docs/media/image177.png
new file mode 100644
index 0000000..716457b
Binary files /dev/null and b/docs/media/image177.png differ
diff --git a/docs/media/image178.png b/docs/media/image178.png
new file mode 100644
index 0000000..11d49a0
Binary files /dev/null and b/docs/media/image178.png differ
diff --git a/docs/media/image179.png b/docs/media/image179.png
new file mode 100644
index 0000000..f19d32c
Binary files /dev/null and b/docs/media/image179.png differ
diff --git a/docs/media/image18.png b/docs/media/image18.png
new file mode 100644
index 0000000..ceafd01
Binary files /dev/null and b/docs/media/image18.png differ
diff --git a/docs/media/image180.png b/docs/media/image180.png
new file mode 100644
index 0000000..c909b2a
Binary files /dev/null and b/docs/media/image180.png differ
diff --git a/docs/media/image181.png b/docs/media/image181.png
new file mode 100644
index 0000000..08431ef
Binary files /dev/null and b/docs/media/image181.png differ
diff --git a/docs/media/image182.png b/docs/media/image182.png
new file mode 100644
index 0000000..6449b2f
Binary files /dev/null and b/docs/media/image182.png differ
diff --git a/docs/media/image183.png b/docs/media/image183.png
new file mode 100644
index 0000000..cf74215
Binary files /dev/null and b/docs/media/image183.png differ
diff --git a/docs/media/image184.png b/docs/media/image184.png
new file mode 100644
index 0000000..de7e6a6
Binary files /dev/null and b/docs/media/image184.png differ
diff --git a/docs/media/image185.png b/docs/media/image185.png
new file mode 100644
index 0000000..c4ff3c8
Binary files /dev/null and b/docs/media/image185.png differ
diff --git a/docs/media/image186.png b/docs/media/image186.png
new file mode 100644
index 0000000..722ca11
Binary files /dev/null and b/docs/media/image186.png differ
diff --git a/docs/media/image187.png b/docs/media/image187.png
new file mode 100644
index 0000000..34137e7
Binary files /dev/null and b/docs/media/image187.png differ
diff --git a/docs/media/image188.png b/docs/media/image188.png
new file mode 100644
index 0000000..8f8758b
Binary files /dev/null and b/docs/media/image188.png differ
diff --git a/docs/media/image189.png b/docs/media/image189.png
new file mode 100644
index 0000000..d23e01e
Binary files /dev/null and b/docs/media/image189.png differ
diff --git a/docs/media/image19.png b/docs/media/image19.png
new file mode 100644
index 0000000..b9d3cd3
Binary files /dev/null and b/docs/media/image19.png differ
diff --git a/docs/media/image190.png b/docs/media/image190.png
new file mode 100644
index 0000000..0a0107f
Binary files /dev/null and b/docs/media/image190.png differ
diff --git a/docs/media/image191.png b/docs/media/image191.png
new file mode 100644
index 0000000..490a2c1
Binary files /dev/null and b/docs/media/image191.png differ
diff --git a/docs/media/image192.png b/docs/media/image192.png
new file mode 100644
index 0000000..e1989f5
Binary files /dev/null and b/docs/media/image192.png differ
diff --git a/docs/media/image193.png b/docs/media/image193.png
new file mode 100644
index 0000000..5ed197b
Binary files /dev/null and b/docs/media/image193.png differ
diff --git a/docs/media/image194.png b/docs/media/image194.png
new file mode 100644
index 0000000..5f5e25e
Binary files /dev/null and b/docs/media/image194.png differ
diff --git a/docs/media/image195.png b/docs/media/image195.png
new file mode 100644
index 0000000..1287af2
Binary files /dev/null and b/docs/media/image195.png differ
diff --git a/docs/media/image196.png b/docs/media/image196.png
new file mode 100644
index 0000000..f67b6ad
Binary files /dev/null and b/docs/media/image196.png differ
diff --git a/docs/media/image197.png b/docs/media/image197.png
new file mode 100644
index 0000000..132f065
Binary files /dev/null and b/docs/media/image197.png differ
diff --git a/docs/media/image198.png b/docs/media/image198.png
new file mode 100644
index 0000000..aaf5a23
Binary files /dev/null and b/docs/media/image198.png differ
diff --git a/docs/media/image199.png b/docs/media/image199.png
new file mode 100644
index 0000000..65298c6
Binary files /dev/null and b/docs/media/image199.png differ
diff --git a/docs/media/image2.png b/docs/media/image2.png
new file mode 100644
index 0000000..73218e0
Binary files /dev/null and b/docs/media/image2.png differ
diff --git a/docs/media/image20.png b/docs/media/image20.png
new file mode 100644
index 0000000..2147e8e
Binary files /dev/null and b/docs/media/image20.png differ
diff --git a/docs/media/image200.png b/docs/media/image200.png
new file mode 100644
index 0000000..e3cc311
Binary files /dev/null and b/docs/media/image200.png differ
diff --git a/docs/media/image201.png b/docs/media/image201.png
new file mode 100644
index 0000000..c73ab5f
Binary files /dev/null and b/docs/media/image201.png differ
diff --git a/docs/media/image202.png b/docs/media/image202.png
new file mode 100644
index 0000000..003096b
Binary files /dev/null and b/docs/media/image202.png differ
diff --git a/docs/media/image203.png b/docs/media/image203.png
new file mode 100644
index 0000000..457b16c
Binary files /dev/null and b/docs/media/image203.png differ
diff --git a/docs/media/image204.png b/docs/media/image204.png
new file mode 100644
index 0000000..bfee04f
Binary files /dev/null and b/docs/media/image204.png differ
diff --git a/docs/media/image205.png b/docs/media/image205.png
new file mode 100644
index 0000000..999e492
Binary files /dev/null and b/docs/media/image205.png differ
diff --git a/docs/media/image206.png b/docs/media/image206.png
new file mode 100644
index 0000000..42344e9
Binary files /dev/null and b/docs/media/image206.png differ
diff --git a/docs/media/image207.png b/docs/media/image207.png
new file mode 100644
index 0000000..e9e7fab
Binary files /dev/null and b/docs/media/image207.png differ
diff --git a/docs/media/image208.png b/docs/media/image208.png
new file mode 100644
index 0000000..115c196
Binary files /dev/null and b/docs/media/image208.png differ
diff --git a/docs/media/image209.png b/docs/media/image209.png
new file mode 100644
index 0000000..175eae4
Binary files /dev/null and b/docs/media/image209.png differ
diff --git a/docs/media/image21.png b/docs/media/image21.png
new file mode 100644
index 0000000..6934c76
Binary files /dev/null and b/docs/media/image21.png differ
diff --git a/docs/media/image210.png b/docs/media/image210.png
new file mode 100644
index 0000000..5c50cf9
Binary files /dev/null and b/docs/media/image210.png differ
diff --git a/docs/media/image211.png b/docs/media/image211.png
new file mode 100644
index 0000000..b674580
Binary files /dev/null and b/docs/media/image211.png differ
diff --git a/docs/media/image212.png b/docs/media/image212.png
new file mode 100644
index 0000000..346efe0
Binary files /dev/null and b/docs/media/image212.png differ
diff --git a/docs/media/image213.png b/docs/media/image213.png
new file mode 100644
index 0000000..f277949
Binary files /dev/null and b/docs/media/image213.png differ
diff --git a/docs/media/image214.png b/docs/media/image214.png
new file mode 100644
index 0000000..d91b8d8
Binary files /dev/null and b/docs/media/image214.png differ
diff --git a/docs/media/image215.png b/docs/media/image215.png
new file mode 100644
index 0000000..86004bc
Binary files /dev/null and b/docs/media/image215.png differ
diff --git a/docs/media/image216.png b/docs/media/image216.png
new file mode 100644
index 0000000..79db34b
Binary files /dev/null and b/docs/media/image216.png differ
diff --git a/docs/media/image217.png b/docs/media/image217.png
new file mode 100644
index 0000000..3171183
Binary files /dev/null and b/docs/media/image217.png differ
diff --git a/docs/media/image218.png b/docs/media/image218.png
new file mode 100644
index 0000000..b926073
Binary files /dev/null and b/docs/media/image218.png differ
diff --git a/docs/media/image219.png b/docs/media/image219.png
new file mode 100644
index 0000000..21e4ec4
Binary files /dev/null and b/docs/media/image219.png differ
diff --git a/docs/media/image22.png b/docs/media/image22.png
new file mode 100644
index 0000000..28a279b
Binary files /dev/null and b/docs/media/image22.png differ
diff --git a/docs/media/image220.png b/docs/media/image220.png
new file mode 100644
index 0000000..e2ceddf
Binary files /dev/null and b/docs/media/image220.png differ
diff --git a/docs/media/image221.png b/docs/media/image221.png
new file mode 100644
index 0000000..9ea6b8f
Binary files /dev/null and b/docs/media/image221.png differ
diff --git a/docs/media/image222.png b/docs/media/image222.png
new file mode 100644
index 0000000..7a61d92
Binary files /dev/null and b/docs/media/image222.png differ
diff --git a/docs/media/image223.png b/docs/media/image223.png
new file mode 100644
index 0000000..fda02c9
Binary files /dev/null and b/docs/media/image223.png differ
diff --git a/docs/media/image224.png b/docs/media/image224.png
new file mode 100644
index 0000000..681179a
Binary files /dev/null and b/docs/media/image224.png differ
diff --git a/docs/media/image225.png b/docs/media/image225.png
new file mode 100644
index 0000000..9c3bafe
Binary files /dev/null and b/docs/media/image225.png differ
diff --git a/docs/media/image226.png b/docs/media/image226.png
new file mode 100644
index 0000000..af5741e
Binary files /dev/null and b/docs/media/image226.png differ
diff --git a/docs/media/image227.png b/docs/media/image227.png
new file mode 100644
index 0000000..f4c3fe3
Binary files /dev/null and b/docs/media/image227.png differ
diff --git a/docs/media/image228.png b/docs/media/image228.png
new file mode 100644
index 0000000..be4ecc6
Binary files /dev/null and b/docs/media/image228.png differ
diff --git a/docs/media/image229.png b/docs/media/image229.png
new file mode 100644
index 0000000..55d2c6e
Binary files /dev/null and b/docs/media/image229.png differ
diff --git a/docs/media/image23.png b/docs/media/image23.png
new file mode 100644
index 0000000..73fc94f
Binary files /dev/null and b/docs/media/image23.png differ
diff --git a/docs/media/image230.png b/docs/media/image230.png
new file mode 100644
index 0000000..e53b630
Binary files /dev/null and b/docs/media/image230.png differ
diff --git a/docs/media/image231.png b/docs/media/image231.png
new file mode 100644
index 0000000..861d2d7
Binary files /dev/null and b/docs/media/image231.png differ
diff --git a/docs/media/image232.png b/docs/media/image232.png
new file mode 100644
index 0000000..9c69f62
Binary files /dev/null and b/docs/media/image232.png differ
diff --git a/docs/media/image233.png b/docs/media/image233.png
new file mode 100644
index 0000000..48da8f2
Binary files /dev/null and b/docs/media/image233.png differ
diff --git a/docs/media/image234.png b/docs/media/image234.png
new file mode 100644
index 0000000..dc56d79
Binary files /dev/null and b/docs/media/image234.png differ
diff --git a/docs/media/image235.png b/docs/media/image235.png
new file mode 100644
index 0000000..e38035f
Binary files /dev/null and b/docs/media/image235.png differ
diff --git a/docs/media/image236.png b/docs/media/image236.png
new file mode 100644
index 0000000..f686dd2
Binary files /dev/null and b/docs/media/image236.png differ
diff --git a/docs/media/image237.png b/docs/media/image237.png
new file mode 100644
index 0000000..09c0e7f
Binary files /dev/null and b/docs/media/image237.png differ
diff --git a/docs/media/image238.png b/docs/media/image238.png
new file mode 100644
index 0000000..a587d6b
Binary files /dev/null and b/docs/media/image238.png differ
diff --git a/docs/media/image239.png b/docs/media/image239.png
new file mode 100644
index 0000000..a911e78
Binary files /dev/null and b/docs/media/image239.png differ
diff --git a/docs/media/image24.png b/docs/media/image24.png
new file mode 100644
index 0000000..0d576d2
Binary files /dev/null and b/docs/media/image24.png differ
diff --git a/docs/media/image240.png b/docs/media/image240.png
new file mode 100644
index 0000000..b41f294
Binary files /dev/null and b/docs/media/image240.png differ
diff --git a/docs/media/image241.jpeg b/docs/media/image241.jpeg
new file mode 100644
index 0000000..4ae741c
Binary files /dev/null and b/docs/media/image241.jpeg differ
diff --git a/docs/media/image242.png b/docs/media/image242.png
new file mode 100644
index 0000000..d071e77
Binary files /dev/null and b/docs/media/image242.png differ
diff --git a/docs/media/image243.png b/docs/media/image243.png
new file mode 100644
index 0000000..59dcebd
Binary files /dev/null and b/docs/media/image243.png differ
diff --git a/docs/media/image244.png b/docs/media/image244.png
new file mode 100644
index 0000000..1fd9d2f
Binary files /dev/null and b/docs/media/image244.png differ
diff --git a/docs/media/image245.png b/docs/media/image245.png
new file mode 100644
index 0000000..87946c5
Binary files /dev/null and b/docs/media/image245.png differ
diff --git a/docs/media/image246.png b/docs/media/image246.png
new file mode 100644
index 0000000..4cb65b1
Binary files /dev/null and b/docs/media/image246.png differ
diff --git a/docs/media/image247.png b/docs/media/image247.png
new file mode 100644
index 0000000..818fe27
Binary files /dev/null and b/docs/media/image247.png differ
diff --git a/docs/media/image248.png b/docs/media/image248.png
new file mode 100644
index 0000000..bc4f768
Binary files /dev/null and b/docs/media/image248.png differ
diff --git a/docs/media/image249.png b/docs/media/image249.png
new file mode 100644
index 0000000..2aaecaa
Binary files /dev/null and b/docs/media/image249.png differ
diff --git a/docs/media/image25.png b/docs/media/image25.png
new file mode 100644
index 0000000..1add634
Binary files /dev/null and b/docs/media/image25.png differ
diff --git a/docs/media/image250.png b/docs/media/image250.png
new file mode 100644
index 0000000..7c6d098
Binary files /dev/null and b/docs/media/image250.png differ
diff --git a/docs/media/image251.png b/docs/media/image251.png
new file mode 100644
index 0000000..314372c
Binary files /dev/null and b/docs/media/image251.png differ
diff --git a/docs/media/image252.png b/docs/media/image252.png
new file mode 100644
index 0000000..08e5cfd
Binary files /dev/null and b/docs/media/image252.png differ
diff --git a/docs/media/image253.png b/docs/media/image253.png
new file mode 100644
index 0000000..6c37412
Binary files /dev/null and b/docs/media/image253.png differ
diff --git a/docs/media/image254.png b/docs/media/image254.png
new file mode 100644
index 0000000..7f41613
Binary files /dev/null and b/docs/media/image254.png differ
diff --git a/docs/media/image255.png b/docs/media/image255.png
new file mode 100644
index 0000000..4d2d628
Binary files /dev/null and b/docs/media/image255.png differ
diff --git a/docs/media/image256.png b/docs/media/image256.png
new file mode 100644
index 0000000..f1ef428
Binary files /dev/null and b/docs/media/image256.png differ
diff --git a/docs/media/image257.png b/docs/media/image257.png
new file mode 100644
index 0000000..807b5bc
Binary files /dev/null and b/docs/media/image257.png differ
diff --git a/docs/media/image258.png b/docs/media/image258.png
new file mode 100644
index 0000000..ae3c75c
Binary files /dev/null and b/docs/media/image258.png differ
diff --git a/docs/media/image259.png b/docs/media/image259.png
new file mode 100644
index 0000000..307c9db
Binary files /dev/null and b/docs/media/image259.png differ
diff --git a/docs/media/image26.png b/docs/media/image26.png
new file mode 100644
index 0000000..512547b
Binary files /dev/null and b/docs/media/image26.png differ
diff --git a/docs/media/image260.png b/docs/media/image260.png
new file mode 100644
index 0000000..dec8ef3
Binary files /dev/null and b/docs/media/image260.png differ
diff --git a/docs/media/image261.png b/docs/media/image261.png
new file mode 100644
index 0000000..83df2e9
Binary files /dev/null and b/docs/media/image261.png differ
diff --git a/docs/media/image262.png b/docs/media/image262.png
new file mode 100644
index 0000000..9e2e4cb
Binary files /dev/null and b/docs/media/image262.png differ
diff --git a/docs/media/image263.png b/docs/media/image263.png
new file mode 100644
index 0000000..d03c127
Binary files /dev/null and b/docs/media/image263.png differ
diff --git a/docs/media/image264.png b/docs/media/image264.png
new file mode 100644
index 0000000..9f65ece
Binary files /dev/null and b/docs/media/image264.png differ
diff --git a/docs/media/image265.png b/docs/media/image265.png
new file mode 100644
index 0000000..d835c44
Binary files /dev/null and b/docs/media/image265.png differ
diff --git a/docs/media/image266.png b/docs/media/image266.png
new file mode 100644
index 0000000..73778f2
Binary files /dev/null and b/docs/media/image266.png differ
diff --git a/docs/media/image267.png b/docs/media/image267.png
new file mode 100644
index 0000000..fc0d9e7
Binary files /dev/null and b/docs/media/image267.png differ
diff --git a/docs/media/image268.png b/docs/media/image268.png
new file mode 100644
index 0000000..dc5ac97
Binary files /dev/null and b/docs/media/image268.png differ
diff --git a/docs/media/image269.png b/docs/media/image269.png
new file mode 100644
index 0000000..18e5729
Binary files /dev/null and b/docs/media/image269.png differ
diff --git a/docs/media/image27.png b/docs/media/image27.png
new file mode 100644
index 0000000..83d831b
Binary files /dev/null and b/docs/media/image27.png differ
diff --git a/docs/media/image270.png b/docs/media/image270.png
new file mode 100644
index 0000000..7b2b9f9
Binary files /dev/null and b/docs/media/image270.png differ
diff --git a/docs/media/image271.png b/docs/media/image271.png
new file mode 100644
index 0000000..dd48129
Binary files /dev/null and b/docs/media/image271.png differ
diff --git a/docs/media/image272.png b/docs/media/image272.png
new file mode 100644
index 0000000..ebec861
Binary files /dev/null and b/docs/media/image272.png differ
diff --git a/docs/media/image273.png b/docs/media/image273.png
new file mode 100644
index 0000000..3f455ec
Binary files /dev/null and b/docs/media/image273.png differ
diff --git a/docs/media/image274.png b/docs/media/image274.png
new file mode 100644
index 0000000..e6e3f33
Binary files /dev/null and b/docs/media/image274.png differ
diff --git a/docs/media/image275.png b/docs/media/image275.png
new file mode 100644
index 0000000..8f83238
Binary files /dev/null and b/docs/media/image275.png differ
diff --git a/docs/media/image276.png b/docs/media/image276.png
new file mode 100644
index 0000000..fb04063
Binary files /dev/null and b/docs/media/image276.png differ
diff --git a/docs/media/image277.png b/docs/media/image277.png
new file mode 100644
index 0000000..08e5794
Binary files /dev/null and b/docs/media/image277.png differ
diff --git a/docs/media/image278.png b/docs/media/image278.png
new file mode 100644
index 0000000..cf33552
Binary files /dev/null and b/docs/media/image278.png differ
diff --git a/docs/media/image279.png b/docs/media/image279.png
new file mode 100644
index 0000000..8db0bb5
Binary files /dev/null and b/docs/media/image279.png differ
diff --git a/docs/media/image28.png b/docs/media/image28.png
new file mode 100644
index 0000000..e4773d4
Binary files /dev/null and b/docs/media/image28.png differ
diff --git a/docs/media/image280.png b/docs/media/image280.png
new file mode 100644
index 0000000..a15ff0f
Binary files /dev/null and b/docs/media/image280.png differ
diff --git a/docs/media/image281.png b/docs/media/image281.png
new file mode 100644
index 0000000..b12c5a4
Binary files /dev/null and b/docs/media/image281.png differ
diff --git a/docs/media/image282.png b/docs/media/image282.png
new file mode 100644
index 0000000..c8a83ee
Binary files /dev/null and b/docs/media/image282.png differ
diff --git a/docs/media/image283.png b/docs/media/image283.png
new file mode 100644
index 0000000..2d5b72b
Binary files /dev/null and b/docs/media/image283.png differ
diff --git a/docs/media/image284.png b/docs/media/image284.png
new file mode 100644
index 0000000..1b3c305
Binary files /dev/null and b/docs/media/image284.png differ
diff --git a/docs/media/image285.png b/docs/media/image285.png
new file mode 100644
index 0000000..9ff3107
Binary files /dev/null and b/docs/media/image285.png differ
diff --git a/docs/media/image286.png b/docs/media/image286.png
new file mode 100644
index 0000000..0f155a9
Binary files /dev/null and b/docs/media/image286.png differ
diff --git a/docs/media/image287.png b/docs/media/image287.png
new file mode 100644
index 0000000..6e6b8e4
Binary files /dev/null and b/docs/media/image287.png differ
diff --git a/docs/media/image288.png b/docs/media/image288.png
new file mode 100644
index 0000000..604acd8
Binary files /dev/null and b/docs/media/image288.png differ
diff --git a/docs/media/image289.png b/docs/media/image289.png
new file mode 100644
index 0000000..8d99a16
Binary files /dev/null and b/docs/media/image289.png differ
diff --git a/docs/media/image29.png b/docs/media/image29.png
new file mode 100644
index 0000000..f735d7f
Binary files /dev/null and b/docs/media/image29.png differ
diff --git a/docs/media/image290.png b/docs/media/image290.png
new file mode 100644
index 0000000..cec45b5
Binary files /dev/null and b/docs/media/image290.png differ
diff --git a/docs/media/image291.png b/docs/media/image291.png
new file mode 100644
index 0000000..091febd
Binary files /dev/null and b/docs/media/image291.png differ
diff --git a/docs/media/image292.png b/docs/media/image292.png
new file mode 100644
index 0000000..850dcc5
Binary files /dev/null and b/docs/media/image292.png differ
diff --git a/docs/media/image293.png b/docs/media/image293.png
new file mode 100644
index 0000000..0ceafbf
Binary files /dev/null and b/docs/media/image293.png differ
diff --git a/docs/media/image294.png b/docs/media/image294.png
new file mode 100644
index 0000000..2961a3f
Binary files /dev/null and b/docs/media/image294.png differ
diff --git a/docs/media/image295.png b/docs/media/image295.png
new file mode 100644
index 0000000..f1c3155
Binary files /dev/null and b/docs/media/image295.png differ
diff --git a/docs/media/image296.png b/docs/media/image296.png
new file mode 100644
index 0000000..e8920b0
Binary files /dev/null and b/docs/media/image296.png differ
diff --git a/docs/media/image297.png b/docs/media/image297.png
new file mode 100644
index 0000000..4872bb7
Binary files /dev/null and b/docs/media/image297.png differ
diff --git a/docs/media/image298.png b/docs/media/image298.png
new file mode 100644
index 0000000..760dea2
Binary files /dev/null and b/docs/media/image298.png differ
diff --git a/docs/media/image299.png b/docs/media/image299.png
new file mode 100644
index 0000000..712cde5
Binary files /dev/null and b/docs/media/image299.png differ
diff --git a/docs/media/image3.png b/docs/media/image3.png
new file mode 100644
index 0000000..afa236e
Binary files /dev/null and b/docs/media/image3.png differ
diff --git a/docs/media/image30.png b/docs/media/image30.png
new file mode 100644
index 0000000..0296c9e
Binary files /dev/null and b/docs/media/image30.png differ
diff --git a/docs/media/image300.png b/docs/media/image300.png
new file mode 100644
index 0000000..b68f486
Binary files /dev/null and b/docs/media/image300.png differ
diff --git a/docs/media/image301.png b/docs/media/image301.png
new file mode 100644
index 0000000..dbbc27a
Binary files /dev/null and b/docs/media/image301.png differ
diff --git a/docs/media/image302.png b/docs/media/image302.png
new file mode 100644
index 0000000..460daad
Binary files /dev/null and b/docs/media/image302.png differ
diff --git a/docs/media/image303.png b/docs/media/image303.png
new file mode 100644
index 0000000..474d66f
Binary files /dev/null and b/docs/media/image303.png differ
diff --git a/docs/media/image304.png b/docs/media/image304.png
new file mode 100644
index 0000000..98d59d4
Binary files /dev/null and b/docs/media/image304.png differ
diff --git a/docs/media/image305.png b/docs/media/image305.png
new file mode 100644
index 0000000..cc0a9c0
Binary files /dev/null and b/docs/media/image305.png differ
diff --git a/docs/media/image306.png b/docs/media/image306.png
new file mode 100644
index 0000000..76cf853
Binary files /dev/null and b/docs/media/image306.png differ
diff --git a/docs/media/image307.png b/docs/media/image307.png
new file mode 100644
index 0000000..3d20947
Binary files /dev/null and b/docs/media/image307.png differ
diff --git a/docs/media/image308.png b/docs/media/image308.png
new file mode 100644
index 0000000..5d49bc9
Binary files /dev/null and b/docs/media/image308.png differ
diff --git a/docs/media/image309.png b/docs/media/image309.png
new file mode 100644
index 0000000..093e41d
Binary files /dev/null and b/docs/media/image309.png differ
diff --git a/docs/media/image31.png b/docs/media/image31.png
new file mode 100644
index 0000000..7e1effc
Binary files /dev/null and b/docs/media/image31.png differ
diff --git a/docs/media/image310.png b/docs/media/image310.png
new file mode 100644
index 0000000..3d16fc8
Binary files /dev/null and b/docs/media/image310.png differ
diff --git a/docs/media/image311.png b/docs/media/image311.png
new file mode 100644
index 0000000..34c5405
Binary files /dev/null and b/docs/media/image311.png differ
diff --git a/docs/media/image312.png b/docs/media/image312.png
new file mode 100644
index 0000000..f66afc0
Binary files /dev/null and b/docs/media/image312.png differ
diff --git a/docs/media/image313.png b/docs/media/image313.png
new file mode 100644
index 0000000..d1f5635
Binary files /dev/null and b/docs/media/image313.png differ
diff --git a/docs/media/image314.png b/docs/media/image314.png
new file mode 100644
index 0000000..a0d076f
Binary files /dev/null and b/docs/media/image314.png differ
diff --git a/docs/media/image315.png b/docs/media/image315.png
new file mode 100644
index 0000000..36cf4e3
Binary files /dev/null and b/docs/media/image315.png differ
diff --git a/docs/media/image316.png b/docs/media/image316.png
new file mode 100644
index 0000000..7893d6e
Binary files /dev/null and b/docs/media/image316.png differ
diff --git a/docs/media/image317.png b/docs/media/image317.png
new file mode 100644
index 0000000..669866d
Binary files /dev/null and b/docs/media/image317.png differ
diff --git a/docs/media/image318.png b/docs/media/image318.png
new file mode 100644
index 0000000..a8024f9
Binary files /dev/null and b/docs/media/image318.png differ
diff --git a/docs/media/image319.png b/docs/media/image319.png
new file mode 100644
index 0000000..d24f242
Binary files /dev/null and b/docs/media/image319.png differ
diff --git a/docs/media/image32.png b/docs/media/image32.png
new file mode 100644
index 0000000..ab6136c
Binary files /dev/null and b/docs/media/image32.png differ
diff --git a/docs/media/image320.png b/docs/media/image320.png
new file mode 100644
index 0000000..800a73c
Binary files /dev/null and b/docs/media/image320.png differ
diff --git a/docs/media/image321.png b/docs/media/image321.png
new file mode 100644
index 0000000..9835713
Binary files /dev/null and b/docs/media/image321.png differ
diff --git a/docs/media/image322.png b/docs/media/image322.png
new file mode 100644
index 0000000..02c01ee
Binary files /dev/null and b/docs/media/image322.png differ
diff --git a/docs/media/image323.png b/docs/media/image323.png
new file mode 100644
index 0000000..5991c1b
Binary files /dev/null and b/docs/media/image323.png differ
diff --git a/docs/media/image324.png b/docs/media/image324.png
new file mode 100644
index 0000000..feb6dfd
Binary files /dev/null and b/docs/media/image324.png differ
diff --git a/docs/media/image325.png b/docs/media/image325.png
new file mode 100644
index 0000000..e7ba125
Binary files /dev/null and b/docs/media/image325.png differ
diff --git a/docs/media/image326.png b/docs/media/image326.png
new file mode 100644
index 0000000..8ac0f52
Binary files /dev/null and b/docs/media/image326.png differ
diff --git a/docs/media/image327.png b/docs/media/image327.png
new file mode 100644
index 0000000..b20cb74
Binary files /dev/null and b/docs/media/image327.png differ
diff --git a/docs/media/image328.png b/docs/media/image328.png
new file mode 100644
index 0000000..90d36c6
Binary files /dev/null and b/docs/media/image328.png differ
diff --git a/docs/media/image329.png b/docs/media/image329.png
new file mode 100644
index 0000000..c23570b
Binary files /dev/null and b/docs/media/image329.png differ
diff --git a/docs/media/image33.png b/docs/media/image33.png
new file mode 100644
index 0000000..aacf2ab
Binary files /dev/null and b/docs/media/image33.png differ
diff --git a/docs/media/image330.png b/docs/media/image330.png
new file mode 100644
index 0000000..c1d6d05
Binary files /dev/null and b/docs/media/image330.png differ
diff --git a/docs/media/image331.png b/docs/media/image331.png
new file mode 100644
index 0000000..9f66afa
Binary files /dev/null and b/docs/media/image331.png differ
diff --git a/docs/media/image332.png b/docs/media/image332.png
new file mode 100644
index 0000000..93f68e0
Binary files /dev/null and b/docs/media/image332.png differ
diff --git a/docs/media/image333.png b/docs/media/image333.png
new file mode 100644
index 0000000..87e372a
Binary files /dev/null and b/docs/media/image333.png differ
diff --git a/docs/media/image334.png b/docs/media/image334.png
new file mode 100644
index 0000000..a314254
Binary files /dev/null and b/docs/media/image334.png differ
diff --git a/docs/media/image335.png b/docs/media/image335.png
new file mode 100644
index 0000000..cf355a3
Binary files /dev/null and b/docs/media/image335.png differ
diff --git a/docs/media/image336.png b/docs/media/image336.png
new file mode 100644
index 0000000..5395a0d
Binary files /dev/null and b/docs/media/image336.png differ
diff --git a/docs/media/image337.png b/docs/media/image337.png
new file mode 100644
index 0000000..2373557
Binary files /dev/null and b/docs/media/image337.png differ
diff --git a/docs/media/image338.png b/docs/media/image338.png
new file mode 100644
index 0000000..86c2eae
Binary files /dev/null and b/docs/media/image338.png differ
diff --git a/docs/media/image339.png b/docs/media/image339.png
new file mode 100644
index 0000000..9a8b7f4
Binary files /dev/null and b/docs/media/image339.png differ
diff --git a/docs/media/image34.png b/docs/media/image34.png
new file mode 100644
index 0000000..327b5ec
Binary files /dev/null and b/docs/media/image34.png differ
diff --git a/docs/media/image340.png b/docs/media/image340.png
new file mode 100644
index 0000000..8f3fa49
Binary files /dev/null and b/docs/media/image340.png differ
diff --git a/docs/media/image341.png b/docs/media/image341.png
new file mode 100644
index 0000000..d54afee
Binary files /dev/null and b/docs/media/image341.png differ
diff --git a/docs/media/image342.png b/docs/media/image342.png
new file mode 100644
index 0000000..f803c8b
Binary files /dev/null and b/docs/media/image342.png differ
diff --git a/docs/media/image343.png b/docs/media/image343.png
new file mode 100644
index 0000000..3e2d980
Binary files /dev/null and b/docs/media/image343.png differ
diff --git a/docs/media/image344.png b/docs/media/image344.png
new file mode 100644
index 0000000..b20842b
Binary files /dev/null and b/docs/media/image344.png differ
diff --git a/docs/media/image345.png b/docs/media/image345.png
new file mode 100644
index 0000000..4de7987
Binary files /dev/null and b/docs/media/image345.png differ
diff --git a/docs/media/image346.png b/docs/media/image346.png
new file mode 100644
index 0000000..bfed80b
Binary files /dev/null and b/docs/media/image346.png differ
diff --git a/docs/media/image347.png b/docs/media/image347.png
new file mode 100644
index 0000000..e0af9e5
Binary files /dev/null and b/docs/media/image347.png differ
diff --git a/docs/media/image348.png b/docs/media/image348.png
new file mode 100644
index 0000000..ce55b0d
Binary files /dev/null and b/docs/media/image348.png differ
diff --git a/docs/media/image349.png b/docs/media/image349.png
new file mode 100644
index 0000000..5de39c7
Binary files /dev/null and b/docs/media/image349.png differ
diff --git a/docs/media/image35.png b/docs/media/image35.png
new file mode 100644
index 0000000..1960c6e
Binary files /dev/null and b/docs/media/image35.png differ
diff --git a/docs/media/image350.png b/docs/media/image350.png
new file mode 100644
index 0000000..b48e9fa
Binary files /dev/null and b/docs/media/image350.png differ
diff --git a/docs/media/image351.png b/docs/media/image351.png
new file mode 100644
index 0000000..4fcea80
Binary files /dev/null and b/docs/media/image351.png differ
diff --git a/docs/media/image36.png b/docs/media/image36.png
new file mode 100644
index 0000000..8af99e5
Binary files /dev/null and b/docs/media/image36.png differ
diff --git a/docs/media/image37.png b/docs/media/image37.png
new file mode 100644
index 0000000..15a0da9
Binary files /dev/null and b/docs/media/image37.png differ
diff --git a/docs/media/image38.png b/docs/media/image38.png
new file mode 100644
index 0000000..d1a1b3e
Binary files /dev/null and b/docs/media/image38.png differ
diff --git a/docs/media/image39.png b/docs/media/image39.png
new file mode 100644
index 0000000..c9d0ff3
Binary files /dev/null and b/docs/media/image39.png differ
diff --git a/docs/media/image4.png b/docs/media/image4.png
new file mode 100644
index 0000000..dd42d43
Binary files /dev/null and b/docs/media/image4.png differ
diff --git a/docs/media/image40.png b/docs/media/image40.png
new file mode 100644
index 0000000..4918239
Binary files /dev/null and b/docs/media/image40.png differ
diff --git a/docs/media/image41.png b/docs/media/image41.png
new file mode 100644
index 0000000..66354a5
Binary files /dev/null and b/docs/media/image41.png differ
diff --git a/docs/media/image42.png b/docs/media/image42.png
new file mode 100644
index 0000000..d6e521c
Binary files /dev/null and b/docs/media/image42.png differ
diff --git a/docs/media/image43.png b/docs/media/image43.png
new file mode 100644
index 0000000..7288909
Binary files /dev/null and b/docs/media/image43.png differ
diff --git a/docs/media/image44.png b/docs/media/image44.png
new file mode 100644
index 0000000..ffe67fa
Binary files /dev/null and b/docs/media/image44.png differ
diff --git a/docs/media/image45.png b/docs/media/image45.png
new file mode 100644
index 0000000..61c3ab1
Binary files /dev/null and b/docs/media/image45.png differ
diff --git a/docs/media/image46.png b/docs/media/image46.png
new file mode 100644
index 0000000..df8da92
Binary files /dev/null and b/docs/media/image46.png differ
diff --git a/docs/media/image47.png b/docs/media/image47.png
new file mode 100644
index 0000000..5180cb3
Binary files /dev/null and b/docs/media/image47.png differ
diff --git a/docs/media/image48.png b/docs/media/image48.png
new file mode 100644
index 0000000..8596dbb
Binary files /dev/null and b/docs/media/image48.png differ
diff --git a/docs/media/image49.png b/docs/media/image49.png
new file mode 100644
index 0000000..841a548
Binary files /dev/null and b/docs/media/image49.png differ
diff --git a/docs/media/image5.png b/docs/media/image5.png
new file mode 100644
index 0000000..0849ea6
Binary files /dev/null and b/docs/media/image5.png differ
diff --git a/docs/media/image50.png b/docs/media/image50.png
new file mode 100644
index 0000000..0b50130
Binary files /dev/null and b/docs/media/image50.png differ
diff --git a/docs/media/image51.png b/docs/media/image51.png
new file mode 100644
index 0000000..d8753d5
Binary files /dev/null and b/docs/media/image51.png differ
diff --git a/docs/media/image52.png b/docs/media/image52.png
new file mode 100644
index 0000000..2e50c5f
Binary files /dev/null and b/docs/media/image52.png differ
diff --git a/docs/media/image53.png b/docs/media/image53.png
new file mode 100644
index 0000000..111b6b5
Binary files /dev/null and b/docs/media/image53.png differ
diff --git a/docs/media/image54.png b/docs/media/image54.png
new file mode 100644
index 0000000..6ec0119
Binary files /dev/null and b/docs/media/image54.png differ
diff --git a/docs/media/image55.png b/docs/media/image55.png
new file mode 100644
index 0000000..edc717e
Binary files /dev/null and b/docs/media/image55.png differ
diff --git a/docs/media/image56.png b/docs/media/image56.png
new file mode 100644
index 0000000..ab55d4a
Binary files /dev/null and b/docs/media/image56.png differ
diff --git a/docs/media/image57.png b/docs/media/image57.png
new file mode 100644
index 0000000..90baaf4
Binary files /dev/null and b/docs/media/image57.png differ
diff --git a/docs/media/image58.png b/docs/media/image58.png
new file mode 100644
index 0000000..e11022b
Binary files /dev/null and b/docs/media/image58.png differ
diff --git a/docs/media/image59.png b/docs/media/image59.png
new file mode 100644
index 0000000..be1cec6
Binary files /dev/null and b/docs/media/image59.png differ
diff --git a/docs/media/image6.png b/docs/media/image6.png
new file mode 100644
index 0000000..8b590c2
Binary files /dev/null and b/docs/media/image6.png differ
diff --git a/docs/media/image60.png b/docs/media/image60.png
new file mode 100644
index 0000000..f370cb3
Binary files /dev/null and b/docs/media/image60.png differ
diff --git a/docs/media/image61.png b/docs/media/image61.png
new file mode 100644
index 0000000..a500b48
Binary files /dev/null and b/docs/media/image61.png differ
diff --git a/docs/media/image62.png b/docs/media/image62.png
new file mode 100644
index 0000000..3dec7c3
Binary files /dev/null and b/docs/media/image62.png differ
diff --git a/docs/media/image63.png b/docs/media/image63.png
new file mode 100644
index 0000000..66a242a
Binary files /dev/null and b/docs/media/image63.png differ
diff --git a/docs/media/image64.png b/docs/media/image64.png
new file mode 100644
index 0000000..13c6085
Binary files /dev/null and b/docs/media/image64.png differ
diff --git a/docs/media/image65.png b/docs/media/image65.png
new file mode 100644
index 0000000..66cdfca
Binary files /dev/null and b/docs/media/image65.png differ
diff --git a/docs/media/image66.png b/docs/media/image66.png
new file mode 100644
index 0000000..c8169a4
Binary files /dev/null and b/docs/media/image66.png differ
diff --git a/docs/media/image67.png b/docs/media/image67.png
new file mode 100644
index 0000000..6ca39ec
Binary files /dev/null and b/docs/media/image67.png differ
diff --git a/docs/media/image68.png b/docs/media/image68.png
new file mode 100644
index 0000000..9fd7535
Binary files /dev/null and b/docs/media/image68.png differ
diff --git a/docs/media/image69.png b/docs/media/image69.png
new file mode 100644
index 0000000..882561c
Binary files /dev/null and b/docs/media/image69.png differ
diff --git a/docs/media/image7.png b/docs/media/image7.png
new file mode 100644
index 0000000..50c4b46
Binary files /dev/null and b/docs/media/image7.png differ
diff --git a/docs/media/image70.png b/docs/media/image70.png
new file mode 100644
index 0000000..d0dbb2f
Binary files /dev/null and b/docs/media/image70.png differ
diff --git a/docs/media/image71.png b/docs/media/image71.png
new file mode 100644
index 0000000..ac29011
Binary files /dev/null and b/docs/media/image71.png differ
diff --git a/docs/media/image72.png b/docs/media/image72.png
new file mode 100644
index 0000000..f2cd556
Binary files /dev/null and b/docs/media/image72.png differ
diff --git a/docs/media/image73.png b/docs/media/image73.png
new file mode 100644
index 0000000..dc4c8df
Binary files /dev/null and b/docs/media/image73.png differ
diff --git a/docs/media/image74.png b/docs/media/image74.png
new file mode 100644
index 0000000..50734cb
Binary files /dev/null and b/docs/media/image74.png differ
diff --git a/docs/media/image75.png b/docs/media/image75.png
new file mode 100644
index 0000000..fffb9f6
Binary files /dev/null and b/docs/media/image75.png differ
diff --git a/docs/media/image76.png b/docs/media/image76.png
new file mode 100644
index 0000000..6c03ac4
Binary files /dev/null and b/docs/media/image76.png differ
diff --git a/docs/media/image77.png b/docs/media/image77.png
new file mode 100644
index 0000000..b41dbc1
Binary files /dev/null and b/docs/media/image77.png differ
diff --git a/docs/media/image78.png b/docs/media/image78.png
new file mode 100644
index 0000000..cb7135b
Binary files /dev/null and b/docs/media/image78.png differ
diff --git a/docs/media/image79.png b/docs/media/image79.png
new file mode 100644
index 0000000..1450ab0
Binary files /dev/null and b/docs/media/image79.png differ
diff --git a/docs/media/image8.png b/docs/media/image8.png
new file mode 100644
index 0000000..4a2b175
Binary files /dev/null and b/docs/media/image8.png differ
diff --git a/docs/media/image80.png b/docs/media/image80.png
new file mode 100644
index 0000000..51e7def
Binary files /dev/null and b/docs/media/image80.png differ
diff --git a/docs/media/image81.png b/docs/media/image81.png
new file mode 100644
index 0000000..9dfbee3
Binary files /dev/null and b/docs/media/image81.png differ
diff --git a/docs/media/image82.png b/docs/media/image82.png
new file mode 100644
index 0000000..16aef6f
Binary files /dev/null and b/docs/media/image82.png differ
diff --git a/docs/media/image83.png b/docs/media/image83.png
new file mode 100644
index 0000000..1e6137c
Binary files /dev/null and b/docs/media/image83.png differ
diff --git a/docs/media/image84.png b/docs/media/image84.png
new file mode 100644
index 0000000..161e808
Binary files /dev/null and b/docs/media/image84.png differ
diff --git a/docs/media/image85.png b/docs/media/image85.png
new file mode 100644
index 0000000..198ca23
Binary files /dev/null and b/docs/media/image85.png differ
diff --git a/docs/media/image86.png b/docs/media/image86.png
new file mode 100644
index 0000000..8fd9532
Binary files /dev/null and b/docs/media/image86.png differ
diff --git a/docs/media/image87.png b/docs/media/image87.png
new file mode 100644
index 0000000..c8eda4c
Binary files /dev/null and b/docs/media/image87.png differ
diff --git a/docs/media/image88.png b/docs/media/image88.png
new file mode 100644
index 0000000..f7fcc53
Binary files /dev/null and b/docs/media/image88.png differ
diff --git a/docs/media/image89.png b/docs/media/image89.png
new file mode 100644
index 0000000..ac0cc00
Binary files /dev/null and b/docs/media/image89.png differ
diff --git a/docs/media/image9.png b/docs/media/image9.png
new file mode 100644
index 0000000..dc95117
Binary files /dev/null and b/docs/media/image9.png differ
diff --git a/docs/media/image90.png b/docs/media/image90.png
new file mode 100644
index 0000000..a4c0339
Binary files /dev/null and b/docs/media/image90.png differ
diff --git a/docs/media/image91.png b/docs/media/image91.png
new file mode 100644
index 0000000..b4ea060
Binary files /dev/null and b/docs/media/image91.png differ
diff --git a/docs/media/image92.png b/docs/media/image92.png
new file mode 100644
index 0000000..8a68f3f
Binary files /dev/null and b/docs/media/image92.png differ
diff --git a/docs/media/image93.png b/docs/media/image93.png
new file mode 100644
index 0000000..a3e4560
Binary files /dev/null and b/docs/media/image93.png differ
diff --git a/docs/media/image94.png b/docs/media/image94.png
new file mode 100644
index 0000000..db315da
Binary files /dev/null and b/docs/media/image94.png differ
diff --git a/docs/media/image95.png b/docs/media/image95.png
new file mode 100644
index 0000000..631bdb9
Binary files /dev/null and b/docs/media/image95.png differ
diff --git a/docs/media/image96.png b/docs/media/image96.png
new file mode 100644
index 0000000..721e53d
Binary files /dev/null and b/docs/media/image96.png differ
diff --git a/docs/media/image97.png b/docs/media/image97.png
new file mode 100644
index 0000000..12c71c4
Binary files /dev/null and b/docs/media/image97.png differ
diff --git a/docs/media/image98.png b/docs/media/image98.png
new file mode 100644
index 0000000..39024e9
Binary files /dev/null and b/docs/media/image98.png differ
diff --git a/docs/media/image99.png b/docs/media/image99.png
new file mode 100644
index 0000000..10a7e1c
Binary files /dev/null and b/docs/media/image99.png differ
diff --git a/mkdocs.yml b/mkdocs.yml
index 2e4bd93..b81cea1 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -46,3 +46,27 @@ nav:
- 'Конфигурирование LEXEMA-RPA STUDIO': 'Konfi.md'
theme: readthedocs
+
+markdown_extensions:
+ - toc:
+ separator: "_"
+ permalink: "#"
+ - attr_list
+ - admonition
+ - sane_lists
+ - pymdownx.highlight
+ - pymdownx.superfences
+ - def_list
+
+extra_css:
+ - css/extra.css
+
+extra_javascript:
+ - javascripts/extra.js
+
+plugins:
+ - search:
+ lang: ['ru', 'en']
+
+ - img2fig
+
\ No newline at end of file
diff --git a/readthedocs.yml b/readthedocs.yml
new file mode 100644
index 0000000..2e4bd93
--- /dev/null
+++ b/readthedocs.yml
@@ -0,0 +1,48 @@
+site_name: Lexema-RPA Studio Docs
+nav:
+ - Введение: index.md
+ - Знакомство со студией: HelloStudio.md
+ - 'Модули программы':
+ - 'Excel': 'excel.md'
+ - 'Кликер': 'clicker.md'
+ - 'Поиск изображения': 'ImageSearch.md'
+ - 'Поиск изображений': 'ImagesSearch.md'
+ - 'Запустить процесс': 'StartProcess.md'
+ - 'Завершить процесс': 'EndProcess.md'
+ - 'Условие': 'Condition.md'
+ - 'Цикл': 'Cycle.md'
+ - 'Вычисления': 'Calculation.md'
+ - 'Работа с файлами': 'FileModule.md'
+ - 'Код С#': 'CCode.md'
+ - 'Распознавание текста': 'OCR.md'
+ - 'Распознавание текста ABBYY': 'FROCR.md'
+ - 'Работа с браузером': 'WorkBrowser.md'
+ - 'Обработка текста': 'TextAnalysis.md'
+ - 'SQL': 'SQL.md'
+ - '1C': '1C.md'
+ - 'Отправить письмо': 'SendEmail.md'
+ - 'Считать письма': 'ReadEmail.md'
+ - 'Действия над письмами': 'MoveLetter.md'
+ - 'HTTP OData': 'HTTPOData.md'
+ - 'HTTP запрос': 'HTTP.md'
+ - 'FTP запрос': 'FTP.md'
+ - 'Break': 'Break.md'
+ - 'JSON': 'JSON.md'
+ - 'XML': 'XML.md'
+ - 'PDF': 'PDF.md'
+ - 'Интерфейс': 'Iterface.md'
+ - 'Закрыть Excel-файл': 'CloseExcel.md'
+ - 'WHILE': 'WHILE.md'
+ - 'Пауза': 'Pause.md'
+ - 'Робот': 'Robot.md'
+ - 'Return': 'Return.md'
+ - 'Word': 'Word.md'
+ - 'Прокси': 'Proxy.md'
+ - 'Создать скриншот': 'KS.md'
+ - 'Лог': 'log.md'
+ - 'Try/Catch': 'TryCatch.md'
+ - 'Оркестратор': 'Orkestrator.md'
+ - 'Просмотр истории выполнений': 'History.md'
+ - 'Конфигурирование LEXEMA-RPA STUDIO': 'Konfi.md'
+
+theme: readthedocs