Библиотека для работы с JSON-RPC из 1С:Предприятие
Библиотека предназначена для организации взаимодействия между прикладными решениями на платформе 1С:Предприятие, а также между прикладными решениями и сторонними серверами JRPC в соответствии со спецификацией JSON-RPC 2.0.
Фактически, библиотека дает возможность из одного прикладного решения вызывать процедуры и функции общих модулей другого прикладного решения или функции стороннего JRPC сервера.
Библиотека состоит из нескольких подсистем:
БиблиотекаСерверJRPC - реализация сервера JRPC. Точка входа (endpoint) реализована с использованием механизма http-сервисов.
БиблиотекаКлиентJRPC - реализация клиента JRPC.
ТестБиблиотекаJRPC - пример использования библиотеки для взаимодействия между прикладными решениями.
Функция ОбработчикВызоваHTTPСервиса(Запрос)
// Добавляем модули и методы, вызов которых разрешен
РазрешенныеМодули = Новый Массив;
// Все процедуры/функции общего модуля ТестСерверJRPC
РазрешенныеМодули.Добавить("ТестСерверJRPC.");
// Все процедуры/функции общего модуля ТестСерверJRPC, имена которых начинаются на ФункцияJRPC
РазрешенныеМодули.Добавить("ТестСерверJRPC.ФункцияJRPC");
// Выполняем вызов, возвращаем результат
Возврат СерверJRPC.ОбработатьЗапрос(Запрос, РазрешенныеМодули);
КонецФункции
// Создаем структуру, содержащую информацию, необходимую для подключения к серверу JRPC
ТочкаПодключения = КлиентJRPC.НовыйТочкаПодключенияСервиса("http://server.contoso.com/jrpc", "Логин", "Пароль");
// Вызываем функцию общего модуля ТестСерверJRPC.ТестоваяФункция1(Строка1, Строка2), которая складывает две строки и возвращает результат
// Формируем массив параметров
ПараметрыВызова = Новый Массив;
Параметрывызова.Добавить("Hello ");
Параметрывызова.Добавить("World!");
// Вызываем
Результат = КлиентJRPC.ВызватьФункцию(ТочкаПодключения, "ТестСерверJRPC.ТестоваяФункция1", ПараметрыВызова);
// Проверяем на ошибки
Если КлиентJRPC.ЭтоОшибка(Результат) Тогда
Сообщить("Ошибка! code:" + Строка(Результат.error.code) + " message:" + Результат.error.message);
КонецЕсли;
// Вызываем процедуру общего модуля ТестСерверJRPC.ТестоваяПроцедура1
// Доступно только для взаимодействия 1С->1C
// Формируем массив параметров
ПараметрыВызова = Новый Массив;
Параметрывызова.Добавить("Вызов тестовой процедуры");
// Вызываем
Результат = КлиентJRPC.ВызватьПроцедуру(ТочкаПодключения, "ТестСерверJRPC.ТестоваяПроцедура1", ПараметрыВызова);
// Проверяем на ошибки
Если КлиентJRPC.ЭтоОшибка(Результат) Тогда
Сообщить("Ошибка! code:" + Строка(Результат.error.code) + " message:" + Результат.error.message);
КонецЕсли;