Обработка работает через Google Apps API, используя напрямую http протокол. Загруженный файл автоматически конвертируется в таблицу (SpreadSheet).
В архиве две обработки — для 1С 7.7 и 8.2. Для работы нужны стандартные компоненты Windows — «WinHttp.WinHttpRequest.5.1», «ADODB.Stream», «Msxml2.DOMDocument» и «MSScriptControl.ScriptControl» (для 1С 7.7).
Работать с обработкой очень просто. Нужно заполнить реквизиты (см. рисунок):
1. Указать имя файла
2. Указать имя аккаунта на @gmail (полностью)
3а. Если в профиле Google включена двухэтапная аутентификация, то нужно сгенерировать имя и пароль приложения здесь и указать их.
3б. Если аутентификация обычная, то просто ввести пароль к аккаунту.
4. Указать имя документа на Google Drive. Если документ с таким именем существует, то его содержимое будет обновлено, иначе будет создан новый.
Все замечания, предложения и найденные ошибки прошу озвучивать в комментариях.
P.S. Для файлов Excel 97 Google Drive не поддерживает конвертацию — при загрузке обработка выдаст ошибку.
UPD 2024-08-03. Переделал обработку под новое API Google Drive.
Основные изменения:
1. Авторизация OAuth2. Внимание! Для возможности использования обработки в автоматическом режиме нужно один раз авторизироваться интерактивно (кнопка «Авторизироваться» на форме обработки). Обработка запоминает токен авторизации (refresh_token) для последующего использования.
2. Изменены процедуры поиска и загрузки документов на Google Drive (JSON).
UPD 2024-08-05. Исправлена ошибка — если имя таблицы содержало одинарные или двойные кавычки, то выдавалась «Parsing Error».
Пользуюсь Dropbox уже давно при синхронизации баз. С работы и дома.Если (мысль) поставить по более этих сервисов как где то видел обработку по выборе удаленок. Т.е яндексДиск,Dropbox и т.д но а так +
(1) zato1c,
Я эти обработки писал с другой целью. Клиенту необходима была онлайн-версия отчета из 1С (периодически обновляемая), которую он смог бы расшарить сотрудникам, не работающим в 1С непосредственно. После перебора возможных вариантов остановились на Google Docs.
Не совсем понимаю, зачем использовать 1С для синхронизации файлов в облачных хранилищах. Можно подробнее развить мысль насчет 1С<->Dropbox, например?
В крцее могу сказать как я делаю. выгружаю конфу в Dropbox после этого прихожу в другое место уже с другого компа открываю свою базу уже с обновленного файла Dropbox.
для этой цели есть VPN.
Добрый день! Пришлите мне пожалуйста обработку на почту vodoroslia@gmail.com , у меня не хватает $ =)
После двух недель нормальной работы, обработка перестала загружать файл на диск. Останавливалась с ошибкой
Ошибка запроса авторизации: Not Found
Ошибка авторизации: пустой wise токен авторизации
Через некоторое время зарабатала, но опять ненадолго. Пароли, Настройки доступа не менялись. Проверял на разных эккаунтах. С чем это может быть связано? Или что можете посоветовать, чтобы исправить ситуацию.
В очередной раз поменялось Google API. У меня тоже перестало выгружаться где-то неделю назад.
Разберусь — выложу обновление.
(7) подскажите как часто происходят такие изменения?
(8) hombre, сложно сказать. Google постоянно меняют API, просто изменения могут не затрагивать используемый в обработке функционал. Судя по моим доработкам, функционал выгрузки меняется в среднем раз в год.
Анатолий, спасибо за обновление. При попытке выгрузить файл выходит ошибка
{
«error»: {
«errors»: [
{
«domain»: «global»,
«reason»: «parseError»,
«message»: «Parse Error»
}
],
«code»: 400,
«message»
Подскажите, в чем может быть проблема?
(10) hombre, для того, чтобы я мог воспроизвести ошибку, приведите полный текст ошибки (судя по приведенному Вами отрывку — это не весь текст).
Имя модуля и номер строки не выводится?
Как выглядит ошибка: диалог посередине экрана или в окне сообщений внизу экрана?
Какой файл загружаете: Excel или OpenOffice?
В какой версии сохранен файл?
Это обновление существующего файла или загрузка нового?
На каком этапе возникает ошибка: авторизация или непосредственно загрузка?
(10) hombre, как называется имя таблицы в Google Drive? Попробуйте выгрузить с простым именем, например «test»
(11) Ошибка возникает только при обновлении существующего файла.
В окне сообщения ошибка:
Ошибка запроса обновления документа: (400) Bad Request
Отдельным текстовым окном:
{
«error»: {
«errors»: [
{
«domain»: «global»,
«reason»: «parseError»,
«message»: «Parse Error»
}
],
«code»: 400,
«message»: «Parse Error»
}
}
Имя таблицы на киррилице и на латиннице -результат одинаков.
(13) hombre, имя таблицы содержит кавычки? Исправил. Причина в том, что одинарные кавычки — спецсимвол в URL, а двойные кавычки — спецсимвол в JSON.
(14) Без кавычек имя таблицы test
(15) hombre, странно. Давайте проверим такую версию: попробуйте выгрузить другой файл (попробуйте с пустого).
Если просто положить файл на один определенный диск в Google Drive, то можно установить GoogleDrive для ПК на компьютер, сохранять файл в папку, на которую настроена синхронизация и не нужно все остальное. Для разных дисков нужно хранить разные refresh_token в разных файлах и где-то сохранять таблицу соответствия, чтобы не проводить при каждом соединении авторизацию. Да и с Google API часто проблемы бывают. В свое время убил кучу времени на Calendar.
В функции ОбновитьДокумент вот такие переделки и все работает:
Показать
Нет не работает (((
(19) kras_71, что пишет? Какая ошибка?
За обработку спасибо. Все работает. Хотелось еще бы выгрузку в определенную папку.
Возникла проблема. Если загружать новый файл — то он загружается, а если попытаться обновить тот, что уже есть (даже тот, который только что загрузил), то выдаёт такую ошибку:
{
«error»: {
«errors»: [
{
«domain»: «global»,
«reason»: «parseError»,
«message»: «Parse Error»
}
],
«code»: 400,
«message»: «Parse Error»
}
}
Указанную проблему удалось решить так:
Вот этот блок
Соединение.SetRequestHeader(«Content-Length», СтрДлина(Тело));
Соединение.SetRequestHeader(«Content-Type», «application/json; charset=UTF-8»);
Вставляем как для новых файлов, так и для обновляемых и всё работает.
В результате процедуры выглядит так:
Показать
Кроме того было обнаружено, что MSScriptControl.ScriptControl не работает на 64-битном сервере 1С.
Поэтому кодирование строки в URI было выполнено раскомментированием соотв. процедуры в модуле, которая делает это без внешних компонент.
Функция для преобразования имени в URI выглядит так:
Показать
(23) Deryni, спасибо.
(23) Deryni,
После изменений в процедуре
URLEncode(Знач Строка=»»)
на 32 разрядном сервере 1С, файл не обновляется, а создается новый.
Если вернуть текст процедуры изначальный — все работает на УРА.
Спасибо огромное за технологию.
Добрый день!
Работаю на 64-разрядном сервере.
Сперва столкнулся с ошибкой «code»: 400 при попытке обновить ранее выгруженный документ, затем воспользовался советом (23) — ошибка исчезла, но каждый раз начала создаваться новая таблица с одним и тем же наименованием. Что все-таки нужно поправить, чтобы обновлялась существующая таблица?
Не работает 🙁
Здравствуйте!
Подскажите, как указать имя файла загружаемого на google диск?
(28) На форме реквизит «Имя таблицы»
Добрый день! для 7.7. обработка в архиве есть? обработка конвертирует из xls в гугл док? умеет работать по расписанию?
(30) Добрый день. Обработка потеряла актуальность, работоспособность не проверял. Скорей всего не работает, так как с момента последней доработки API Google Drive менялся. Обработку можно использовать как основу для собственных наработок. Я пошел другим путем: написал небольшую Java-программу, которая использует официальный пакет Java на сайте разработчиковhttps://developers.google.com/drive/v3/web/quickstart/java , а из 1С запускаю JAR из командной строки с параметрами. Если кому-то интересно, могу выложить исходный код или проект.
(31) Доброго дня. Тема интересна. Если есть возможность — вышлите исходный код (можно и проект) на hvh@7-5-7.ru . Заранее благодарен.
Добрый день. Если еще актуальна данная помощь, то не могли бы Вы скинуть исходный код?)
(31) Доброго дня. интересует исходный код на kirichenkod@gmail.com. Заранее благодарен.
Здравствуйте.
Интересует чтение уже загруженного на google документа в 1с7.7
Подскажите, пожалуйста, на почту vitaliy1972li@yandex.ru.
Стартмани нет еще.
Спасибо.
Здравствуйте.
А делал кто то создание папок с 1с в гугл диск?