1С:Предприятие 8
Система программ

Работа «1С:Документооборота» с новой версией веб-сервиса Морфер

23 Декабря 2019
496
Рейтинг статьи
Статьи на тему: 1С:Документооборот 8

Веб-сервис склонения Морфер полностью переведен на версию 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=Пользователь в статус-строке браузера, сохраните его и добавьте в список доверенных.

Работа «1С:Документооборота» с новой версией веб-сервиса Морфер

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

Работа «1С:Документооборота» с новой версией веб-сервиса Морфер
Работа «1С:Документооборота» с новой версией веб-сервиса Морфер
Работа «1С:Документооборота» с новой версией веб-сервиса Морфер

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

Работа «1С:Документооборота» с новой версией веб-сервиса Морфер

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

Работа «1С:Документооборота» с новой версией веб-сервиса Морфер

Автор:

Работа «1С:Документооборота» с новой версией веб-сервиса Морфер

Отдел разработки программ документооборота

фирмы «1С»

Оценить статью: