Sherpa Designer: ответы на часто задаваемые вопросы

Какова причина того, что блок "Проверить наличие элемента" в проекте находит кнопку "Сохранить", даже если она отсутствует в SAP?

Вопрос: В проекте Робот проверяет наличие кнопки "Сохранить" в SAP. Если не находит - то кликает по элементу "Изменить".

К сожалению, блок "Проверить наличие элемента" находит элемент “Сохранить” даже если его нет.

Ответ:

Скорее всего, этот элемент находится в кеше COM-компонента SAP. Попробуйте перед проверкой переподключиться к SAP. Например, с помощью блоков "Присоединиться" или "Выбор окна".

Есть ли возможность автоматизации 1С с помощью горячих клавиш?

Вопрос: Есть ли возможность автоматизации 1С с помощью горячих клавиш?

Ответ:

Да, есть. Вы можете воспользоваться шпаргалкой с официального сайта 1C: https://its.1c.ru/db/v8std/content/430/hdoc

Или подсказкой для назначения горячих клавиш по ссылке:

https://1s-portal.ru/index.php/stati/configuration/3-form/76-knopke-naznachit-gorjachuju-klavishu.html#:~:text=%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%20%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C%20%D0%BA%D0%B0%D0%BA,%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%88%D0%B8%2C%20%D1%81%D1%80%D0%B0%D0%B7%D1%83%20%D0%B6%D0%B5%20%D1%83%D0%B2%D0%B8%D0%B4%D0%B5%D1%82%D0%B5%20%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82.

Почему логика блока выполнить PowerShell работает иначе в сравнении с встроенным PowerShell?

Вопрос: почему логика блока выполнить PowerShell работает иначе в сравнении с встроенным PowerShell? И как его в таком случае использовать корректно. Пытаюсь использовать функцию – корректный вывод должен быть False. При вызове этой функции через PowerShell блок возвращается True (во втором блоке).

Функция объявляется здесь:

Ответ:

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

Не работает блок “Выполнение кода Python”

Вопрос: что делать, если возникла проблема при использовании блока “Выполнение кода Python”?

Ответ:

Порядок действий следующий:

1) Закройте Дизайнер.

2) Удалите из папки проекта папку Library.

3) Скачайте и обновите Дизайнер.

4) Убедитесь ,что у Вас стоит версия питона х64.

5) Проверьте, чтобы версия питона была не выше 3.12.

Ошибка “Селектор не найден”

Вопрос: при автоматизации программы есть задача: ввести текст в поле фильтра. Я использую блок “Нажать клавиши”, селектор определяет текстовое поле и подсвечивает его, но при отладке робота возникает ошибка “Селектор не найден”. Подскажите пожалуйста, что можно сделать в таком случае?

Ответ:

Скорее всего, это связано с тем, что нажимая кнопку “Отладка”, Вы делаете активным окно Дизайнера, а кликом – обратно приложение. Попробуйте сначала найти ID нужно процесса и прописать его в блок ввода текста, тогда можно будет не кликать на поле фильтра. Также возможно сам клик и начало редактирования в элементе меняет дерево селектора этого элемента. Например, может появляться лишняя панель или даже поле редактирования, которого раньше не было (или Вы его видели в интерфейсе, но технически это не было поле редактирования, пока на него не кликнуть). Соответственно, селекторы у "уже кликнутого" и "ещё не кликнутого" элемента разные. Попробуйте записывать селектор пассивного элемента, в который не кликали ещё и на котором не стоит фокус ввода.

В чем может быть причина ошибки при извлечении диапазона из таблицы, если там используется переменная, равная 1?

Вопрос: необходимо обрезать таблицу (извлечь диапазон), но если в поле столбец число=1 – работает. Если там переменная=1 – выдает ошибку. В чем может быть дело? Переменная берётся из активности "проверить существование значения". Дополнительное приведение “_tonumber” не помогает.

Ответ:

В данном случае, переменная имеет тип double. При указании индексатора колонки можно указать или строку, или число int32. Если указывается переменная с типом double, то Framework пытается ее привести к нужному типу. Так как у нас могут быть только два типа, то он выбирает наиболее подходящий без потери данных, а это строка (double => string). В итоге Framework пытается индексировать колонку с "1", а не по числу. Когда Вы принудительно приводите к типу [int], то у Framework отпадают все неоднозначности. Поэтому следует написать [int]$DocCol, т.е. привести значение к числу int32.

Можно ли в Sherpa RPA выполнить полноценный скрипт, а не скрипт PowerShell одной строкой?

Вопрос: можно ли в Sherpa RPA выполнить полноценный скрипт, а не скрипт PowerShell одной строкой?

Ответ:

Да, можно, для этого необходимо использовать блок “Выполнить выражение PowerShell”, отключить в нем обработку переменных, используя константы #StopRefactoring и #StartRefactoring следующим образом:

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

Сбой кодировки символов

Вопрос: что делать, если возникла проблема кодировки символов? При кодировке на компьютере кодировка Windows1251 и все ОК, а на сервере в этом же файле в этой же кодировке - сбой.

Ответ:

Сбой кодировки символов может быть связан с кодировкой для русских версий Microsoft Windows. В случае возникновения такой проблемы попробуйте сделать следующее:

Зайдите в настройки региона на Вашем компьютере (Параметры => Время и язык => Регион => Дополнительные параметры => Региональные стандарты => Дополнительно => Экран приветствия и учетные записи новых пользователей).

В открывшемся окне установите флаги “Экран приветствия и системные учетные записи” и “Новые учетные записи пользователей”.

После этого язык интерфейса для экрана приветствия и новых учетных записей пользователей изменится на “Русский” и проблема сбоя кодировки решится.

Как игнорировать номер после слова "form" в id поля поиска на веб-странице 1С при обновлении страницы?

Вопрос: Есть проблема, на веб странице 1С у поля поиска при обновлении страницы меняется id в диве. Есть ли какая-нибудь возможность, игнорировать номер после слова "form" и дальше определять селектор?

Например: INPUT[id='form1(?)_ВыходныеИзделияКоманднаяПанельВыходныеИзделияСтрокаПоиска_i0'] Ответ:

Вот несколько подходов, которые могут помочь вам решить эту проблему:

  1. Использование частичного совпадения ID: Вы можете использовать селектор, который ищет элементы по части их ID. Например, если ID всегда начинается с "form", вы можете использовать селектор INPUT[id^='form'], который будет находить все элементы, ID которых начинается с "form". Есть и другие типы подстановок, подробнее вот здесь.

  2. Использование атрибутов: Если у элемента есть другие атрибуты, которые не меняются, вы можете использовать их для создания более стабильного селектора. Например, если у поля поиска есть атрибут class, вы можете использовать селектор INPUT[class='your-class-name'].

  3. Индексы: Если на странице есть несколько элементов с одинаковыми атрибутами, вы можете использовать индекс для выбора нужного элемента.

  4. Использование текстового содержимого: Если элемент имеет текстовое содержимое, вы можете использовать его для создания селектора.

  5. Использование родительских элементов: Если у элемента есть уникальный родитель, вы можете использовать его для создания селектора. Например, DIV[class='parent-class'] > INPUT[id^='form'].

Last updated