Веб-сервис склонения Морфер полностью переведен на версию 3.0 (Подробнее о версии). Старая версия более не поддерживается. Для использования новой версии этого веб-сервиса в «1С:Документообороте» необходимо внести следующие локальные исправления:
Шаг 1.
В общем модуле Склонение представлений объектов найти фрагмент кода, представленный функциями СтруктураСклоненияЧерезЗапросКСервису и РезультатОбращенияКСервису.
Шаг 2.
Заменить этот фрагмент кода на приведенный ниже:
Функция СтруктураСклоненияЧерезЗапросКСервису(СклоняемыйТекст, ПоказыватьСообщения)
СтруктураСклонения = Неопределено;
Запрос = 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Соединение(АдресСервера, , , , ИнтернетПрокси, Таймаут, ЗащищенноеСоединение);
КонецФункции
Процедура ЗарегистрироватьОшибкуСервисаСклонений(ОписаниеОшибки, ПоказыватьСообщения)
ИмяСобытия = НСтр("ru = 'Вызов веб-сервиса склонения'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка());
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки);
Если Не ПоказыватьСообщения Тогда
Возврат;
КонецЕсли;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка при вызове сервиса склонения. Обратитесь к администратору.
|Техническая информация
|%1'"),
ОписаниеОшибки);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецПроцедуры
Шаг 3.
На сервере необходимо выполнить следующие действия:
Для ОС Windows — настроить сертификаты веб-сервиса. Обратите внимание, сертификат должен быть добавлен не для пользователя, а для учетной записи компьютера.
Выберите сертификат, открыв сайт https://ws3.morpher.ru/russian/declension?s=Пользователь в статус-строке браузера, сохраните его и добавьте в список доверенных.

Запустите оснастку Сертификаты в режиме учетной записи компьютера.



В контекстном меню папки Сертификаты выполните команду Импорт. Внимание! Не меняйте путь к хранилищу сертификатов.

Для Linux — выполните указанные команды.

Комментарии