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