Http сервис отладка не работает

Отладка по протоколам HTTP и TCP/IP в 1С

Отладку можно проводить при помощи двух различных протоколов: по TCP/IP (вариант по умолчанию) и по HTTP, при этом оба протокола предоставляют достаточно похожие возможности. Собственно, эта статья и посвящена рассмотрению особенностей этих двух протоколов, также в ней рассказывается о том, что такое предмет отладки.

Кроме этого отмечу, что эта статья входит в небольшую серию статей об отладке в 1С:

Предмет отладки

Начнем с обсуждения такого понятия, как «предмет отладки». Предмет отладки — это контекст встроенного языка, который характеризуется такими параметрами как:

  • имя пользователя;
  • тип предмета отладки;
  • номер сеанса;
  • имя компьютера и номер порта при отладки по TCP/IP;
  • имя информационной базы при отладке по HTTP.

Типы предметов отладки:

  • тонкий клиент — код исполняемый в тонком клиенте;
  • веб-клиент — код исполняемый в веб-клиенте;
  • толстый клиент — код исполняемый в толстом клиенте;
  • клиент (мобильное приложение) — код исполняемый в клиентском приложении, на мобильном устройстве (только HTTP);
  • сервер — код исполняемый на сервере;
  • сервер (файловый вариант) — код исполняемый на сервере, в файловом варианте;
  • сервер (мобильное приложение) — код исполняемый на сервере, в файловом варианте, на мобильном устройстве (только HTTP);
  • COM-соединение — код исполняемый через внешнее соединение;
  • Web-сервис — код исполняемый при вызовах методов Web-сервисов;
  • HTTP-сервис — код исполняемый при вызовах методов HTTP-сервисов;
  • фоновое задание — код исполняемый в фоновом задании;
  • фоновое задание (файловый вариант) — код исполняемый в фоновом задании (в файловом варианте);
  • фоновое задание (мобильное приложение) — код исполняемый в фоновом задании (в файловом варианте) на мобильном устройстве (только HTTP).

Подключение предметов отладки зависит от выбранного протокола отладки и поэтому будет рассмотрено ниже.

Выбор протокола отладки

Выбрать протокол отладки можно в конфигураторе: Главное меню->Сервис->Параметры->вкладка «Отладка»:

Выбор протокола отладки

При выборе варианта отладки по протоколу HTTP поля диалога становятся доступными для редактирования. Этот диалог может незначительно отличаться (доступностью полей и значениями по умолчанию) в зависимости от информационной базы.

Группа «Сервер отладки» позволяет указать, каким сервером отладки нужно воспользоваться:

  • Использовать локальный сервер отладки — вариант в основном для файловых информационных баз, в дополнительных полях можно указать адрес сетевой карты (если их несколько), а также один или несколько диапазонов портов которые будут использоваться для отладки, например: 1560:1591, 7700-8000;
  • Использовать удаленный сервер отладки — конфигуратор попытается подключиться к удаленному серверу отладки по указанному адресу и порту;
  • Использовать сервер отладки кластера — используется сервер отладки кластера серверов, кластер серверов должен быть запущен в отладочном режиме.

Группа «Имя информационной базы» позволяет указать имя информационной базы, под которым отладчик зарегистрируется на сервере отладки. Если доступ к серверу отладки защищен паролем, то этот пароль можно указать в группе «Доступ».

Протокол отладки TCP/IP

При отладке по протоколу TCP/IP отладчик ищет доступные предметы отладки на текущем или указанном компьютере. Для корректной работы отладчика (если конечно речь идет не о файловой базе на одного пользователя) очень рекомендуется нормально настроить сеть — в частности DNS-сервер и доступность отладочных портов (по-умолчанию 1560:1591).

Подключение предметов отладки

Для выполнения отладки модуля нужно подключить предмет отладки. Подключенные и доступные для подключения предметы отладки, а также настройки отладчика и автоматического подключения можно увидеть в диалоге «Предметы отладки» (меню «Отладка»->»Подключение»):

Читайте также:  Stardew valley как починить вагонетки

Диалог «Предметы отладки»

В список доступных предметов отладки попадают только те из них, которые отвечают следующим требованиям:

  • отладчик и предмет отладки имеют одинаковый идентификатор информационной базы;
  • в приложении включена возможность отладки (для сервера — см. первую статью серии, для клиентского приложения — соответствующий параметр командной строки либо свойство в диалоге настройки клиентского приложения либо соответствующие указания в конфигурационном файле);
  • отсутствуют в списке подключенных предметов отладки.

