Страницы

19 ноября 2018

HTTP-сервис 1С 1 часть




Сегодня расскажу
про HTTP-сервисы, которые появились в платформе версии 8.3.5. Для работы с HTTP-сервисами необходим WEB-сервер: IIS или Apache.
    HTTP-сервисы предназначены для интеграции обмена данными со сторонними приложениями используя формат JSON.


    Содержание:
    1. Создание HTTP-сервиса
    2. Публикация HTTP-сервиса
    3. Проверка работоспособности HTTP-сервиса
    4. Отладка HTTP-сервиса
    5. Создание страницы на языке PHP для работа с HTTP-сервисом
    6. Авторизация на PHP для доступа к HTTP-сервису


1. Создание HTTP-сервиса

    Создаем пустую конфигурацию. Добавляем один справочник Оборудование, в нем больше настраивать ни чего не будем.




    Заполняем наш справочник.

    В ветке Общие / HTTP-сервисы создаем сервис СписокОборудования. В свойстве Корневой URL обязательно указываем на латинском короткое название сервиса. Это свойство отвечает за формирование URL-адреса к методам сервиса.



    На закладке Шаблоны URL добавляем шаблон ЛистингОборудования для методов. В нем создаем метод на латинском ObListAll. Он отвечает за формирование URL-адреса к этому методу. В свойстве HTTP-метод указываем GET.



    Наиболее популярные методы:
    GET: Используется для запроса содержимого указанного ресурса. То есть, когда в браузере вводим URL адрес, мы тем самым запрашиваем содержимое ресурса, к примеру yandex.ru.
    POST: Применяется для передачи пользовательских данных заданному ресурсу. Часто встречается, когда мы на сайте заполняем форму и отправляем данные ресурсу или закачиваем на сайт рисунки, фотографии.

    В свойстве Обработчик создаем новый обработчик.

Функция ЛистингОборудованияObListAll(Запрос)

     //Формируем массив оборудования

     Оборудование = Справочники.Оборудование.Выбрать();
     МассивОборудования = Новый Массив;
     Пока Оборудование.Следующий() Цикл
          ДанныеОборудования = Новый Структура;
          ДанныеОборудования.Вставить("Code", Оборудование.Код);
          ДанныеОборудования.Вставить("Naim", Оборудование.Наименование);
          МассивОборудования.Добавить(ДанныеОборудования);
     КонецЦикла
     
     //Сериализуем массив в JSON
     ЗаписьJOIN = Новый ЗаписьJSON;
     ЗаписьJOIN.УстановитьСтроку();
     ЗаписатьJSON(ЗаписьJOIN,МассивОборудования);
     СтрокаДляОтвета = ЗаписьJOIN.Закрыть();

     //Формируем ответ веб-клиенту
     Ответ = Новый HTTPСервисОтвет(200);
     Ответ.Заголовки.Вставить("Content-type","application/JOIN; charset=utf-8");
     Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета,КодировкаТекста.UTF8,
     ИспользованиеByteOrderMark.НеИспользовать);
     Возврат Ответ;

КонецФункции


2. Публикация HTTP-сервиса

     Осуществим публикацию нашего сервиса выполнив пункты меню Администрирование / Публикация WEB-сервера...

     Указываем латинское имя конфигурации - test.

     На вкладке HTTP-сервисы проверяем факт выбора созданного нами сервиса.
     Жмем кнопку Опубликовать. После публикации 1С попросит перезапустить WEB-сервер – соглашаемся. 

3. Проверка работоспособности HTTP-сервиса

     Определимся, по какому URL нужно обратиться, чтобы протестировать HTTP-сервис. 
     Строка URL HTTP-сервиса формируется как:
     HTTP://<ИмяСервера>:порт>/<ИмяКонфигурации>/hs/<КорневойURL>/<Шаблон> 

     где:
     ИмяСервера = localhost (или название вашего ПК, или доменное имя)
     Порт = 8080 (можно не указывать, по умолчанию 80 порт)
     ИмяКонфигурации = test 
     hs – означает, что обращаемся к HTTP-сервисам
     КорневойURL = ob 
     Шаблон = ObListAll 
     
     В результате получаем: http://localhost/test/hs/ob/ObListAll 
     Внимание! Путь чувствителен к регистру!

     Сформированный URL-адрес вводим в браузер. После нажатия Enter скачается файл или отобразится содержимое в формате JSON. Этот файл можно открыть блокнотом и посмотреть что он содержит.



