Sherpa Designer: respostas para perguntas frequentes#

Qual é a razão pela qual o bloco "Verificar a presença do elemento" no projeto encontra o botão "Salvar", mesmo que ele não esteja presente no SAP?#

Pergunta: No projeto, o Robô verifica a presença do botão "Salvar" no SAP. Se não encontrar, clica no elemento "Modificar".

Infelizmente, o bloco "Verificar a presença do elemento" encontra o elemento "Salvar" mesmo que ele não exista.

Resposta:

Provavelmente, esse elemento está no cache do componente COM do SAP. Tente se reconectar ao SAP antes da verificação. Por exemplo, usando os blocos "Conectar" ou "Selecionar janela".

Existe a possibilidade de automação do 1C usando teclas de atalho?#

Pergunta: Existe a possibilidade de automação do 1C usando teclas de atalho?

Resposta:

Sim, existe. Você pode usar o guia do site oficial do 1C: https://its.1c.ru/db/v8std/content/430/hdoc

Ou a dica no artigo do 1s-portal.ru sobre como atribuir uma tecla de atalho a um botão.

Por que a lógica do bloco executar PowerShell funciona de forma diferente em comparação com o PowerShell embutido?#

Pergunta: Por que a lógica do bloco executar PowerShell funciona de forma diferente em comparação com o PowerShell embutido? E como usá-lo corretamente nesse caso. Estou tentando usar uma função – a saída correta deve ser False. Ao chamar essa função através do bloco PowerShell, ele retorna True (no segundo bloco).

A função é declarada aqui:

Resposta:

Use seus blocos para tais fins. É importante entender que tudo o que você escreve é executado dentro da função, pois cada bloco é uma função. Como resultado, tudo o que você atribuir a essa função será suas variáveis locais. Se você usar seu código, deve desativar o processamento de variáveis. Atualmente, todas as variáveis que você escreveu são convertidas em variáveis locais do script, especificamente dessa classe de diagrama.

O bloco “Execução de código Python” não funciona#

Pergunta: O que fazer se houver um problema ao usar o bloco “Execução de código Python”?

Resposta:

O bloco “Executar código Python” executa código Python e troca parâmetros com o fluxo do robô. Para que funcione corretamente, as seguintes condições devem ser atendidas:

  1. Uma versão de 64 bits (x64) do Python deve estar instalada na máquina em que o fluxo é executado.
  2. A versão do Python não deve ser superior a 3.12.
  3. A configuração do bloco deve conter o caminho para o executável do Python, por exemplo:
C:\Users\<usuário>\AppData\Local\Programs\Python\Python312\python.exe

ou o caminho real para o arquivo python.exe instalado nessa máquina.

  1. O caminho da pasta do projeto deve ser definido no projeto do robô. Ele é necessário para criar a pasta Library usada na execução do código Python e no carregamento de bibliotecas de terceiros.
  2. As bibliotecas de terceiros usadas no código Python devem estar disponíveis na instalação do Python ou incluídas no ambiente utilizado pelo projeto do robô.

Se ocorrer um erro, siga estas etapas:

  1. Feche o Sherpa Designer.
  2. Verifique o caminho do executável do Python na configuração do bloco “Executar código Python”.
  3. Verifique se o caminho da pasta do projeto está definido nas propriedades do projeto.
  4. Confirme que o Python é x64 e que sua versão não é superior a 3.12.
  5. Exclua a pasta Library da pasta do projeto.
  6. Reabra o projeto no Sherpa Designer.
  7. Se necessário, baixe e instale a versão mais recente do Sherpa Designer.
  8. Execute o fluxo novamente e verifique a propriedade “Texto do erro” se o bloco falhar.

A pasta Library é criada na pasta do projeto e é usada na execução do código Python, inclusive com bibliotecas de terceiros. Se o caminho da pasta do projeto estiver ausente ou incorreto, o bloco “Executar código Python” poderá falhar.

Erro “Seletor não encontrado”#

Pergunta: Ao automatizar um programa, há uma tarefa: inserir texto no campo de filtro. Estou usando o bloco “Pressionar teclas”, o seletor identifica o campo de texto e o destaca, mas ao depurar o robô ocorre o erro “Seletor não encontrado”. Por favor, me diga o que pode ser feito nesse caso?

Resposta:

