Интеграция 1С с Google Таблицами: Надежная выгрузка через сервисный аккаунт

06.11.25

Интеграция - WEB-интеграция

Представлен комплект для интеграции 1С и Google Таблиц, использующий безопасный сервисный аккаунт Google. Обработка включает два независимых механизма получения токена доступа на выбор — через нативный код 1С (не требует внешних файлов, работает на любой ОС) и через внешнее консольное приложение (.exe). Разработка демонстрирует, как реализовать оба подхода, позволяя программистам наглядно сравнить их и выбрать оптимальный для дальнейшей самостоятельной разработки.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Интеграция 1С с Google Таблицами: Надежная выгрузка через сервисный аккаунт
.rar 15,84Mb
4 6 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Комплект из обработки 1С и консольного приложения, который демонстрирует два способа интеграции 1С с Google Таблицами с помощью сервисного аккаунта Google. Пример реализует выгрузку заказов покупателей из 1С ERP в конкретную Google Таблицу.

Благодаря предложению одного из пользователей Инфостарт, в обработку был добавлен второй, нативный способ получения токена напрямую из 1С. Теперь разработка позволяет программистам не только использовать ее как стартовую точку, но и наглядно сравнить два подхода для выбора наиболее подходящего метода аутентификации в своих задачах.

Особенности и режимы работы

Обработка поддерживает два независимых режима получения токена доступа. Выбор осуществляется прямо в форме.

  1. Нативный режим (встроенный в 1С)

    • Максимальная универсальность: Работает полностью на встроенных механизмах 1С (HTTP-соединения, криптография).
    • Кроссплатформенность: Не зависит от ОС Windows. Будет работать на сервере 1С под управлением Linux.
    • Нет внешних зависимостей: Не требует наличия и прав на запуск внешних файлов (.exe).
  2. Режим с консольным приложением (get_token.exe)

    • Простота и изоляция: Вся логика получения токена вынесена во внешний исполняемый файл.
    • Независимость от версии 1С: Не зависит от изменений во встроенных функциях платформы 1С.
    • Требования: Необходимы права на запуск .exe из 1С и ОС Windows.

Общие особенности для обоих режимов:

  • Аутентификация через сервисный аккаунт: Доступ к Google API выполняется от имени выделенного “робота”, что является ключом к надежной автоматизации.
  • Автоматическое обновление токенов: Система автоматически получает новый токен, когда истекает срок действия старого.
  • Безопасность: Используются токены с коротким сроком действия (1 час).

Ключевые преимущества подхода с сервисным аккаунтом

Вне зависимости от выбранного режима (нативный или консольный), использование сервисного аккаунта имеет принципиальные преимущества перед классическим OAuth 2.0 (через client_id и ручную авторизацию пользователя):

  • Идеально для регламентных заданий. Интеграция не “сломается”, если сотрудник сменит пароль или потеряет доступ. Сервисный аккаунт гарантирует получение токена при каждом запуске, что делает его единственно надежным решением для обменов по расписанию.
  • Полностью автономная аутентификация. Не требуется участие пользователя, открытие браузера или ручное копирование “кодов доступа”.
  • Повышенная безопасность. Доступ предоставляется не ко всему Google Диску, а только к конкретным таблицам, которыми вы поделились с сервисным аккаунтом.

Что включено в поставку

  1. Файл обработки 1С: Выгрузка заказов ЕРП Инфостарт.epf
  2. Консольное приложение: get_token.exe (для второго режима)
  3. Файл настроек: config.json (для второго режима)
  4. Документация: подробная инструкция по настройке.

Требования к установке

  • Windows 7/10/11 (для режима с консольным приложением)
  • 1С:Предприятие 8.3
  • Права на выполнение консольных приложений в 1С (только для режима с .exe)

Подготовка к установке

  1. Создайте каталог для служебных файлов: C:\1C\GoogleSheetsIntegration\
  2. Поместите в этот каталог папку Secrets с файлом ключа сервисного аккаунта Google. Важно: скачанный с Google Cloud JSON-файл необходимо переименовать в service_account.json, так как нативный режим 1С ищет ключ по этому имени.
  3. Для использования режима с консольным приложением дополнительно разместите в каталоге get_token.exe и config.json.
     

Настройка доступа к Google Таблице

Шаг 1: Создание сервисного аккаунта в Google Cloud

  1. Перейдите в Google Cloud Console
  2. Создайте новый проект или выберите существующий
  3. Включите API Google Sheets для проекта
  4. Создайте новый сервисный аккаунт:
    • Назовите его, например: 1C-Sheets-Bot
    • Назначьте ему роль (можно оставить без роли, права будем давать вручную)
  5. После создания аккаунта, перейдите на вкладку “Ключи”
  6. Нажмите “Добавить ключ” - “Создать новый ключ” - выберите формат JSON
  7. Скачайте JSON-файл - это ключ доступа к Google API

ВАЖНО: JSON-файл - это секретный ключ доступа. Храните его в безопасном месте и не публикуйте.

Шаг 2: Предоставление доступа к Google Таблице

  1. Скопируйте email адрес вашего сервисного аккаунта (вида 1c-sheets-bot@...gserviceaccount.com)
  2. Откройте вашу Google Таблицу
  3. Нажмите “Поделиться” - введите email сервисного аккаунта - выдайте права “Редактор”
  4. Не отправляйте уведомление - “роботу” уведомления не нужны

