При разработке и тестировании веб-сервисов в среде 1С:Предприятие часто возникает задача проверить работоспособность методов сервиса непосредственно из той же информационной базы, где он был создан. Рассмотрим подробно, как это реализовать, какие инструменты использовать и на какие подводные камни можно наткнуться. При необходимости можно воспользоваться обработкой для тестирования веб-сервисов внутри 1С.
Для взаимодействия с веб-сервисами в платформе 1С предусмотрены два основных объекта: WSОпределения и WSПрокси. Объект WSОпределения отвечает за получение описания сервиса (WSDL-файла), а WSПрокси служит «мостиком» для непосредственного вызова методов, описанных в этом WSDL.
Важно помнить, что механизм WSОпределения работает исключительно через сетевые протоколы. Это означает, что вы не можете просто «вызвать метод из памяти» — веб-сервис обязательно должен быть опубликован на веб-сервере (например, IIS или Apache), даже если вы вызываете его из той же самой базы, в которой он разработан.
Если вы столкнулись с ошибкой «Каталог не обнаружен» или «При создании описания сервиса произошла ошибка», вероятнее всего, проблема кроется в некорректно заданном URL в конструкторе WSОпределения. Давайте разберем правильный подход к коду.
Для начала убедитесь, что сервис опубликован, и проверьте адрес WSDL в браузере. Обычно он выглядит так: http://localhost/ИмяПубликации/ws/ИмяСервиса?wsdl. Если адрес открывается в браузере, значит, сервис доступен.
Теперь рассмотрим пример корректного программного вызова:
// Определяем параметры подключения
// URL должен указывать на WSDL вашего веб-сервиса
АдресWSDL = \"http://localhost/BaseName/ws/MyService?wsdl\";
Логин = \"Администратор\";
Пароль = \"12345\";
// Создаем описание сервиса
Определения = Новый WSОпределения(АдресWSDL, Логин, Пароль);
// Создаем прокси-объект для доступа к методам
// Параметры: (Описание, URI_пространства_имен, Имя_сервиса, Имя_порта)
Прокси = Новый WSПрокси(Определения, \"http://my-namespace\", \"MyService\", \"MyServiceSoap\");
// Устанавливаем учетные данные для вызова, если сервис защищен
Прокси.Пользователь = Логин;
Прокси.Пароль = Пароль;
// Вызываем метод сервиса
Результат = Прокси.GetConfigurationInfo();
WSОпределения передаются пустые строки, платформа не может найти описание сервиса. Всегда указывайте полный URL с суффиксом ?wsdl.WSОпределения, вы можете добавить в конфигуратор объект WS-ссылка. Это позволит использовать системный метод СоздатьWSПрокси(), который работает быстрее и надежнее, так как все типы данных уже закэшированы в конфигурации.Иногда удобнее тестировать сервис вне кода 1С, чтобы быстро проверить структуру входящих и исходящих параметров:
Подводя итог, можно сказать, что вызов веб-сервиса из самой базы — это отличный способ модульного тестирования. Главное — правильно настроить публикацию на веб-сервере и корректно передать параметры в объект WSОпределения. Если же логика сервиса становится слишком сложной, рекомендуем вынести код в общий модуль — так вы сможете тестировать его стандартными средствами обработки, без необходимости каждый раз обращаться к веб-серверу.