Provavelmente, isso está relacionado ao fato de que, ao pressionar o botão “Depurar”, você torna a janela do Designer ativa, e ao clicar – o aplicativo novamente. Tente primeiro encontrar o ID do processo necessário e escrevê-lo no bloco de entrada de texto, assim você não precisará clicar no campo de filtro. Também é possível que o próprio clique e o início da edição no elemento mudem a árvore do seletor desse elemento. Por exemplo, pode aparecer uma barra extra ou até mesmo um campo de edição que não existia antes (ou você o viu na interface, mas tecnicamente não era um campo de edição até que você clicasse nele). Consequentemente, os seletores do elemento "já clicado" e "ainda não clicado" são diferentes. Tente gravar o seletor do elemento passivo, no qual você ainda não clicou e no qual o foco de entrada não está.

Qual pode ser a causa do erro ao extrair um intervalo da tabela, se uma variável igual a 1 for usada?#

Pergunta: É necessário recortar a tabela (extrair um intervalo), mas se no campo a coluna número=1 – funciona. Se lá a variável=1 – gera um erro. Qual pode ser o problema? A variável é obtida da atividade "verificar a existência de valor". A conversão adicional “_tonumber” não ajuda.

Resposta:

Nesse caso, a variável tem o tipo double. Ao especificar o indexador da coluna, você pode indicar uma string ou um número int32. Se uma variável do tipo double for especificada, o Framework tentará convertê-la para o tipo necessário. Como só podemos ter dois tipos, ele escolhe o mais apropriado sem perda de dados, que é a string (double => string). Como resultado, o Framework tenta indexar a coluna com "1", e não pelo número. Quando você força a conversão para o tipo [int], o Framework elimina todas as ambiguidades. Portanto, deve-se escrever [int]$DocCol, ou seja, converter o valor para um número int32.

É possível executar um script completo no Sherpa RPA, e não um script PowerShell de uma linha?#

Pergunta: É possível executar um script completo no Sherpa RPA, e não um script PowerShell de uma linha?

Resposta:

Sim, é possível, para isso é necessário usar o bloco “Executar expressão PowerShell”, desativar o processamento de variáveis nele, usando as constantes #StopRefactoring e #StartRefactoring da seguinte forma:

Insira o código dentro delas, mas depois, para entrada ou saída de valores das variáveis já fora dessas constantes, é necessário atribuir variáveis locais às variáveis do script.

Falha na codificação de caracteres****Pergunta: o que fazer se houver um problema de codificação de caracteres? Na codificação no computador, a codificação é Windows1251 e tudo está OK, mas no servidor, neste mesmo arquivo, nesta mesma codificação - falha.#

Resposta:

A falha na codificação de caracteres pode estar relacionada à codificação para versões russas do Microsoft Windows. Se você encontrar esse problema, tente fazer o seguinte:

Acesse as configurações de região no seu computador (Configurações => Hora e idioma => Região => Configurações adicionais => Padrões regionais => Avançado => Tela de boas-vindas e contas de novos usuários).

Na janela que se abre, marque as opções “Tela de boas-vindas e contas do sistema” e “Novas contas de usuários”.

Depois disso, o idioma da interface para a tela de boas-vindas e novas contas de usuários será alterado para “Russo” e o problema de falha na codificação será resolvido.

Como ignorar o número após a palavra "form" no id do campo de busca na página da web 1C ao atualizar a página?#

Pergunta: Há um problema, na página da web 1C, o id no div do campo de busca muda ao atualizar a página. Existe alguma maneira de ignorar o número após a palavra "form" e continuar a definir o seletor?

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

Resposta:

Aqui estão algumas abordagens que podem ajudá-lo a resolver esse problema:

  1. Uso de correspondência parcial de ID: Você pode usar um seletor que procura elementos por parte de seu ID. Por exemplo, se o ID sempre começa com "form", você pode usar o seletor INPUT[id^='form'], que encontrará todos os elementos cujo ID começa com "form".
    Existem outros tipos de substituições, mais detalhes aqui.
  2. Uso de atributos: Se o elemento tiver outros atributos que não mudam, você pode usá-los para criar um seletor mais estável. Por exemplo, se o campo de busca tiver um atributo class, você pode usar o seletor INPUT[class='your-class-name'].
  3. Índices: Se houver vários elementos na página com os mesmos atributos, você pode usar um índice para selecionar o elemento desejado.
  4. Uso de conteúdo de texto: Se o elemento tiver conteúdo de texto, você pode usá-lo para criar um seletor.
  5. Uso de elementos pai: Se o elemento tiver um pai único, você pode usá-lo para criar um seletor. Por exemplo, DIV[class='parent-class'] > INPUT[id^='form'].