# 1C Factura de entrada (COM)

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". El trabajo se basa en el uso de una conexión COM a 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 cuatro archivos: dos txt, pdf y xlsx. En el archivo “QueryTemplate.txt” se encuentra la plantilla de consulta escrita en el lenguaje 1C. Para cargar datos desde archivos pdf y xlsx, hay un diagrama propio.

**Diagrama principal** se ve así (para mayor comodidad, los bloques del diagrama están numerados):

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfLBcTTuQY38aEScNqWYbpFlfS2xSieVBDUWoosMOlVid2SQMwb6y5RxxhTe3_Lofh90PypYxOgqfI4VL5KmuHQqt7v7LB7KOSaz7nHl-0Cqh0BNZYoPwin9zxdg6vX6KUSMZnGACnVmWSWeeYVN_kyyxU?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

1. **Bloque “Inicio”** (desde este bloque comienza cualquier diagrama).
2. **Bloque “Obtener ruta al archivo”** obtiene la ruta completa al archivo con el nombre especificado. Para estos bloques se han indicado 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeGbm5RNN1-gZ0H1ryVz1aoXsZrdkRKsEgTssOkmAaKsqwdZtAqw3YZ3RyeYng0wWDIFI5n2v0jnWjQmxU8XpONQgVRixd3z6s1LndDuLjnM1ZcDRpPsUXUr6MJo4eIkfyPInLzFcLZUYTsEsDPCgomZBuq?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc9yQrdCV-rqmCckZtnwukbXxTeuVnUJtVnbSeTJuUUsG0yOf43xuFATv6XeVZJA1th2bqop-P9is5GUlqdg2V4jPEHSvDxkZUoHYDPIcLppTKX7AgBTAmuhAvGqDD9CbAuVM9VL4JHZz4yN5flWzaTj3c?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

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.

3. **Bloque “Proceso”** permite crear escenarios que consisten en varios diagramas. La ejecución del escenario continuará desde el bloque “Inicio” del diagrama especificado del proyecto. La ejecución del escenario 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 indicado la propiedad “Nombre del diagrama” (nombre del archivo del diagrama en el que continuará la ejecución del escenario).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeyQi9MuRkhL4xyvtCScZLRoXiMtAvHsOkcaSJcbpZBPzzq5FGzeQ10s5UAwySWqgj8kiE172E6qn5sFyK-fnO-i22J-G3McKD4YYpB4P_CSRhW9Lp_afCi5b6NJqWB6qD99_b-Eszw20JUqlQ-591HUvc3?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXctDC-aNiA3ARKEtMBYQWQb6MNDMH6qfA2SvQ3VrwFaU9fX_nSCh033en2T08o1BGEe48yxO4L0L00qFUWCvZLbeIYAbVM3kaPTjwff5-kf6T3CzSjs23XA9U3OsQCcQoAUp7e666NT89feMT4MMwKP71Fj?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

En este caso, como en el anterior, se han utilizado paralelamente dos bloques “Proceso”: uno para cargar datos desde el archivo pdf, y el otro para cargar datos desde el archivo xlsx.

4. **Bloque “Proceso”** ubicado más abajo permite crear otro escenario que es común para los dos escenarios descritos anteriormente. Este proceso se encarga de agregar la factura en 1C. Para el bloque “Proceso” aquí también se ha indicado la propiedad “Nombre del diagrama” (nombre del archivo del diagrama en el que continuará la ejecución del escenario).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfhMQY1TX2cZSVm6rCk3h3E4CPJTUXz_9dZ_23jXcsGI02HNCp7eMlDZWw64-cQxxBU9_Y-Erg5Nrv1FPjCO6-q8NTvKUQ3DsbmVUFIpbKagFvAhqOK4wlZ-9SUx-mx04zNzhWu2nuAE7FhH4APukmQqOiT?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

