Extensión universal 1C para Hojas de cálculo y Documentos de Google: tomar y usar

Este artículo es para aquellos que usan G Suite y 1C.

PIK Digital es una empresa de TI que fabrica tecnología de construcción. El año pasado, transferimos el Grupo de Empresas PIK a G Suite . Para trabajar completamente con Hojas de cálculo y Documentos de Google, era necesario refinar nuestros sistemas.

Una de estas mejoras es una extensión para cargar informes y formularios de 1C a Google Drive en el formato de Hojas de cálculo de Google y Documentos de Google . En el artículo compartiremos una solución preparada e información útil sobre su implementación. La extensión es gratuita. Toma y usa.

Descargar extensión
Ver código en GitHub



Para que la extensión funcione, necesitará:

  1. Registrar una cuenta de Google
  2. Crea un proyecto en Google Cloud Platform
  3. Crear cliente OAuth
  4. Configurar el acceso a la API de Google Drive
  5. Instale la extensión 1C
  6. Configurar la conexión a la API de Google en 1C

A continuación, consideramos cada etapa por separado y damos ejemplos de código.

Registro de cuenta de Google


Para trabajar, necesitas una cuenta de Google . Sin ella, la extensión no podrá interactuar con los servicios de G Suite. Ya tiene una cuenta existente: úsela.

Crear un proyecto en GCP


Para activar el acceso a la API de Google Drive, debe crear un proyecto en Google Cloud Platform (GCP). Hay dos opciones para trabajar con GCP de forma gratuita:

  • Un período de prueba de 12 meses con un presupuesto de $ 300.
  • Siempre gratis: acceso a la mayoría de los recursos de GCP.

Ambos métodos tienen limitaciones, aquí se describe más sobre ellos. Recomendamos la opción con un período de prueba de 12 meses. Después del período de prueba, no se debitará dinero si no comienza a usar servicios pagos. Todo lo que necesita para el trabajo de integración es gratis.

Registramos el proyecto en el enlace console.cloud.google.com , hacemos clic en "Seleccionar un proyecto" y luego en "Crear un proyecto". Después de crear el proyecto, selecciónelo presionando nuevamente el botón "Seleccionar proyecto".



Crear un cliente OAuth


Cree las credenciales para conectarse a G Suite utilizando el protocolo OAUth 2.0. En GCP, vaya al elemento de menú "API y servicios" - "Credenciales" - "Crear credenciales" - "OAUth Key Identifier".

Aparece un mensaje para crear una ventana de solicitud de acceso. Esta ventana se forma cuando se le pide permiso al usuario para acceder a sus datos.



Deje el tipo de acceso "Acceso abierto" e ingrese el nombre de la aplicación que se mostrará cuando el empleado comience el proyecto y requiera su consentimiento para acceder a los datos. Haz clic en "Guardar".

Después de eso, establezca el "Tipo de aplicación". Seleccione Otros tipos e ingrese el ID de cliente OAuth. Tenga en cuenta que esto no es lo mismo que el nombre para mostrar de la aplicación. Como resultado, se abre una ventana con el identificador y el secreto del cliente. Guárdelos, esto es importante.

Conexión de la biblioteca de API de Google Drive


Para obtener acceso a la funcionalidad API, vaya al elemento de menú "Biblioteca API", busque la biblioteca deseada y conéctela.



Dado que queremos trabajar con los formatos de G Suite, necesitamos conectar la biblioteca API de Google Drive al proyecto. Además, necesitaremos la biblioteca de Google Sheets API, Google Docs API. Encuéntralo y conéctalo de la misma manera.

Instalar extensión en modo usuario


Ahora puede formular solicitudes a la API. Recuerde: nuestra tarea es cargar los datos del informe 1C del formulario estándar a Hojas de cálculo de Google o Documentos de Google.

Descargar la extensión 1C.

En 1C, es posible instalar independientemente extensiones de configuración. Si es la primera vez que te encuentras con esto, mira nuestro breve video sobre cómo hacerlo.

Nuestra extensión funciona con la plataforma a partir de la versión 8.3.10, en configuraciones BP (a partir de 3.0.65 y superior), ERP (a partir de 2.4.6 y superior) y UT (a partir de 11.4.6 y superior).

Si ve una advertencia de seguridad al instalar la extensión, haga clic en Sí. Verá un mensaje que indica que "La acción actual se interrumpió para emitir una advertencia". Esto significa que ha habilitado el modo seguro, por lo que debe repetir el procedimiento para agregar una extensión y deshabilitar el modo seguro. Después de agregar, reinicie 1C.

Si la instalación se realizó correctamente, verá el botón "Guardar en Google Drive" en informes y formularios impresos.



Establecer parámetros para conectarse a la API de Google en 1C


Queda por configurar los ajustes para conectarse a la API de Google, y puede trabajar. Nuevamente, seleccione el elemento "Todas las funciones" en el menú y en la sección "Procesamiento" buscamos el elemento "Configuración de conexión de API de Google".



Completamos los campos Clientid, Clientsecret y "Puerto" con los valores obtenidos al crear el proyecto en GCP. Por defecto, el nombre del archivo y la carpeta se sustituye donde se guardarán las claves temporales utilizadas para la conexión. Por motivos de seguridad, los datos sobre las claves (tokens de actualización y acceso) del usuario se almacenan en el directorio de archivos temporales del usuario actual, en la carpeta <nombre de carpeta> y en el archivo <nombre de archivo>. Si se crea el mismo proyecto de Google en diferentes configuraciones, el nombre del archivo se puede hacer igual en todas ellas, para no crear múltiples archivos con la misma información. Al guardar, la configuración de conexión se guarda en el repositorio de configuración general.

