Universelle 1C-Erweiterung für Google Sheets and Docs - nehmen und verwenden

Dieser Artikel richtet sich an Benutzer von G Suite und 1C.

PIK Digital ist ein IT-Unternehmen, das Gebäudetechnik herstellt. Im vergangenen Jahr haben wir die PIK-Unternehmensgruppe auf G Suite übertragen . Um vollständig mit Google Sheets und Docs arbeiten zu können, mussten unsere Systeme verfeinert werden.

Eine dieser Verbesserungen ist eine Erweiterung zum Hochladen von Berichten und Formularen von 1C auf Google Drive im Format von Google Sheets und Google Text & Tabellen . In diesem Artikel werden wir eine vorgefertigte Lösung und nützliche Informationen zu ihrer Implementierung veröffentlichen. Die Erweiterung ist kostenlos. Nehmen und verwenden.

Download- Erweiterung
Code auf GitHub anzeigen



Damit die Erweiterung funktioniert, benötigen Sie:

  1. Registrieren Sie ein Google-Konto
  2. Erstellen Sie ein Projekt auf der Google Cloud Platform
  3. Erstellen Sie einen OAuth-Client
  4. Konfigurieren Sie den Zugriff auf die Google Drive-API
  5. Installieren Sie die Erweiterung 1C
  6. Konfigurieren Sie die Verbindung zur Google API in 1C

Als nächstes betrachten wir jede Stufe einzeln und geben Codebeispiele.

Registrierung eines Google-Kontos


Zum Arbeiten benötigen Sie ein Google-Konto . Ohne diese Funktion kann die Erweiterung nicht mit G Suite-Diensten interagieren. Haben Sie bereits ein vorhandenes Konto - verwenden Sie es.

Erstellen eines Projekts in GCP


Um den Zugriff auf die Google Drive-API zu aktivieren, müssen Sie ein Projekt in der Google Cloud Platform (GCP) erstellen. Es gibt zwei Möglichkeiten, um kostenlos mit GCP zu arbeiten:

  • Eine 12-monatige Testphase mit einem Budget von 300 US-Dollar.
  • Immer kostenlos - Zugriff auf die meisten GCP-Ressourcen.

Beide Methoden haben Einschränkungen, mehr dazu wird hier beschrieben. Wir empfehlen die Option mit einer 12-monatigen Testphase. Nach der Testphase wird das Geld nicht belastet, wenn Sie keine kostenpflichtigen Dienste nutzen. Alles, was Sie für die Integrationsarbeit benötigen, ist kostenlos.

Wir registrieren das Projekt unter dem Link console.cloud.google.com , klicken auf "Projekt auswählen " und dann auf "Projekt erstellen". Wählen Sie das Projekt nach dem Erstellen aus, indem Sie erneut auf die Schaltfläche „Projekt auswählen“ klicken.



Erstellen eines OAuth-Clients


Erstellen Sie die Anmeldeinformationen für die Verbindung zur G Suite mithilfe des OAUth 2.0-Protokolls. Gehen Sie in GCP zum Menüpunkt "API und Dienste" - "Anmeldeinformationen" - "Anmeldeinformationen erstellen" - "OAUth Key Identifier".

Eine Eingabeaufforderung wird angezeigt, um ein Zugriffsanforderungsfenster zu erstellen. Dieses Fenster wird gebildet, wenn der Benutzer um Erlaubnis gebeten wird, auf seine Daten zuzugreifen.



Belassen Sie die Zugriffsart auf „Open Access“ und geben Sie den Namen der Anwendung ein, die angezeigt wird, wenn der Mitarbeiter das Projekt startet und die Zustimmung zum Zugriff auf die Daten benötigt. Klicken Sie auf "Speichern".

Stellen Sie danach den "Anwendungstyp" ein. Wählen Sie Andere Typen und geben Sie die OAuth-Client-ID ein. Bitte beachten Sie, dass dies nicht mit dem Anzeigenamen der Anwendung übereinstimmt. Infolgedessen wird ein Fenster mit der Kennung und dem Geheimnis des Clients geöffnet. Speichern Sie sie, das ist wichtig.

Verbinden der Google Drive API-Bibliothek


Um Zugriff auf die API-Funktionalität zu erhalten, gehen Sie zum Menüpunkt "API-Bibliothek", suchen Sie die gewünschte Bibliothek und verbinden Sie sie.



Da wir mit den G Suite-Formaten arbeiten möchten, müssen wir die Google Drive-API-Bibliothek mit dem Projekt verbinden. Darüber hinaus benötigen wir die Google Sheets-API-Bibliothek, die Google Docs-API. Finden und verbinden Sie es auf die gleiche Weise.

Installieren Sie die Erweiterung im Benutzermodus


Jetzt können Sie Anforderungen an die API formulieren. Rückruf: Unsere Aufgabe ist es, die Daten aus dem 1C-Bericht des Standardformulars in Google Sheets oder Google Docs hochzuladen.

Laden Sie die Erweiterung 1C herunter .

In 1C ist es möglich, Konfigurationserweiterungen unabhängig zu installieren. Wenn Sie zum ersten Mal darauf stoßen, sehen Sie sich unser kurzes Video dazu an.

Unsere Erweiterung funktioniert mit der Plattform ab Version 8.3.10 bei BP-Konfigurationen (ab 3.0.65 und höher), ERP (ab 2.4.6 und höher) und UT (ab 11.4.6 und höher).

