Склонение слов

Lina Dimitrescu 46 2 4

С помощью онлайн-сервиса

Функция Просклонять(СклоняемыйТекст, Падеж) 
	Запрос = HTTPЗапросКСервисуСклонения(СклоняемыйТекст);
	Соединение = HTTPСоединениеСервисаСклонений();
	
	Попытка
		Ответ = Соединение.Получить(Запрос);
	Исключение
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Ошибка склонения " + Символы.ПС + ОписаниеОшибки());
		Возврат СклоняемыйТекст;
	КонецПопытки;
	
	ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
	Если Ответ.КодСостояния <> 200 Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Ошибка склонения " + Символы.ПС + ОписаниеОшибки());
		Возврат СклоняемыйТекст;
	КонецЕсли;
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(ТелоОтвета);
	СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();
	
	Возврат СтруктураОтвета[Падеж]; 
КонецФункции

Функция HTTPЗапросКСервисуСклонения(СклоняемыйТекст)
	
	ТекстЗапроса = "/russian/declension?s=" + СклоняемыйТекст;
	
	УстановитьПривилегированныйРежим(Истина);
	ВладелецТокена = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.СклоненияПредставленийОбъектов");
	Токен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ВладелецТокена, "ТокенДоступаКСервисуMorpher");
	УстановитьПривилегированныйРежим(Ложь);

	Если ЗначениеЗаполнено(Токен) Тогда
		ТекстЗапроса = ТекстЗапроса + "&token=" + Токен;
	КонецЕсли;
	
	Заголовки = Новый Соответствие;
  	Заголовки.Вставить("User-Agent", "1C Enterprise 8.3");
  	Заголовки.Вставить("Accept", "application/json");
	Заголовки.Вставить("charset", "UTF-8");	
	
	Возврат Новый HTTPЗапрос(ТекстЗапроса, Заголовки);
	
КонецФункции

Функция HTTPСоединениеСервисаСклонений()
	
	АдресСервера = "ws3.morpher.ru";
	
	ИнтернетПрокси = Неопределено;
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда
		МодульПолучениеФайловИзИнтернетаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернетаКлиентСервер");
		ИнтернетПрокси = МодульПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси(АдресСервера);
	КонецЕсли;
	
	Таймаут = 10;
	
	ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС);
	Возврат Новый HTTPСоединение(АдресСервера, , , , ИнтернетПрокси, Таймаут, ЗащищенноеСоединение);
	
КонецФункции
1
Орфографическая ошибка в russian: russian
Орфографическая ошибка в ВладелецТокена (найдено 2): Токена
Орфографическая ошибка в ТокенДоступаКСервисуMorpher: Morpher
Орфографическая ошибка в charset: charset
Орфографическая ошибка в morpher: morpher

Комментарии

Константин Аванесов
#1, 02 октября 2020 15:40

в БСП же встроена компонента для склонения. Думаю быстрее будет чем запрос на сервис да и проще в реализации.


См. также

ИР Переименовать слово

НачатьСклонение (БСП)

ЗавершитьСклонение (БСП)

ПоказатьСклонение (БСП)

ОтметитьСлово (БСП)

Новое событие ПриВыбореСловаТ9

ДоступенСервисСклонения (БСП)

ДанныеСклонения (БСП)

ПараметрыСклонения (БСП)

Модератору