**Diagrama "CargarDatosDesdePDF"**

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcuES4FWujD3zcHdFQUnHBxO0mfErb99NUog0SZ10Uj6OwVWiIbcTuEX-owTegXQvzEswReKl6Sm6EdQbxZZ5SjQpeWdcnc7D5aRc8vKraxYutFiD3SRsVhUlsmyq7BZbPHO7lTJFQi-dK9lV-snVLYAwvN?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf6LvuEmiRZXB1_rm7mz3CyKIGAtuJkR0dehfjuOZUbV30TuZO7SUuyGFXbbD_bmun1eJa0wG_RMcyZ9_xhICWTfKKRQcV5mm_YvdJGNGSy8qLv8w1JAr3mvD2Qqkq2PYkrxITO-mw3tZpg7EDq4WZd-e-P?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

1. **Bloque “Inicio”** (desde este bloque comienza cualquier diagrama).
2. **Bloque “Log”** permite imprimir en el log mensajes arbitrarios y/o valores de variables durante la ejecución del escenario del robot. Para este bloque se ha indicado la propiedad “Valor”. En 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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfzhOXtJn5wicT1dCYx6BiE2GWiVlv4wQoNi2R8kkGZy4mlmuFEYKKSAqy-rT9II5IT0E2AyOhlm7tr1IKKrKfjj0M5WIVVvpxAzeUVs7T0KAUJ5Hr3qKcdUkG6sJ5QYINoNB-chIaIYzZwtO-4e7ys66Wz?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

3. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeIu9PCfpmpnNtn53nmUxjJacER2ZzSBTznv4XvjpgkhDVmL3W2ZURsuNtECrWw4rZ3kWmpkD2EBvglmHcjJ6B1MhXHlYLgjO_3Y3fJTfKaGRXmpt8XWwLTk-2zp82ToNsl3akm40Joao1vaabB0I6TD89D?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

4. **Bloque “Extraer tabla”** permite extraer la tabla especificada de un archivo pdf. Para este bloque se han indicado las siguientes propiedades:

* Nombre del archivo;
* Número de página (número de la página desde la cual se extraerá el texto de la tabla);
* Número de tabla en la página (número de la tabla en la página de la que se debe extraer el texto).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcx9l6BJoK4OOO6_5rSB1-PPLnmeveQ466MULnFSHcKvmOlLdGwfMlqEYUBlUQBTbl6hUH32LM6Ivp1p0tYLM2AHsWn5vtJqE2rMuRut4nmm-9bHTYxOkyvlk5UN8ypiPrfJROuwbv8fX81LwOiX0Ijcu1F?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

5. **Bloque “Ciclo para cada uno”** itera sobre todas las filas de la tabla de datos.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcbZ0AcCkiYpadxJNc1_wtkOkhdXX6-gbSYQa871CXV0CYOHA19qXI1fnUGijeowxsKXjikVF77a5hDlWk5OtrGr7XMY5vQKqU3zExeplbIUTGuTEIFK8FbvctodNrMiZBjA0ZoVHrx50kamSg2MPW3Vs4U?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

6. **Bloque “Obtener texto de la página”** permite leer el texto de la página especificada de un archivo pdf. Para este bloque se han indicado las siguientes propiedades:

* Nombre del archivo;
* Número de página (número de la página desde la cual se extraerá el texto);
* Resultado (devuelve el texto extraído de la página).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd5I5sTRCKGlP39gXHKIa-s4cu1w1GLX5ywbRmUnEfu_RkHZ4tbaeJejT5mPdDGl-siSUwyXQRxywzvT1H2jhhEukM6tHwIsPxDUQcZMoGzhfJQz7wpsz3wI3vM8n8Ba7-vSQqsJmRqAPSPQC1efIr1w7i2?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

7. **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).

<br>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdbgtFp9b_Qkbrxe8dmeiQJelJd1i5DEORG5oXQCU-raN_eVtlmzQSo2WtQ3diDkDcBVHgkvHaZgNeTv5NSbFglLE7i0RS8B6bEiAKOIlbltsCd4xo_oGvt0q30MDfawZ5-g5RHdAZlbR7GwMkiRxfrPzU?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeiTYPXBys14G89f77i5Mz22f4ezrRbbCAb1GSs41ueZMv1z-OQMLW9vAzu_VVe9xL57bH6N6Hwf9LCgzUfGsYwm59u-PspCrterejKwS0jVhn59ukD5TcTXMIx7PIFgwsmVwCkh5cVjlgVjneuwwnTQ8B3?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

