1. Создаем HTTP-сервис с типом POST в 1С ДО, обзываем его МСУ_BusinessProcess.
Указываем название для Корневого URL, указываем название шаблона и метод обработки(наш обработчик на языке 1С).
2. В Обработчике описываем все то, что должно произойти по запросу из вне - фантазия на выбор разработчика безгранична. В нашем конкретном примере будем прерывать процесс по предмету.
Вернем результат запроса туда, откуда он пришел, в нашем случае в 1С: ЕРП.
Возвращаться может все, что угодно (текст, XML, json и т.д.), мы вернем текст в json
//обработчик указанный нами в http-сервисе
Функция ПрерываниеПроцессаПрерываниеПроцесса(Запрос)
Строка = "Все ОК"; //если обработка успешна, вернем как результат прерывания процесса в виде сообщения в 1С ЕРП
Возврат Новый HTTPСервисОтвет(ПрочитатьJSON(Запрос, Строка));
КонецФункции
//Обработаем запрос и вернем результат обработки в источник
Функция ПрочитатьJSON(Запрос,Строка) Экспорт
СтрокаJSON = Запрос.ПолучитьТелоКакСтроку(); //вытащим то, что указано в теле запроса
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
Массив = ПрочитатьJSON(ЧтениеJSON); //тут должны содержаться идентификаторы предметов, которые нам передали из 1С ЕРП
Для Каждого СтрокаМассива Из Массив Цикл
Предмет = Справочники.ВнутренниеДокументы.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаМассива));
Если НЕ Предмет.Пустая() Тогда
ПрерватьПроцессПоПредмету(Предмет);
КодОтвета = "200";
Иначе
Строка = "Не найден Документ с Идентификаторм "+СтрокаJSON;
КодОтвета = "404";
КонецЕсли;
КонецЦикла;
Ответ = Новый HTTPСервисОтвет(КодОтвета);
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Строка);
Ответ.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());
Возврат Ответ;
КонецФункции
Сохраняем наши изменения в базу.
Публикуем созданный нами http-сервис из конфигуратора (вебсервер, естественно, должен быть уже развернут).
3. В другой базе, например, 1С: ЕРП создаем обработку вида
4. На кнопку обработки Post вешаем обработчики
&НаКлиенте
Процедура Post(Команда)
PostНаСервере();
КонецПроцедуры
&НаСервере
Функция PostНаСервере()
//нужно что то сообщить нам как всё прошо при передачи запроса в 1С ДО
Сообщение = Новый СообщениеПользователю;
//полные параметры соединения
Соединение = Новый HTTPСоединение(
"SRV-1C" // Имя сервера (хост), иногда указывается внутри домена как SRV-1C.Local
,80 // порт, по умолчанию для http используется 80, для https 443
,"User" // пользователь для доступа к серверу (если в базе 1С к которой коннектимся есть хотя бы 1 пользователь)
,"Parol" // пароль для доступа к серверу (если в базе 1С к которой коннектимся есть хотя бы 1 пользователь)
,// здесь указывается прокси, если он есть
,// таймаут в секундах, 0 или пусто - не устанавливать
//Новый ЗащищенноеСоединениеOpenSSL() - если соединение через https
);
//каталог публикации базы + обязательно "hs" + корневой каталог + Шаблон
// Полная строка для браузера выглядит так: SRV-1C/doc_work/hs/BusinessProcess/abort_bp/
АдресРесурса = "/doc_work/hs/BusinessProcess/abort_bp/";
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "text/plain;charset=UTF-8"); //можно передать не текст а эксемель "application/xml"
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
СтрокаJSON = ПолучитьJSONСтроку(); //Сформируем JSONСтроку для передачи ее в теле запроса. Это по стути те данные, которые мы хотим передать.
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);
Попытка //отправляем данные
Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Сообщить(Результат.ПолучитьТелоКакСтроку());
Исключение
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат Ложь;
КонецПопытки;
КонецФункции
&НаСервере
Функция ПолучитьJSONСтроку()
Массив = Новый Массив;
Массив.Добавить(Строка(Заявка.УникальныйИдентификатор()));
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Массив);
Возврат ЗаписьJSON.Закрыть();
КонецФункции
Итогом данной организационной модели реализации взаимодействия двух программ становится передача в теле JSON строки с уникальным идентификатором предмета в виде Заявки на расходование денежных средств.
При обработке запроса http-сервис выполнит процедуру прерывания процессов в базе 1С ДО и вернет результат обработки запроса.
Пример можно использовать как на передачу, так и на получение запросов на исполнение, и реализовывать свои модели http-сервисов между различными системами и не только 1С<>1С но и сторонними микросервисами.