«Параметры»)» width=»470″ height=»602″ srcset=»https://1c-programmer-blog.ru/wp-content/uploads/2018/10/nastrojki-klientskogo-prilozheniya.jpg 470w, https://1c-programmer-blog.ru/wp-content/uploads/2018/10/nastrojki-klientskogo-prilozheniya-234×300.jpg 234w» sizes=»(max-width: 470px) 100vw, 470px»/> Настройки клиентского приложения («Сервис»->»Параметры»)

Кнопка «Настройка…» открывается окно с настройками:

Настройки отладчика

В этом окне можно изменить отладочные порты которые будет сканировать отладчик в поисках подходящих предметов отладки. Кроме этого можно узнать адрес отладчика (строка «Отладчик:»), этот адрес пригодится при различных видах отладки в файловых базах (подробнее об этом в следующей статье).

Некоторые типы предметов отладки остаются доступными для подключения очень непродолжительное время, в этом случае нужно воспользоваться настройками автоматического подключения предметов отладки:

Настройки автоматического подключения

Настройку отладки сервисов (Web, HTTP, OData) в файловой базе следует выполнять в диалоге публикации на веб-сервере (подробнее об этом в следующей статье).

Протокол отладки HTTP

Отладка по протоколу HTTP доступна начиная с версии технологической платформы 8.3.7. При этом для отладки клиент-серверной информационной базы сервер должен быть запущен в режим отладки по протоколу HTTP, о том как это сделать читайте в предыдущей статье серии.

Основное отличие отладки по протоколу HTTP заключается в наличии специального приложения — сервер отладки, который занимается координацией процесса отладки. Отладчик и предметы отладки общаются с сервером отладки по протоколу HTTP, поэтому нужно убедиться, что протокол HTTP не блокируется какими-либо прокси-серверами, брандмауэрами или чем-то другим.

Сервер отладки

Сервер отладки обычно запускается конфигуратором (в файловом варианте) или кластером серверов (если кластер запущен в режиме отладки).

Кроме этого сервер отладки может быть запущен вручную — для реализации нетривиальных сценариев отладки.

Сервер отладки (dbgs) находится в каталоге bin, параметр —help покажет информацию об имеющихся параметрах запуска (там все довольно понятно), пример запуска:

C:\Program Files\1cv8\8.3.13.1513\bin\dbgs -a 192.168.0.170 -p 4000

Сервер отладки готов к работе

Подключение предметов отладки

Как и в случае с отладкой по протоколу TCP/IP, для выполнения отладки по HTTP требуется, что бы предмет отладки был подключен. Управления предметами отладки все также происходит в диалоге «Предметы отладки» (меню «Отладка»->»Подключение»):

Подключение предметов отладки

В список доступных предметов отладки попадают все предметы отладки зарегистрированные на используемом сервере отладки для информационной базы, имя которой указывается в настройках (см. «Выбор протокола отладки»).

Из списка доступных предметов отладки исключаются уже подключенные и не соответствующие отбору предметы отладки. Отбор можно установить в правой верхней части окна:

Отбор предметов отладки

В окне настроек отладчика можно узнать адрес сервера отладки и имя информационной базы:

Настройки отладчика (HTTP)

Для настройки автоматического подключения предметов отладки существует специальный диалог:

Настройка автоматического подключения предметов отладки (HTTP)

В левой части диалога можно указать типы предметов отладки, которые подлежат автоматическому подключению, а в правой — дополнительные отборы предметов отладки.

На этом все, надеюсь, что эта статья была Вам полезна. Также напомню про другие статьи серии об отладке в 1С, ссылки на них можно найти в начале этой статьи.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Пример создания HTTP-сервисов на платформе «1С:Предприятие»

В этой статье разбираются демонстрационные HTTP-сервисы, созданные в демонстрационной конфигурации «Управляемое приложение» для платформы «1С:Предприятие» версии 8.3.5 и старше.

Читайте также:  Чтобы настроить гитару нужен

Цель статьи – помочь разобраться с использованием технологии HTTP-сервисов и показать практическое применение некоторых неочевидных механизмов.