Шаг 3: Настройка файлов

  1. Поместите скачанный и переименованный JSON-файл в папку Secrets в каталоге интеграции.

  2. (Только для режима с консолью) В файле config.json укажите имя JSON-файла ключа:

    {
      "service_account_file": "ваш-файл-ключ-сервисного-аккаунта.json"
    }

Установка и использование

Установка обработки

  1. Откройте Конфигуратор 1С
  2. Выберите ФайлОткрытьОбработка
  3. Укажите файл Выгрузка заказов ЕРП Инфостарт.epf
  4. Измените при необходимости путь к базовому каталогу в функции ПолучитьБазовыйКаталогСлужебныхФайлов()

Запуск выгрузки

  1. Откройте обработку в 1С в пользовательском режиме
  2. Укажите:
    • Способ получения токена - выберите “1С” (нативный) или “Консоль”.
    • Дата начала и Дата конца периода для выборки заказов.
    • ID Таблицы - ID Google таблицы (берется из URL).
    • Имя листа - имя листа в таблице для записи (по умолчанию “Лист1”).
  3. Нажмите кнопку Выгрузить в google sheets.
  4. Дождитесь сообщения о результате выполнения.

Получение ID Google Таблицы

  1. Откройте вашу Google Таблицу в браузере
  2. Посмотрите на адресную строку: https://docs.google.com/spreadsheets/d/1abc123xyz.../edit
  3. Скопируйте ID (часть между /d/ и /edit).

Решение проблем

Ошибка: “Файл с токеном не создан”

  • (Режим “Консоль”) Проверьте права на запись в каталог C:\1C\GoogleSheetsIntegration\
  • Проверьте, что JSON-файл ключа находится в папке Secrets/
  • (Режим “Консоль”) Проверьте, что имя файла в config.json совпадает с именем файла ключа.

Ошибка: “Таблица не найдена”

  • Проверьте правильность ID Google таблицы.
  • Убедитесь, что сервисный аккаунт имеет доступ к таблице с правами “Редактор”.

Ошибка: “Python скрипт не найден” (или ошибка выполнения .exe)

  • (Режим “Консоль”) Проверьте, что файл get_token.exe находится в нужном каталоге.
  • Убедитесь, что антивирус не блокирует выполнение .exe файла.

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.24.68

Вступайте в нашу телеграмм-группу Инфостарт

Google Таблицы Google Sheets гугл таблицы интеграция API выгрузка сервисный аккаунт гугл шитс OAuth 2.0 токен обмен данными экспорт из 1С 1С в гугл таблицы.

См. также

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    22080    65    52    

41

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    23415    34    24    

26

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение освободит вас от необходимости вручную обновлять товары в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически синхронизирует ваш каталог. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.

12200 руб.

29.08.2025    1802    4    0    

5

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    41641    75    45    

31

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    5455    23    4    

25
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user-z99999 77 06.11.25 12:42 Сейчас в теме
Использовать Google Таблицы для бизнеса в России не надежно.
В любой момент может перестать работать.
30. uno-c 272 24.12.25 16:45 Сейчас в теме
(1) Плюс использовать exe-шник в то время, как разработчики платформы 1С придумали в т.ч. для сервис-аккаунта Гугла бесплатный ТокенДоступа - это моветон, причем моветон ценой 10 стартмани в то время, как есть бесплатный пример https://infostart.ru/1c/articles/2088582/
2. ltfriend 10.11.25 15:26 Сейчас в теме
А что помешало получать токен прямо из 1С без костылей в виде exe-файлов?
3. Prepod2003 319 10.11.25 15:38 Сейчас в теме
(2) внешнее .exe — это не «костыль», а нормальный способ вынести сложную криптографию и инфраструктуру Google OAuth за пределы 1С, чтобы избежать трудоёмкого и потенциально ненадёжного переписывания всего функционала на BSL
4. ltfriend 10.11.25 16:13 Сейчас в теме
(3)
Функция ТокенДоступаGoogleAPI(ПутьКСекретномуКлючу, Разрешения, СрокДействия = 3600) Экспорт
	ТокенДоступа = СформироватьТокенДоступаGoogleAPI(ПутьКСекретномуКлючу, Разрешения, СрокДействия);
	
	Заголовки = Новый Соответствие;
	Заголовки.Вставить("Content-Type", "application/json");
	
	ПараметрыЗапроса = СтрШаблон(
		"{""grant_type"":""%1"",""assertion"":""%2""}",
		"urn:ietf:params:oauth:grant-type:jwt-bearer",
		ТокенДоступа
	);
	
	Запрос = Новый HTTPЗапрос("token", Заголовки);
	Запрос.УстановитьТелоИзСтроки(ПараметрыЗапроса);
	
	Соединение = Новый HTTPСоединение(
		"oauth2.googleapis.com", , , , , ,
		Новый ЗащищенноеСоединениеOpenSSL
	);
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
	
	ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
	Если Не ПустаяСтрока(ТелоОтвета) Тогда
		СтруктураОтвета = ПрочитатьЗначениеJSON(ТелоОтвета);
	Иначе
		СтруктураОтвета = Неопределено;
	КонецЕсли; 
	
	Если Ответ.КодСостояния <> 200 Тогда
		ТекстСообщения = СтрШаблон(
			НСтр("ru='Ошибка при получении ключа доступа Google API. Код Состояния: %1'"),
			Ответ.КодСостояния
		);
		ВызватьИсключение ТекстСообщения;
	ИначеЕсли СтруктураОтвета = Неопределено Тогда
		ВызватьИсключение НСтр("ru='Получен неверный ответ.'");
	КонецЕсли;
	
	Возврат СтруктураОтвета.access_token;
