Este artigo é para aqueles que usam o G Suite e o 1C.
A PIK Digital é uma empresa de TI que fabrica tecnologia de construção. No ano passado, transferimos o PIK Group of Companies para o
G Suite . Para trabalhar totalmente com o Planilhas Google e o Google Docs, era necessário refinar nossos sistemas.
Uma dessas melhorias é uma extensão para o upload de relatórios e formulários do 1C para o Google Drive no formato do
Planilhas Google e do
Google Docs . No artigo, compartilharemos uma solução pronta e informações úteis sobre sua implementação. A extensão é gratuita. Pegue e use.
Baixar extensão
Ver código no GitHub

Para que a extensão funcione, você precisará de:
- Registrar uma Conta do Google
- Crie um projeto no Google Cloud Platform
- Criar cliente OAuth
- Configure o acesso à API do Google Drive
- Instalar extensão 1C
- Configurar conexão com a API do Google em 1C
Em seguida, consideramos cada estágio separadamente e fornecemos exemplos de código.
Registro da Conta do Google
Para trabalhar, você precisa de uma
conta do Google . Sem ele, a extensão não poderá interagir com os serviços do G Suite. Já tem uma conta existente - use-a.
Criando um projeto no GCP
Para ativar o acesso à API do Google Drive, você deve criar um projeto no
Google Cloud Platform (GCP). Existem
duas opções para trabalhar com o GCP gratuitamente:
- Um período de avaliação de 12 meses com um orçamento de US $ 300.
- Sempre livre - acesse a maioria dos recursos do GCP.
Ambos os métodos têm limitações, mais sobre eles é descrito
aqui . Recomendamos a opção com um período de avaliação de 12 meses. Após o período de teste, o dinheiro não será debitado se você não começar a usar serviços pagos. Tudo o que você precisa para o trabalho de integração é gratuito.
Registramos o projeto usando o link
console.cloud.google.com , clique em "Selecionar um projeto" e depois em "Criar um projeto". Após criar o projeto, selecione-o pressionando o botão "Selecionar projeto" novamente.

Criando um cliente OAuth
Crie as credenciais para conectar-se ao G Suite usando o protocolo OAUth 2.0. No GCP, acesse o item de menu "API e serviços" - "Credenciais" - "Criar credenciais" - "OAUth Key Identifier".
Um prompt é exibido para criar uma janela de solicitação de acesso. Essa janela é formada quando o usuário recebe permissão para acessar seus dados.

Deixe o tipo de acesso “Acesso Aberto” e digite o nome do aplicativo que será exibido quando o funcionário iniciar o projeto e requer consentimento para acessar os dados. Clique em "Salvar".
Depois disso, defina o "Tipo de aplicativo". Selecione Outros tipos e insira o ID do cliente OAuth. Observe que este não é o mesmo que o nome de exibição do aplicativo. Como resultado, uma janela é aberta com o identificador e o segredo do cliente. Salve-os, isso é importante.
Conectando a biblioteca da API do Google Drive
Para obter acesso à funcionalidade da API, vá para o item de menu "API Library", localize a biblioteca desejada e conecte-a.

Como queremos trabalhar com os formatos do G Suite, precisamos conectar a biblioteca da API do Google Drive ao projeto. Além disso, precisaremos da biblioteca da API do Planilhas Google, a API do Google Docs. Encontre e conecte-o da mesma maneira.
Instalar extensão no modo de usuário
Agora você pode formular solicitações para a API. Lembre-se: nossa tarefa é fazer o upload dos dados do relatório 1C do formulário padrão para o Planilhas Google ou o Google Docs.
Faça o download da extensão 1C.
Em 1C, é possível instalar extensões de configuração independentemente. Se esta é a primeira vez que você encontra isso, confira nosso pequeno
vídeo sobre como fazer isso.
Nossa extensão funciona com a plataforma a partir da versão 8.3.10, nas configurações BP (a partir da 3.0.65 e superior), ERP (a partir da 2.4.6 e superior) e UT (a partir da 11.4.6 e superior).
Se você receber um aviso de segurança ao instalar a extensão, clique em Sim. Você verá uma mensagem informando que "A ação atual foi interrompida para emitir um aviso". Isso significa que você ativou o modo de segurança, portanto, é necessário repetir o procedimento para adicionar uma extensão e desativar o modo de segurança. Após adicionar, reinicie o 1C.
Se a instalação foi bem-sucedida, você verá o botão "Salvar no Google Drive" nos relatórios e nos formulários de impressão.