Демонстрационная база «Управляемое приложение» представляет собой простую конфигурацию, в которой создано большинство объектов, которые могут понадобиться при автоматизации деятельности небольшой торговой фирмы. В частности, в ней присутствует справочник «Товары». Элементами этого справочника мы будем управлять при помощи HTTP-сервиса. Такой сценарий может возникнуть, например, при интеграции с интернет-магазином или другой корпоративной ИС, в которую заносится первичная информация о товарах.

В конфигурации создано два HTTP сервиса – «Товары» и «ОписанияТоваров». Первый демонстрирует работу в REST-стиле, второй — в RPC стиле, напоминающем протокол SOAP.

Для удобства изучения описываемых HTTP-сервисов рекомендуется включить авторизацию ОС при публикации на веб-сервере и настроить пользователю с ролью «Администратор» использование windows-аутентификации от имени пользователя ОС, под которым будет проходить изучение.

HTTP-сервис «Товары»

HTTP-сервис «Товары» написан в REST-стиле. Он позволяет получать и удалять элементы и группы в справочнике товаров. Доступ к элементу осуществляется с помощью его пути в иерархии.

Например, для того чтобы получить информацию о товаре «Ряженка» с кодом 000000027, входящем в группу «Молочные» с кодом 000000099, которая входит, в свою очередь в группу «Продукты» с кодом 000000011, в браузере надо будет набрать http:// /hs/Products/000000011/000000099/000000027. Если база опубликована по пути http://localhost:8090/Platform8Demo/, то путь будет:

http://localhost:8090/Platform8Demo/ hs /Products/000000011/000000099/000000027.

Из чего состоит путь? Рассмотрим по частям:

  • http://localhost:8090/Platform8Demo/ — путь публикации информационной базы
  • hs – обязательный сегмент пути, сообщающий серверу, что будет происходить работа с http-сервисами
  • Products – строка, идентифицирующая конкретный веб-сервис. Задается свойством «Корневой URL http-сервиса» объекта метаданных веб-сервиса
  • 000000011/000000099/000000027 – путь внутри сервиса. Все допустимые пути для данного сервиса определяются совокупностью дочерних объектов метаданных «Шаблон URL».

