Cet article est destiné à ceux qui utilisent G Suite et 1C.
PIK Digital est une entreprise informatique qui fabrique des technologies de construction. L'annĂ©e dernière, nous avons transfĂ©rĂ© le groupe d'entreprises PIK Ă
G Suite . Pour fonctionner pleinement avec Google Sheets et Docs, il était nécessaire d'affiner nos systèmes.
L'une de ces améliorations est une extension permettant de télécharger des rapports et des formulaires de 1C vers Google Drive au format
Google Sheets et
Google Docs . Dans l'article, nous partagerons une solution toute faite et des informations utiles sur sa mise en œuvre. L'extension est gratuite. Prenez et utilisez.
Télécharger l' extension
Afficher le code sur GitHub

Pour que l'extension fonctionne, vous aurez besoin de:
- Enregistrer un compte Google
- Créez un projet sur Google Cloud Platform
- Créer un client OAuth
- Configurer l'accès à l'API Google Drive
- Installez l'extension 1C
- Configurer la connexion Ă l'API Google dans 1C
Ensuite, nous considérons chaque étape séparément et donnons des exemples de code.
Inscription au compte Google
Pour travailler, vous avez besoin d'un
compte Google . Sans cela, l'extension ne pourra pas interagir avec les services G Suite. Vous avez déjà un compte existant - utilisez-le.
Création d'un projet dans GCP
Pour activer l'accès à l'API Google Drive, vous devez créer un projet dans
Google Cloud Platform (GCP). Il existe
deux options pour travailler gratuitement avec GCP:
- Une période d'essai de 12 mois avec un budget de 300 $.
- Toujours gratuit - accès à la plupart des ressources GCP.
Les deux méthodes ont des limites, plus à leur sujet est décrit
ici . Nous recommandons l'option avec une période d'essai de 12 mois. Après la période d'essai, l'argent ne sera pas débité si vous ne commencez pas à utiliser des services payants. Tout ce dont vous avez besoin pour le travail d'intégration est gratuit.
Nous enregistrons le projet sur le lien
console.cloud.google.com , cliquez sur "Sélectionner un projet", puis - "Créer un projet". Après avoir créé le projet, sélectionnez-le en appuyant à nouveau sur le bouton «Select Project».

Création d'un client OAuth
Créez les informations d'identification pour vous connecter à G Suite à l'aide du protocole OAUth 2.0. Dans GCP, accédez à l'élément de menu "API et services" - "Credentials" - "Create Credentials" - "OAUth Key Identifier".
Une invite apparaît pour créer une fenêtre de demande d'accès. Cette fenêtre se forme lorsque l'utilisateur est invité à accéder à ses données.

Laissez le type d'accès «Open Access» et entrez le nom de l'application qui s'affichera lorsque l'employé démarrera le projet et demandera son consentement pour accéder aux données. Cliquez sur "Enregistrer".
Après cela, définissez le "Type d'application". Sélectionnez Autres types et entrez l'ID client OAuth. Veuillez noter que ce n'est pas le même que le nom d'affichage de l'application. En conséquence, une fenêtre s'ouvre avec l'identifiant et le secret du client. Enregistrez-les, c'est important.
Connexion de la bibliothèque d'API Google Drive
Pour accéder à la fonctionnalité API, accédez à l'élément de menu "Bibliothèque API", recherchez la bibliothèque souhaitée et connectez-la.

Étant donné que nous souhaitons travailler avec les formats G Suite, nous devons connecter la bibliothèque d'API Google Drive au projet. De plus, nous aurons besoin de la bibliothèque API Google Sheets, Google Docs API. Trouvez-le et connectez-le de la même manière.
Installer l'extension en mode utilisateur
Vous pouvez maintenant formuler des demandes à l'API. Rappel: notre tâche consiste à télécharger les données du rapport 1C du formulaire standard vers Google Sheets ou Google Docs.
Téléchargez l' extension 1C.
Dans 1C, il est possible d'installer indépendamment des extensions de configuration. Si c'est la première fois que vous rencontrez cela, consultez notre courte
vidéo sur la façon de le faire.
Notre extension fonctionne avec la plateforme Ă partir de la version 8.3.10, sur les configurations BP (Ă partir de 3.0.65 et plus), ERP (Ă partir de 2.4.6 et plus) et UT (Ă partir de 11.4.6 et plus).
Si vous voyez un avertissement de sécurité lors de l'installation de l'extension, cliquez sur Oui. Vous verrez un message indiquant que "L'action en cours a été interrompue pour émettre un avertissement." Cela signifie que vous avez activé le mode sans échec, vous devez donc répéter la procédure pour ajouter une extension et désactiver le mode sans échec. Après l'ajout, redémarrez 1C.
Si l'installation a réussi, vous verrez le bouton «Enregistrer sur Google Drive» dans les rapports et les formulaires d'impression.

