Чтение и запись из таблиц гугл (google sheets) в табличный документ 1С (8.3, управляемые формы)

Обмен - Обмен с другими системами

93
Внешняя обработка на управляемой форме для 1С версии 8.3 для доступа к сервисам Google Sheets c использованием протокола авторизации OAuth 2.0. Выполняет получение списка листов таблицы гугл, чтение таблицы гугл в табличный документ 1С и запись из табличного документа 1С в таблицу гугл. Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.11.2954).

Обновление

18.05.18. Версия обработки 1.0.2.

Добавлена функция "Удалить строки". Демонстрация возможность удаления строк из таблицы Google указав определенный диапазон индексов строк для удаления.

Функции

  1. Авторизация в google используя протокол OAuth 2.0

    1. Запрос для получения authorization code ("Код доступа").

    2. Запрос для получения access_token и refresh token.

    3. Запрос для получения access_token используя refresh token.

  2. Взаимодействие из 1С с Google Sheets.

    1. Получение списка листов таблицы гугл

    2. Чтение данных из таблицы гугл и заполнение табличного документа 1С.

    3. Запись данных из табличного документа 1С в таблицу гугл.

  3. Дополнительно

    1. Сохранение параметров подключения и списка листов таблицы в данных формы.

    2. Условное представление элементов в зависимости от срока действия токена.

    3. Формирование ссылки для перехода к выбранному листу таблицы при выборе названия листа из списка.

Используемые источники

  1. В качестве основы были использованы обработки для обычных форм разработанные пользователем: echo77.

  2. Некоторая информация была получена из статей на infostart.ru.:

    1. Google Analytics API, Oauth2.0 и 1c8

    2. Получение доступа к скачиванию гугл-таблицы

  3. Информация с сайта гугл:

    1. Google API Console

    2. Using OAuth 2.0 to Access Google APIs

    3. Refreshing an access token (offline access)

Инструкция

Авторизация в google

Получить client ID and client secret

Необходимо используя Google API Console в рамках созданного проекта получить client ID and client secret

Запросить "Код доступа"

Для доступа к данным гугл необходимо при каждом запросе передавать access_token. При этом чтобы получить access_token, необходимо сначало получить authorization code "Код доступа".

В обработке на закладке “Параметры подключения”, при нажатии на “Запросить” - открывается окно браузера и выполняется переход на страницу авторизации гугл. При этом обязательно должны быть указаны “Client id” и “Client secret”, полученные на предыдущем шаге.

Код доступа можно использовать только один раз для получения access_token. Если access_token утерян, необходимо получить новый “Код доступа” который использовать для получения нового access_token (или использовать refresh token для получения нового access token)

Получить access_token

Любой запрос для доступа к данным требует указания access token-а в параметрах запроса. Для первичного получения “access token”, необходимы: “Client id”, “Client secret” и “Код доступа”.

“Aсcess token” имеет непродолжительное время жизни (3600 сек.).После окончания действия, необходимо:

- либо использовать refresh token и обновить access token

- либо опять повторить процесс: получить код доступа, используя новый код доступа - получить новый access token.

При нажатии "Получить" будет выполнен запрос для получения Аccess token и Refresh token, и будет рассчитан “Срок действия токена”

Запрос возвращает .json содержащий требуемую информацию, и токены заполняются в соответствующие поля на форме обработки:

После получения “Access token”, пока он действует можно обращаться к данным в гугл.

 

Обновить access_token используя refresh_token

После того как истек срок действия “access token” или раньше, можно использовать “refresh token”, чтобы получить новый access token, без использования браузера и получения кода доступа.

Существуют определенные ограничения на использование “refresh token” (подробности по ссылке)

Работа с таблицей гугл (Google Sheet)

Подключение к таблице и получение списка листов таблицы

Необходимо указать ссылку на таблицу гугл в строке “Ссылка на таблицу google”.

При указании ссылки, программа получит “ID таблицы”, выполнит подключение к таблице, прочитает список листов таблицы и заполнит список выбора для поля “Лист”.

При выборе листа из списка - формируется новый URL для доступ к таблице. По кнопке “открыть” выполняется переход в браузере к выбранному листу таблицы.

 

Чтение данных из таблицы гугл в табличный документ 1С

По кнопке “Прочитать таблицу” выполняется запрос, результат запроса обрабатывается и заполняется табличный документ

 

Запись данных табличного документа 1С в таблицу гугл

По кнопке “Записать таблицу” выполняется запрос в котором передается информация для записи в таблицу гугл.

18.05.18. Удаление строк из таблицы Google

Для удаления строк необходимо указать диапазон индексов С - ПО. Нумерация с 0-ля. Например для удаления 2-ой строки в таблице необходимо задать диапазон С = 1 ПО = 2.

 
 Под спойлером процедура демонстрирующая удаление строк:

 

93

Скачать файлы

Наименование Файл Версия Размер
Чтение и запись из таблиц гугл (google sheets) в табличный документ 1С (8.3, управляемые формы):
.epf 18,52Kb
18.05.18
28
.epf 1.0.2 18,52Kb 28 Скачать

См. также

Комментарии
Сортировка: Древо
1. Dzenn 244 10.04.18 12:36 Сейчас в теме
Спасибо за такие возможности! Не скачивал (эту версию), но уверен, что хорошая, годная разработка. Пользователям 1С теперь доступны чтение/запись гугл таблиц, и это прекрасно.
2. Ko1t 146 10.04.18 13:19 Сейчас в теме
(1) И Вам спасибо за оценку :)
3. Артано 624 11.04.18 04:56 Сейчас в теме
4. Duketm 28 11.04.18 09:17 Сейчас в теме
Хорошая работа. Спасибо. Актуальная вещь
5. UncleVader 126 11.04.18 09:27 Сейчас в теме
6. Ko1t 146 11.04.18 09:37 Сейчас в теме
Артано Майаров, Евгений Сахненко, Вадим Скакун, спасибо коллеги :)
7. DrAku1a 1287 11.04.18 10:48 Сейчас в теме
Респект! Очень пригодится!
8. Ko1t 146 11.04.18 11:11 Сейчас в теме
9. starik-2005 1400 12.04.18 10:16 Сейчас в теме
10. Ko1t 146 12.04.18 10:17 Сейчас в теме
11. logarifm 1015 13.04.18 01:48 Сейчас в теме
Пробежался глазами - годный инструмент но не проверялеще. +
13. Ko1t 146 13.04.18 09:40 Сейчас в теме
12. KAV2 13.04.18 03:24 Сейчас в теме
14. Ko1t 146 13.04.18 09:41 Сейчас в теме
(12) Smartsheet судя по всему классная штука, но для меня на данный момент не актуальная :)
15. rintik 12 17.05.18 12:05 Сейчас в теме
Спасибо большое. Работает. Только не могу разобраться как удалять строки.
16. Ko1t 146 17.05.18 12:38 Сейчас в теме
(15) Пожалуйста ).
Ссылка на пример запроса по удалению строк или колонок:
https://developers.google.com/sheets/api/samples/rowcolumn#delete_rows_or_columns
17. rintik 12 17.05.18 13:01 Сейчас в теме
(16) Да пытаюсь разобраться, только у гугла для меня один ответ ""message": "Invalid JSON payload received. Unknown name \"requests\": Cannot find field.","
18. Ko1t 146 18.05.18 12:41 Сейчас в теме
(17) Я попробовал реализовать удаление строк, у меня получилось.
На форме обработки я добавил 2 реквизита: "УдалитьИндексС","УдалитьИндексПО".
Например для удаления 2-ой строки в таблице надо указать:
УдалитьИндексС = 1 (индексация начинается с 0-ля);
УдалитьИндексПО = 2;
Под спойлером код процедуры:
Процедура УдалитьСтрокиОбработка()
19. rintik 12 18.05.18 14:24 Сейчас в теме
(18) Круть. Еще раз спасибо большое.
20. kolya_tlt 11 23.05.18 09:46 Сейчас в теме
нравятся мне проекты ради проектов :)
21. Ko1t 146 23.05.18 11:21 Сейчас в теме
(20) как показывает практика, полученный в процессе опыт конвертируется в итоге в материальные и не только блага :)
24. user658699_heinrich2906 30.06.18 14:55 Сейчас в теме
Подскажите:
1. Код обработки открытый?
2. Реализована ли возможность формировать многостраничную гугл таблицу?
3. Можно ли из обработки прописать пользователей (гугл), которым будет доступна созданная гугл таблица?
25. Ko1t 146 30.06.18 23:07 Сейчас в теме
(24)
1. Код обработки открытый?

> Да
2. Реализована ли возможность формировать многостраничную гугл таблицу?

> Нет
3. Можно ли из обработки прописать пользователей (гугл), которым будет доступна созданная гугл таблица?

> Нет
p.s.
Все что может обработка изложено в описании со скриншотами :)
26. leobrn 102 06.07.18 14:21 Сейчас в теме
Если считывать публичную таблицу обязательно ли нужны токены доступа?
28. Ko1t 146 09.07.18 12:05 Сейчас в теме
(26)
Данная обработка при каждого обращении к данным передает в заголовке токен доступа.

Какая авторизация нужна для чтения публичных и приватных данных, а также ответ на ваш вопрос можно получить по ссылке: https://developers.google.com/sheets/api/guides/authorizing
30. Ko1t 146 09.07.18 12:24 Сейчас в теме
(26)
Данная обработка при каждом обращении к данным передает токен доступа.
Я не проверял как будет происходить доступ к публичным данным, но почитать об этом можно по ссылке: https://developers.google.com/sheets/api/guides/authorizing
Оставьте свое сообщение