В нашем случае у сервиса один дочерний объект шаблон URL. В свойстве «Шаблон» этого объекта записана строка “/*». Звездочка – это специальное значение, указывающее на то, что к данному шаблону подходят любые URL. В нашем случае необходимость использования такого шаблона (т.е. по сути отказа от ограничения URL) обусловлена произвольной глубиной иерархии товаров.

У нашего шаблона URL имеются два дочерних объекта, соответствующих HTTP-методам GET (получение) и DELETE (удаление). Именно в них указаны обработчики, которые будут вызываться при обращении к HTTP-сервису.

Для обработки запроса с использованием HTTP-метода GET (а именно такой будет создан, если вставить указанные выше URL в браузер) используется функция ПутьКТоваруGET. Рассмотрим эту функцию немного подробнее:

  • Функция принимает единственный параметр «Запрос», это объект типа HTTPСервисЗапрос , содержащий всю нужную нам информацию о выполняемом вызове.
  • Функция определяет путь к запрашиваемому ресурсу при помощи конструкции Запрос.ПараметрыURL[«*»] . По сути, она спрашивает: «Что в реальном URL присутствует на том месте, где в шаблоне была звездочка»?
  • Дальнейший код функции ищет элемент справочника по цепочке «00000011/000000099/000000027», используя объекты «1С:Предприятия».
  • Если в какой-то момент следующее звено цепочки не находится, то формируется ответ сервиса с кодом 404, знакомым каждому пользователю веб-браузера.

Копировать в буфер обмена

  • Если цепочка пройдена успешно и конечный элемент найден, то для него формируется XML-представление при помощи встроенной XML-сериализации. Если элемент является группой, то в ответ включается XML-представление всех непосредственных потомков.

Сформированное XML-представление используется в ответе сервиса:

Обработка HTTP-метода DELETE происходит в функции ПутьКТоваруDELETE и мало чем отличается от обработки запроса с использованием HTTP-метода GET . Стоит обратить внимание на то, что в случае DELETE используется код ответа 204, а не 200. Код ответа 204 также свидетельствует об успешном выполнении операции на сервере, но сообщает клиенту, что сервер не посылал в ответ никаких данных в теле запроса.

HTTP-сервис «ОписанияТоваров»

HTTP-сервис «ОписанияТоваров» предназначен для получения и редактирования информации о товарах. Он написан в RPC (Remote Procedure Call) стиле, похожем на SOAP. В качестве дополнительного условия также предположим, что заказчик, для которого мы разрабатываем конфигурацию, потребовал предусмотреть наличие нескольких версий API где-то в будущем.

Обращение к сервису выполняется при помощи запросов с использование метода POST к URL следующего вида:

Рассмотрим, из чего состоит путь:

  • http://localhost:8090/Platform8Demo/ — путь публикации информационной базы,
  • hs – обязательный сегмент пути, сообщающий серверу, что будет происходить работа с http-сервисами,
  • ProductDescriptions –корневой URL http-сервиса,
  • v1 – идентификатор версии. В рассматриваемой реализации всегда v1,
  • SetDescription — имя метода. В данном случае – установка описания товара. Для получения описания товара предусмотрен метод GetDescription,
  • ?Article=Kol67 – строка с параметрами запроса. В общем виде выглядит как «?Параметр1=Значений1&Параметр2=Значение2& Параметр3=Значение3» и т.д. В нашем случае единственный параметр это артикул товара.

Испытаем наш сервис. К сожалению, это нельзя сделать из браузера (браузер, если не предпринять дополнительных усилий, отправляет запрос с использованием метода GET), поэтому мы воспользуемся бесплатной программой Fiddler (http://www.telerik.com/fiddler). Для создания запроса вручную достаточно перейти на вкладку Composer .

В результате выполнения запроса на вкладке Inspectors можно будет увидеть примерно следующее (в верхней части экрана – выполненный запрос, в нижней — ответ сервера):

Видно, что сервер передал описание товара в формате html.

Рассмотрим, как реализован сервис. Объект метаданных HTTP-сервиса имеет единственный дочерний шаблон URL, в котором прописан следующий шаблон:

Т.к. у нас пока нет разных версий сервиса, сегмент с номером версии фиксирован, а вот второй сегмент может принимать разные значения, соответствующие именам методов. В коде получение имени метода выглядит следующим образом:

Обращаем внимание, что коллекция «ПараметрыURL» запроса содержит единственное значение – согласно количеству сегментов, которые могут принимать разные значение.

Аналогично извлекается артикул, только используется свойство «ПараметрыЗапроса» , а не «ПараметрыURL» .

Для возврата описания товара мы устанавливаем тело запроса:

Аналогично, для установки описания товара мы получаем его из запроса:

При установке описания из тела запроса мы проводим минимальную проверку корректности того, что прислал нам клиент, в данном случае – только типа содержимого, изучая заголовок «Content-type».

Для того чтобы протестировать установку тела запроса достаточно заполнить его в Fiddler:

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

Отладка кода HTTP-сервиса аналогична отладке код SOAP веб-сервиса. Для включения отладки нужно:

  • Разрешить отладку при публикации на веб-сервере,
  • Включить автоматическое подключение к HTTP-сервисам,
  • Установить точку останова в интересующем месте.

Разрешение отладки на веб-сервере

Для разрешения отладки на веб-сервере нужно перейти на вкладку «Прочие» диалога публикации на веб-сервере, установить флаг «разрешить отладку» и указать адрес отладчика. Для локальной отладки можно указать tcp://localhost

То же самое можно сделать вручную, исправив vrd-файл, см документацию.

Включение автоматического подключения

Для того чтобы платформа автоматически подключалась для отладки к вызываемым HTTP-сервисам нужно:

  • Открыть окно настроек автоматического подключения с помощью команды главного меню «Отладка – Автоматическое подключение» .
  • Установить флажок «HTTP-сервисы на сервере» .

Помните, что флажок следует устанавливать при каждом запуске конфигуратора, в котором требуется отладка HTTP-сервисов.

Заключение

В статье рассмотрены основные аспекты программирования HTTP-сервисов в «1С:Предприятии», в частности:

  • Шаблоны URL и параметры URL,
  • Параметры запроса,
  • Работа с заголовками,
  • Получение тела запроса,
  • Формирование ответа.

Также показано, как можно их тестировать при помощи программы Fiddler. Более полные справочные материалы можно найти в ИТС по постоянному адресу.

Источник

Оцените статью