Ваши комментарии
Вот что удалось выяснить.
1. Документация 1С явно говорит о том, что сертификат клиента и сертификат удостоверяющего центра в простых случаях не требуются:
Создает защищенное соединение OpenSSL, использующего указанные источники клиентского сертификата и сертификатов удостоверяющих центров.
Если не указывается источник сертификатов удостоверяющих центров, то сертификат сервера не проверяется.
Если не указывается источник клиентского сертификата, то соединение возможно только с серверами, не требующими предоставления клиентского сертификата.
Это как раз наш случай: Дадата не требует клиентского сертификата.
2. Ваш код на моем тестовом сервере 1С работает без проблем.
3. Как вы пишете, у вас код тоже сначала работает, а ошибки начинают сыпаться через некоторое время.
В результате моя единственная гипотеза на сегодня — проблема в прокси-сервере или сетевых настройках, которые ваш сервер 1С использует для выхода в интернет. «Нечто» между сервером 1С и сервером Дадаты (ОС / прокси / маршрутизатор) через некоторое время перестает корректно обрабатывать исходящие соединения.
Как это можно проверить:
- Убедиться, что сервер 1С работает без использования прокси.
- Попробовать делать вызовы других сервисов, работающих через HTTPS (например, Яндекс), в течение длительного времени. Ошибка должна повториться.
- Попробовать работать с Дадатой по HTTP вместо HTTPS.
А какой сервер (ОС / версия)?
Еще уточните, пожалуйста:
- Версия платформы 1С?
- Код подключения к API выполняется на сервере 1C или на клиенте?
Попробуйте так:
ssl = Новый ЗащищенноеСоединениеOpenSSL( Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто), Новый СертификатыУдостоверяющихЦентровWindows()); Соединение = Новый HTTPСоединение("dadata.ru",,,,,,ssl);
И еще: вы используете прокси-сервер? Если да, попробуйте отключить его.
Добрый день! Какую ошибку вы получаете (HTTP-код и текст ошибки)?
Александр, плагин можно включать (если страна Россия) и отключать (если любая другая).
Пример: Включить или отключить подсказки
Добрый день! Такой возможности нет. А зачем она вам?
Окей, тогда, например, такой вариант. Создаете зап из Google Sheets через Code в Airtable. Вызов Дадаты происходит на шаге Code. Код на Питоне такой:
import json BASE_URL = 'https://dadata.ru/api/v2/clean/' TIMEOUT = 3 # in seconds API_KEY = 'ВАШ_API_КЛЮЧ' API_SECRET = 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ' url = BASE_URL + 'name' headers = { 'Authorization': 'Token %s' % API_KEY, 'X-Secret': API_SECRET, 'Content-Type': 'application/json', 'Accept-Encoding': 'gzip, deflate', } data = [ input_data['name'], ] response = requests.post(url, data=json.dumps(data), headers=headers, timeout=TIMEOUT) response.raise_for_status() return response.json()
Заменяете в коде ВАШ_API_КЛЮЧ и ВАШ_СЕКРЕТНЫЙ_КЛЮЧ на реальные значения из личного кабинета. Настраиваете, чтобы ФИО из гугло-таблицы складывались в переменную name:
И все работает.
Если вы хотите эту возможность — напишите в комментариях, как станете использовать поля «кем выдан», «дата выдачи» и «код подразделения». Для чего они вам?
Сервис поддержки клиентов работает на платформе UserEcho
Андрей, если работаете через API, вы можете просто не забирать из подсказок филиалы. Выбирайте из списка только подсказки, у которых data.branch_type = MAIN.
Если работаете через плагин, то список можно отфильтровать от филиалов с помощью коллбека onSuggestionsFetch. Пример: подсказки по организациям без филиалов.