8. **El bloque "Condición"** verifica la veracidad de la condición especificada, después de lo cual la ejecución del script continúa hacia la salida "Sí" (si se cumple la condición) o hacia la salida "No" (si no se cumple la condición).

La condición se escribe en el formato: "variable" es igual a (==)/ mayor que (>)/ menor que (<) "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".

En este caso, como condición se establece: $Row \[0] == $index, es decir, si el valor de la celda 0 es igual a la variable $index, entonces salida "Sí", de lo contrario – salida "No".

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfSmVqBFTPXu-1VNCWzm4bv9h3FrYZqNaAZ8DVNs5oOo5O6o-lFH4-VZD83aMCNhlYFnhnfpnX3pRN9hvHLA9mEc_HROI-FNgOW6RhqZDMpyDxiTRfWdP-gODe4clZf2_eUG8D-cnEf5wajhAUf0ufdyb7f?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

9. **El bloque "Agregar fila"** permite agregar una fila a la tabla de datos. En este caso se especifican 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXduhUNgu4Fe13jnQWyfb6EX6a_0jR6U_shvUBhOxP3m9SrLIqAzAPbmejwSaoNmfqk6BFUZsXG44Pk4YdG-dVplQCXsifnYT0F23MG6h23RoJjaoWjG3S1VhRPc5nYWO6msRiPcf2wUw2AqyA4nLn5PHxY1?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

10. **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 tales bloques para diferentes variables: $Row\[2], $Row\[3] y $Row\[5].

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeKROc_Q85uXzRVCh6ozR7cwHgtxq0i1_pkf-r3UOJi32naEI5kEGorkzvtdf5u2RAqSL4x1c4jgAV8puqlBqC21bL9YBUag2nLHpd8-zWZ2z_pxju7zO4qYGkcT1_snbSjqSRODnJrVVtSPmtcLGX-SzGo?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcgAmY-7jm8PD-n8wxkpRvzHI9ajAB8bDsPWl2F2miTCIcKwSv1K-fm4on_M3Es0WSBF9ony3SvFdza0kJSzzUp0E81jgbxsyGiDiIaEl7c0ACrojwF9H1HTkMfzSrWpsF4h5QKxVCovUXMKz8QtULtMxri?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdgVfkKqLgDOj52EBMgCXK5LNMznLwHYJuF-DcndwG_9P6iG37nj3Ks2mNlRh6XbMtsYRqjfn62-TAwW0mvotaxniCciK6IXMiMVw_aGgbB0HhSwC6HGlAR_qR3oWaLMTCyNkfC6IUCDfG-07jwAculfFoX?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

11. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeHCutTccXGf8PfsB68ssGTAwAQKXo4wroHS5KS3pfnDxg1YxkVFmrzcYwuuWtKTc9DmvIdU-sO0eBytHL8bo7QzXEJ-12tkNMYh_txfu26JnwS-2eQl40fvICdb6c2AVW1zJ2RFFA1C3k8gUSgPyMTkuef?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

12. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXep-n0rhOQvCPWgs-uLuesS0v99taziW754WxbVvaeHnMI17YT5G-hw_hwbdMeS6rmZCnY5tRmEXeu0Xa-eAYqeDsvE9Yim1gAvkNshIEl7fO0rz3idj1hqMaDdGlE-4bAMSnjUsKAEam331GDV6jB_px6c?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

13. **El bloque "Fin"** (este bloque finaliza la ejecución del script o devuelve el diagrama del subproceso al proceso principal).<br>

**Diagrama "CargarDatosDesdeXLSX"**

