Не работает отладка веб сервиса 1с

Обновлено: 07.07.2024

Мы значительно переработали механизм отладки. Для этого было несколько причин. Во-первых, мы хотели предоставить вам возможность отлаживать все имеющиеся на сегодняшний момент приложения. Во-вторых, прежняя архитектура отладчика требовала изменений для того, чтобы соответствовать текущим тенденциям, и иметь возможность будущего развития. В-третьих, был необходим универсальный интерфейс отладки, с которым мог бы работать не только конфигуратор 1С:Предприятия, но и Development Tools.

Основные преимущества

Чтобы вы могли представить себе объём выполненных нами изменений, коротко перечислим основные преимущества нового механизма.

Современная архитектура отладки

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

Новый механизм отладки перестал нуждаться в соединении с отлаживаемой информационной базой. Главное, что требуется теперь отладчику, это такая же конфигурация, которая работает у клиентов. Для её получения нет необходимости подключаться к отлаживаемой информационной базе. Вы можете загрузить её, например, из файла.

Отладка мобильных приложений

Изменение переменных, свойств объектов и асинхронные вычисления выражений

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

Отладка в Development Tools

При создании нового механизма отладки мы реализовали новый, универсальный программный интерфейс взаимодействия с ним. Этот интерфейс использует конфигуратор 1С:Предприятия, и этот же интерфейс использует теперь и новая среда разработки 1C:Enterprise Development Tools. Таким образом, все возможности отладки доступны теперь и при работе в Development Tools.

Архитектура процесса отладки

Новая архитектура отладки выглядит следующим образом:


В отладке участвуют отладчик, предметы отладки и новый элемент - сервер отладки.

Взаимодействие с сервером отладки выполняется по инициативе отладчика и предметов отладки. Для этого организуются дополнительные соединения. Их основное назначение - узнать, не появилась ли для них информация на сервере отладки. И если появилась, получить эту информацию.

Таким образом, взаимодействие получается одностороннее. Информация всё время передаётся с сервера отладки в отладчик, и в предметы отладки.

Идентификация информационных баз

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

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

Приятным дополнительным моментом здесь является то, что мы пока сохранили в платформе старый механизм отладки (в дальнейшем он может быть исключён). И вы можете пользоваться им при желании, или при необходимости. Так вот старый механизм мы доработали, и теперь он тоже использует идентификатор информационной базы, а не строку соединения.

Типичные сценарии отладки

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

Несмотря на это имеет смысл познакомиться с тем, что происходит теперь при запуске отладки. Потому что это может быть полезно вам в каких-то нестандартных сценариях работы.

Файловый вариант

Клиент-серверный вариант

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

При запуске отладочных сеансов из конфигуратора, приложения выполняют автоматическое подключение предметов отладки (как клиентского, так и серверного) к серверу отладки.

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

Во-первых, теперь платформа предлагает вам для выбора все возможные предметы отладки.


А во-вторых, появился ещё один, более тонкий способ настройки. Это использование заранее созданных отборов.

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


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

Изменение переменных, свойств объектов и асинхронные вычисления выражений

Новый механизм отладки позволяет вам изменять значения переменных в процессе отладки. В прежнем механизме такая возможность отсутствовала.

Для удобного просмотра и изменения локальных переменных, что представляется наиболее частой задачей, мы реализовали окно «Локальные переменные».


Внешне оно очень похоже на привычное вам «Табло». Но, во-первых, это окно уже автоматически заполнено всеми локальными переменными, а во-вторых, значения переменных вы можете теперь менять.

Значения примитивных типов вы можете изменить прямо в ячейке «Значение»:


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


Приятным бонусом является то, что в этом окне полностью функционирует контекстная подсказка.


Точно таким же образом вы можете изменять и значения любых (не только локальных) переменных, свойств, доступных для записи. В окне вычисления выражений (которое вызывается командой Shift+F9) вы можете менять значения переменных как в ячейке «Значение», так и с помощью отдельного диалога.


Кстати, само вычисление выражений теперь выполняется асинхронно. Это означает, что конфигуратор заказывает вычисление предмета отладки. И некоторое время это вычисление ожидается на сервере. Если вычисление выполнено, то результаты сразу поступают в конфигуратор. Если вычисление выполняется продолжительное время, то результаты этих вычислений асинхронно приходят в конфигуратор позже. Такой подход позволяет вам не ожидать длительных вычислений в конфигураторе, и продолжить свою работу.


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

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

