Как отладить веб клиент 1с
1С:Предприятие 8.3. Отладка конфигурации в режиме веб-клиента
Как выяснилось не все 1С-разработчики в курсе, что выполнять отладку можно и при запуске конфигурации в режиме web-клиента. Ведь как оно бывает, в толстом и тонком клиенте все работает нормально, а при работе через браузер начинают появляться разного рода подводные камни.
Если такие проблемы обнаружились, то лучший способ от них избавиться – пройтись по коду отладчиком. Правда здесь есть один нюанс. После публикации приложения на web-сервере, в окне «Подключение отладки» не отображается сеанс, открытый из веб-клиента.
Мой приятель столкнулся с подобной проблемой и был уверен, что отладка при работе в режиме веб-клиента в «1С:Предприятие» в принципе невозможна. А ведь на самом деле это заблуждения. Выполнять отладку можно стандартными средствами.
Как выполнить отладку в режиме веб-клиента
Первым делом выполняем публикацию на веб-сервере (я для разработки использую Apache). Следующим шагом запускаем браузер и вбиваем url для доступа к базе:
Например, у меня у меня решение опубликовано под именем test, следовательно в моем случае url будет таким:
А можно и по-другому
Это далеко не единственный способ выполнять отладку веб-клиента. Указать параметры для отладчика можно:
Если не работает
Первый способ у меня работает всегда. Вот при указании URL в окне публикации решения часто возникали мистические странности. Конфигуратор периодически отказывался находить предмет отладки. Решить проблему помогал перезапуск веб-сервера. В итоге чаще я пользуюсь первым способом.
Ах, да, чуть не забыл. Если вы работаете в клиент-серверном режиме, то убедитесь, что сервер «1С:Предприятие» запущен в отладочном режиме (применяется ключ debug).
Отладка по протоколам HTTP и TCP/IP в 1С
Отладку можно проводить при помощи двух различных протоколов: по TCP/IP (вариант по умолчанию) и по HTTP, при этом оба протокола предоставляют достаточно похожие возможности. Собственно, эта статья и посвящена рассмотрению особенностей этих двух протоколов, также в ней рассказывается о том, что такое предмет отладки.
Кроме этого отмечу, что эта статья входит в небольшую серию статей об отладке в 1С:
Предмет отладки
Начнем с обсуждения такого понятия, как «предмет отладки». Предмет отладки — это контекст встроенного языка, который характеризуется такими параметрами как:
Типы предметов отладки:
Подключение предметов отладки зависит от выбранного протокола отладки и поэтому будет рассмотрено ниже.
Выбор протокола отладки
Выбрать протокол отладки можно в конфигураторе: Главное меню->Сервис->Параметры->вкладка «Отладка»:
При выборе варианта отладки по протоколу HTTP поля диалога становятся доступными для редактирования. Этот диалог может незначительно отличаться (доступностью полей и значениями по умолчанию) в зависимости от информационной базы.
Группа «Сервер отладки» позволяет указать, каким сервером отладки нужно воспользоваться:
Группа «Имя информационной базы» позволяет указать имя информационной базы, под которым отладчик зарегистрируется на сервере отладки. Если доступ к серверу отладки защищен паролем, то этот пароль можно указать в группе «Доступ».
Протокол отладки TCP/IP
При отладке по протоколу TCP/IP отладчик ищет доступные предметы отладки на текущем или указанном компьютере. Для корректной работы отладчика (если конечно речь идет не о файловой базе на одного пользователя) очень рекомендуется нормально настроить сеть — в частности DNS-сервер и доступность отладочных портов (по-умолчанию 1560:1591).
Подключение предметов отладки
Для выполнения отладки модуля нужно подключить предмет отладки. Подключенные и доступные для подключения предметы отладки, а также настройки отладчика и автоматического подключения можно увидеть в диалоге «Предметы отладки» (меню «Отладка»->»Подключение»):
В список доступных предметов отладки попадают только те из них, которые отвечают следующим требованиям:
Кнопка «Настройка…» открывается окно с настройками:
В этом окне можно изменить отладочные порты которые будет сканировать отладчик в поисках подходящих предметов отладки. Кроме этого можно узнать адрес отладчика (строка «Отладчик:»), этот адрес пригодится при различных видах отладки в файловых базах (подробнее об этом в следующей статье).
Некоторые типы предметов отладки остаются доступными для подключения очень непродолжительное время, в этом случае нужно воспользоваться настройками автоматического подключения предметов отладки:
Настройку отладки сервисов (Web, HTTP, OData) в файловой базе следует выполнять в диалоге публикации на веб-сервере (подробнее об этом в следующей статье).
Протокол отладки HTTP
Отладка по протоколу HTTP доступна начиная с версии технологической платформы 8.3.7. При этом для отладки клиент-серверной информационной базы сервер должен быть запущен в режим отладки по протоколу HTTP, о том как это сделать читайте в предыдущей статье серии.
Основное отличие отладки по протоколу HTTP заключается в наличии специального приложения — сервер отладки, который занимается координацией процесса отладки. Отладчик и предметы отладки общаются с сервером отладки по протоколу HTTP, поэтому нужно убедиться, что протокол HTTP не блокируется какими-либо прокси-серверами, брандмауэрами или чем-то другим.
Сервер отладки
Сервер отладки обычно запускается конфигуратором (в файловом варианте) или кластером серверов (если кластер запущен в режиме отладки).
Кроме этого сервер отладки может быть запущен вручную — для реализации нетривиальных сценариев отладки.
Подключение предметов отладки
Как и в случае с отладкой по протоколу TCP/IP, для выполнения отладки по HTTP требуется, что бы предмет отладки был подключен. Управления предметами отладки все также происходит в диалоге «Предметы отладки» (меню «Отладка»->»Подключение»):
В список доступных предметов отладки попадают все предметы отладки зарегистрированные на используемом сервере отладки для информационной базы, имя которой указывается в настройках (см. «Выбор протокола отладки»).
Из списка доступных предметов отладки исключаются уже подключенные и не соответствующие отбору предметы отладки. Отбор можно установить в правой верхней части окна:
В окне настроек отладчика можно узнать адрес сервера отладки и имя информационной базы:
Для настройки автоматического подключения предметов отладки существует специальный диалог:
В левой части диалога можно указать типы предметов отладки, которые подлежат автоматическому подключению, а в правой — дополнительные отборы предметов отладки.
На этом все, надеюсь, что эта статья была Вам полезна. Также напомню про другие статьи серии об отладке в 1С, ссылки на них можно найти в начале этой статьи.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Отладка мобильного клиента
Не уверен что данной информации нет, но все что находил содержало либо частичную настройку либо недостоверные / сложно реализуемые способы.
Суть проблемы: есть множество мобильных приложений и мобильных клиентов и необходимо их отлаживать как в процессе разработки так и в процессе использования, т.е. когда сами устройства где-то по стране гуляют.
Решение будет описано в контексте мобильного клиента, т.к. работа шла на нем.
Еще до отладки было необходимо реализовать подключение мобильного клиента к самой БД. Суть сборки описана тут, но есть нюанс который там не освещен нигде, а именно то, что адрес во внутренней сети и во внешней отличается. Да, это банальность, но я на нее напоролся))
При разработке приложения я подключен к корпоративному WiFi и это внутренняя сеть, т.к. публикация выполнена на сервере (IIS) во внутренней сети и адрес для подключения мобильного клиента может быть такой: http://web_server/base_name, где web_server и base_name имя сервера и имя базы соответственно.
При этом, как только происходит отключение от WiFi, то соединение уже не установится, т.к. этот адрес недоступен из внешней сети. Тогда идем к админам и просим их сделать проброс этого адресе во внешнюю сеть (у вас должен быть какой-то сайт или домен, открытый извне). Например сделали проброс внешнего адреса http://url.website/basename на http://web_server/basename. У некоторых данный способ отработает и соединение будет установлено, а вот у некоторых нет. Проблема в том, что для небезопасного соединения используется 80 порт (для защищенного 443, но там еще с сертификатами заморочки, поэтому опишу в отдельной статье) и если порт явно не указать он автоматом указывается 80, т.к. порт популярный он может быть занят. Что в этом случае сделать? Можно явно указать порт в строке соединения и уже его прокинуть на 80 порт вашего web_server’а. Например, строка соединения превращается из http://url.website/basename в http://url.website:2080/basename. На этом проблемы соединения из внешней сети ушли, однако по такой строке теперь стало невозможно подключиться из внутренней сети)) Причина всё таже, порт. Решение тоже тривиальное, хотя может и некорректное, это изменение стандартного порта web_server’а, т.е. размещение его с 80 порта на 2080. Тогда порт нужно будет указывать явно всегда, но работать такое решение будет как во внешней сети так и во внутренней.
Возможно вышеописанные действия не самые корректные, но по крайне мере это работает, а каких-то адекватных решений и разборов проблем по мобильному клиенту пока еще маловато.
П.С. Вообще в компании я запросил отдельный сервер со своим IIS для всяких мобильных приложений, поэтому с манипуляциями на этом сервере проблем не возникло, а строка подключения прописывается при сборке мобильного клиента и пользователям о ней знать не обязательно.
Если подключение мобильного клиента успешно выполнено, то у вас уже должна быть доступна отладка, но только серверной части. Естественно сервер должен быть запущен в режиме отладки, поэтому данный момент опускаем, да и материалов по этому поводу навалом, однако отладка клиента будет недоступна.
Для реализации отладки клиента мобильного приложения необходимо:
Последним шагом будет являться установка адреса сервера отладки на мобильном устройстве, которое необходимо отладить и установка признака «отладка разрешена», тоже на мобильном устройстве.
Сам путь можно посмотреть в конфигураторе, в окне настроек параметров отладки.
Пример создания HTTP-сервисов на платформе «1С:Предприятие»
В этой статье разбираются демонстрационные HTTP-сервисы, созданные в демонстрационной конфигурации «Управляемое приложение» для платформы «1С:Предприятие» версии 8.3.5 и старше.
Цель статьи – помочь разобраться с использованием технологии HTTP-сервисов и показать практическое применение некоторых неочевидных механизмов.
Демонстрационная база «Управляемое приложение» представляет собой простую конфигурацию, в которой создано большинство объектов, которые могут понадобиться при автоматизации деятельности небольшой торговой фирмы. В частности, в ней присутствует справочник «Товары». Элементами этого справочника мы будем управлять при помощи HTTP-сервиса. Такой сценарий может возникнуть, например, при интеграции с интернет-магазином или другой корпоративной ИС, в которую заносится первичная информация о товарах.
Для удобства изучения описываемых 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.
Из чего состоит путь? Рассмотрим по частям:
В нашем случае у сервиса один дочерний объект шаблон URL. В свойстве «Шаблон» этого объекта записана строка “/*». Звездочка – это специальное значение, указывающее на то, что к данному шаблону подходят любые URL. В нашем случае необходимость использования такого шаблона (т.е. по сути отказа от ограничения URL) обусловлена произвольной глубиной иерархии товаров.
У нашего шаблона URL имеются два дочерних объекта, соответствующих HTTP-методам GET (получение) и DELETE (удаление). Именно в них указаны обработчики, которые будут вызываться при обращении к HTTP-сервису.
Для обработки запроса с использованием HTTP-метода GET (а именно такой будет создан, если вставить указанные выше URL в браузер) используется функция ПутьКТоваруGET. Рассмотрим эту функцию немного подробнее:
Сформированное XML-представление используется в ответе сервиса:
HTTP-сервис «ОписанияТоваров»
HTTP-сервис «ОписанияТоваров» предназначен для получения и редактирования информации о товарах. Он написан в RPC (Remote Procedure Call) стиле, похожем на SOAP. В качестве дополнительного условия также предположим, что заказчик, для которого мы разрабатываем конфигурацию, потребовал предусмотреть наличие нескольких версий API где-то в будущем.
Обращение к сервису выполняется при помощи запросов с использование метода POST к URL следующего вида:
Рассмотрим, из чего состоит путь:
Видно, что сервер передал описание товара в формате html.
Рассмотрим, как реализован сервис. Объект метаданных HTTP-сервиса имеет единственный дочерний шаблон URL, в котором прописан следующий шаблон:
Т.к. у нас пока нет разных версий сервиса, сегмент с номером версии фиксирован, а вот второй сегмент может принимать разные значения, соответствующие именам методов. В коде получение имени метода выглядит следующим образом:
Обращаем внимание, что коллекция «ПараметрыURL» запроса содержит единственное значение – согласно количеству сегментов, которые могут принимать разные значение.
Для возврата описания товара мы устанавливаем тело запроса:
Аналогично, для установки описания товара мы получаем его из запроса:
При установке описания из тела запроса мы проводим минимальную проверку корректности того, что прислал нам клиент, в данном случае – только типа содержимого, изучая заголовок «Content-type».
Для того чтобы протестировать установку тела запроса достаточно заполнить его в Fiddler:
Отладка кода HTTP-сервиса
Отладка кода HTTP-сервиса аналогична отладке код SOAP веб-сервиса. Для включения отладки нужно:
Разрешение отладки на веб-сервере
Для разрешения отладки на веб-сервере нужно перейти на вкладку «Прочие» диалога публикации на веб-сервере, установить флаг «разрешить отладку» и указать адрес отладчика. Для локальной отладки можно указать tcp://localhost
То же самое можно сделать вручную, исправив vrd-файл, см документацию.
Включение автоматического подключения
Для того чтобы платформа автоматически подключалась для отладки к вызываемым HTTP-сервисам нужно:
Помните, что флажок следует устанавливать при каждом запуске конфигуратора, в котором требуется отладка HTTP-сервисов.
Заключение
В статье рассмотрены основные аспекты программирования HTTP-сервисов в «1С:Предприятии», в частности:
Также показано, как можно их тестировать при помощи программы Fiddler. Более полные справочные материалы можно найти в ИТС по постоянному адресу.
Антон Штырляев
Избранное ★
Публикация и отладка веб-сервисов 1С на файловой базе
1. Ставим Apache
В трее появится значок запущенного сервиса:
Если апач не работает
Если значок другой (красный кружок), то скорее всего какая-то другая программа занимает стандартный 80 порт прослушки Апача (например, скайп).
В таком случае правим файлик по адресу:
И заменяем ее на любой адрес порта:
Сохраняем файл и перезапускаем Apache (жмакаем левой кнопкой мыши):
Проверка
Проверяем работу апача в браузере по адресу
В случае, если вы изменили порт, то адрес будет таким:
Если все хорошо, то вы увидите следующее:
2. Публикация веб-сервиса
Выбираем имя, каталог для публикации, список публикуемых веб-сервисов и жмём «Опубликовать»
Внимание! Не следует в качестве пути указывать корень диска (C:\), 1C начнет чудить и удалять папки на этом диске.
Проверка веб-сервиса
Опубликованный веб-сервис будет доступен по адресу:
Вместо Test и WebServiceName подставляем указанное «Имя» в публикации и имя вашего веб-сервиса соответственно.
3. Отладка веб-сервиса
Для того, чтобы заработала отладка, нужно в файле:
Добавить следующую строку:
Должно получиться так:
Нужно создать файл с названием comcntrcfg.xml со следующим содержанием:
Обязательно перезагружаем Apache.
И в заключении нужно включить отладку веб-сервисов в конфигураторе:
Заключение
Если поставить точку останова в модуле веб-сервиса в 1С, после выполнения запроса в SoapUI — конфигуратор остановится на точке и позволит отлаживать нужный вам веб-сервис.
