КонецФункции

Функция СформироватьТокенДоступаGoogleAPI(ПутьКСекретномуКлючу, Разрешения, СрокДействия)
	СекретныйКлюч = ПрочитатьСекретныйКлючИзФайла(ПутьКСекретномуКлючу);
	ВремяСоздания = ТекущаяДатаСеанса() - '19700101';
	ВремяЖизни = ВремяСоздания + СрокДействия;
	
	Токен = Новый ТокенДоступа;
	Токен.Заголовки.Вставить("alg", "RS256");
	Токен.Заголовки.Вставить("typ", "JWT");
	
	Токен.Эмитент = СекретныйКлюч["client_email"];
	Токен.Получатели.Добавить(СекретныйКлюч["token_uri"]);
	Токен.ВремяСоздания = ВремяСоздания;
	Токен.ВремяЖизни = ВремяЖизни;
	Токен.ПолезнаяНагрузка.Вставить("scope", Разрешения);
	
	Токен.Подписать(АлгоритмПодписиТокенаДоступа.RS256, СекретныйКлюч["private_key"]);
	Возврат Строка(Токен);
КонецФункции

Функция ПрочитатьСекретныйКлючИзФайла(ПутьКСекретномуКлючу)
	ЧтениеТекста = Новый ЧтениеТекста(ПутьКСекретномуКлючу);
	СекретныйКлючСтрокой = ЧтениеТекста.Прочитать();
	ЧтениеТекста.Закрыть();
	Возврат ПрочитатьЗначениеJSON(СекретныйКлючСтрокой);
КонецФункции
Показать
5. Prepod2003 319 10.11.25 16:43 Сейчас в теме
(4) Спасибо за код. Интересный вариант, нужно будет его протестировать, насколько стабильно он будет работать по сравнению с текущим решением.
6. Prepod2003 319 11.11.25 09:03 Сейчас в теме
(4) Возвращаясь к нашему диалогу: реализовал второй, нативный способ получения токена. Теперь в обработке два режима (нативный 1С и консольный). Благодарю за наводку.
9. uno-c 272 24.12.25 08:01 Сейчас в теме
(3)
нормальный способ вынести сложную криптографию и инфраструктуру Google OAuth за пределы 1С, чтобы избежать трудоёмкого и потенциально ненадёжного переписывания всего функционала на BSL
В криптографии RSA нет ничего сложного. Подпись RSA - это возведение основания-хеша в степень закрытого ключа по модулю открытого ключа. В те времена, когда 1С не умела силами платформы делать подпись RS256 и ничего не знала про Новый ТокенДоступа(), подпись RSA для сервис-аккаунта Гугл вычислялась в коде 1С простой арифметикой.

Новый ТокенДоступа() появился в платформе 1С более трех лет назад, задуман разработчиками платформы 1С исключительно для JWT, в т.ч. для использования с сервис-аккаунтом Гугла. Так что сегодня делать подобное exe-шником ... Слово "нормально" тут явно не подходит.
10. Prepod2003 319 24.12.25 09:45 Сейчас в теме
(9) Если так рассуждать, то в мире программирования вообще нет ничего сложного. Да и не только в программировании.
Вот Теорию относительности придумали больше 100 лет назад — казалось бы, старая технология, всё давно описано, а находятся же странные люди, которые до сих пор считают её сложной! Или возьмем "Джоконду" — ей вообще 500 лет, а ведь технически это просто смесь пигмента с маслом, размазанная по доске. Химия 8-го класса, ничего сложного.
Спасибо, что напомнили нам о простоте бытия!
11. uno-c 272 24.12.25 10:30 Сейчас в теме
(10) Возведение в степень - это 5й класс средней школы, остаток от деления - 3й, поэтому вычисление подписи в RSA криптографии - это тривиально, в отличие от криптографии эллиптической.
12. Prepod2003 319 24.12.25 10:40 Сейчас в теме
(11) А эллиптическая криптография — это всего лишь кривые линии и касательные на плоскости. Геометрия за 7-8 класс.
А машинный код процессора — это вообще нули и единицы. Счет до двух — это уровень ясельной группы детского сада.
Получается, вся IT-индустрия — это кружок для дошколят и младшеклассников. Страшно подумать, за что нам деньги платят, если всё так тривиально!
13. uno-c 272 24.12.25 11:00 Сейчас в теме
(12)
А эллиптическая криптография — это всего лишь кривые линии и касательные на плоскости. Геометрия за 7-8 класс
Эллиптическая криптография - это не просто геометрия, а алгебраическая геометрия, в обычной школе такое не изучают, сложновато для обще-среднего интеллекта.
14. Prepod2003 319 24.12.25 11:40 Сейчас в теме
(13) Фух, ну слава богу! А то я уже начал переживать, что в этом мире вообще не осталось ничего сложного. Хорошо, что вы провели эту черту между нами, простыми смертными с RSA, и высшими сферами.
15. uno-c 272 24.12.25 12:13 Сейчас в теме
(14) Подпись RS256 - это просто. На старых платформах она вычисляется кодом 1С арифметически, на новых платформах справится МенеджерКриптографии, а конкретно для сервис-аккаунта Гугла разработчики платформы 1С придумали ТокенДоступа. Использование exe-шника в сегодняшних реалиях - так себе идея.
16. Prepod2003 319 24.12.25 12:46 Сейчас в теме
(15) Слушайте, я сейчас расплачусь от умиления. Вы так переживаете за "чистоту рядов" 1С-разработки!
Давайте по фактам:
Нативный способ нужен? Нужен. Сделано.
EXE-способ работает? Работает. Оставлено (как альтернатива).
Ваше упорное желание заклеймить рабочий инструмент (exe) как "так себе идею" выдаёт в вас теоретика. Практики знают: инструмент подбирается под задачу. Нужно было быстрое и железобетонное решение — использовали Python. Понадобилось нативное — добавили 1С.
А ваша попытка прочитать лекцию поезду, который уже ушел, доехал до станции и успешно выгрузил пассажиров, выглядит забавно.
17. uno-c 272 24.12.25 13:06 Сейчас в теме
(16)
Давайте по фактам
По факту налицо незнание возможностей платформы, которые появились более трех лет назад - Новый ТокенДоступа. А к нему - нежелание погуглить перед размещением ненужного exe-шника при наличии готового бесплатного 1С-платформенного решения, которому больше года https://infostart.ru/1c/articles/2088582/
18. Prepod2003 319 24.12.25 13:13 Сейчас в теме
(17) Послушайте, уважаемый. Давайте расставим точки над i.