<br>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfJxv4Vr23qYtg-VbPmLFiBBQ2_1IydYgGq5f2fa4r-4pUjDDi6Io1qn9rpjLX7oqSBrC1E1M1-9ngncUkyjKDZodbbQZfZbyBilcBO7RdX433k6GxmJkzEyfD7KUYzlwfRb7mgbZIhQC0Zr9JxVhKXeI7I?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcRvfwTKFl41tXxn-x_-b9-_ZiJVHGsHFoWn7_VLEI0Sb8otrd7mpGoPkd_w7i8LxvjDrp3kJ4_HsqIyw3tcu0NB_PsTmRt0gQps2ABx0Fp-iymboNpSTJpa34yQKhSd7qfjKMvC7j26a5sNMLYz2V71IUv?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

1. **El bloque "Inicio"** (cualquier diagrama comienza con este bloque).
2. **El bloque "Log"** permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del script del robot. Para este bloque se especifica 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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdiMFCdvYp7CWv-mkoH2xQRkgySiwHOiur12Am9g0KsJ2wK9V8v7Jjrep5VPIc3P2u_Bfnqf1cvpGzDsx_aAwGBz33Wce7fEbJgqmMhcKR_b4_La3BFclbst4VcMEIxK30WJI6rSzV3aIHkYdND3WAkCHjx?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

3. **El bloque "Abrir documento"** permite abrir un documento de Excel. Para este bloque se especifican las siguientes propiedades:

* Ruta del archivo (ruta al documento de Excel que se debe 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 en ese momento).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXduxJ0pc55wJKwsallTwe_scXHclp8HzactgtjnvgTfDDefZkMwN3YcOWaqVVCdSy6WhoWBlz5-fYzWasRElHKwbubwIGC-jgh2WvKCJEV-Zv22yzBd_MtgSW0nss9stsOuQmqVJ-tz5kIQZKt0h3cDmBF9?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

4. **El 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 especifican las siguientes propiedades:

