Чем заняться перед Новым годом? Правильно, допиливанием 1С:Переводчика

31.12.23

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

Что делать 1С-нику в преддверии праздников? А не исправить ли пару багов в свободно распространяемой конфигурации 1С:Переводчик? Самое то)

Потребовался мне для одного интересного проекта 1С:Переводчик. Все бы хорошо, конфигурация сложная, функционал достойный. 

Но вот незадача: никак не удавалось  использовать Яндекс.Переводчик   в конфигурации. 

На яндекс.Облаке зарегистрировала платежный аккаунт, получила пробный доступ к Переводчику, создала сервисный профиль, создала  в консоли API-ключ. 

Пытаюсь вставить API-ключ в поле формы и проверить соединение. Но мне  выдает: не удается соединиться. 


   

 

Полезла в конфигуратор: обработчик кнопки и далее по стеку вызовов. И вот незадача, код написан на ... английском языке. Но кого это остановит ))

 

 

Короче, после 10 минут  дебага строка, где валится логика, найдена.  И понимаю, что код для интеграции с яндекс переводчиком - устарел. Надо немного переписать. 

Во-первых, строка обращения к REST API - переводчика устаревшая. Нахожу новую. Ну и соответственно, формат обращения к сервису, изменился. Нужно ключ авторизации указывать в header (в заголовках), а тело - JSON.

В postman немного поколдовала с параметрами, чтобы точно понимать, формат обмена и получить заветный код ответа 200.  Вот доработки с сохраненным старым кодом. Извините, вставки на русском.
 

Function TranslateYandex(TextToTranslate, SourceLanguageCode, TargetLanguageCode, APIKey) Export	
	//ServiceURL = "https://translate.yandex.net/api/v1.5/tr.json/translate"; 
	ServiceURL = "https://translate.api.cloud.yandex.net/translate/v2/translate";
	URLStructure = GetFilesFromInternetClientServer.SplitURL(ServiceURL);	
	//Content = "?key=" +  EncodeString(APIKey, StringEncodingMethod.URLEncoding, "UTF-8") +
	//	"&text=" + EncodeString(TextToTranslate, StringEncodingMethod.URLEncoding, "UTF-8");
	//HTTPRequest = New HTTPRequest(URLStructure.PathToFileAtServer + "&lang=" 
	//	+ EncodeString(SourceLanguageCode, StringEncodingMethod.URLEncoding, "UTF-8") + "-" 
	//	+ EncodeString(TargetLanguageCode, StringEncodingMethod.URLEncoding, "UTF-8"), Headers); 	
	//HTTPRequest.SetBodyFromString(Content, "UTF-8");
	Headers = New Map;
	//Headers.Insert("Content-Type", "application/x-www-form-urlencoded");  
	Headers.Insert("Content-Type", "application/json");
	Headers.Insert("Authorization", ("Api-Key " + APIKey)); 
		
	Данные = Новый Структура();
	Данные.Вставить("sourceLanguageCode", SourceLanguageCode);
	Данные.Вставить("targetLanguageCode", TargetLanguageCode); 
	Данные.Вставить("format", "PLAIN_TEXT");       
	Строки = Новый Массив;
	Строки.Add(TextToTranslate);   
	Данные.Вставить("texts", Строки);

	ЗаписьJSON = Новый ЗаписьJSON;            
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, Данные);            
	ТелоЗапроса = ЗаписьJSON.Закрыть();	
	
	Headers.Insert("Content-Length", StrLen(ТелоЗапроса));

	HTTPRequest = New HTTPRequest(URLStructure.PathToFileAtServer, Headers);
	HTTPRequest.SetBodyFromString(ТелоЗапроса, "UTF-8");  
	
	SSL = New OpenSSLSecureConnection();//New WindowsClientCertificate(), New WindowsCertificationAuthorityCertificates);
	Connection = New HTTPConnection(URLStructure.ServerName, , , , , 180, SSL);
	HTTPResponse = Connection.Post(HTTPRequest);
	Result = "";
	Try
		ResultJSON = HTTPResponse.GetBodyAsString("UTF-8");
		JSONReader = New JSONReader;
		JSONReader.SetString(ResultJSON);
		AuthTokenStructure = ReadJSON(JSONReader);
		JSONReader.Close();  
		Для Каждого Эл Из AuthTokenStructure.translations Цикл 
			Result = Result + Эл.text + Символы.ПС;
		КонецЦикла;
	Except
		WriteLogEvent(NStr("en = 'Translation service'; ru = 'Сервис переводов'", Metadata.DefaultLanguage.LanguageCode), EventLogLevel.Error,,, 
			StringFunctionsClientServer.SubstituteParametersInString(NStr("en = 'Translation resonse:
                                                                           |%1'; ru = 'Ответ на перевод:
                                                                           |%1'", Metadata.DefaultLanguage.LanguageCode), ResultJSON));
	EndTry;
	
	Return Result;                                
EndFunction   

 

Немного о 1С:Переводчик 

 

Лицензия

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

1с переводчик 2.1 исправление ошибок кода 1с 8

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

36000 руб.

03.08.2020    17780    19    22    

16

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19844    13    17    

16

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14421    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1168    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. maksa2005 550 01.01.24 09:41 Сейчас в теме
Чем чем? Заниматься всем тем чем нравиться, а не работать)
4. genayo 02.01.24 15:13 Сейчас в теме
(1) Некоторым нравится работать, как это не странно и не удивительно :)
serverstar; +1 Ответить
5. serverstar 69 02.01.24 15:17 Сейчас в теме
(1) эту доработку сделала по кайфу ))
2. RustIG 1747 01.01.24 12:30 Сейчас в теме
интересненько...
serverstar; +1 Ответить
3. Snitkovski 88 01.01.24 18:35 Сейчас в теме
Вот уж не думал, что в ЭТОМ десятилетии кто-то может вернуться к ЭТОМУ Решению! 8-()

Уважаемый Автор - если не секрет - что на что переводите?
Dmitryiv; +1 Ответить
6. Viktor_Ermakov 369 05.01.24 12:44 Сейчас в теме
(3) А какое по Вашему мнению решение лучше? Давайте ссылки, доводы.
Я вот работаю в DRIVE и мне хотелось бы скопировать модуль, вставить куда то, а он мне перевод, что бы отлаживать было удобнее)
8. Snitkovski 88 16.01.24 11:08 Сейчас в теме
(6) Виктор, я не говорил, что ЭТО Решение нехорошее - правда, было разработано порядка 10-ти лет назад и с тех пор от Вендора появился LanguageTool под EDT
Есть и альтернативные Решения: https://infostart.ru/1c/articles/1156027/
(полагаю, ссылки ИнфоСтарта на ИнфоСтарт рекламой не являются?) 8-)

Кстати, мы тоже много работаем с Продуктом, который теперь называтся "1C:DRIVE" - если есть желание, напишите мне в личку, пообщаемся подробнее
7. John_d 5891 05.01.24 21:39 Сейчас в теме
Спасибо за ссылку на its. Я вообще не знал, что есть такая конфигурация
Оставьте свое сообщение