Я не нанимался к вам на работу и не сдаю вам экзамен на знание истории обновлений платформы 1С. Я решаю свои бизнес-задачи теми инструментами, которые считаю эффективными в конкретный момент времени. Захотел — сделал на Python. Захотел — добавил нативный код.

Ваша манера раздавать непрошеные оценки чужим знаниям, указывать авторам, что им "гуглить", и решать за других, что является "ненужным" — это дурной тон, граничащий с хамством.

Если у вас есть готовое бесплатное решение по ссылке — отлично, пользуйтесь им и будьте счастливы. А что и как выкладывать в моей публикации — позвольте решать мне
19. uno-c 272 24.12.25 13:20 Сейчас в теме
(18)
Захотел — добавил нативный код
Не, не так. Вы не знали возможностей платформы, написали и выложили ненужный ныне exe-шник. Вам сразу указали, что в платформе 1С этот вопрос уже решен, я добавил - решен более 3х лет назад. А также налицо отмазки Вашего незнания отсылками к "сложной криптографии", которая в данном случае была тривиальна даже на старых платформах - чистая арифметика, и никаких exe-шников.
20. Prepod2003 319 24.12.25 13:28 Сейчас в теме
(19) Ну всё, вы меня раскусили! Шерлок Холмс нервно курит в сторонке.

Признаю: я действительно не знал про этот метод в тот момент. Какой кошмар! Видимо, пора посыпать голову пеплом, торжественно сжигать желтые коробки 1С и уходить в управдомы.

А если серьезно: ваше маниакальное желание уличить кого-то в незнании и выставить себя всеведающим Гуру выглядит, мягко говоря, наивно. В нашей профессии есть парадокс: чем больше ты знаешь, тем яснее понимаешь, сколько всего ты еще НЕ знаешь.

Настоящий мастер отличается от дилетанта тем, что допускает наличие пробелов в своих (и чужих) знаниях. Как говорил Стивен Хокинг: "Главный враг знания — не невежество, а иллюзия знания".

Вы сейчас пребываете в опасной иллюзии, что знаете всё. Уверен, если я начну экзаменовать вас по всем нюансам экосистемы (от специфики Linux до тонкостей SQL), мы найдем вагон и маленькую тележку того, чего вы "не знали". Но я не буду этого делать. Знаете почему? Потому что тыкать коллегу носом в то, что он чего-то не знал в конкретный момент — это удел тех, кто остановился в развитии и занят полировкой своего Эго, а не решением задач.
21. uno-c 272 24.12.25 13:39 Сейчас в теме
(20) Все, о чем я написал - это то, что подпись RSA тривиальна и вычисляется на старых платформах в коде 1С простой арифметикой. Ваш exe-шник для сервис-аккаунта Гугла инороден для старых платформ, и совсем не нужен на новых https://infostart.ru/1c/articles/2088582/ платформах.
22. Prepod2003 319 24.12.25 13:47 Сейчас в теме
(21) Вы, кажется, не улавливаете суть претензии.

Проблема не в том, что вы выразили своё мнение. Проблема в том, КАК вы это сделали.

Если бы вашей целью было действительно помочь и дополнить материал, вы бы написали вежливо: "Коллега, кстати, есть вот такое готовое решение, а этот метод можно реализовать проще...". В таком случае я бы с благодарностью принял ваш совет, сказал спасибо за ссылку, и мы бы пожали друг другу руки. Это — нормальная профессиональная дискуссия.

Но вы выбрали другой путь — менторский, хамский тон, попытки тыкать носом в "незнание", поучать, что мне гуглить, и оценки в духе "ненужный exe". Это делается не для помощи, а для того, чтобы потешить своё ЧСВ и попытаться унизить другого.

В профессиональном сообществе такое поведение — это "зашквар". Технические знания не компенсируют отсутствие элементарной культуры общения. Вам бы подтянуть "софт-скиллы", потому что с таким подходом даже самые дельные ваши советы будут восприниматься в штыки
23. uno-c 272 24.12.25 13:55 Сейчас в теме
(22)
вы бы написали вежливо
Я так и написал в первом сообщении. Но Ваши попытки обобщить, заболтать, поерничать - они и привели к "тыканью носом"