4. Отладка HTTP-сервиса


     Для отладки кода в момент обращения клиента к HTTP-сервису, необходимо в пункте меню Отладка / Подключение открыть окно Автоматическое подключение и поставить галку в пункте HTTP-сервисы. 



     В коде метода поставить точку остановы и обратиться по адресу http://localhost/test/hs/ob/ObListAll в браузере.

5. Создание страницы на языке PHP для работа с HTTP-сервисом


     Просто по URL скачивать файл не интересно, предлагаю написать простую WEB-страницу на языке PHP для отображения полученного ответа от HTTP-сервиса. 

     Для себя определил два способа обращения к HTTP-сервисам: file_get_contents() и curl. Сurl имеет больше настроек и возможностей. В примере ниже покажу эти два варианта.

     Создаем php файл с текстом: 

<?php

//Первый способ
// Получение файла JSON используя file_get_contents($url)

$url ='http://localhost/test/hs/ob/ObListAll';

$output = file_get_contents($url, false);

/*
//Второй способ
//Получение файла JSON используя curl
//Инициализация
$ch = curl_init();

// Заполняем параметры CURL для получения данных по запросу GET

curl_setopt($ch, CURLOPT_URL, 'http://localhost/test/hs/ob/OblistAll');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


// Выполнение запроса и получение ответа
$output = curl_exec($ch);

// Проверка наличия ошибок 
if ($output === FALSE) {

    echo "cURL Error: " . curl_error($ch);

}

//Выводим сервисную информацию по выполнению запроса
$info = curl_getinfo($ch);

echo 'Took ' . $info['total_time'] . ' seconds for url ' . $info['url'];

// Очистка ресурсов
curl_close($ch);
*/

echo "<br>";
echo "<br>";

$obj = json_decode($output,true);

echo "Выводит все содержимое JSON";
echo "<br>";
var_dump($obj); // Выводит все содержимое JSON в браузер

echo "<br>";
echo "<br>";
echo "Выводит одну запись из массива JSON";
echo "<br>";
$Code = $obj[1]['Code'];
echo $Code;
echo "<br>";
$Naim = $obj[1]['Naim'];
echo $Naim;

echo "<br>";
echo "<br>";
echo "Выводит циклически из массива JSON все записи";
echo "<br>";
foreach($obj as $key => $value)
       {
foreach($obj[$key] as $key => $value)
               {
               echo $key.':'.$value.PHP_EOL;
       echo "<br>";
       }
        }
?>

     Результат выполнения




     При втором способе через  CURL можно получить сервисную информацию, к примеру время выполнения запроса и URL запроса: Took 0.016 seconds for url http://localhost/test/hs/ob/OblistAll

6. Авторизация на PHP для доступа к HTTP-сервису

     Последнее что в этой статье хочу затронуть, это авторизация HTTP-клиента на HTTP-сервисе.

     В конфигурации добавляем роль Администратор, даем ему полные права. Создаем нового пользователя Администратор с ролью Администратор и паролем 1.
     Теперь страницы написанные на PHP просто так обратиться к HTTP-сервису не смогут. Нужно выполнить авторизацию. Для этого наш код нужно дописать. Ниже представлен полный код PHP файла с возможностью авторизации на HTTP-сервисе 1С:

<?php

/*
//Первый способ
// Получение файла JSON используя file_get_contents($url)

//отправляем запрос с параметрами
$username = "Администратор";
$password = "1";
$auth = base64_encode("$username:$password"); //Создаем строку авторизации 
//по типу Basic auth, для авторизации в веб-сервисе
$context = stream_context_create([
'http' => [
'method' => "GET",
'header' => "Authorization: Basic $auth"
]
]);

$url ='http://localhost/test/hs/ob/OblistAll';

$output = file_get_contents($url, false, $context);
*/


//Второй способ
//Получение файла JSON используя curl

//Авторизация
$username = "Администратор";
$password = "1";
$host_api = "http://localhost/test";
$ch = curl_init($host_api);

// Заполняем параметры CURL для получения данных по запросу GET
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password); 
curl_setopt($ch, CURLOPT_URL, 'http://localhost/test/hs/ob/OblistAll');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


// Выполнение запроса и получение ответа
$output = curl_exec($ch);