* Enlace al documento (devuelve un enlace al documento de Excel abierto, en el que se está trabajando en ese momento);
* Hoja (número de orden o nombre de la hoja en la que se encuentra la celda requerida);
* Fila (número de la fila en la que se encuentra la celda requerida);
* Columna (número de la 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdfTxNOAfolCxVq9Mst_jE6C1x03rhvzG5_MV81tbFFpgYLbEQYe3CL-kWlINkNLONv7-vfMk3aSx9Bh7us24zrxuUpK5y6OFr4mHcM6D_pamcXt1VDiRZZwwEs9RvZJL73ylweS3dcV-yHNIALnrRyRdzM?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdSN1-r6X1KOi_1LUOUvRBsLrSboIa2bZjHM8_ExvqoRasBQ5YAF1f0cmrH-NQGtE2zZ6kIBy_H9la5hsBt3a7WWYq3HGwW0BZSjl-wvhbPHZzk9cCXbogwkMyPfrFemjJVoFLZ7OSHssxsIt4sjrg0DgLR?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

5. **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 especifican:

* Texto (cadena de entrada);
* Parte izquierda (subcadena buscada a la izquierda);\* Parte derecha (subcadena buscada a la derecha).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfqoY1Y6zq1cIkVBS3szt_xOtF4w3STAyISmX1upepHQ9JwptniVC_-E6uekiL3Cm3IoKSJqbF0OQI2KYSmGXZP7jTCYwM2Nr20PZ_gxJfTQ0S_FtXo0szOipydseKnS_II7L1EP7RO_hWhmsHhK6e8yn8?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

6. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfehzKigJlW9Wefv3M2B-t5VRqR-jGm_sKDCQAe4Zn4Vsto53XUXsFNuI-_9hbtefUFQoD9K_hnplyyMmqDxiBjNfJpF1yh66-z_17qPQO1PtgM9VGnaL1HMQn1pf3D1Oomf-gez8OFeWmK4B11V0-pGRiZ?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

7. **El bloque “Obtener valor de celda”** permite leer el valor de una celda en un documento de Excel. Para este bloque se especifican 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdAOgNaSJPHoyUNLv-LGRDl0ViOv6hZdlrpiY8c0Kh0C_eOp9GeoWhiGA6MTWs3_sPOjN8Lagel24Ey18kaOQY45E1aKW81zzq2AdVcEOOJLthrxL6qXd370dhL7zrrHguYXHOJmuT1qeicj-chEO9ZzSw6?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

8. **El bloque “Condición”** verifica la veracidad de la condición especificada, después de lo cual la ejecución del script continúa hacia la salida “Sí” (si la condición se cumple) 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 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”.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdoV1g2m_cg2tuChMDI8BBa__qoYklCh6I8jiZmNRUx3chxPF7BTauQwcxFIfSA7-M3Y2u69SGFBnbWZO9oqsMoIi83m0g-Rk4hu39n4PLeNMu781FOWefVWe2Y_NXDb6qp73fbpJx8sX52iMiZmBmZgRS8?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

9. **El bloque “Cerrar documento”** permite cerrar el documento de Excel. Para este bloque se especifican 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfKFa8AiIatyKZ1h1Im-xlTqJiYrZRuZTcF1POprKnBBTt6SJ6TO34KRK2tT3bLaSu7i_5JRslDvMs3T2fEj7y9zlolYpHMguiRMJwTXuDfIPrOcduUKbZTlCiWmII1MJyP1-VZsYGCPjuhCK094h1ENrDB?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

10. **Los bloques “Obtener valor de celda”** permiten leer el valor de una celda en un documento de Excel. En este caso se utilizan dos bloques “Obtener valor de celda” para diferentes filas y columnas. Para este bloque se especifican 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXclrEmTUdssQbhjQZncrBO_erSkL_f_psA_DfHXw1lra0iC-xPkzl1NQVR1FYoV599O6OhMsOuUPOyhSvudZRG3JOlOXYEQpFZQlykhrZZCgJySCIYPMtqxCKfAjpaUUy9vf82ecCEHRoVElUbeHNVXCaw?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXelxe8VcJXU1fqw08k_jCdBgxzAeYhx-_cx33OZIQhTSRVUyCt3lpWNabeY9dGrHgrYZlp0rqnBJUSOGvK8yuw0Zf1p80e9ogpm2IJx3biJw28CxcWYuWtiO6oc092VocAx3ZEpoM5LH-P9ja8LryK5tEY?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

11. **El bloque “Agregar fila”** permite agregar una fila a una tabla de datos. Para este bloque se especifican 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcndOxoWNRKoMjjgj6e-oVm_KKlKVT1jEn85VxJJUhbZ115fAmdQOtTvwS3_aP1aUXYOQvcQ1oaIZMrc7PkUzzuWelIgsxnTpqBXu0jBlgRP1lB3G3dTaVu1cDix8SRrQ0VzGnbQTR9EDpbQEblayin-60?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<br>

12. **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 especifican 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).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe-EKG7FW78MfTk-SogdfFz8aNrjbtMrwOHK_IlZLRL0NzbqSKdXS-IVNWJhpNUT4BOAjYvDVJB2KhJzmHmGi1Iswtiu9URFovnBYf7YrqhsmY7TuJTPg92Wv9IzGnTspbgvFjyEytJLWBf2l-12SPmhzVs?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcnJi1Rf7K1vavXHJskUwpcBX9BKCqKlFbZznkSqpwuyAqf-wT32or_KmdljjA1duyAbg5-IjLv1PivKH7nyVJkIrs8tZ-GktnvuVnhekltWc0kw7FZejYWtF-Bm1UDbDfIboXr1L5oUiefZUwN4kvjexS2?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcB0LOoP6ahBFfbtghTJm6jdrhDK0cQRGVT7mnQbtHCnKl47ySst2Wlyd8NwfKKpV1NWSMi_Ih6_7jesBWQgUgMriN6weJ4csWDDs4SALNrcHojnK5tRCIUFUu8FEKijUMwaq5iQxvmCChWh52KPacnD4hX?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

13. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcSOSM_wgT-jAnSxTWCZNAnF49PKP-kZBcA8WXt7jqirNT9y1PekwIqBRBIjzavTJhnlALHdzhiIh0JTFL-JwRs099dXjQI3iU9xrEWnZcVNX4z4qxuWaROkZxH_v38nHwUkTJuLUiMpdCTZ_DM30lEzStP?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

14. **El bloque “Fin”** (este bloque finaliza la ejecución del script o devuelve el diagrama del subproceso al proceso principal).

**Diagrama “AgregarFactura”**<br>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeV-3lEIEF2fmmSTpKd2k7TvFBDDe43xw_cyl9GQtrKlVjqB4-dRbIYMwyNqojgs-LTsYcXEy83_ez6bcXWEXn3S9t-InCOB9YhiN37GOORX90fwTxTYDgHp2ehTx5arraD9S4lDejTo4fdD5-OScXrYwc?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdcDTnTsqju9HzjYC5uhdfZtVviqoed6Nv1VP5bFf2vVGi9VvdofIDVTzdZmq__arDQTP2ehOcf87-8MQUsWTTIAb7A31w_bHoUEliF7KF2NkUuz7igFV-A5Ahs1jH3cUQljEMWU5s68npzpq2_1tPYrgjl?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

1. **El bloque “Inicio”** (cualquier diagrama comienza con este bloque).
2. **El bloque “Log”** permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del script del robot. Para este bloque se especifica la propiedad “Valor”. Aquí este bloque registra en el log del robot el mensaje “Agregando factura”.

   <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeOh4gf5sxDwQ1FodfLGuGkCMWMJ5yaCsQ9TKJ4MKl71-ChzIbsJmQcm87Yt2pFDiz15B5jrMPr4JquSfN5DKQ4rZvPZFI-ghjTwPMt7-aXq6_RP2EwKOFn6nEoCesRgaPLt4prP4gjKHP9zS05uUS7Recv?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>
3. **Bloque “Leer archivo”** permite leer el contenido de un archivo de texto en una variable. Para este bloque se especifican las siguientes propiedades:

* Nombre del archivo (nombre del archivo de texto cuyo contenido se debe leer);
* Codificación (codificación del archivo);
* Resultado (devuelve el contenido del archivo).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe2uV5GwVZeb1MCsfsZgPwOflxwZ9WFX9XDRfje7DAPxOM7kr4QifuG86OYkoH1De66akoYPX1tuUcipumHuc34W7CwTm5-gtl7yRUS2tdeaH9BdbZDtXdcx5FooPBsl3r2OmFY2K9XlWKel7bLTL-jGy5t?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

4. **Bloque “Reemplazo de subcadena”** permite reemplazar en el texto una subcadena por otra. En este caso se utilizan dos bloques “Reemplazo de subcadena”: para “Cliente” y para “Proveedor”. Para estos bloques se especifican las siguientes propiedades:

* Texto (cadena de entrada);
* Subcadena buscada (cadena que se debe reemplazar);
* Subcadena a insertar (cadena para reemplazar todas las ocurrencias de la subcadena buscada);
* Resultado (nueva cadena en la que todas las ocurrencias de la cadena dada son reemplazadas por otra cadena dada).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdqC6tctyJgpUVPl7hWjqJjYtZEfcsUYHsknrRvx1wf5doM2w4nQI7BW8rOfTgtV3UuYxo841DekqnFN-ykMczRUFBCCSsOZesMnOgqJVr5WmashaDesDKkDeZZAo76YMY58f-SRJIgSH0Xvz4T_axZ-inc?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcTqKPg7nZUlXxc8Tf6yKYI_sA5U9EuJWTCQ6q0XWi8FJtvTlx12-aChSe_fHQGK0a3r5pwL-auMCd_R5o0ZRVlyCDNbxZbEouiXF42D4ZXg1gBVMacQyrYqfzGzUCbhynqpbz5z503CjFTmZrkE75vZfia?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

