0. Ko1t 200 08.04.18 22:12 Сейчас в теме

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

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

Перейти к публикации

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

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

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

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

Какая авторизация нужна для чтения публичных и приватных данных, а также ответ на ваш вопрос можно получить по ссылке: https://developers.google.com/sheets/api/guides/authorizing
30. Ko1t 200 09.07.18 12:24 Сейчас в теме
(26)
Данная обработка при каждом обращении к данным передает токен доступа.
Я не проверял как будет происходить доступ к публичным данным, но почитать об этом можно по ссылке: https://developers.google.com/sheets/api/guides/authorizing
31. torch 45 02.10.18 17:05 Сейчас в теме
Запустил Вашу обработку. Не могу получить листы моей гугл-таблицы. Ошибка:
{
"error": {
"code": 403,
"message": "Request had insufficient authentication scopes.",
"status": "PERMISSION_DENIED"
}
}
Судя по описанию жалуется на способ идентификации. Непонятно... Может сталкивались с этой ошибкой?
32. Ko1t 200 02.10.18 18:17 Сейчас в теме
(31)
Добрый день, судя по ошибке есть какая-то проблема с токеном доступа который вы используете.
Используемый вами токен доступа не позволяет обращаться к запрашиваемым данным.
Я лично с такой ошибкой не сталкивался.
Моя рекомендация будет, заново проделать настройки как это написано в разделе "Инструкция/Авторизация в google", сверяясь с приведенными скринами экрана.
35. kassbar 29 01.03.19 20:58 Сейчас в теме
(31) "Request had insufficient authentication scopes" не задан ни один параметр scopes очевидно.
33. torch 45 18.11.18 18:05 Сейчас в теме
Господа, еще один трабл. Я при каждом изменении остатков обновляю гугл-таблицу, но с определенного момента у клиентов в гугл-таблице перестали обновляться данные. У одного из них я почистил кеш и куки - все заработало. Но это не выход - клиентов много и всем объяснять нет возможности, писать инструкции без толку. Предполагаю что надо как-то снести все версии изменений гугл-таблицы и оставить только последнюю, актуальную версию, но не могу найти где это делается. Может кто-то сталкивался с такой проблемой?
34. Ko1t 200 24.11.18 11:59 Сейчас в теме
(33)
Добрый день. Я пробовал искать решения по очистке истории...
В основном сталкивался с такими ответами:
https://productforums.google.com/forum/#!topic/docs/h_NWUzDL3Po
Т.е. удалить историю нельзя программными способами.
История очищается только если делать копию файла.
36. kassbar 29 01.03.19 21:01 Сейчас в теме
у кого есть рабочий пример как получать данные не диапазонами, а по отбору на значения в колонках ?
например, получить все строки со значением в колонке А1 = 1.

можно ли получить например только колонки А и С ?
40. Ko1t 200 03.03.19 21:53 Сейчас в теме
(36)
у кого есть рабочий пример как получать данные не диапазонами, а по отбору на значения в колонках ?
например, получить все строки со значением в колонке А1 = 1.

Судя повсему используя текущий API это не получиться сделать. Доступны только следующие возможности фильтации при запросе данных:
https://developers.google.com/sheets/api/reference/rest/v4/DataFilter
Что-то похожее можно сделать для данных отображаемых при просмотре используя Filters
Возможно если программно выполнить SetBasicFilterRequest и затем чтение из таблицы, будут прочитанных отфильтрованные данные... надо пробовать.

можно ли получить например только колонки А и С ?

https://developers.google.com/sheets/api/guides/concepts#a1_notation
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/batchGetByDataFilter
Судя по всему, что используя batchGetByDataFilter, можно задать отдельные dataFilters[], и получить только колонки А и С
41. kassbar 29 04.03.19 00:13 Сейчас в теме
(40)
Возможно если программно выполнить SetBasicFilterRequest и затем чтение из таблицы, будут прочитанных отфильтрованные данные... надо пробовать.

пробовал, через batchupdate ставил фильтры - не работает, возвращает всю таблицу.
Как-то очень печально такое от гугла видеть.