// Проверка наличия ошибок 
if ($output === FALSE
    {
     echo "cURL Error: " . curl_error($ch);
    }

//Выводим сервисную информацию по выполнению запроса
$info = curl_getinfo($ch);

echo 'Took ' . $info['total_time'] . ' seconds for url ' . $info['url'];

// Очистка ресурсов
curl_close($ch);


echo "<br>";
echo "<br>";

$obj = json_decode($output,true);

echo "Выводит все содержимое JSON";
echo "<br>";
var_dump($obj); // Выводит все содержимое JSON в браузер

echo "<br>";
echo "<br>";
echo "Выводит одну запись из массива JSON";
echo "<br>";
$Code = $obj[1]['Code'];
echo $Code;
echo "<br>";
$Naim = $obj[1]['Naim'];
echo $Naim;

echo "<br>";
echo "<br>";
echo "Выводит циклически из массива JSON все записи";
echo "<br>";
foreach($obj as $key => $value)
       {
foreach($obj[$keyas $key => $value)
               {
               echo $key.':'.$value.PHP_EOL;
       echo "<br>";
       }
        }
?>

    P/S Было интересно разобраться в HTTP-сервисах 1С. В следующей статье поговорим о передачи параметров и методе POST. 

39 комментариев:

  1. Доброго времени! Уже организовал обмен с сайтом через HTTP сервис и JSON.
    Были интересны действия со стороны сайта, на PHP.
    Спасибо большое!

    ОтветитьУдалить
  2. Анонимный28 мая 2020 г., 22:36

    Спасибо. Очень полезно!

    ОтветитьУдалить
  3. Эта тема для меня новая, поэтому - плаваю. Большое спасибо за подробные пошаговые разъяснения.

    ОтветитьУдалить
  4. Это придумано какими-то идиотами не для людей.
    Пишут GET , т.е. 1С что-то получает из вне, а на деле она отдаёт список оборудования .....всё в этом сраном 1С наоборот, череж ЖО.

    ОтветитьУдалить
    Ответы
    1. Не работайте 1С-программистом, раз для вас это критично :)

      Удалить
  5. Здравствуйте. Не могли бы про шаблон более подробно написать? Речь идет о третьем пункте. Сделал тестовую базу как у вас в примере. При обращении по URL к http сервису "ob" даже без "/list" файл все равно скачивается. Что нужно указывать в поле "Шаблон" у шаблона? И почему вы указали "/list"?

    ОтветитьУдалить
    Ответы
    1. Спасибо за уточнения. Опечатки исправил. Попробуйте еще раз. Если останутся вопросы, пишите.

      Удалить
  6. Компании, что предоставляют интернет сообщение, все чаще реализовывают в виртуальных комплексах мощную защиту от атаки злоумышленников, детальный список можно изучить на http://www.mulesnhoney.com/2016/05/update-what-it-feel-like-to-be.html. Высокоточные брандмауэры – непоколебимая защита от внедрения кибер-преступников в рабочую интерактивную сеть. Реализовывать качественную защиту рабочего ПК обязательно с поиска проверенного поставщика интернет услуг.

    ОтветитьУдалить
  7. Платформа Hydra RU продает определенную продукцию по всей территории бывшего СССР. Площадка обладает множеством преимуществ, из которых требуется выделить достойный уровень защиты выполненных контрактов. Всякому клиенту маркета http://irsapro.ir/member.php?6636-inihixig доступен многочисленный сортамент продуктов, которые невозможно закупить в стандартном маркетплейсе.

    ОтветитьУдалить
  8. Хозяева магазина ЮнионHYDRA непрерывно обновляют действительные ссылки для авторизации на сайт. Можно применять зеркалку для организации закупок на маркетплейсе UnionГИДРА. Лишь только благодаря браузеру TOR любой клиент может пройти в даркнет. Для доступа на https://calpe-mebel.ru/communication/forum/user/9402/ придется загрузить новый браузер – TOP.

    ОтветитьУдалить
  9. Современные сборники базы антивира очень быстро просмотрят личный ПК и удалят найденные шпионские программы. Отличный антивирус очень просто скачать на сайте https://onion.hydraruzxpnew4afq.com. Программы защиты, установленные на рабочем компьютере юзера, также не помешает.

    ОтветитьУдалить
  10. Можно ли безопасно провести закрытую в интернет паутине http://freedomcenter.ru/index.php?subaction=userinfo&user=eputom

    ОтветитьУдалить
  11. Выполнив перевод юзеру дадут информацию о месте, где потребуется взять оплаченный пакет. По адресу http://ww.w.vidown.cn/bbs/home.php?mod=space&uid=450700 выставлен каталог максимально проверенных продавцов маркетплейса. Вначале нужно отыскать надлежащий продукт в одном из маркетплейсов ГидраUnion.

    ОтветитьУдалить
  12. Для закупа на http://bbs.jiakao.com/home.php?mod=space&uid=202032 используются всякие варианты интерактивных денежных средств. Более используемым типом проплат сейчас есть эфириум. Пополнение баланса требуемого юзера проводится по-своему. Интерактивные деньги начисляются на аккаунт юзера. На Hydra получают операции PayPal и дополнительно переводом смартфона.

    ОтветитьУдалить
  13. Портал «Гидра» дозволяет соратникам инета подбирать единомышленников при помощи дискуссий на заданную их тему. На платформе http://www.sadraudziba.adventisti.lv/index.php/component/kunena/3-ieteikumi/25934-2022?Itemid=0 к тому же есть великое число необходимой информации – тематические образовательные курсы, дистрибутивы и маркетплейс товаров. Доля игрушек и услуг требуют оплаты, но огромное число развлечений находятся в виде демо данных.

    ОтветитьУдалить
  14. Для доступа на гидра com зеркало Иланский требуется использовать специальный веб-браузер – TOP. Можно применять зеркало для организации закупок на торговой площадке Hidra. Специалисты поддержки проекта HydraRU ежесуточно обновляют свежие ссылки для авторизации на сайт. Только через браузер ТОР какой угодно клиент сможет попасть в даркнет.

    ОтветитьУдалить
  15. VPN позволяет закрыть верный url владельца, гарантируя максимальную конфиденциальность закупки вещей. Собственные данные посетителя автоматично остаются на защищенном серваке Hidra. Включение ВПН так же является точным вариантом верификации http://bbs.2016xiaozhuge.com/home.php?mod=space&uid=5989381 для организации определенных закупок.

    ОтветитьУдалить
  16. Не нужно забывать, что не верифицированный способ транзакции платежей не дает никакой безопасности перевода. Ни для кого не секрет, что в интернете находится более чем достаточно сайтов где возможно транзакции денег без верификации. Каждый клиент, переведя суммы на анонимный электронный адрес, не докажет законность таких манипуляций. Полный регистр скрытых виртуальных систем реально подобрать в магазине hydraclubbioknikokex7njhwuahc2l67lfiz7z36md2jvopda7nchid как зайти через гидру.

    ОтветитьУдалить
  17. огромное количество работодателей сталкиваются с проблемой закрытого перевода денег. Работа на удаленке, как пример, фриланс, практически все исполнителиЗаплатить незамеченный платеж в интернет сети не так то просто, но в то же время, вполне реально. Имеется огромнейшее множество компаний, которые позволяют переводить различные суммы фактически без возможности отследить https://onion-sait.t-hydra.com.

    ОтветитьУдалить
  18. Независимости в мировой паутине давненько нет в том виде, как раньше, к примеру, десять лет назад. Авторизация пользователей http://bbs.skymso800.com/home.php?mod=space&uid=50880 в инете потребна с целью выявления органами правопорядка преступлений. Бандиты имеют шанс выполнять темные операции с денежками пользователей.

    ОтветитьУдалить
  19. Можно ли войти на страницу крупного маркетплейса Hydra RU невидимкой https://hydra-zerkala.z-onion.net

    ОтветитьУдалить
  20. Наиболее известные платежные системы требуют полноценной проверки клиентов. Не во всех системах нужно указывать личные данные, необходимо лишь подобрать удобную платежную систему. Приобрести скрытность реально исключительно на персональной площадке https://onion.hydraruzxpnew4aif.com.

    ОтветитьУдалить
  21. Первые шаги покупки на платформе Hydra RU https://www.ligalesnimoudrosti.cz/cs/node/55185

    ОтветитьУдалить
  22. Биткоин – это обособленная схема платежей, обеспечивающая наибольшую безопасность клиенту. Отныне в наибольшей степени безопасный шанс купить анонимно в глобальной паутине – это прибегнуть к биткоину. Есть целый ряд вариаций криптографических систем для закупки услуг в сети. Довольно часто на гидра ссылка hydra переводят ETH и биткойн.

    ОтветитьУдалить
  23. Для закупа на hydraclubbioknikokex7njhwuahc2l67lfiz7z36md2jvopda7nchid hydra гидра официальный сайт принимают различные виды интерактивных денежных средств. На Hydra осуществляют проплату вебмани и дополнительно переводом на мобильный телефон. Онлайн денежные средства зачислят на аккаунт покупателя. Наиболее актуальным средством проклаты в настоящее время будет эфириум. Пополнение баланса требуемого пользователя проходит индивидуально.

    ОтветитьУдалить
  24. Охрана от вирусов, установленная на самом компьютере человека, как правило не помешает. Отличный антивирусный защитник очень просто загрузить на сайте https://online-market.u-hydra.com. Современные пакеты антивирусных паков в рекордные сроки осмотрят личный компьютер и удалят найденные программы шпионы.

    ОтветитьУдалить
  25. Огромный онлайн-магазин гидра ru расположен в невидимой сфере глобальной сети. Сотни поставщиков и приемлемые ценники – вот первые положительные обстоятельства, по которой причине покупатели скупляются на ГидраUnion. Гидра значится максимально большим маркетплейсом, где реализуют вещи специфического назначения.

    ОтветитьУдалить
  26. Для начинающих клиентов будет проблемно найти вход на торговый сайт HydraRU. Как зарегистрироваться на маркет HydraRU с ноутбука? Имеется большое множество ссылок, через которые юзер сможет залогиниться на hydraclubbioknikokex7njhwuahc2l67lfiz7z36md2jvopda7nchid тор браузер официальный сайт гидра. Действенный перечень зеркалок есть возможность запросто открыть в инете.

    ОтветитьУдалить
  27. Воспользуйтесь услугами виртуального портала «Гидра», либо зеркалом сайта, если основная страница не отвечает. Переводите денежные средства в требуемом направлении без ненужных трат, наряду с этим не открывая свои данные. Благодаря онлайн-магазину как зайти на гидру ссылка каждый пользователь может оформить скрытую денежную операцию.

    ОтветитьУдалить
  28. В случае проведения хорошей операции покупатель «рисует» продавцу необходимую оценку, для остальных покупателей это считается подтверждением для осуществления последующих операций. При назревании спора вы имеете право пожаловаться в сервис ресурса Hydra в целях решения различных проблем, тогда юзеру конечно помогут. Система реализации в маркетплейсе как оплатить на гидре 2022 формируется на положительных оценках верифицированных пользователей.

    ОтветитьУдалить
  29. Имеется большое количество вариаций сохранить собственный ПК от взлома кибер-преступников. Огромнейшее число предложений, которые пользователи увидят на страницах hydraclubbioknikokex7njhwuahc2l67lfiz7z36md2jvopda7nchid гидра семена, абсолютно практичны. Используйте блог, в котором можно получить практичные наставления специалистов. Как спастись от хакерской атаки, давайте рассмотрим парочку грамотных советов.

    ОтветитьУдалить
  30. На платформе представлено невероятно много продавцов отличного товара. ГидраРУ предлагает своим посетителям огромный перечень товаров по самым минимальной стоимости от изготовителя. Каждый первый посетитель сумеет авторизоваться на портале и защищённо выполнить покупку на конкретную сумму. Регулярным пользователям https://www.spimenova.ru/forum/user/15893/ предусмотрены накопительные программы.

    ОтветитьУдалить
  31. Есть значительное количество защищенных веб-обзорщиков, какие в режиме онлайн предотвращают эксперименты нападение на стационарный компьютер или телефона. Благодаря интегрированной протекции человек может без проблем скачивать необходимую информацию в инете. Проследить точку коннекта в сеть через ТОР вообще нет возможности. Веб-серфер для Глобальной паутины TOR присоединяется http://kf.q14.cn/home.php?mod=space&username=ykuzokys с заходом на значительное количество удаленных серверов.

    ОтветитьУдалить
  32. ТОР – отличный браузер, который рекомендуют использовать для серфинга в сети интернет. Нынешнее ПО ссылка на гидру в тор официальный сайт Ростов устанавливает качественную протекцию от злодеев. Многие из юзеров думают, что получить 100% безопасность в Мировой паутине нельзя, впрочем это является серьезным заблуждением.

    ОтветитьУдалить
  33. Анонимный14 июня 2022 г., 15:49

    Самая крупная в Белоруссии компания по реализации автомобильных перевозок Везугруз поиск попутных машин для перевозки груза

    ОтветитьУдалить
  34. Анонимный17 июня 2022 г., 06:04

    За счет специализированного функционала кровати вспомогательный персонал свободно наблюдает за пациентами. Инженерные дополнения позволят запросто поставить кровать для пациента в любом положении. Общебольничные медицинские кровати – это реальный способ решить множество вопросов с престарелыми больными. Многие типы специальных кроватей имеют пульт управления.

    ОтветитьУдалить