Так как же включить режим отладки на сервере 1С? Очень просто. Необходимо всего лишь прописать ключ -debug в строке запуска службы сервера 1С 8.3 и перезапустить данную службу. Это конечно если сервер установлен как служба, если же он запускается как самостоятельное приложение, то и указанный ключ необходимо прописать в строке запуска этого приложения. Правда такой режим запуска сервере 1С очень редкое явление и на практике встречается не часто, поэтому рассматривать его не будем.

Для того чтобы изменить строку запуска службы сервера 1С придётся зайти в реестр Windows. Для редактирования реестра используется программа regedit. Проще всего найти и запустить ее можно через быстрый доступ по комбинации клавиш Win+R.

Консоль запуска программ в Windows

В поле вводим regedit, нажимаем ОК, на вопрос системы безопасности отвечаем ДА и запускаем программу. Открываем ветку HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ services и там ищем что то похожее на 1C:Enterprise 8.3 Server Agent. Имя может отличаться в зависимости от версии установленного сервера 1С.

Включаем отладку сервера 1С 8.3 в реестре Windows

Настройка службы сервера 1С 8.3 в реестре Windows

Заходим в это раздел и находим параметр ImagePath. Открываем его на редактирование двойным кликом мыши. В поле «Значение» в конце добавляем ключ -debug и сохраняем.

Ключ -debug в строке запуска сервера 1С в реестре

Ключ -debug в строке запуска службы сервера 1С

После проверки перезапускаем службу. После этого можно проверять работу отладчика в конфигураторе 1С. Здесь можно почитать как настроить отладку в конфигураторе 1С. Если после включения отладки на сервере 1С, у вас все равно не получилось подключиться к серверным сеансам, смотрим возможные причины здесь.

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

Решением таких проблем является настройка и перенаправление запросов отладки через соединение с веб сервером, либо использование агента 1С:Link (при условии, что используется данная технология). Ниже представлены примеры настройки перенаправления запросов к серверу отладки для веб серверов Nginx и IIS , а также подключение к серверу отладки с помощью агента 1С:Link .

2. 1С:Линк

При установке агента 1C:Link и публикации сервера, на компьютере на котором расположен сам агент открывается дополнительный тунель для порта 1550 .Канал работает только для локального адреса, без возможности указания порта сервера отладки. Тунель открывается и слушает порт в не зависимости от того, запущен сервер отладки или нет.

1C:Enterprise 8.3 Debug Server (8.3.17.1091) © 1C-Soft LLC 1996-2019 - it works!

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

Настройка выполняется в конфигураторе в меню " Сервис " > " Параметры ", вкладка "Отладка":


Примените изменения и перезапустите конфигуратор.

Для проверки работоспособности сервера, откройте окно подключения предметов отладки (меню " Отладка " > " Подключение "):


Если при перезапуске конфигуратора возникла ошибка , то необходимо проверить доступность сервера и публикации, с того компьютера, на котором запущен конфигуратор.

Для подключения клиента 1С:Предприятия для отладки, необходимо в параметрах запущенного приложения (" Файл " > " Настройки ") разрешить отладку в текущем сеансе и указать сервер отладки :


После этого подключить необходимый клиент для отладки в конфигураторе.


3. Настройка веб сервера

Предполагается, что сервер отладки запущен на внутреннем сервере и работает на порту 1550 . В качестве имени внутреннего сервера, для примера, является internal. server.01 . Адрес веб сервера external. server.02. Имя ресурса debugger может быть произвольным и используется в качестве примера.

3.1. Nginx

Для того, чтобы можно перенаправлять запросы к северу отладки через Nginx , необходимо добавить в настройки описания доступных ресурсов веб сервера (конфигурационные файлы в sites-available ) следующее правило расположения в секции server:

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

После настройки конфигурационного файла убедиться, что команда nginx –t не возвращает информацию об ошибках.

1C:Enterprise 8.3 Debug Server (8.3.17.1091) © 1C-Soft LLC 1996-2019 - it works!

3.2. Настройка сервера IIS