Wenn bei der Installation der Erweiterung eine Sicherheitswarnung angezeigt wird, klicken Sie auf Ja. Es wird eine Meldung angezeigt, die besagt, dass die aktuelle Aktion unterbrochen wurde, um eine Warnung auszugeben. Dies bedeutet, dass Sie den abgesicherten Modus aktiviert haben. Sie müssen daher den Vorgang zum Hinzufügen einer Erweiterung wiederholen und den abgesicherten Modus deaktivieren. Starten Sie 1C nach dem Hinzufügen neu.

Wenn die Installation erfolgreich war, wird in Berichten und Druckformularen die Schaltfläche "In Google Drive speichern" angezeigt.



Festlegen von Parametern für die Verbindung zur Google-API in 1C


Die Einstellungen für die Verbindung zur Google-API müssen noch konfiguriert werden, und Sie können arbeiten. Wählen Sie erneut den Eintrag "Alle Funktionen" im Menü und suchen Sie im Abschnitt "Verarbeitung" nach dem Eintrag "Google API-Verbindungseinstellungen".



Wir füllen die Felder Clientid, Clientsecret und "Port" mit den Werten aus, die beim Erstellen des Projekts in GCP erhalten wurden. Standardmäßig wird der Name der Datei und des Ordners ersetzt, in denen die für die Verbindung verwendeten temporären Schlüssel gespeichert werden. Aus Sicherheitsgründen werden Daten zu den Schlüsseln (Aktualisierungs- und Zugriffstoken) des Benutzers im Verzeichnis für temporäre Dateien des aktuellen Benutzers, im Ordner <Ordnername> und in der Datei <Dateiname> gespeichert. Wenn dasselbe Google-Projekt in verschiedenen Konfigurationen erstellt wird, kann der Dateiname in allen Konfigurationen gleich sein, um nicht mehrere Dateien mit denselben Informationen zu erstellen. Beim Speichern werden die Verbindungseinstellungen im Repository für allgemeine Einstellungen gespeichert.

Bericht speichern


Jetzt können Sie Berichte im Format von Google Sheets und Google Text & Tabellen in Google Drive speichern.

Beim ersten Versuch, den Bericht zu speichern, müssen Sie in jeder Konfiguration ein einmaliges Benutzerautorisierungsverfahren durchlaufen, damit der Dienst Zugriffsrechte zum Speichern von Daten erhält.



Geben Sie im angezeigten Fenster Ihre Google Mail-E-Mail-Adresse und Ihr Kennwort ein. Weiter
Klicken Sie im folgenden Fenster auf "Zulassen". Sie geben also die Anwendung zum Speichern von Informationen in Ihrem Google Drive.



Sie müssen einen Dateinamen eingeben, seinen Typ und sein Verzeichnis auswählen, um ihn auf einem freigegebenen oder persönlichen Laufwerk zu speichern. Klicken Sie auf "Speichern". Nach dem Speichern wird der Bericht im Browser geöffnet. Viel Spaß beim Betrachten.

Die technische Seite des Problems


Nun wollen wir sehen, wie es innerhalb der 1C-Plattform funktioniert.
Um eine Verbindung herzustellen, wird die folgende Abfragezeile zum Google-Dienst generiert:

="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 ist die Kennung des Clients, in dem wir zuvor den Wert der Variablen gespeichert haben.
scope - die Adressen der API-Bibliotheken, die wir verwenden werden. Wenn Sie mehrere Bibliotheken verbinden müssen, listen Sie sie mit einem Leerzeichen auf.

Diese Abfragezeichenfolge wird für eine einmalige Verbindung unserer Clientanwendung mit dem Google-Dienst benötigt. Sie können die Abfragezeichenfolge im Browser eingeben. Als Antwort gibt der Dienst eine URL mit folgender Adresse zurück:

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

Sie können im 1C-Formular-Designer ein Feld für HTML-Daten hinzufügen und über dieses eine Anforderung ausführen. Wir müssen den Wert <CODE> - den Zugangscode für den Dienst von dieser URL erhalten.

Es bleiben zwei Token, um eine HTTP-Anfrage zu stellen. Infolgedessen gibt die Anforderung eine Zeichenfolge mit Zugriffs- und Aktualisierungswerten im JSON-Format zurück. Das Aktualisierungstoken verliert mit der Zeit nicht an Relevanz, und das Zugriffstoken hält 60 Minuten lang und muss dann aktualisiert werden. Um diese Token zu erhalten, benötigen wir den gerade erhaltenen <CODE> sowie die Kennung und das Geheimnis des Clients, die wir zuvor gespeichert haben.

Der Code könnte ungefähr so ​​aussehen:

  = "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; 

Die Variable expires_in enthält die Lebensdauer des Zugriffstokens.
Das Folgende ist eine Anforderung zum Aktualisieren des Tokens:

  = "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=" + ; 

Speichern eines Tabellenkalkulationsdokuments in Google Drive


Lassen Sie uns nun sehen, wie Sie ein Tabellenkalkulationsdokument in Google Drive speichern und dann in Google Sheets konvertieren.

 //  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"); 

Dieser Code verwendet die mehrteilige Upload- Methode, um eine Datei hochzuladen.
Wir bilden eine POST-Anfrage aus zwei Datenblöcken. Im ersten Block schreiben wir den Titel und den MimeType der Datei. Der zweite Block überträgt den Inhalt der Datei. Blöcke werden durch Trennzeichen definiert, die am Ende und am Anfang des Blocks angegeben sind.

Weitere Informationen hierzu finden Sie in unserem Artikel zum Einfügen von Google Drive Knowledge Base-Dateien.

So funktioniert es. Wir hoffen, dass Sie jetzt keine Zeit damit verschwenden, die von 1C heruntergeladenen Daten zu konvertieren.

Der Autor unserer Erweiterung ist der führende Entwickler von PIK Digital Brazhnikova Maria mbrazh

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


All Articles