Каталог решений - Пример организации HTTP сервиса на 1С: Документооборот. Источник 1С: ЕРП => Приемник 1С: Документооборот

Пример организации HTTP сервиса на 1С: Документооборот. Источник 1С: ЕРП => Приемник 1С: Документооборот

Пример организации HTTP сервиса на 1С: Документооборот. Источник 1С: ЕРП => Приемник 1С: Документооборот

В наличии

Статья — пример для разработчика, как можно, не используя подсистему Интеграция с Документооборотом, управлять процессами, а именно на нашем примере прерывать выполнение процессов в 1С: Документооборот.
Используя данный пример, можно организовать http-сервис в любой конфигурации 1С, которая поддерживает механизм HTTP сервисов.

Категория:

Описание

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С но и сторонними микросервисами. 

has been added to your cart:
Оформление заказа