Выгрузка таблиц (Excel, OpenOffice) в Google Drive

03.08.15

Интеграция - Загрузка и выгрузка в Excel

Обработка позволяет загрузить файлы Excel и OpenOffice на Google Drive (Google Docs). Не требует дополнительных компонент. Может применяться для публикации документов из 1С (например, обновляемые финансовые отчеты для руководителей).

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

Наименование Файл Версия Размер
ВыгрузкаТаблицыExcelВGoogleDrive1.2.epf
.epf 19,95Kb
99
.epf 1.2 19,95Kb 99 Скачать
ВыгрузкаТаблицыExcelВGoogleDrive1.2.ert
.ert 16,00Kb
23
.ert 1.2 16,00Kb 23 Скачать

Обработка работает через 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 2015-08-03. Переделал обработку под новое API Google Drive.

Основные изменения:

1. Авторизация OAuth2. Внимание! Для возможности использования обработки в автоматическом режиме нужно один раз авторизироваться интерактивно (кнопка "Авторизироваться" на форме обработки). Обработка запоминает токен авторизации (refresh_token) для последующего использования.

2. Изменены процедуры поиска и загрузки документов на Google Drive (JSON).

UPD 2015-08-05. Исправлена ошибка - если имя таблицы содержало одинарные или двойные кавычки, то выдавалась "Parsing Error".


См. также

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22448    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9208    9    8    

10

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210175    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150721    367    375    

501

Маркетплейсный загрузчик для 12-ти маркетплейсов в "БП 3", "УТ 11", "КА 2", ERP, УНФ

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", Казань-Экспресс, "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом" в документы "Отчет комиссионера (агента) о продажах" и другие, может работать в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    31893    226    63    

117
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. zato1c 14.11.12 12:17 Сейчас в теме
Пользуюсь Dropbox уже давно при синхронизации баз. С работы и дома.Если (мысль) поставить по более этих сервисов как где то видел обработку по выборе удаленок. Т.е яндексДиск,Dropbox и т.д но а так +
2. zan_od 54 19.11.12 12:19 Сейчас в теме
(1) zato1c,
Я эти обработки писал с другой целью. Клиенту необходима была онлайн-версия отчета из 1С (периодически обновляемая), которую он смог бы расшарить сотрудникам, не работающим в 1С непосредственно. После перебора возможных вариантов остановились на Google Docs.

Не совсем понимаю, зачем использовать 1С для синхронизации файлов в облачных хранилищах. Можно подробнее развить мысль насчет 1С<->Dropbox, например?
адуырщдв; +1 Ответить
3. zato1c 19.11.12 16:24 Сейчас в теме
В крцее могу сказать как я делаю. выгружаю конфу в Dropbox после этого прихожу в другое место уже с другого компа открываю свою базу уже с обновленного файла Dropbox.
4. Wanderer.nk 18 15.03.13 13:14 Сейчас в теме
для этой цели есть VPN.
Abadonna; +1 Ответить
5. 924 11.08.14 19:51 Сейчас в теме
Добрый день! Пришлите мне пожалуйста обработку на почту vodoroslia@gmail.com , у меня не хватает $ =)
6. hombre 13 03.07.15 07:28 Сейчас в теме
После двух недель нормальной работы, обработка перестала загружать файл на диск. Останавливалась с ошибкой
Ошибка запроса авторизации: Not Found
Ошибка авторизации: пустой wise токен авторизации

Через некоторое время зарабатала, но опять ненадолго. Пароли, Настройки доступа не менялись. Проверял на разных эккаунтах. С чем это может быть связано? Или что можете посоветовать, чтобы исправить ситуацию.
7. zan_od 54 03.07.15 12:57 Сейчас в теме
В очередной раз поменялось Google API. У меня тоже перестало выгружаться где-то неделю назад.
Разберусь - выложу обновление.
8. hombre 13 07.07.15 10:46 Сейчас в теме
(7) подскажите как часто происходят такие изменения?
9. zan_od 54 08.07.15 09:53 Сейчас в теме
(8) hombre, сложно сказать. Google постоянно меняют API, просто изменения могут не затрагивать используемый в обработке функционал. Судя по моим доработкам, функционал выгрузки меняется в среднем раз в год.
10. hombre 13 04.08.15 12:23 Сейчас в теме
Анатолий, спасибо за обновление. При попытке выгрузить файл выходит ошибка
{
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message"

Подскажите, в чем может быть проблема?
11. zan_od 54 04.08.15 22:44 Сейчас в теме
(10) hombre, для того, чтобы я мог воспроизвести ошибку, приведите полный текст ошибки (судя по приведенному Вами отрывку - это не весь текст).
Имя модуля и номер строки не выводится?
Как выглядит ошибка: диалог посередине экрана или в окне сообщений внизу экрана?
Какой файл загружаете: Excel или OpenOffice?
В какой версии сохранен файл?
Это обновление существующего файла или загрузка нового?
На каком этапе возникает ошибка: авторизация или непосредственно загрузка?
13. hombre 13 05.08.15 10:52 Сейчас в теме
(11) Ошибка возникает только при обновлении существующего файла.
В окне сообщения ошибка:
Ошибка запроса обновления документа: (400) Bad Request
Отдельным текстовым окном:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message": "Parse Error"
}
}