Для того, чтобы IIS умел перенаправлять запросы, необходимо установить дополнительно компоненты « URL Rewrite » и « Application Request Routing ». Это можно сделать либо с помощью Web Platform Installer , либо вручную по следующим ссылкам:

После установки в консоли управления IIS для публикации сайта появится новый пункт меню:


Необходимо нажать на новый пункт меню и в открывшемся окне нажать кнопку «Добавить правила».

Откроется окно, в котором укажите адрес внутреннего сервера отладки (internal.server01:1550) и нажмите ОК .


Правило будет создано и его нужно будет открыть из списка правил для дополнительной настройки.

В окне настроек правила укажите следующие параметры:


Для завершения настройки осталось добавить правило перенаправления с порта 443 источника и нажать кнопку « Применить »:


После применения правила перезапустите сервер IIS .

Способ проверки работоспособности перенаправления запросов в сервер отладки, такой же как и при настройке Nginx.

4. Ссылки

1С:Предприятие. Документация :: Глава 32. Отладка и тестирование прикладных решений

В данной статье будет рассмотрены вопросы интеграции 1С с уже существующими веб-сервисами и использование самой 1С как веб-сервиса.

Далее для экономии веб-сервис будет именоваться просто сервис.

Риски использования веб-сервисов 1С

В платформе 1С81 появилась реализация веб-сервисов.

Но их использование чревато рисками:

Правила построения сервисов по продаже

Клиенту выдается документ о продаже (чек) только в том случае, если транзакция по сервису прошла успешно. Иначе возможна ситуация, когда клиент получит чек и будет пребывать в уверенности, что получил услугу, а на самом деле это не так.

Использование внешних SOAP-сервисов

Веб-сервисы SOAP используют WSDL схемы и объекты XDTO для представления данных.

Загрузка WSDL

Для того, чтобы использовать внешний сервис, нужно загрузить его WSDL-схему.

Проверка валидности WSDL-схемы


Особенности загрузки WSDL в 1С

Особенность загрузки WSDL в 1С в том, что валидные схемы могут не загружаться. Никакого встроенного валидатора нет, поэтому приходится искать ошибку методом деструктивного анализа, последовательно уменьшая количество элементов в схеме. Можно, например, удалить описание веб-сервиса.

1С не любит слово «policies». Если WS-ссылка не загружается, нужно убрать все, что связано с этим словом в любом XML-редакторе.

Обработка для тестирования работающего внешнего веб-сервиса

Для тестирования работающего внешнего веб-сервиса используйте обработку «ТестПроизвольногоВебСервиса.epf» из пакета к этой статье.


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

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

Стандартные средства отладки сервисов

Для отладки можно использовать программу SoapUI, который может передать произвольный запрос веб-сервису и получить от него ответ.

Использование 1С как сервиса

Правила разработки сервиса на базе 1С

Операция «Hello»

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

Например, можно использовать операцию Hello без параметров, которая просто возвращает булево значение Истина.

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

Задача публикации Web-сервисов сводится к размещению конфигурационных файлов *.1cws Web-сервисов в соответствующем каталоге веб-сервера с соответствующими настройками для веб сервера. Для того, чтобы выполнить публикацию Web-сервисов, следует выполнить команду меню «Администрирование | Публикация Web-сервисов».

В результате выполнения этой команды будет открыто окно публикации Web-сервисов.

Окно публикации Web-сервисов содержит путь к веб-серверу и два списка:

  • «Web-сервисы» – список Web-сервисов конфигурации;
  • «Публикация» – список Web-сервисов, опубликованных на указанном веб-сервере.

С помощью кнопки «Соединение…» следует указать веб-сервер, на котором требуется опубликовать Web-сервисы.

Окно выбора пути к веб-серверу позволяет указать путь двумя способами:

  • на закладке «Файлы» – этот способ используется в том случае, когда публикация выполняется на том же компьютере, на котором установлен веб-сервер. В качестве пути указывается локальный каталог, соответствующий интернет-странице, с которой будет выполняться вызов публикуемого Web-сервера;
  • на закладке «FTP сайт» – этот способ используется в том случае, когда требуется опубликовать Web-сервис на удаленном компьютере. Для выполнения публикации необходимо указать параметры FTP-соединения с удаленным компьютером и каталог, в котором будет опубликован Web-сервис.