Пришлось через запросы "select..." к таблице получать нужные данные
"https://docs.google.com/spreadsheets/d/id_таблицы/gviz/tq?tqx=out:html&tq=select*"
выгрузить в csv: "tqx=out:csv"

работает только для опубликованных "по ссылке" таблиц
37. kassbar 29 01.03.19 22:58 Сейчас в теме
а для чего такая сложная схема с идентификацией ? можно через постоянный API-ключ получать доступ:
https://sheets.googleapis.com/v4/spreadsheets/idтаблицы/?key=АпиКлюч&includeGridData=true
38. Ko1t 200 03.03.19 16:43 Сейчас в теме
(37)
а для чего такая сложная схема с идентификацией ?

В рамках данной обработки реализован рекомендуемый Гуглом метод аутентификации OAuth 2.0 описанный по ссылке: https://developers.google.com/identity/protocols/OAuth2
можно через постоянный API-ключ получать доступ

Я не уверен что правильно понял, что вы имеете ввиду, но мне было бы интересно узнать подробнее.
Сбросьте пжл. ссылки где можно изучить детали про такой способ подключения? Может быть он более простой, но менее безопасный?
39. kassbar 29 03.03.19 19:22 Сейчас в теме
(38)
Я не уверен что правильно понял, что вы имеете ввиду

я же написал запрос, которым можно получить доступ к опубликованной по ссылке таблице, зная ее id и свой apikey.
вводите в этом запросе id таблицы, api-ключ гугла и получаете ее в json.
Лично мне не требовалось вносить в нее изменения, только читать данные, поэтому я дальше не копал.
42. kassbar 29 04.03.19 17:57 Сейчас в теме
Еще вопрос, получалось ли у кого-то выгрузить не публичный файл типа "таблица Гугл" (доступ открыт пользователю, публичной ссылки нет) через API GoogleDrive ?
У меня запросы типа
Новый HTTPЗапрос("drive/v3/files/" +idТаблицы+"/export/?mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
всегда возвращает ошибку "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup".
Подключил API Google+ и API Google Drive с областью действия "https://www.googleapis.com/auth/drive"
43. simy4 10 16.03.19 11:32 Сейчас в теме
Укажите пожалуйста в вашей публикации, что для функционирования обработки требуется наличие БСП. Для меня данное требование оказалось сюрпризом. Неприятным.
44. Ko1t 200 16.03.19 14:47 Сейчас в теме
(43) Добрый день.
Да, действительно в обработке использовано 3 функции, которые входят в состав БСП:
ОбщегоНазначенияКлиентСервер.СообщитьПользователю()
СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку()
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку()
Как мне кажется, основные сценарии использования данной обработки предполагают наличие данных функций в составе конфигурации, из которой данная обработка запускается.
В противном случае, мне кажеться исправление проблемы занимает относительно мало времени.
При этом внедрение БСП не требуетсся, а требуется просто замена в коде конфигураций всех вызывов обозначенных функций на свои локальные функции. Понять из названия и передаваемых параметров что делают данные функции, как мне кажется не составляет труда.
Но да, я согласен что следует упоминуть в описание обработки данный нюанс, что я и сделаю в ближайшее время.
45. German_Tagil 6 19.03.19 06:13 Сейчас в теме
Добавил в избранное...
меня заинтерисовало - переходим на БП 3.0
на КА 1.1 у меня была допиленная обработка https://infostart.ru/public/66842/
Может кто-то находил подобное на УФ?
46. Ko1t 200 19.03.19 10:58 Сейчас в теме
(45) Добрый день, если я правильно понял что вам надо, то это функционал из БСП
https://its.1c.ru/db/bsp302doc#content:1867:1
5.18 Загрузка данных из файла
47. German_Tagil 6 20.03.19 05:42 Сейчас в теме
Доступ к данному материалу ограничен
48. Mogilnikova 39 20.03.19 16:04 Сейчас в теме
Добавила в избранное. Однажды ненастным днем оно мне пригодится!
49. German_Tagil 6 21.03.19 10:35 Сейчас в теме
(48) угу я точно также поступаю
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист 1С
Самара
зарплата от 50 000 руб. до 100 000 руб.
По совместительству


Ведущий программист 1С
Сочи
зарплата от 82 500 руб. до 99 000 руб.
Полный день