Имя таблицы на киррилице и на латиннице -результат одинаков.
14. zan_od 54 05.08.15 23:38 Сейчас в теме
(13) hombre, имя таблицы содержит кавычки? Исправил. Причина в том, что одинарные кавычки - спецсимвол в URL, а двойные кавычки - спецсимвол в JSON.
15. hombre 13 06.08.15 14:31 Сейчас в теме
(14) Без кавычек имя таблицы test
16. zan_od 54 06.08.15 18:01 Сейчас в теме
(15) hombre, странно. Давайте проверим такую версию: попробуйте выгрузить другой файл (попробуйте с пустого).
12. zan_od 54 04.08.15 22:53 Сейчас в теме
(10) hombre, как называется имя таблицы в Google Drive? Попробуйте выгрузить с простым именем, например "test"
17. xlmel 20.08.15 16:08 Сейчас в теме
Если просто положить файл на один определенный диск в Google Drive, то можно установить GoogleDrive для ПК на компьютер, сохранять файл в папку, на которую настроена синхронизация и не нужно все остальное. Для разных дисков нужно хранить разные refresh_token в разных файлах и где-то сохранять таблицу соответствия, чтобы не проводить при каждом соединении авторизацию. Да и с Google API часто проблемы бывают. В свое время убил кучу времени на Calendar.
18. kras_71 72 22.10.15 22:38 Сейчас в теме
В функции ОбновитьДокумент вот такие переделки и все работает:

Функция ОбновитьДокумент(Соединение, ТокенАвторизации, ИмяФайла, ИмяТаблицы, ИдДокумента)
	КоличествоБайт = РазмерФайла(ИмяФайла);
	
	Если ПустаяСтрока(ИдДокумента) = 1 Тогда
		
		Тело = 
		"{
		|	""title"": """ + ЭкранироватьСимвол(ИмяТаблицы, """") + """,
		|	""fileExtension"": ""xls""
		|}";
		
		Соединение.Open("POST", "https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable&convert=true", 0); 
		Соединение.SetRequestHeader("Content-Length", СтрДлина(Тело));
		Соединение.SetRequestHeader("Content-Type", "application/json; charset=UTF-8");
	Иначе  
		 Сообщить("ОБНОВЛЯЕМ");
		Соединение.Open("PUT", "https://www.googleapis.com/upload/drive/v2/files/" + ИдДокумента + "?uploadType=resumable", 0);
		Тело = "";
	КонецЕсли;



  
	Соединение.SetRequestHeader("Authorization", "Bearer "+ТокенАвторизации);
	Соединение.SetRequestHeader("Content-Type", "application/json; charset=UTF-8");
	Соединение.SetRequestHeader("X-Upload-Content-Type", "image/jpeg");
	Соединение.SetRequestHeader("X-Upload-Content-Length", КоличествоБайт);
	//Соединение.SetRequestHeader("Authorization", "Bearer "+ТокенАвторизации);
	//Соединение.SetRequestHeader("X-Upload-Content-Type", "application/vnd.ms-excel");
	//Соединение.SetRequestHeader("X-Upload-Content-Length", КоличествоБайт);
	
	Соединение.Send(Тело); 
	
	Если Соединение.Status <>  200 Тогда
		Сообщить("Ошибка запроса обновления документа: (" + Соединение.Status + ") " + Соединение.StatusText, "!!");
		ВывестиСтроку(Соединение.ResponseText());
		Возврат 0;
	КонецЕсли;
	
	Ссылка = Соединение.GetResponseHeader("Location");
	
	Если ЗагрузитьФайлПоСсылке(Соединение, ТокенАвторизации, Ссылка, ИмяФайла, 0) <> 1 Тогда
		Сообщить("Ошибка загрузки файла на сайт", "!!");
		Возврат 0;
	КонецЕсли;
	
	Возврат 1;
КонецФункции
Показать
19. kras_71 72 23.10.15 00:06 Сейчас в теме
20. zan_od 54 23.10.15 16:15 Сейчас в теме
(19) kras_71, что пишет? Какая ошибка?
21. serviceonec 10.12.15 17:08 Сейчас в теме
За обработку спасибо. Все работает. Хотелось еще бы выгрузку в определенную папку.
22. Deryni 23 05.04.16 18:18 Сейчас в теме
Возникла проблема. Если загружать новый файл - то он загружается, а если попытаться обновить тот, что уже есть (даже тот, который только что загрузил), то выдаёт такую ошибку:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message": "Parse Error"
}
}
23. Deryni 23 07.04.16 12:00 Сейчас в теме
Указанную проблему удалось решить так:
Вот этот блок
Соединение.SetRequestHeader("Content-Length", СтрДлина(Тело));
Соединение.SetRequestHeader("Content-Type", "application/json; charset=UTF-8");
Вставляем как для новых файлов, так и для обновляемых и всё работает.
В результате процедуры выглядит так:

