1C Factura de entrada#
Consideremos un ejemplo de un Robot que crea una factura de entrada en el programa 1C. Los datos de entrada para este proyecto son el archivo "Pedido al proveedor". Para el correcto funcionamiento del robot, es necesario iniciar previamente la aplicación 1C.
Este proyecto muestra la carga de datos desde PDF o desde Excel. Para ver cómo se trabaja con PDF, debe conectar los bloques "Iniciar proceso" y el bloque izquierdo "Obtener ruta al archivo".
Para verificar el trabajo con la carga desde un archivo de Excel, debe conectar los bloques "Iniciar proceso" y el bloque derecho "Obtener ruta al archivo".
El proyecto del robot consta de cuatro diagramas y dos archivos: pdf y xlsx. Para cargar datos de cada uno de los archivos, hay un diagrama específico.
El diagrama principal del proyecto se ve así (para mayor comodidad, los bloques del diagrama están numerados):
- Bloque "Inicio" (desde este bloque comienza cualquier diagrama).
- Bloque "Iniciar aplicación" inicia el programa 1C. Para este bloque se especifican las siguientes propiedades:
- Ruta a la aplicación (ruta a la aplicación que se va a iniciar o nombre de la aplicación estándar, por ejemplo, cmd.exe);
- Parámetros (parámetros de línea de comandos necesarios para iniciar la aplicación);
- Espera de inicio (suspende la ejecución del script hasta que la aplicación especificada se inicie); Tiempo de espera (se indica en segundos y se ignora si la propiedad "Espera de inicio" no está seleccionada).
- Bloque "Obtener ruta al archivo" obtiene la ruta completa al archivo con el nombre especificado. Para estos bloques se especifican las siguientes propiedades:
- Ruta a la carpeta (ruta a la carpeta donde se encuentra el archivo necesario; si la propiedad está vacía, se tomará la carpeta donde se encuentra este proyecto);
- Nombre del archivo (nombre del archivo junto con su formato).
En este caso, se han utilizado paralelamente dos bloques "Obtener ruta al archivo": uno para el archivo en formato pdf, y el otro para el archivo en formato xlsx.
- Bloque "Proceso" permite crear scripts que consisten en varios diagramas. La ejecución del script continuará desde el bloque "Inicio" del diagrama del proyecto especificado. La ejecución del script volverá al bloque actual y continuará en el diagrama actual, tan pronto como se alcance el bloque "Fin" en el diagrama externo. Para el bloque "Proceso" se ha especificado la propiedad "Nombre del diagrama" (nombre del archivo del diagrama en el que continuará la ejecución del script).
En este caso, como se mencionó anteriormente, se han utilizado paralelamente dos bloques "Proceso": uno para la carga de datos desde el archivo pdf, y el otro para la carga de datos desde el archivo xlsx.
- Bloque "Proceso" ubicado más abajo permite crear otro script que es común para los dos scripts descritos anteriormente. Este proceso se encarga de agregar la factura en 1C. Para el bloque "Proceso" aquí también se ha especificado la propiedad "Nombre del diagrama" (nombre del archivo del diagrama en el que continuará la ejecución del script).
Diagrama "Carga de datos desde PDF"
- Bloque "Inicio" (desde este bloque comienza cualquier diagrama).
- Bloque "Log" permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del script del robot. Para este bloque se ha especificado la propiedad "Valor". En las comillas se indica una constante de texto, y el nombre de la variable comienza con el símbolo $. Es decir, este bloque registra en el log del robot un mensaje sobre la carga del archivo seleccionado, indicado mediante la variable.
- Bloque "Ejecutar expresión" inicia la ejecución de una o varias expresiones en un lenguaje compatible con PowerShell. En este caso se utilizan dos expresiones.
- Bloque "Extraer tabla" permite extraer la tabla especificada de un archivo pdf. Para este bloque se especifican las siguientes propiedades:
- Nombre del archivo;
- Número de página (número de página desde el cual se extraerá el texto de la tabla);
- Número de tabla en la página (número de tabla en la página de la cual se necesita extraer el texto).
- Bloque "Ciclo para cada" itera sobre todas las filas de la tabla de datos.
- Bloque "Obtener texto de la página" permite leer el texto de la página especificada del archivo pdf. Para este bloque se especifican las siguientes propiedades:
- Nombre del archivo;
- Número de página (número de página desde el cual se extraerá el texto);
- Resultado (devuelve el texto extraído de la página).
- Bloque “Encontrar subcadena entre dos subcadenas” permite encontrar en el texto una subcadena que se encuentra entre dos otras subcadenas. Debe haber tantos bloques como subcadenas se necesiten encontrar. En este caso se utilizan dos bloques “Encontrar subcadena entre dos subcadenas”: para la subcadena “Ejecutor” y la subcadena “Pedido”. En las propiedades de los bloques se indican:
- Texto (cadena de entrada);
- Parte izquierda (subcadena buscada a la izquierda);
- Parte derecha (subcadena buscada a la derecha).
- Bloque “Condición” verifica la condición especificada para su veracidad, después de lo cual la ejecución del guion continúa hacia la salida “Sí” (si se cumple la condición) o hacia la salida “No” (si la condición no se cumple).
La condición se escribe en el formato: “variable” es igual (==)/ mayor (>)/ menor (<) “valor”.
Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces la salida es “Sí”, de lo contrario – la salida es “No”.
$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces la salida es “Sí”, de lo contrario – la salida es “No”.
En este caso, la condición establecida es: $Row [0] == $index, es decir, si el valor de la celda 0 es igual a la variable $index, entonces la salida es “Sí”, de lo contrario – la salida es “No”.
- Bloque “Agregar fila” permite agregar una fila a la tabla de datos. En este caso se indican las siguientes propiedades:
- Tabla (tabla de datos a la que se agrega la fila);
- Número de fila (devuelve el número de la fila agregada, la numeración comienza desde 0).
- Bloque “Escribir valor en celda” permite escribir un valor en una celda de la tabla de datos. En este caso se utilizan tres bloques de este tipo para diferentes variables: $Row[2], $Row[3] y $Row[5].
- Bloque “Ejecutar expresión” inicia la ejecución de una o varias expresiones en un lenguaje compatible con PowerShell. En este caso se utiliza una expresión.
- Bloque “Ejecutar expresión” inicia la ejecución de una o varias expresiones en un lenguaje compatible con PowerShell. En este caso se utilizan dos expresiones.
- Bloque “Fin” (este bloque finaliza la ejecución del guion o devuelve el diagrama del subproceso al proceso principal).
Diagrama "Cargar datos desde XLSX"
- Bloque “Inicio” (cualquier diagrama comienza con este bloque).
- Bloque “Log” permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del guion del robot. Para este bloque se indica la propiedad “Valor”. En las comillas se indica una constante de texto, y el nombre de la variable comienza con el símbolo $. Es decir, este bloque registra en el log del robot un mensaje sobre la carga del archivo seleccionado, indicado mediante la variable.
- Bloque “Abrir documento” permite abrir un documento de Excel. Para este bloque se indican las siguientes propiedades:
- Ruta del archivo (ruta al documento de Excel que se necesita abrir);
- Enlace a Excel (devuelve un enlace al proceso de procesamiento del documento de Excel);
- Enlace al documento (devuelve un enlace al documento de Excel abierto, en el que se está trabajando actualmente).
- Bloque “Obtener valor de celda” permite leer el valor de una celda del documento de Excel. En este caso se utilizan dos bloques “Obtener valor de celda” para diferentes filas y columnas. Para este bloque se indican las siguientes propiedades:
- Enlace al documento (devuelve un enlace al documento de Excel abierto, en el que se está trabajando actualmente);
- Hoja (número de orden o nombre de la hoja en la que se encuentra la celda requerida);
- Fila (número de fila en la que se encuentra la celda requerida);
- Columna (número de columna en la que se encuentra la celda requerida);
- Resultado (devuelve el contenido de la celda del mismo tipo de datos que en el documento de Excel).
- El bloque “Encontrar subcadena entre dos subcadenas” permite encontrar en el texto una subcadena que se encuentra entre dos otras subcadenas. Debe haber tantos bloques como subcadenas se necesiten encontrar. En este caso se utilizan dos bloques “Encontrar subcadena entre dos subcadenas”: para la subcadena “Ejecutor” y la subcadena “Pedido”. En las propiedades de los bloques se indican:
- Texto (cadena de entrada);
- Parte izquierda (subcadena buscada a la izquierda);
- Parte derecha (subcadena buscada a la derecha).
- El bloque “Ejecutar expresión” inicia la ejecución de una o varias expresiones en un lenguaje compatible con PowerShell. En este caso se utiliza una expresión.
- El bloque “Obtener valor de celda” permite leer el valor de una celda de un documento de Excel. Para este bloque se indican las siguientes propiedades:
- Enlace al documento (devuelve un enlace al documento de Excel abierto en el que se está trabajando actualmente);
- Hoja (número de orden o nombre de la hoja donde se encuentra la celda requerida);
- Fila (número de fila donde se encuentra la celda requerida);
- Columna (número de columna donde se encuentra la celda requerida);
- Resultado (devuelve el contenido de la celda del mismo tipo de datos que en el documento de Excel).
- El bloque “Condición” verifica la veracidad de la condición especificada, después de lo cual la ejecución del guion continúa hacia la salida “Sí” (si la condición se cumple) o hacia la salida “No” (si la condición no se cumplió).
La condición se escribe en el formato: “variable” es igual (==)/ mayor (>)/ menor (<) “valor”.
Por ejemplo: $a == “Hola”, es decir, si el valor de la variable $a es igual a “Hola”, entonces salida “Sí”, de lo contrario – salida “No”.
$Result > 5, es decir, si el valor de la variable $Result es menor que 5, entonces salida “Sí”, de lo contrario – salida “No”.
- El bloque “Cerrar documento” permite cerrar el documento de Excel. Para este bloque se indican las siguientes propiedades:
- Enlace a Excel (devuelve un enlace al proceso de manejo del documento de Excel);
- Enlace al documento (devuelve un enlace al documento de Excel abierto en el que se está trabajando actualmente).
- Los bloques “Obtener valor de celda” permiten leer el valor de una celda de un documento de Excel. En este caso se utilizan dos bloques “Obtener valor de celda” para diferentes filas y columnas. Para este bloque se indican las siguientes propiedades:
- Enlace al documento (devuelve un enlace al documento de Excel abierto en el que se está trabajando actualmente);
- Hoja (número de orden o nombre de la hoja donde se encuentra la celda requerida);
- Fila (número de fila donde se encuentra la celda requerida);
- Columna (número de columna donde se encuentra la celda requerida);
- Resultado (devuelve el contenido de la celda del mismo tipo de datos que en el documento de Excel).
- El bloque “Agregar fila” permite agregar una fila a una tabla de datos. Para este bloque se indican las siguientes propiedades:
- Tabla (tabla de datos a la que se agrega la fila);
- Número de fila (devuelve el número de la fila agregada).
- El bloque “Escribir valor en celda” permite escribir un valor en una celda de la tabla de datos. En este caso se utilizan tres de estos bloques para diferentes columnas y valores. Para este bloque se indican las siguientes propiedades:
- Tabla (tabla de datos en la que se debe escribir el valor);
- Fila (número de fila);
- Columna (número de columna, la numeración comienza desde 0);
- Valor (valor que se debe escribir).
- El bloque “Ejecutar expresión” inicia la ejecución de uno o varios expresiones en un lenguaje compatible con PowerShell. En este caso se utiliza una expresión.
- El bloque “Fin” (este bloque finaliza la ejecución del guion o devuelve el diagrama del subproceso al proceso principal).
**Diagrama "Agregar factura"**Después de extraer los datos de un documento PDF o Excel, el robot crea una factura de entrada en 1C. Este diagrama se ha creado parcialmente utilizando la función "Grabación" de Sherpa Designer. Más información sobre ella aquí.
- Bloque "Inicio" (este bloque inicia cualquier diagrama).
- Bloque "Log" permite enviar mensajes arbitrarios y/o valores de variables al registro durante la ejecución del script del robot. Para este bloque se ha especificado la propiedad "Valor". Aquí, este bloque registra en el log del robot el mensaje "Creando nomenclatura".
- Bloques "Verificar existencia de elemento" (verifica la existencia de un elemento de la interfaz de usuario en la pantalla), "Hacer clic" (realiza un clic en el elemento especificado de la aplicación) y "Presionar teclas" (emula la pulsación de teclas en el teclado) se han añadido al diagrama utilizando la función "Grabación". Cada uno de los bloques utiliza un selector. Más información sobre el trabajo con selectores aquí.
- Bloque "Asignar valor a variable" establece nuevos valores para una o varias variables. En este caso, en las propiedades se ha indicado un valor que debe asignarse a una variable específica.
- Bloque "Ciclo para cada uno" itera cíclicamente sobre todas las filas de la tabla de datos.
- Bloque "Hacer clic" (realiza un clic en el elemento especificado de la aplicación) se ha añadido al diagrama utilizando la función "Grabación".
- Bloque "Pausa" detiene la ejecución del script durante un tiempo determinado. Para este bloque se han especificado las siguientes propiedades:
- Unidad de medida (unidad en la que se ha especificado la duración de la pausa);
- Duración (número de segundos durante los cuales se detendrá la ejecución del script);
- Iniciar inmediatamente (la bandera establecida activa la aplicación de la pausa inmediatamente en la primera pasada de este bloque desde el inicio del script del robot).
- Bloques "Hacer clic" (realiza un clic en el elemento especificado de la aplicación) y "Presionar teclas" (emula la pulsación de teclas en el teclado) se han añadido al diagrama utilizando la función "Grabación". Cada uno de los bloques utiliza un selector.
- Bloque "Ejecutar expresión" inicia la ejecución de una o varias expresiones en un lenguaje compatible con PowerShell. En este caso, se utiliza una expresión.
- Bloque "Fin" (este bloque finaliza la ejecución del script o devuelve el diagrama del subproceso al proceso principal).