Guardando informe


Ahora puede guardar informes en el formato de Hojas de cálculo de Google y Documentos de Google en Google Drive .

La primera vez que intente guardar un informe, deberá realizar un procedimiento de autorización de usuario único en cada configuración para que el servicio reciba derechos de acceso para guardar los datos.



En la ventana que aparece, ingrese su dirección de correo electrónico y contraseña de Gmail. Siguiente
en la ventana que se abre, haga clic en "Permitir". Entonces le das a la aplicación para guardar información en tu Google Drive.



Deberá ingresar un nombre de archivo, seleccionar su tipo y directorio para guardar en una unidad compartida o personal. Haz clic en "Guardar". Después de guardar, el informe se abrirá en el navegador. Disfruta tu visualización.

El aspecto técnico del problema.


Ahora veamos cómo funciona dentro de la plataforma 1C.
Para conectarse, se genera la siguiente línea de consulta al servicio de Google:

="https://accounts.google.com/o/oauth2/auth"+"?" + "response_type=code" + "&client_id=" + _ + "&redirect_uri=http://localhost" + "&access_type=offline" + "&scope=https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive.apps.readonly https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.metadata; 

client_id es el identificador del cliente en el que previamente guardamos el valor de la variable.
alcance: las direcciones de las bibliotecas API que utilizaremos. Si necesita conectar varias bibliotecas, enumerelas con un espacio.

Esta cadena de consulta es necesaria para una conexión única de nuestra aplicación cliente al servicio de Google. Puede ingresar la cadena de consulta en el navegador, en respuesta, el servicio devolverá una URL con algo como esto:

 http://localhost/?code=<>&scope=https://www.googleapis.com/auth/admin.directory.user%20https://www.googleapis.com/auth/admin.directory.orgunit 

Puede agregar un campo para datos HTML en el diseñador de formularios 1C y ejecutar una solicitud a través de él. Necesitamos obtener el valor <CODE>: el código de acceso para el servicio de esta URL.

Queda por obtener dos tokens haciendo una solicitud HTTP. Como resultado, la solicitud devolverá una cadena con valores de acceso y actualización en formato JSON. El token de actualización no pierde relevancia con el tiempo, y el token de acceso dura 60 minutos y luego debe actualizarse. Para recibir estos tokens, necesitamos el <CODE> recién recibido, así como el identificador y el secreto del cliente, que guardamos anteriormente.

El código podría ser algo como esto:

  = "accounts.google.com";  = "/o/oauth2/token";  = ("client_id=%1&client_secret=%2&grant_type=authorization_code&code=%3&redirect_uri=http://localhost", _, _, );  =  HTTP(,443,,,,, OpenSSL);  =  ; .("Content-Type","application/x-www-form-urlencoded”) HTTP =  HTTP(,); HTTP.();  = .HTTP("POST", HTTP);   . = 200  .(("   : %1", .())); ; ;  = .();  =  JSON(); .();  = XDTO.JSON(); .();  = .access_token;  = .refresh_token;  = .expires_in; 

La variable expires_in contiene la vida útil del token de acceso.
La siguiente es una solicitud para actualizar el token:

  = "accounts.google.com";  = "/o/oauth2/token";  = Google.refresh_token; _ = Google.client_id; _ = Google.client_secret;  = "grant_type=refresh_token" + "&client_id=" + _ + "&client_secret=" + _ + "&refresh_token=" + ; 

Guardar un documento de hoja de cálculo en Google Drive


Ahora veamos cómo guardar un documento de hoja de cálculo en Google Drive y luego convertirlo a Hojas de cálculo de Google.

 //  HTTP   = "file_for_drive"; // HTTP      = Google()[]; .("Content-Type", "multipart/related; boundary=" + ); //----- //  //----- //  =  ; .("Content-Type: application/json; charset=UTF-8"); //  // json    ,     = GSs(, , id_);  = GoogleAPI_._(, ); //----- //   //----- //----- //  //----- // .(); .("Content-Type: " + ); .("uploadType: media"); //   = (); .(, ()[]);  = GoogleAPI_._(,  ()); //----- //   //----- //----- //    .  =  ; .(); .();  = GoogleAPI_.HTTP(, ); //----- HTTP =  HTTP("/upload/drive/v2/files" + "?uploadType=multipart&convert=true",); HTTP.();  =.HTTP("POST", HTTP);   . = 200   = " HTTP  " + .() + ",   " + .; GoogleAPI_.GS(, ".  ");  ""; ; HTTP = ; HTTP = ;  ();  (" ",.,,,()); ; HTTP = .(); JSON = GoogleAPI_GSheets.JSON(HTTP); //     google drive  GoogleAPI_GSheets.JSON(JSON, "alternateLink"); 

Este código utiliza el método de carga multiparte para cargar un archivo.
Formamos una solicitud POST a partir de dos bloques de datos. En el primer bloque, escribimos el título y mimeType del archivo. El segundo bloque transfiere el contenido del archivo. Los bloques están definidos por delimitadores, que se indican al final y al principio del bloque.

Obtenga más información sobre esto en nuestro artículo sobre cómo insertar archivos de la Base de conocimiento de Google Drive.

Así es como funciona. Esperamos que ahora no pierda el tiempo convirtiendo los datos descargados de 1C.

El autor de nuestra extensión es el desarrollador líder de PIK Digital Brazhnikova Maria mbrazh

Source: https://habr.com/ru/post/437824/


All Articles