5. **Bloque “Ciclo para cada uno”** recorre cíclicamente todas las filas de la tabla de datos.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd8jMl6RryCC21eViiAQOXdSD2JqcrQk6E4DuA4Q-1X3WtlGUQ3Phrikdq8UHMT38C2Vk3-34jBkRgDGe0zPmZjMR8p28DMGaBG072JKTGqQP8vGFXmcXtEw3cEnxjDIryQRJz5cKg7vcy5p8Xk_7ZNJaRJ?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

6. **Bloque “Unir texto”** permite unir todos los elementos de las cadenas, colocando entre ellos un separador dado. Para este bloque se especifican las siguientes propiedades:

* Lista de partes de texto (lista de cadenas que se deben unir en una cadena de texto);
* Separador (texto utilizado como separador);
* Nueva línea (bandera establecida que activa la función en la que se utilizará una nueva línea como separador);
* Resultado (cadena resultante).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfAHUtB1-AtMPrrC_JSq3Unb4dDNLmQ7nXLHbsY847KCTF6OEwTPJYoSsXaqOWqXBtTURtAKFdoyszCBJKggTY2ECyziirbIdKToDFNVmBVRrrKEGu2XUl_EvoAsBNTIgUIBK6WRA6B37cf50-jR5fVjJYl?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

7. **Bloque “Reemplazo de subcadena”** permite reemplazar en el texto una subcadena por otra. Para este bloque se especifican las siguientes propiedades:

* Texto (cadena de entrada);
* Subcadena buscada (cadena que se debe reemplazar);
* Subcadena a insertar (cadena para reemplazar todas las ocurrencias de la subcadena buscada);
* Resultado (nueva cadena en la que todas las ocurrencias de la cadena dada son reemplazadas por otra cadena dada).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcKWnIolmuZPnTVWs--DJrTchwN8xHpWDVlwDmYK2-oEJFzAy3BcmqAwD3Sc73wgVfAuBh-zP7PQyqe-5E7DwGZGITWyz1plwe-30Ths9Jf6IBOPnhi3cU5_ieb6YkwTcbLd1m0FuAqt-V4BJy2tIlJpTUQ?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

8. **Bloque “Conectar”** permite crear una conexión. Para este bloque se especifican las siguientes propiedades:

* Cadena de conexión (cadena de conexión a 1C);
* Usuario (nombre de usuario para la autorización);
* Contraseña (contraseña para la autorización);
* Visibilidad (bandera establecida que activa la visibilidad de la ventana de 1C para el usuario);
* Conexión (devuelve el objeto de conexión a 1C).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeJhfQiA8peA1Di1xpc2sfyJbnA80tU3FLcW_Bo5jux-PWIDG-R2lae-nbss2xrDVbCP2WNyYBsMMUzGMWj01qztdfXzOVLbe1DTHLl8P0TDSPajynajJInEyZFe4JRwCP4HvlQn_FoVY-f929lN3VnjnhY?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

9. **Bloque “Ejecutar código”** permite ejecutar código en el servidor. Para este bloque se especifican las siguientes propiedades:

* Conexión (objeto de conexión a 1C);
* Consulta (consulta ejecutada en el lenguaje de 1C).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXehFj34e3cNCVvw1ht78B4E3uFCaPwBUk6yY2v7ivJxy25WczbeFcpBgqz3JJi3VmyJYVoXBZHuHQrTHqOZPAhH7JO9h2gPRkoiPA1XA4WN5fNwM50Znz5l86kLmJ4jdWDuEOPQxwqItuT1zMGR6c9D6zqY?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

10. **Bloque “Cerrar conexión”** permite cerrar la conexión con el servidor 1C. Para este bloque se especifica la propiedad “Conexión” (objeto de conexión a 1C).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXftbROezdVCuz-ImOxJXPqT9inySBfHTIomTHyQc7WnCpY57MD9Cb9c2gE1M8S8LG-E8ZR7bfw4nVgGxFQDib3fRWfPJUE1HXVh6BhDCPiY7xFUJwW_5iEkQk5iEy13vzm63sD4aotBWSS7MKB0-GQXCivC?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