Définition des paramètres de connexion à l'API Google dans 1C
Il reste à configurer les paramètres de connexion à l'API Google, et vous pouvez travailler. Encore une fois, sélectionnez l'élément "Toutes les fonctions" dans le menu et dans la section "Traitement", nous recherchons l'élément "Paramètres de connexion à l'API Google".

Nous remplissons les champs Clientid, Clientsecret et «Port» avec les valeurs obtenues lors de la création du projet dans GCP. Par défaut, le nom du fichier et du dossier est remplacé là où les clés temporaires utilisées pour la connexion seront enregistrées. Pour des raisons de sécurité, les données sur les clés (rafraîchissement et jetons d'accès) de l'utilisateur sont stockées dans le répertoire des fichiers temporaires de l'utilisateur actuel, dans le dossier <nom du dossier> et dans le fichier <nom du fichier>. Si le même projet Google est créé dans différentes configurations, le nom de fichier peut être identique dans tous, afin de ne pas créer plusieurs fichiers avec les mêmes informations. Lors de l'enregistrement, les paramètres de connexion sont enregistrés dans le référentiel des paramètres généraux.
Enregistrement du rapport
Vous pouvez désormais enregistrer des rapports au format Google Sheets et Google Docs dans
Google Drive .
Lors de la première tentative d'enregistrement du rapport, vous devrez suivre une procédure d'autorisation utilisateur unique dans chaque configuration afin que le service reçoive des droits d'accès pour enregistrer les données.

Dans la fenêtre qui apparaît, entrez votre adresse e-mail et votre mot de passe Gmail. Suivant
dans la fenĂŞtre qui s'ouvre, cliquez sur "Autoriser". Vous donnez donc l'application pour enregistrer des informations dans votre Google Drive.

Vous devrez saisir un nom de fichier, sélectionner son type et son répertoire à enregistrer sur un disque partagé ou personnel. Cliquez sur "Enregistrer". Après l'enregistrement, le rapport s'ouvrira dans le navigateur. Profitez de votre visionnage.
Le côté technique du problème
Voyons maintenant comment cela fonctionne à l'intérieur de la plateforme 1C.
Pour vous connecter, la ligne de requête suivante au service Google est générée:
="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 est l'identifiant du client dans lequel nous avons précédemment enregistré la valeur de la variable.
scope - les adresses des bibliothèques d'API que nous utiliserons. Si vous devez connecter plusieurs bibliothèques, répertoriez-les avec un espace.
Cette chaîne de requête est nécessaire pour une connexion unique de notre application cliente au service Google. Vous pouvez entrer la chaîne de requête dans le navigateur, en réponse, le service renverra une URL avec quelque chose comme ceci:
http:
Vous pouvez ajouter un champ pour les données HTML dans le concepteur de formulaires 1C et exécuter une demande via celui-ci. Nous devons obtenir la valeur <CODE> - le code d'accès pour le service à partir de cette URL.
Reste à obtenir deux jetons en faisant une requête HTTP. Par conséquent, la demande renverra une chaîne avec des valeurs d'accès et d'actualisation au format JSON. Le jeton d'actualisation ne perd pas sa pertinence au fil du temps, et le jeton d'accès vit pendant 60 minutes, puis doit être mis à jour. Pour recevoir ces jetons, nous avons besoin du <CODE> qui vient d'être reçu, ainsi que de l'identifiant et du secret du client, que nous avons enregistré plus tôt.
Le code pourrait ressembler Ă ceci:
= "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 contient la durée de vie du jeton d'accès.
Voici une demande de mise Ă jour du jeton:
= "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=" + ;
Enregistrement d'un document de feuille de calcul dans Google Drive
Voyons maintenant comment enregistrer un document de feuille de calcul sur Google Drive, puis le convertir en Google Sheets.
Ce code utilise la méthode de téléchargement en plusieurs parties pour télécharger un fichier.
Nous formons une requête POST à ​​partir de deux blocs de données. Dans le premier bloc, nous écrivons le titre et le mimeType du fichier. Le deuxième bloc transfère le contenu du fichier. Les blocs sont définis par des délimiteurs qui sont indiqués à la fin et au début du bloc.
En savoir plus Ă ce sujet dans notre
article sur l'insertion de fichiers de la base de connaissances Google Drive.
Voilà comment ça marche. Nous espérons que vous ne perdrez plus de temps à convertir les données téléchargées depuis 1C.
L'auteur de notre extension est le principal développeur de PIK Digital Brazhnikova Maria
mbrazh