Вывод: Ваш exe-шник нынче никому не нужен, а авторизовать сервис-аккаунт Гугла на современных платформах можно с помощью бесплатного решения https://infostart.ru/1c/articles/2088582/ Причем написали его не Вы, добавили чужое решение из комментария в свою публикацию и предлагаете за 10 СМ.
24. Prepod2003 319 24.12.25 13:58 Сейчас в теме
(23) Похоже, пластинку заело окончательно. Вы уже в третий (или четвертый?) раз кидаете одну и ту же ссылку. Это выглядит уже как навязчивый спам.

А ваша логика «Вы сами виноваты, что я вам хамлю» — это уровень детского сада. Взрослые профессионалы умеют держать себя в руках и общаться вежливо, даже если собеседник чего-то не знает или шутит.

Разговор окончен. Ссылку вашу все увидели, успокойтесь. Дальнейший флуд буду игнорировать
25. uno-c 272 24.12.25 14:00 Сейчас в теме
(24)
Это выглядит уже как навязчивый спам.
Это не навязчивый спам. Это единственно-верное бесплатное решение на современных платформах 1С для сервис-аккаунта Гугл https://infostart.ru/1c/articles/2088582/

Новый ТокенДоступа
26. Prepod2003 319 24.12.25 14:30 Сейчас в теме
(25) Раз уж вы с таким упорством (уже в пятый раз!) рекламируете это «бесплатное решение» как эталон, я не поленился и провёл технический аудит кода по вашей ссылке.

Спасибо вам большое! Это прекрасный пример для рубрики «Как НЕ надо писать тиражные решения».

Давайте сравним мой подход (за 10 sm) и то, что вы предлагаете людям копипастить бесплатно.

1. Хардкод против Архитектуры

Решение по вашей ссылке: Приватный ключ (BEGIN PRIVATE KEY) и служебный email вшиты прямо в код модуля 1С! Вердикт: Это «одноразовый код». Чтобы передать обработку клиенту или сменить ключ, нужно лезть в Конфигуратор и править исходный код. Это грубое нарушение стандартов безопасности и разработки. * Моё решение: Ключ читается из внешнего JSON-файла (service_account.json), как это принято в Google API. Вердикт: Универсально. Клиент просто кладет файл в папку, и всё работает. Код трогать не нужно.

2. Знание платформы и мифические баги

Решение по вашей ссылке: Автор пишет: «1С упорно, не верно вычисляет время exp» и лепит костыль, вручную прописывая exp в Payload. Вердикт: Автор кода не читал СП. Свойство ВремяЖизни — это длительность (секунды), а не дата истечения. Платформа работает корректно, если уметь ей пользоваться. * Моё решение: Используются штатные механизмы платформы без «магических» исправлений несуществующих ошибок.

3. Безопасность передачи данных (OAuth 2.0)

Решение по вашей ссылке: Параметры grant_type и assertion (сам токен!) передаются в URL-строке запроса (/token?%1). Вердикт: Это потенциальная дыра в безопасности. Чувствительные данные могут осесть в логах прокси-серверов. Стандарт требует передавать их в теле POST-запроса.

Моё решение: Строгое соблюдение стандартов. Параметры передаются в теле запроса (application/x-www-form-urlencoded).

4. Инфраструктура * Моё решение: Реализовано кеширование токена (в памяти и на диске) , проверка срока действия перед запросом, автообновление.


Решение по ссылке: Просто функция получения.

Итог: Вы предлагаете людям использовать "сырой" лабораторный пример с хардкодом и архитектурными ошибками. Я предлагаю отлаженный, безопасный и универсальный инструмент.

Надеюсь, вопрос с вашей ссылкой закрыт окончательно.
27. uno-c 272 24.12.25 15:01 Сейчас в теме
(26)
Вердикт: Это потенциальная дыра в безопасности. Чувствительные данные могут осесть в логах прокси-серверов
Ликбез: в https параметры URL шифруются и невидимы для прокси-серверов. Все, что видит прокси при https - это домен и порт, остальные параметры URL запроса безопасно зашифрованы.

(26)
Это «одноразовый код»
Подобные штуки - это всегда одноразовый код, при использовании прогером он перерабатывается. Единственное, что от него требуется - продемонстрировать успешную работу.

(26)
ВремяЖизни — это длительность (секунды), а не дата истечения
Короче, 10 СМ за исправление ошибки, при том что сама ошибка исправлена в 3-м комментарии к бесплатному решению https://infostart.ru/1c/articles/2088582/
28. Prepod2003 319 24.12.25 15:16 Сейчас в теме
(27) Спасибо за откровенность! Вы только что сами забили последний гвоздь в крышку гроба своей «экспертности».

Давайте разберем ваши тезисы, чтобы окончательно расставить всё по местам.

1. Про «Ликбез» и безопасность (Access Logs) Ваш «ликбез» про HTTPS вызывает только улыбку. Вы, видимо, забыли (или не знали), что URL-адреса, включая ваши GET-параметры с токенами, прекрасно сохраняются в Access Logs (журналах доступа) веб-серверов, балансировщиков и прокси-серверов в открытом виде. Шифрование канала (HTTPS) тут не спасает — админ сервера видит логи. Именно поэтому стандарт OAuth 2.0 (RFC 6750) прямо запрещает передавать токены в URI. Но куда уж международным стандартам до вашего «безопасного решения».

