1C Nota Fiscal de Entrada#
Vamos considerar um exemplo de Robô que cria uma nota fiscal de entrada no programa 1C. Os dados de entrada para este projeto são o arquivo “Pedido ao Fornecedor”. Para o funcionamento correto do robô, é necessário iniciar o aplicativo 1C previamente.
Este projeto demonstra a carga de dados de um PDF ou de um Excel. Para ver como funciona o trabalho com PDF, você deve conectar os blocos "Iniciar Processo" e o bloco esquerdo "Obter Caminho do Arquivo".
Para verificar o funcionamento da carga de um arquivo Excel, você deve conectar os blocos "Iniciar Processo" e o bloco direito "Obter Caminho do Arquivo".
O projeto do robô consiste em quatro diagramas e dois arquivos: pdf e xlsx. Para carregar dados de cada um dos arquivos, há um diagrama específico.
O diagrama principal do projeto é assim (para conveniência, os blocos do diagrama estão numerados):
- Bloco “Início” (este bloco inicia qualquer diagrama).
- Bloco “Iniciar Aplicativo” inicia o programa 1C. Para este bloco, as seguintes propriedades estão especificadas:
- Caminho para o aplicativo (caminho para o aplicativo a ser iniciado ou nome do aplicativo padrão, por exemplo, cmd.exe);
- Parâmetros (parâmetros da linha de comando necessários para iniciar o aplicativo);
- Aguardar início (pausa a execução do script até que o aplicativo especificado seja iniciado); Tempo de espera (especificado em segundos e ignorado se a propriedade “Aguardar início” não for selecionada).
- Bloco “Obter Caminho do Arquivo” obtém o caminho completo para o arquivo com o nome especificado. Para esses blocos, as seguintes propriedades estão especificadas:
- Caminho para a pasta (caminho para a pasta onde o arquivo necessário está localizado; se a propriedade estiver vazia, será utilizada a pasta onde este projeto está localizado);
- Nome do arquivo (nome do arquivo junto com seu formato).
Neste caso, foram utilizados paralelamente dois blocos “Obter Caminho do Arquivo”: um para o arquivo no formato pdf e outro para o arquivo no formato xlsx.
- Bloco “Processo” permite criar scripts compostos por vários diagramas. A execução do script continuará a partir do bloco “Início” do diagrama especificado do projeto. A execução do script retornará ao bloco atual e continuará no diagrama atual assim que o bloco “Fim” do diagrama externo for alcançado. Para o bloco “Processo”, a propriedade “Nome do Diagrama” está especificada (nome do arquivo do diagrama onde a execução do script continuará).
Neste caso, assim como acima, foram utilizados paralelamente dois blocos “Processo”: um para carregar dados do arquivo pdf e outro para carregar dados do arquivo xlsx.
- Bloco “Processo” localizado abaixo permite criar mais um script, que é comum para os dois scripts descritos acima. Este processo é responsável por adicionar a nota fiscal no 1C. Para o bloco “Processo”, aqui também está especificada a propriedade “Nome do Diagrama” (nome do arquivo do diagrama onde a execução do script continuará).
Diagrama "Carga de Dados do PDF"
- Bloco “Início” (este bloco inicia qualquer diagrama).
- Bloco “Log” permite registrar mensagens arbitrárias e/ou valores de variáveis durante a execução do script do robô. Para este bloco, a propriedade “Valor” está especificada. Entre aspas, está uma constante de texto, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô uma mensagem sobre a carga do arquivo selecionado, especificado por meio da variável.
- Bloco “Executar Expressão” inicia a execução de uma ou mais expressões em uma linguagem compatível com PowerShell. Neste caso, são utilizadas duas expressões.
- Bloco “Extrair Tabela” permite extrair a tabela especificada de um arquivo pdf. Para este bloco, as seguintes propriedades estão especificadas:
- Nome do arquivo;
- Número da página (número da página a partir da qual o texto da tabela será extraído);
- Número da tabela na página (número da tabela na página, da qual o texto deve ser extraído).
- Bloco “Ciclo para Cada” itera sobre todas as linhas da tabela de dados.
- Bloco “Obter Texto da Página” permite ler o texto da página especificada do arquivo pdf. Para este bloco, as seguintes propriedades estão especificadas:
- Nome do arquivo;
- Número da página (número da página a partir da qual o texto será extraído);
- Resultado (retorna o texto extraído da página).
- Bloco “Encontrar substring entre duas substrings” permite encontrar em um texto uma substring que está entre duas outras substrings. Deve haver tantos blocos quanto substrings forem necessárias encontrar. Neste caso, são utilizados dois blocos “Encontrar substring entre duas substrings”: para a substring “Executor” e para a substring “Pedido”. Nas propriedades dos blocos estão especificados:
- Texto (string de entrada);
- Parte esquerda (substring esquerda procurada);
- Parte direita (substring direita procurada).
- Bloco “Condição” verifica a condição especificada quanto à veracidade, após o que a execução do script continua na direção da saída “Sim” (se a condição for satisfeita) ou na direção da saída “Não” (se a condição não for satisfeita).
A condição é escrita no formato: “variável” é igual (==)/ maior (>)/ menor (<) “valor”.
Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.
$Result > 5, ou seja, se o valor da variável $Result for menor que 5, então a saída é “Sim”, caso contrário – a saída é “Não”.
Neste caso, a condição estabelecida é: $Row [0] == $index, ou seja, se o valor da célula 0 for igual à variável $index, então a saída é “Sim”, caso contrário – a saída é “Não”.
- Bloco “Adicionar linha” permite adicionar uma linha à tabela de dados. Neste caso, as seguintes propriedades estão especificadas:
- Tabela (tabela de dados à qual a linha é adicionada);
- Número da linha (retorna o número da linha adicionada, a numeração começa em 0).
- Bloco “Gravar valor na célula” permite gravar um valor em uma célula da tabela de dados. Neste caso, são utilizados três blocos desse tipo para diferentes variáveis: $Row[2], $Row[3] e $Row[5].
- Bloco “Executar expressão” inicia a execução de uma ou mais expressões em uma linguagem compatível com PowerShell. Neste caso, é utilizada uma expressão.
- Bloco “Executar expressão” inicia a execução de uma ou mais expressões em uma linguagem compatível com PowerShell. Neste caso, são utilizadas duas expressões.
- Bloco “Fim” (este bloco finaliza a execução do script ou retorna o diagrama do subprocesso ao processo principal).
Diagrama "Carregando dados do XLSX"
- Bloco “Início” (a partir deste bloco começa qualquer diagrama).
- Bloco “Log” permite registrar mensagens e/ou valores de variáveis no log durante a execução do script do robô. Para este bloco, a propriedade “Valor” está especificada. Entre aspas está uma constante de texto, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô uma mensagem sobre o carregamento do arquivo selecionado, especificado por meio da variável.
- Bloco “Abrir documento” permite abrir um documento Excel. Para este bloco, as seguintes propriedades estão especificadas:
- Caminho do arquivo (caminho para o documento Excel que deve ser aberto);
- Referência ao Excel (retorna uma referência ao processo de manipulação do documento Excel);
- Referência ao documento (retorna uma referência ao documento Excel aberto, no qual o trabalho está atualmente ocorrendo).
- Bloco “Obter valor da célula” permite ler o valor de uma célula do documento Excel. Neste caso, são utilizados dois blocos “Obter valor da célula” para diferentes linhas e colunas. Para este bloco, as seguintes propriedades estão especificadas:
- Referência ao documento (retorna uma referência ao documento Excel aberto, no qual o trabalho está atualmente ocorrendo);
- Planilha (número sequencial ou nome da planilha onde a célula requerida está localizada);
- Linha (número da linha onde a célula requerida está localizada);
- Coluna (número da coluna onde a célula requerida está localizada);
- Resultado (retorna o conteúdo da célula do mesmo tipo de dado que no documento Excel).
- Bloco “Encontrar substring entre duas substrings” permite encontrar em um texto uma substring que está entre duas outras substrings. Deve haver tantos blocos quanto substrings forem necessárias encontrar. Neste caso, são utilizados dois blocos “Encontrar substring entre duas substrings”: para a substring “Executor” e para a substring “Pedido”. As propriedades dos blocos são:
- Texto (string de entrada);
- Parte esquerda (substring buscada à esquerda);
- Parte direita (substring buscada à direita).
- Bloco “Executar expressão” inicia a execução de uma ou mais expressões em uma linguagem compatível com PowerShell. Neste caso, é utilizada uma única expressão.
- Bloco “Obter valor da célula” permite ler o valor de uma célula de um documento Excel. Para este bloco, as seguintes propriedades são especificadas:
- Link para o documento (retorna o link para o documento Excel aberto, no qual o trabalho está sendo realizado no momento);
- Planilha (número ou nome da planilha onde a célula requerida está localizada);
- Linha (número da linha onde a célula requerida está localizada);
- Coluna (número da coluna onde a célula requerida está localizada);
- Resultado (retorna o conteúdo da célula do mesmo tipo de dado que no documento Excel).
- Bloco “Condição” verifica a condição especificada para ver se é verdadeira, após o que a execução do script continua em direção à saída “Sim” (se a condição for atendida) ou em direção à saída “Não” (se a condição não for atendida).
A condição é escrita no formato: “variável” igual a (==)/ maior que (>)/ menor que (<) “valor”.
Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.
$Result > 5, ou seja, se o valor da variável $Result for menor que 5, então a saída é “Sim”, caso contrário – a saída é “Não”.
- Bloco “Fechar documento” permite fechar o documento Excel. Para este bloco, as seguintes propriedades são especificadas:
- Link para o Excel (retorna o link para o processo de manipulação do documento Excel);
- Link para o documento (retorna o link para o documento Excel aberto, no qual o trabalho está sendo realizado no momento).
- Blocos “Obter valor da célula” permitem ler o valor de uma célula de um documento Excel. Neste caso, são utilizados dois blocos “Obter valor da célula” para diferentes linhas e colunas. Para este bloco, as seguintes propriedades são especificadas:
- Link para o documento (retorna o link para o documento Excel aberto, no qual o trabalho está sendo realizado no momento);
- Planilha (número ou nome da planilha onde a célula requerida está localizada);
- Linha (número da linha onde a célula requerida está localizada);
- Coluna (número da coluna onde a célula requerida está localizada);
- Resultado (retorna o conteúdo da célula do mesmo tipo de dado que no documento Excel).
- Bloco “Adicionar linha” permite adicionar uma linha a uma tabela de dados. Para este bloco, as seguintes propriedades são especificadas:
- Tabela (tabela de dados à qual a linha é adicionada);
- Número da linha (retorna o número da linha adicionada).
- Bloco “Gravar valor na célula” permite gravar um valor em uma célula de uma tabela de dados. Neste caso, são utilizados três desses blocos para diferentes colunas e valores. Para este bloco, as seguintes propriedades são especificadas:
- Tabela (tabela de dados na qual o valor deve ser gravado);
- Linha (número da linha);
- Coluna (número da coluna, a numeração começa em 0);
- Valor (valor que deve ser gravado).
- Bloco “Executar expressão” inicia a execução de uma ou mais expressões em uma linguagem compatível com PowerShell. Neste caso, é utilizada uma única expressão.
- Bloco “Fim” (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).
**Diagrama "Adicionar fatura"**Após a extração de dados de um documento PDF ou Excel, o robô cria uma nota fiscal de entrada no 1C. Este diagrama foi criado parcialmente com a função “Gravar” do Sherpa Designer. Mais detalhes aqui.
- Bloco “Início” (este bloco inicia qualquer diagrama).
- Bloco “Log” permite registrar mensagens e/ou valores de variáveis no log durante a execução do script do robô. Para este bloco, a propriedade “Valor” está definida. Aqui, este bloco registra no log do robô a mensagem “Criando nomenclatura”.
- Blocos “Verificar presença de elemento” (verifica a presença de um determinado elemento da interface do usuário na tela), “Clique com o mouse” (realiza um clique no elemento especificado do aplicativo) e “Pressionar teclas” (emula a pressão de teclas no teclado) foram adicionados ao diagrama com a função “Gravar”. Cada um dos blocos utiliza um seletor. Mais detalhes sobre o trabalho com seletores aqui.
- Bloco “Atribuir valor à variável” define novos valores para uma ou mais variáveis. Neste caso, nas propriedades, está definido um valor que deve ser atribuído a uma variável específica.
- Bloco “Laço para cada” itera sobre todas as linhas da tabela de dados.
- Bloco “Clique com o mouse” (realiza um clique no elemento especificado do aplicativo) foi adicionado ao diagrama com a função “Gravar”.
- Bloco “Pausa” suspende a execução do script por um tempo determinado. Para este bloco, as seguintes propriedades estão definidas:
- Unidade de medida (unidade de medida na qual a duração da pausa está definida);
- Duração (número de segundos que a execução do script será suspensa);
- Iniciar imediatamente (a flag definida ativa a aplicação da pausa imediatamente na primeira passagem deste bloco desde o início do script do robô).
- Blocos “Clique com o mouse” (realiza um clique no elemento especificado do aplicativo) e “Pressionar teclas” (emula a pressão de teclas no teclado) foram adicionados ao diagrama com a função “Gravar”. Cada um dos blocos utiliza um seletor.
- Bloco “Executar expressão” inicia a execução de uma ou mais expressões em uma linguagem compatível com PowerShell. Neste caso, uma expressão é utilizada.
- Bloco “Fim” (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).