Функция ОбновитьДокумент(Соединение, ТокенАвторизации, ИмяФайла, ИмяТаблицы, ИдДокумента) Экспорт
	КоличествоБайт = РазмерФайла(ИмяФайла);
	
	Если ПустаяСтрока(ИдДокумента) Тогда
		
		Тело = 
		"{
		|	""title"": """ + ЭкранироватьСимвол(ИмяТаблицы, """") + """,
		|	""fileExtension"": ""xls""
		|}";
		
		Соединение.Open("POST", "https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable&convert=true", 0); 
	Иначе
		Соединение.Open("PUT", "https://www.googleapis.com/upload/drive/v2/files/" + ИдДокумента + "?uploadType=resumable&convert=true", 0);
		Тело = "";
	КонецЕсли;
	
	Соединение.SetRequestHeader("Content-Length", СтрДлина(Тело));
	Соединение.SetRequestHeader("Content-Type", "application/json; charset=UTF-8");	
	Соединение.SetRequestHeader("Authorization", "Bearer "+ТокенАвторизации);
	Соединение.SetRequestHeader("X-Upload-Content-Type", "application/vnd.ms-excel");
	Соединение.SetRequestHeader("X-Upload-Content-Length", КоличествоБайт);
Показать


Кроме того было обнаружено, что MSScriptControl.ScriptControl не работает на 64-битном сервере 1С.
Поэтому кодирование строки в URI было выполнено раскомментированием соотв. процедуры в модуле, которая делает это без внешних компонент.
Функция для преобразования имени в URI выглядит так:

Функция URLEncode(Знач Строка="")
	Строка = ЭкранироватьСимвол(Строка, "'");
	//ScrCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
	//ScrCtrl.Language = "JScript";
	//Сообщение = ScrCtrl.eval("var uri='"+Строка+"'; encodeURI(uri);");
	Сообщение = URLEncode0(Строка);
	Сообщение = ЭкранироватьСимвол(Сообщение, "'");
	Возврат Сообщение;
КонецФункции
Показать
24. zan_od 54 07.04.16 17:35 Сейчас в теме
25. script 128 17.10.16 13:56 Сейчас в теме
(23) Deryni,

После изменений в процедуре
URLEncode(Знач Строка="")

на 32 разрядном сервере 1С, файл не обновляется, а создается новый.
Если вернуть текст процедуры изначальный - все работает на УРА.

Спасибо огромное за технологию.
26. Aldvinq 11.04.17 12:08 Сейчас в теме
Добрый день!
Работаю на 64-разрядном сервере.
Сперва столкнулся с ошибкой "code": 400 при попытке обновить ранее выгруженный документ, затем воспользовался советом (23) - ошибка исчезла, но каждый раз начала создаваться новая таблица с одним и тем же наименованием. Что все-таки нужно поправить, чтобы обновлялась существующая таблица?
27. cwant 5 04.08.17 11:05 Сейчас в теме
28. Ark_W 14.09.17 12:15 Сейчас в теме
Здравствуйте!
Подскажите, как указать имя файла загружаемого на google диск?
29. zan_od 54 14.09.17 16:16 Сейчас в теме
(28) На форме реквизит "Имя таблицы"
30. user944024 27.03.18 17:22 Сейчас в теме
Добрый день! для 7.7. обработка в архиве есть? обработка конвертирует из xls в гугл док? умеет работать по расписанию?
31. zan_od 54 27.03.18 21:03 Сейчас в теме
(30) Добрый день. Обработка потеряла актуальность, работоспособность не проверял. Скорей всего не работает, так как с момента последней доработки API Google Drive менялся. Обработку можно использовать как основу для собственных наработок. Я пошел другим путем: написал небольшую Java-программу, которая использует официальный пакет Java на сайте разработчиков https://developers.google.com/drive/v3/web/quickstart/java, а из 1С запускаю JAR из командной строки с параметрами. Если кому-то интересно, могу выложить исходный код или проект.
32. hvh757 19.09.18 06:40 Сейчас в теме
(31) Доброго дня. Тема интересна. Если есть возможность - вышлите исходный код (можно и проект) на hvh@7-5-7.ru . Заранее благодарен.
33. user1076980 26.10.18 13:27 Сейчас в теме
Добрый день. Если еще актуальна данная помощь, то не могли бы Вы скинуть исходный код?)
34. DenMaxwell 17 25.03.19 16:44 Сейчас в теме
(31) Доброго дня. интересует исходный код на kirichenkod@gmail.com. Заранее благодарен.
35. user602990_lvv 28.03.19 13:34 Сейчас в теме
Здравствуйте.

Интересует чтение уже загруженного на google документа в 1с7.7

Подскажите, пожалуйста, на почту vitaliy1972li@yandex.ru.

Стартмани нет еще.

Спасибо.
36. bad_boys 16 11.10.19 11:22 Сейчас в теме
Здравствуйте.
А делал кто то создание папок с 1с в гугл диск?
Оставьте свое сообщение