2. Про «исправление ошибки» и архитектуру Вы тактично проигнорировали, что в моем решении реализована полноценная инфраструктура, которой нет в вашей поделке: * Кеширование токена в памяти и на диске (чтобы не «бомбить» API лишними запросами). * Автоматическая проверка валидности и обновление токена при истечении. * Универсальность через конфиг-файлы, без хардкода.

Сводить всё это к «исправлению ошибки» — это как сказать, что современный автомобиль — это просто «телега с исправленным колесом». Разница в том, что на одном ездят комфортно и долго, а второе нужно толкать руками.

3. Про «одноразовый код» и статус Гуру "Подобные штуки - это всегда одноразовый код, при использовании он перерабатывается" — (с) Ваша цитата. Именно!

Столько пафоса было в начале! Вы изображали из себя Великого Гуру, тыкали меня носом в «незнание», подавали свою ссылку как некий «Эталон»... А оказалось, что вы с умным видом подсовывали мне, называя вещи своими именами, «говнокод» (одноразовую заготовку с хардкодом и дырами), который нужно переписывать.


Итог: Раньше я считал вас просто хамом, но, возможно, крепким профессионалом. После вашей защиты дырявой архитектуры и оправданий про «одноразовость» — вы упали в моих глазах ниже плинтуса даже в техническом плане.

Ждать от вас извинений за тон, полагаю, бессмысленно — для этого нужна человеческая зрелость. Дискуссию закрываю. Вы мне больше не интересны ни как собеседник, ни как специалист. Прощайте.
29. uno-c 272 24.12.25 15:37 Сейчас в теме
(28)
в крышку гроба своей «экспертности»... Прощайте.
Вы уже прощались, человек слова. Сами придумываете, сами "пугаетесь" своих выдумок, сами с ними спорите.
(28)
Именно поэтому стандарт OAuth 2.0 (RFC 6750) прямо запрещает передавать токены в URI.
фантазии, фантазии ...
(28)
админ сервера видит логи.
а ОС клиента предварительно зашифровала параметры URL, походу админ где-то заныкал квантовый компьютер.
31. uno-c 272 24.12.25 18:14 Сейчас в теме
(29)
Именно поэтому стандарт OAuth 2.0 (RFC 6750) прямо запрещает передавать токены в URI

И Prepod2003, проверьте свой английский. В чем разница между "should not" и "must not", что из них является прямым запретом.

RFC 6750:
Bearer tokens should not be passed in page URLs

Тут никакого прямого запрета, "should not" - это лишь рекомендация. Рекомендуют, т.к. браузер или сервер (в данном случае сервер Гугловский, т.к. никакой другой сервер не сможет расшифровать параметры URL) может запомнить нечто в своей истории/логах. Какой такой браузер в 1С HTTPСоединении и HTTPЗапросе?
32. Prepod2003 319 24.12.25 19:23 Сейчас в теме
(31) Коллега, читая ваш ответ, я понимаю, что ваш Epic Fail глубже, чем казалось. Вы мыслите категориями "пользователя браузера", а не архитектора системы. Это пугает.

Проведу консультацию, раз вы не понимаете элементарных вещей.

Вы спрашиваете: "Какой такой браузер в 1С? Там нет истории". Отвечаю: При чем тут вообще клиент 1С? Вы правда думаете, что рекомендация не совать данные в URL нужна только чтобы жена не увидела историю в браузере?

В HTTP-взаимодействии участвуют две стороны. Вы забыли про вторую — СЕРВЕР. А также про всё, что стоит между ними.

Server Access Logs. Любой веб-сервер (включая сервера Google, Nginx, Apache, IIS) по стандартам безопасности пишет access.log.

В этот лог всегда пишется строка запроса (URL + параметры). Ваши данные там будут лежать в открытом текстовом виде вечно.

Тело запроса (Body) в стандартные логи доступа не пишется никогда. Поэтому любой админ сервера, любой разработчик с доступом к логам (или системе аналитики Google) увидит ваши данные. В этом суть запрета, а не в "истории браузера".

Прокси и корпоративные шлюзы. В корпоративных сетях трафик часто идет через Proxy/DPI. Там тоже ведутся логи. URL там виден, тело — нет.

RFC 2119. Вы снова пытаетесь трактовать стандарты как вам удобно. "SHOULD NOT" в RFC 2119 означает: «НЕ ДЕЛАЙТЕ ЭТОГО, если нет критической необходимости». Это не "рекомендация по настроению". Это требование не создавать уязвимости без веской причины.

Возвращаю вам вопрос: В 1С есть метод УстановитьТелоИзСтроки. Это штатный, безопасный, правильный путь. Какая «критическая необходимость» заставила вас нарушать стандарт и пихать данные в URL, засоряя серверные логи? Лень?

Хватит позориться. Идите учить матчасть.
33. uno-c 272 24.12.25 19:54 Сейчас в теме
(32)
В этот лог всегда пишется строка запроса (URL + параметры). Ваши данные там будут лежать в открытом текстовом виде вечно
Походу Вы пишете о том, что ни разу не пробовали и в чем не разбираетесь, предварительно попрощавшись. В https параметры url шифруются симметричным секретным ключом, который знают только клиент и принимающий сервер (в данном случае сервер Гугл). Никакой промежуточный Апач, ИИС, ЭнжинИКС, DPI и прочие не знают этого секретного ключа и не смогут расшифровать параметры url. Что там у себя логирует Гугл - пофиг, его право логировать все, что ему приспичит, в т.ч расшифрованные параметры url, заголовки и тело http-запроса.