Definindo parâmetros para conectar-se à API do Google em 1C
Resta definir as configurações de conexão com a API do Google e você pode trabalhar. Mais uma vez, selecione o item "Todas as funções" no menu e, na seção "Processamento", procuramos o item "Configurações de conexão da API do Google".

Nós preenchemos os campos Clientid, Clientsecret e "Port" com os valores obtidos ao criar o projeto no GCP. Por padrão, o nome do arquivo e da pasta é substituído, onde as chaves temporárias usadas para conexão serão salvas. Por motivos de segurança, os dados sobre as chaves (tokens de atualização e acesso) do usuário são armazenados no diretório de arquivos temporários do usuário atual, na pasta <nome da pasta> e no arquivo <nome do arquivo>. Se o mesmo projeto do Google for criado em configurações diferentes, o nome do arquivo poderá ser o mesmo em todas elas, para não criar vários arquivos com as mesmas informações. Ao salvar, as configurações de conexão são salvas no repositório de configurações gerais.
Salvando relatório
Agora você pode salvar relatórios no formato do Planilhas Google e do Google Docs no
Google Drive .
Na primeira tentativa de salvar o relatório, você precisará passar por um procedimento de autorização de usuário único em cada configuração, para que o serviço receba direitos de acesso para salvar dados.

Na janela exibida, digite seu endereço de e-mail e senha do Gmail. Seguinte
na janela que se abre, clique em "Permitir". Então, você fornece o aplicativo para salvar informações no seu Google Drive.

Você precisará inserir um nome de arquivo, selecionar seu tipo e diretório para salvar em uma unidade compartilhada ou pessoal. Clique em "Salvar". Após salvar, o relatório será aberto no navegador. Aproveite a sua visualização.
O lado técnico da questão
Agora vamos ver como funciona dentro da plataforma 1C.
Para conectar, a seguinte linha de consulta ao serviço do Google é gerada:
="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 é o identificador do cliente no qual salvamos anteriormente o valor da variável.
escopo - os endereços das bibliotecas de API que usaremos. Se você precisar conectar várias bibliotecas, liste-as com um espaço.
Essa sequência de consultas é necessária para uma conexão única do nosso aplicativo cliente com o serviço do Google. Você pode inserir a string de consulta no navegador. Em resposta, o serviço retornará uma URL com algo como isto:
http:
Você pode adicionar um campo para dados HTML no designer de formulário 1C e executar uma solicitação por meio dele. Precisamos obter o valor <CODE> - o código de acesso para o serviço a partir deste URL.
Resta obter dois tokens fazendo uma solicitação HTTP. Como resultado, a solicitação retornará uma sequência com valores de acesso e atualização no formato JSON. O token de atualização não perde relevância ao longo do tempo, e o token de acesso permanece por 60 minutos e, em seguida, precisa ser atualizado. Para receber esses tokens, precisamos do <CODE> recém-recebido, bem como do identificador e segredo do cliente, que salvamos anteriormente.
O código pode ser algo como isto:
= "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;
A variável expires_in contém a vida útil do token de acesso.
A seguir, uma solicitação para atualizar o 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=" + ;
Salvando um documento de planilha no Google Drive
Agora vamos ver como salvar um documento de planilha no Google Drive e convertê-lo para o Planilhas Google.
Esse código usa o método de upload com
várias partes para fazer upload de um arquivo.
Formamos uma solicitação POST a partir de dois blocos de dados. No primeiro bloco, escrevemos o título e o mimeType do arquivo. O segundo bloco transfere o conteúdo do arquivo. Os blocos são definidos por delimitadores, que são indicados no final e no início do bloco.
Saiba mais sobre isso em nosso
artigo sobre como inserir arquivos da Base de Conhecimento do Google Drive.
É assim que funciona. Esperamos que agora você não perca tempo convertendo os dados baixados do 1C.
O autor da nossa extensão é o principal desenvolvedor do PIK Digital Brazhnikova Maria
mbrazh