11. **Bloque “Log”** permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del script del robot. Para este bloque se especifica la propiedad “Valor": $ErrorMassage. Es decir, se registra en el log del robot un mensaje de error.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdj9-ug615cl0NMltomme0GA-g7bhFmiuGZkVHvIgNixrEVNAjhkPK_d90Nc28T1TR-CV05sV29uR3CjmjU-ngYrQlGGXQnH_8AsIQm4t8iQdlWd83J0IQL-dwfVtbbP3vzXkeSihVN3YHTR5KhgdPApTcj?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

12. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdYnN3Y6Iv7WLc6KaTcvJFxxUdO1Jd11Di6h9Y_n07v2seQy06B-_D7AQY6ljw3kKVC957n8sxt3R7J0gJWkpg8JwnFmLW_DIIukPICJkfTwDjFpxJJpys86jjG_uhdaSoCHHmJw8LkckMppvIVVDaQiety?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

13. **Bloque “Agregar elemento a la lista”** permite agregar el elemento especificado al final de la lista. Para este bloque se especifican las siguientes propiedades:

* Lista (lista a la que se debe agregar un nuevo elemento);
* Elemento (constante, variable o resultado de cálculos que se debe agregar a la lista).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcUQimaAjFAqtldej5tL-MZSm2P5VIHsInKDYVQY43ffGUwvpJ5BrSzTzwsdhOPr1LYKgBjlTsqLiS8R8aeS-rwERbCGOV0PTOnD0ZcOPDrnAAUgbdGmkmBynfTQhbi3s-J49cUSkgt5QCpvIl0iV4TzSF3?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

14. **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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeYFnfagkbLIRlp6gzO7krpaBGpFdLzziWs1HM1n5srBWFGv6dNKe79fILLf_JbxUpFHerfO1ge5DptodrQJHMoOqHTGisYHzPoYZASPPVQLYfffR2XkY7nlEmVM0GzBAdShF1oRXuodRWcp-n4SgW9jREj?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

15. **Bloque “Agregar elemento a la lista”** permite agregar el elemento especificado al final de la lista. Para este bloque se especifican las siguientes propiedades:

* Lista (lista a la que se debe agregar un nuevo elemento);
* Elemento (constante, variable o resultado de cálculos que se debe agregar a la lista).

  <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd4is6h11AjYHcEGVnYphIvZGb2ZaGlN5PisdWkJcsdPe0ZlTTXnyqYMCgSogiP7z4_R3YSjUfTZxXaVV3sEiXwx7-lPYUFKaJ-sVwlBN_FxY73mBD7rtT3AyPAwBUg9kl9oYNCMEp5ohuJ8caySezm3ITe?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

16. **El 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.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfasqGK6ULu_-OUsDVXmbbap2IpJfIT2v2YwkmSY6Jb0v3TTzUJf-TSrMPcrBexKnkLt9KGlI4Ggv347tXQNwZtmmtCT24tDvlgod0-9ZbNXRLEhoULRzG2JngMF0mig8vv3ewvl8ITRvADZ6LuPS8bx9Y?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

17. **El bloque “Agregar elemento a la lista”** permite añadir el elemento especificado al final de la lista. Para este bloque se especifican las siguientes propiedades:

* Lista (la lista a la que se debe agregar el nuevo elemento);
* Elemento (constante, variable o resultado de cálculos que se debe agregar a la lista).

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfT-mHG8hxpiMUYVGAKmE5RB1ecN8Lf-QkDgo2e6MYaJB-ljFKiQ7B_cWKjh-2Z0dwcK5OjjpOcxFkFfUdFerpj66-2h4YuamUgQuh93n8rlXKiTBhJp4TGgk3Q4cjta3HWEmca8CyDubgJO706cWlzPj-o?key=bQm2vlFSc1CKSZLYW_fmrw" alt=""><figcaption></figcaption></figure>

18. y 19. **El bloque “Fin”** (este bloque finaliza la ejecución del guion o devuelve el diagrama del subproceso al proceso principal).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/es/sherpa-rpa/sherpa-designer/primery-robotov/1s-prikhodnaya-nakladnaya-com.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