Английский подтянули? Как по-английски пишется "прямой запрет передавать токены в URI"? Should ... или все-таки must ...?
34. Prepod2003 319 24.12.25 20:11 Сейчас в теме
(33) Уважаемый, то, что вы написали про работу HTTPS и "невозможность расшифровки" сервером — это чушь собачья. В этот раз даже комментировать технические детали не буду. Лимит на бесплатные консультации для вас исчерпан. Хотите оставаться в своем неведении — пожалуйста.

По поводу вашего выпада, что я "попрощался, но вернулся": это моя публикация, моя ветка и моя свобода воли. Я решаю, когда уходить, а когда возвращаться, чтобы поставить на место зарвавшегося дилетанта. Ваши попытки уцепиться за это — обычное хамство, когда аргументов по сути не осталось.

Давайте попробуем попрощаться ещё раз. Снова посоветую вам учить матчасть, хотя, судя по всему, вам это бесполезно. Я понял, что вы здесь просто развлекаетесь троллингом от скуки. Ну, если делать нечего — развлекайтесь дальше, но уже без моего участия.

Всего доброго.
35. uno-c 272 24.12.25 20:16 Сейчас в теме
(34)
невозможность расшифровки" сервером — это чушь собачья.
Чушь - это то, что Вы пишете. Проверяйте на опыте, накрайняк читайте доки. Что такое симметричное шифрование в TLS, шифрует ли оно парамерты URL, у кого есть ключи шифрования/расшифровки URL-параметров HTTP-запроса.

Для ленивых: параметры URL в TLS симметрично шифруются, ключи шифрования есть только у клиента и конечного сервера, к которому обращается этот клиент, т.е. сервера, с которым произошло первоначальное рукопожатие, он же сервер, который подтвердил свою подлинность своим SSL-сертификатом. В случае с авторизацией Гугл, клиент - это 1С (в т.ч. если HTTP-запрос происходит НаСервере), а сервер - это Гугл.
36. uno-c 272 24.12.25 22:37 Сейчас в теме
(34)
Лимит на бесплатные консультации для вас исчерпан.

Это поддерживаю. Не стОит заполнять инет ложной инфой типа "стандарт RFC 6750 прямо запрещает передавать токены в URI" в то время, как в стандарте нет прямого запрета, а вместо запрета - рекомендация should not. Или типа при https "в логе прокси видны параметры URL" от чела, ни разу не видевшего логи https-трафика через прокси.
37. Prepod2003 319 24.12.25 23:28 Сейчас в теме
(36) В данной ветке прозвучал ряд утверждений касательно работы протокола HTTP, шифрования и интерпретации стандартов. Во избежание распространения некорректной информации и использования уязвимых подходов в продуктивных системах, ниже приведен детальный технический анализ архитектуры обсуждаемого решения.

1. Интерпретация стандартов (RFC 2119)
В спецификациях IETF ключевое слово "SHOULD NOT" не является синонимом «необязательной рекомендации». Согласно RFC 2119, оно означает прямой запрет, если не существуют критические причины (valid reasons) для иного поведения (например, ограничения легаси-оборудования). Платформа 1С предоставляет штатные методы (УстановитьТелоИзСтроки) для передачи данных в Body. Технических ограничений, вынуждающих передавать секреты в URL, нет. Следовательно, нарушение рекомендации не обосновано и является архитектурной ошибкой.

2. Безопасность данных: SSL Termination и Логирование
Утверждение, что при HTTPS параметры URL не могут быть прочитаны третьими лицами, ошибочно. Оно игнорирует принцип SSL Termination:
Веб-сервер (Google, Nginx, Apache) расшифровывает входящий запрос.
Расшифрованная строка запроса (включая параметры URL с токеном) записывается в Access Log.
Тело запроса (Body) в логи доступа по умолчанию не пишется. Таким образом, передача токена в URL компрометирует данные перед администраторами серверов, системами мониторинга (ELK, Splunk) и персоналом, имеющим доступ к логам или бэкапам.

3. Работа в корпоративных сетях (Enterprise)
В корпоративном секторе стандартом является использование шлюзов безопасности с функцией SSL Inspection (MITM). Такие системы легально вскрывают HTTPS-трафик для инспекции. Параметры URL в этом случае фиксируются в логах прокси-серверов в открытом виде, что делает передачу токенов через строку запроса недопустимой с точки зрения ИБ.

4. Качество реализации и работа с API
Предложенный по ссылке в обсуждении код демонстрирует отсутствие базовых механизмов интеграции:
Нет кэширования: Токен запрашивается заново при каждом вызове.
Нет Refresh Token: Механизм обновления токена не реализован. Это приводит к избыточной нагрузке на сеть и высокому риску блокировки со стороны API Google за превышение квот (Rate Limiting).

Итоговый вывод
На основании вышеизложенного, предлагаемый по ссылке в обсуждении программный код не может быть классифицирован как профессиональное решение, пригодное для использования в Enterprise-среде. Уровень реализации соответствует студенческой лабораторной работе ("поделка"), где игнорируются стандарты безопасности и принципы построения отказоустойчивых систем.