Публикация выбранного Web-сервиса осуществляется с помощью кнопки «Опубликовать»

Для отмены публикации Web-сервиса используется кнопка «Удалить».

Для обновления списка опубликованных Web-сервисов используется кнопка «Обновить текущий список».

Публиковать можно в локальном каталоге или по FTP. Можно публиковать и на удаленный сервер по UNC-пути, если удаленный сервер входит в локальную сеть.


Авторизация к веб-сервису 1С

Для доступа к сервису нужно пройти аутентификацию.

Обычно веб-сервис работает под одним конкретным пользователем (чаще - специально созданным). Можно пользователя 1С "прикрепить" средствами Windows-аутентификации к пользователю Windows IUSR_ (для пользователя отключить авторизацию 1С). Как вариант, можно очистить список пользователей 1С, тогда авторизация не требуется.

Если требуется несколько пользователей, то можно создать несколько логинов для веб-сервера, к каждому из них привязать пользователя Windows и соответственно, прописать в 1С доступ к пользователям Windows.

В свойствах Пользователь и Пароль объекта WSПрокси используется не логин 1С, а логин пользователя веб-сервера.

Тестирование веб-сервиса 1С

Для тестирования 1С как веб-сервиса используйте обработку «ТестПроизвольногоВебСервиса.epf», как описано в разделе «Тестирование работающего внешнего веб-сервиса».

Файл 1cws и является WSDL-описанием веб-сервиса 1С.

Использование сервисов в Рознице

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

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

Сервис может быть по-разному интегрирован в розничную программу, написанную на языке 1С (УТ, Розница и другие):

  1. Может быть написана обработка или код на языке 1С, который выполняет всю работу с сервисом.
  2. Может использоваться программа, которая работает с сервисом, а в 1С передает только информацию для пробития чеков.

Организация служебных данных в 1С

Для хранения информации о транзакции в чеке необходимо создать дополнительную табличную часть «Сложные продажи» с реквизитами:

  • Номенклатура – привязка к номенклатуре чека.
  • Параметр - ссылка на справочник «Сложные продажи: Параметры».
  • Значение – значение параметра, составного типа. Строковое представление должно быть довольно длинным (1024 символа), чтобы помещался текст чека.

Справочник «Сложные продажи: Параметры» содержит перечень параметров транзакции.

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

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

Использование обработок на языке 1С

Рассмотрим на примере условной услуги Paym для конфигурации «Розница».

Отдельный вопрос – как обеспечить завершенность транзакции. Т.е. если транзакция прошла в сервисе, как сделать, чтобы она не потерялась в 1С. Наиболее оптимальный путь – сверка реестров. Но это предмет отдельного рассмотрения.

Использование программ, интегрируемых с 1С

Часто в веб-сервисах используется XDTO. Приведем наиболее важные советы и рецепты по использованию XDTO в 1С.

XDTO в платформе 1С

XDTO-пакеты, описанные в ветке «XDTO-объекты» конфигурации, доступны для создания типов и объектов в глобальной фабрике Фабрика XDTO. Это не сразу становится очевидным.

Некоторые типы в схеме не имеют имени, чтобы их получить, надо пройтись по иерархии типов.

В примере был описан список System, содержавший структуры XDTO. Чтобы создать саму структуру, нужно было получить ее тип таки вот образом:

Частые проблемы с XDTO

Разные форматы XSD-схем

В некоторых форматах теги называются xs:, в некоторых xsd:, но 1С благополучно понимает оба формата. Однажды была ситуация, что XSD нормально без ошибок импортировалась в 1С, но не создавала ни одного пакета. Причина была в отсутствии атрибута targetNamespace у тега , соответственно 1С не знала, в какой пакет помещать схему, но ошибок не выдавала.

Сопровождение сервисов

Учитывая, что сервис – это совокупность двух систем – 1С и внешней, ошибки могут быть в обоих системах, что снижает общую надежность работы.

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

Протоколирование запросов

Рекомендуется сохранять все запросы и ответы на них в каталог программы, файлы сохранять в папки вида ГГГГММДД по дням. Это очень способствует пониманию причин проблем.

Читайте также: