Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

HTTP запросы в 1С 8.3: примеры GET и POST запросов

В платформе 1С 8.3 и 8.2 реализована возможность использования HTTP запросов, а именно GET и POST запросов. Это очень удобный инструмент для реализации обмена данными с различными веб-ресурсами, взаимодействия с веб-сервисами и прочими службами или системами.

GET запросы в 1С 8.3

Самым распространенным HTTP запросом является GET запрос. Как правило, данный запрос используется для получения какого-либо ресурса или содержимого указанного ресурса. Например, файла.

Принцип работы GET запроса очень прост. После соединения с сервером происходит отправка заголовка запроса, и, если запрос одобрен, отправителю возвращается ответ, содержащий тело с содержимым запрашиваемого ресурса.

Отличительной особенностью GET запроса является отсутствие тела запроса, наличествуют только заголовки.

В качестве примера рассмотрим получение GET запросом логотипа нашего сайта https://programmist1s.ru и сохранение его на диске.

Для начала рассмотрим вопрос, как же нам сформировать сам текст запроса. На самом деле в отношении файла с картинкой это совсем не сложно. Воспользуемся инструментами браузера. Я буду использовать Оперу, в Вашем браузере процесс может несколько отличаться, но принцип один.

Итак, нажимаем правой кнопкой мышки на логотип и выбираем «Посмотреть код элемента»:

просмотреть код элемента

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Откроется окно с кодом, где нас интересует тэг img src= и далее адрес картинки:

получение url адреса

Вот этот адрес и нужно скопировать. В разных браузерах по-разному можно это сделать, в Опере это проще всего сделать, перейдя сначала в режим редактирования (правая кнопка мышки – Edit attribute).

Получили вот такую строку: https://programmist1s.ru/wp-content/themes/govpress-new/images/GOODWILL.png

Теперь разберем ее на две части:

  • https://programmist1s.ru – это наш сервер;
  • /wp-content/themes/govpress-new/images/GOODWILL.png – это и есть текст запроса.

Теперь можно переходить к написанию кода. Я приведу весь код сразу, целиком. А пояснения будут в комментариях. Готовую обработку можно скачать здесь.

&НаКлиенте
Процедура ВыполнитьЗапрос(Команда)
// Создаем HTTPСоединение, указываем сервер
Соединение = Новый HTTPСоединение(СерверДляЗапроса);
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
// Запросим имя файла, который будет сохранен. По умолчанию расширение png
СтрФильтр = НСтр(«ru = ‘Файл'») + «(*.»+»png»+»)|*.»+ «png»;
ДиалогОткрытияФайла.Фильтр = СтрФильтр;
ДиалогОткрытияФайла.Заголовок = «Укажите имя файла»;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
Если ДиалогОткрытияФайла.Выбрать() Тогда
// Выполнить GET запрос:
Соединение.Получить(ТекстДляЗапроса, ДиалогОткрытияФайла.ПолноеИмяФайла);
Сообщить(«Удачно выполнен GET запрос!»);
Иначе
Сообщить(«Не выбран файл!»);
КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СерверДляЗапроса = «programmist1s.ru»;
ТекстДляЗапроса = «/wp-content/themes/govpress-new/images/GOODWILL.png»;
КонецПроцедуры

Как видим, все достаточно просто. Фактически, мы создаем HTTP соединение, а затем отправляем запрос и сохраняем ответ в файл:

пример обработки для http запросов

POST запросы в 1С 8.3

POST запросы кроме заголовков могут содержать еще и тело. Тем самым они предоставляют гораздо большие возможности, чем GET запросы. Они широко применяются, например, для авторизации на ресурсе и последующих действий. Также с помощью POST запросов можно запускать сложные процессы, зависящие от входящих данных, и так далее. Кроме того, POST запросы бывают двух типов:

  • SOAP;
  • JSON.

Практический пример я рассматривать не буду, так как область применения POST запросов очень обширна и, как правило, связана со сложными процессами, достойными отдельной разработки. Я дам лишь пример общей схемы работы с такими запросами. Если у Вас возникнут вопросы или затруднения, мы всегда рады ответить на вопросы или выполнить разработку под заказ.

Итак, отправка POST запроса средствами платформы 1С: Предприятие 8.3 осуществляется следующим образом:

&НаКлиенте
Процедура ВыполнитьЗапрос(Команда)
// Создаем новое HTTP соединение с указанием сервера
// Последний параметр отвечает за использование защищенного соединения
HTTP = Новый HTTPСоединение(ИмяСервера,,,,,Истина);
// Получим временный файл для передачи в теле POST запроса
ФайлТелаЗапроса = ПолучитьИмяВременногоФайла();
// Запишем в файл содержимое тела запроса (текст)
ТекстФайл = Новый ТекстовыйДокумент;
ТекстФайл.УстановитьТекст(ФайлТелаЗапроса);
ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI);
// Получим размер данных для передачи в заголовок
ФайлНаОтправку = Новый Файл(ФайлТелаЗапроса);
РазмерФайлаНаОтправку = XMLСтрока(ФайлНаОтправку.Размер());
// Получим временный файл — тело ответа POST запроса
ФайлРезультат = ПолучитьИмяВременногоФайла();
// Заголовок создадим в виде соответствия
ЗаголовокЗапросаHTTP = Новый Соответствие();
// Передаем в заголовках размер и тип данных на отправку
ЗаголовокЗапросаHTTP.Вставить(«Content-Length», РазмерФайлаНаОтправку);
ЗаголовокЗапросаHTTP.Вставить(«Content-Type», «application/json; charset=utf-8»);
// Отсылаем POST запрос на обработку.
// СсылкаНаРесурс — ссылка на веб-сервер (страницу), к которой посылается POST запрос
HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультат, ЗаголовокЗапросаHTTP);
// Получим ответ
ТекстовыйФайлОтвета = Новый ТекстовыйДокумент;
ТекстовыйФайлОтвета.Прочитать(ФайлРезультат, КодировкаТекста.UTF8);
СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст();
КонецПроцедуры

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 8 на “HTTP запросы в 1С 8.3: примеры GET и POST запросов
  1. спасибо!!!

    Ответить

  2. body=$(cat << EOF
    {
    "order": {
    "units": "100",
    "instrument": "EEEEUR",
    "timeInForce": "FOK",
    "type": "MART"
    }
    }
    EOF
    )
    curl \
    -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer » \
    -d «$body» \
    https://api-fxt.ruda.com/v3/accounts//orders

    Есть POST запрос на Curl.
    Как это сделать в 1С через POST запрос? Точнее, как сформировать файл с содержимым body?

    [email protected]

    Ответить

    • Значение1С = Новый Структура;

      Значение1С.Вставить(«units»,»100″);
      Значение1С.Вставить(«instrument»,»EEEEUR»);
      Значение1С.Вставить(«timeInForce»,»FOK»);
      Значение1С.Вставить(«type»,»MART»);

      Ответить

    • Потом перевести строку в json
      Через «ЗаписатьJson»

      Ответить

  3. подсветка синтаксиса 1С в CMS WordPress:

    https://infostart.ru/public/302538/

    Ответить

  4. // Запишем в файл содержимое тела запроса (текст)
    ТекстФайл = Новый ТекстовыйДокумент;
    ТекстФайл.УстановитьТекст(ФайлТелаЗапроса);

    А где запрос? В файл записали имя временного файла, как я пнял. зачем?

    Ответить

  5. HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультат, ЗаголовокЗапросаHTTP);
    Откуда 4 параметра? в СП всего 2…

    Ответить

  6. Добрый день

    Есть ссылка http://sait2/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV&p_com=30274&p_reestr_format=xls&p_action=Пуск

    При выполнении в браузере по ней открывается форма отчета и сразу формируется Exel файл

    СерверИсточник = «sait2»;
    Адрес = Новый HTTPЗапрос(«/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV&p_com=30274&p_reestr_format=xls&p_action=Пуск»);
    ИмяВходящегоФайла = C:\1\1.xls;
    НТТР = Новый HTTPСоединение(СерверИсточник);
    НТТР.Получить(Адрес, ИмяВходящегоФайла);
    ВходящийФайл = Новый Файл(ИмяВходящегоФайла);

    При выполнении, в файл сохраняется только форма с параметрами, а не сам готовый отчет

    Надо что бы при запуске из один 1С формировался файл отчета и сохранялся на диск

    В чем может быть проблема?

    Это ссылка на получение отчета из базы оракл и
    и в базе так же происходит работа через internet explorer

    может надо другим способом запускать формирование файла отчета?

    Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.