Попытка внедрения данного кода в реальный бизнес-процесс потребует полной переработки архитектуры (внедрение кэширования, изменение метода передачи данных, рефакторинг). Объем необходимых доработок делает использование данной заготовки экономически нецелесообразным. В данной ситуации гораздо эффективнее и дешевле либо написать интеграцию с нуля, соблюдая стандарты, либо приобрести готовое, проверенное профессиональное решение за условные 10 стартмани, которое гарантированно работает и не создает дыр в безопасности.
38. uno-c 272 25.12.25 03:19 Сейчас в теме
(37)
В данной ситуации гораздо эффективнее и дешевле
... вместо ненужной поделки за 10 стартмани - бесплатно взять код из 4-го комментария к нелепому exe-шнику https://forum.infostart.ru/forum15/topic333034/message3210619/
39. Prepod2003 319 25.12.25 09:49 Сейчас в теме
(38) поясню, чтобы было полное понимание возможностей предлагаемого продукта.

1. В данной публикации реализовано два способа подключения к Google API, что закрывает потребности практически любой архитектуры:
Нативный код 1С: Использует современные возможности платформы (работает начиная с версии 8.3.21). Это чистый код 1С без использования внешних файлов.
Внешний компонент (EXE): Предназначен для работы в средах, где нативный код неприменим.

2. Касательно кода из комментария №4 Приведенный оппонентом код — это полезный пример (сниппет), который демонстрирует базовый принцип получения токена. Любой квалифицированный программист может посмотреть его, почерпнуть идею (как это сделал и я) и написать своё решение. Однако сам по себе этот код не может служить полноценной альтернативой готовому продукту, так как имеет ряд архитектурных упрощений:
Отсутствует кэширование токена (критично для лимитов API).
Нет механизма автообновления токена.
Требуется ручная доработка для внедрения в проекты.

3. Зачем нужен EXE (Внешняя компонента)? Утверждение, что внешний исполняемый файл — это «нелепо» или «бесполезно», выдает узкий кругозор. Существует ряд сценариев, где EXE-вариант является незаменимым или наиболее эффективным решением:
Устаревшие платформы (Legacy): Огромное количество компаний до сих пор работает на 1С 7.7, 8.1 или 8.2 (Обычные формы). В этих версиях платформы физически отсутствуют объекты для работы с современной криптографией (JWT/RSA SHA-256) и полноценный HTTP-клиент. EXE-файл позволяет реализовать интеграцию с Google API в таких системах без обновления платформы.

Автоматизация вне среды 1С: EXE-файл можно вызывать не только из 1С, но и из Планировщика задач Windows (Task Scheduler), скриптов PowerShell, CMD или Python. Это позволяет получать актуальный токен для сторонних сервисов, не расходуя клиентскую лицензию 1С и не запуская тяжелый процесс платформы.

Изолированные контуры безопасности: В некоторых архитектурах серверу 1С запрещен прямой доступ в интернет. EXE-файл может быть размещен на шлюзовом компьютере (Gateway), выполняя роль моста для получения токена и передачи его в закрытый контур.

4. Данная разработка — это законченное решение, которое экономит время специалиста.
Реализовано правильное управление жизненным циклом токена (получение, кэширование, обновление).
Помимо авторизации, включены готовые примеры работы с данными: чтение таблицы (через получение JSON) и запись данных (в том числе пакетная).

Каждый выбирает сам: тратить часы на самостоятельную разработку «обвязки» для сырого кода или взять готовый, универсальный инструмент, работающий в любых условиях.
40. uno-c 272 25.12.25 10:58 Сейчас в теме
(39)
Реализовано правильное управление жизненным циклом токена (получение, кэширование, обновление)
Обновление токена сервис-аккаунта Гугла производится точно так же, как и его получение - https://forum.infostart.ru/forum15/topic333034/message3210619/, refresh token при авторизации сервис-аккаунта отсутствует как таковой.
41. Prepod2003 319 25.12.25 11:26 Сейчас в теме
(40) Для исключения терминологической путаницы, имеет смысл пояснить, что именно подразумевается под функционалом «Автоматическое обновление токена» в описании данной публикации.
Google API выдает короткоживущий access_token (обычно на 1 час) в обмен на подписанный JWT.
В контексте архитектуры данного решения под «обновлением» понимается реализованный на стороне 1С алгоритм управления жизненным циклом сессии:
Мониторинг: Система хранит время истечения текущего токена (expires_in).
Проверка: Перед каждым обращением к API программа проверяет валидность токена в локальном кэше.
Перевыпуск (Refresh Logic): Если срок действия токена истек (или близок к истечению), система автоматически, без участия пользователя и без прерывания процесса обмена, генерирует новый JWT-запрос, получает новый access_token и обновляет кэш.
Таким образом, термин «автообновление» описывает поведение программного продукта (обеспечение непрерывности работы), а не название параметра в HTTP-запросе к Google. Это позволяет интеграции работать автономно неограниченное время, используя сохраненный ключ сервисного аккаунта.
42. uno-c 272 25.12.25 11:44 Сейчас в теме
(39)
включены готовые примеры работы с данными: чтение таблицы (через получение JSON) и запись данных (в том числе пакетная).

Примеры работы 1С с данными через АПИ (далеко не только с Гугл-таблицами) можно посмотреть на проекте OpenIntegrations (Открытого пакета интеграций) https://github.com/Bayselonarrend/OpenIntegrations/releases/latest в разделе Скачать / Download
7. yavezde 03.12.25 16:16 Сейчас в теме
Подскажите пожалуйста, будет ли работать в КА 1С:Комплексная автоматизация 2 (2.5.22.124)?
8. Prepod2003 319 03.12.25 16:18 Сейчас в теме
(7) будет работать в любой конфигурации
Для отправки сообщения требуется регистрация/авторизация