понедельник, 22 октября 2012 г.

1С:Предприятие 8. Веб-сервисы. Публикация и тестирование

Содержание статей: 1С:Предприятие 8. Веб-сервисы
Предыдущая статья: 1С:Предприятие 8. Веб-сервисы. Написание кода веб-сервиса

Публикация веб-сервиса - это процесс настройки веб-сервера (Apache или IIS) на работу совместно с Платформой 1С. То есть, после публикации, ваш веб-сервер станет посредником между клиентом веб-сервисов и базой 1С. При этом веб-сервер, а точнее менеджер сервисов 1с, запущенный в процессе веб-сервера, будет заниматься слежением за соединениями с информационной базой, приемом запросов от клиентов, поддержкой WSDL описания, сериализацией сообщений, реализацией протоколов SOAP.



Обязательным условием для   публикации является наличие установленного веб-сервера и установленные модули расширения веб-сервера. Модули расширения веб-сервера устанавливаются из инсталлятора платформы 1С. Веб-сервер Apache можно скачать по ссылке:  httpd-2.2.25-win32-x86-openssl-0.9.8y.msi или найти другую версию на странице загрузки. Про установку Apache довольно много статей, думаю установить ее не составит проблем.

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

Публикацию веб-сервисов можно выполнять и на ОС Linux и на ОС Windows. Я работал пока что только с Windows, потому расскажу про нее.

Публикация на ОС Windows

Если для публикации веб-сервиса на Linux не обойтись без командной строки(8.3 пока еще бета), то для публикации на Windows достаточно конфигуратора 1С.
Откройте конфигуратор и зайдите в меню "Администрирование - Публикация на веб-сервере...".

Публикация и тестирование веб-сервисов 1с на Apache

Появится окно "Публикация на веб-сервере".

Публикация и тестирование веб-сервисов 1с на Apache

"Имя" - это имя публикации. Если бы можно было представить "сайт" 1С как папку на вашем веб сервере, то путь к этой папке в браузере как раз бы определялся как имя сервера / имя публикации. То есть ссылка на веб-клиент выглядит так:

http://имя сервера/имя публикации

Примечание: при использовании в качестве веб-сервера Apache все ссылки веб-клиента будут регистрозависимыми. То есть в данном случае при переходе по ссылке

http://имя сервера/forCodeNotesBlog
браузер не найдет такой страницы.
Имя публикации определяется именно этим полем. В имени публикации вы можете использовать только латинские символы, иначе платформа ругнется.

"Веб-сервер" - это список выбора веб-сервера из установленных на данный момент веб-серверов на текущей машине. Если вы установите веб-сервер Apache то он появится в этом поле автоматически.

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

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

"Публиковать Web-сервисы" - указывает, будут ли опубликованы ваши веб-сервисы.

После заполнения всех полей нажмите кнопку "Опубликовать" и веб-сервис будет опубликован.

Теперь можно воспользоваться свои веб-сервисом. После публикации я для начала смотрю формируется ли описание WSDL. Чтобы его получить достаточно браузера. Ссылка на описание WSDL формируется по следующему принципу:

http://имя сервера/имя публикации/ws/имя веб-сервиса?wsdl

То есть в нашем случае ссылка будет выглядеть так:


http://192.168.1.100/ForCodeNotesBlog/ws/WebService?wsdl


Если WSDL сформировался, то это хороший знак). 
Для вызова веб-операции потребуется какой нибудь клиент. Можно написать клиент в среде 1С. Ранее я писал как это можно сделать и выкладывал обработку для работы с любыми веб-сервисами. Вот эта статья: 1С:Предприятие 8. Веб-сервисы. Классы Платформы 1С для вызова операций веб-сервиса.
Но сейчас мы рассмотрим более качественный продукт, чем самописная обработка - это кросстлатформенная система для работы с веб-сервисами soapUI(http://www.soapui.org).

Публикация и тестирование веб-сервисов 1с на Apache - soapUI


Имеется платная и бесплатная версия программы. Нам достаточно будет бесплатной. Скачать ее можно по ссылке http://sourceforge.net/projects/soapui/files/

Ну что же. Давайте вызовем нашу веб-операцию. Для этого программе надо указать описание нашего веб-сервиса. В левой части программы есть дерево проектов. Нажмем по корню дерева правой кнопку и вызовем команду "New soapUI project".

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Появится окно ввода ссылки или файла с описанием веб-сервиса.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Укажите название проекта и ссылку на WSDL файл. На форме так же присутствует набор галочек, для формирования тестов. Но в этой статье мы рассмотрим только вызов веб-операций.
Если в вашей базе есть пользователи, то доступ к описанию веб-сервиса будет происходить с запросом логина и пароля. После нажатия на OK вы получите предложение ввести логин пароль пользователя, который имеет доступ на использование. Скажу так: любой пользователь базы данных, даже тот у которого нет ни одной роли, имеет право прочитать описание веб-сервиса. Именно описание WSDL, на выполнение веб-операций у него не будет прав.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI


Нажмите ОК и в дереве проектов вы увидите свой веб-сервис. 

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Почему это дерево называется деревом проектов а не деревом веб-сервисов? Потому что помимо структуры вашего веб-сервиса он содержит ветки настроек, тестов, запросов и прочего. Например если вы развернете дерево и найдете свою операцию, то заметите что у нее уже создан один запрос (Request1). Этот запрос содержит SOAP сообщение. Если по нему щелнкуть мышкой два раза то вы увидите новое окно, изображенное на рисунке выше.
Левая часть окна содержит SOAP сообщение запрос, правая будет содержать в себе результат веб-операции. Вместо вопросительных знаков укажите свои значение параметров и нажмите кнопку "Submit request to specified endpoint URl", изображенное в виде зеленой стрелочки.
После нажатия на эту кнопку в правом окне будет возвращен результат веб-операции.

Примечание: в платной версии soapUI имеется возможность редактирования SOAP сообшения привычными способами - ввоз данных в поля, вместо редактирования XML.

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

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

В поле "Authorisation Type" необходимо указать "Preemptive".

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

И ввести логин пароль пользователя базы данных, который имеет право на исполнение этой веб-операции.
Публикация и тестирование веб-сервисов 1с на Apache - soapUI

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

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

На приведенных выше изображениях, вы видите результат исполнения, описанной в других статьях, операции Plus2. Мы видим, что на выполнение операции ушло 1243 миллисекунд, что довольно много на операцию сложения. Объем переданных данных - 316 байт.

Примечание: для тестирования веб-сервисов у разработчиков soapUI есть еще одно бесплатное приложение - loadUI.

Допустим у вас есть веб-операция, имеющая операнд тип datetime. При выполнении обязательно указание даты и вы не можете указать пустое значение. Дата указывается в определенном формате:

ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм
либо
ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс
либо
ГГГГ-ММ-ДДTЧЧ:мм:СС

Пример:
2012-09-14T00:00:00.000+02:00

Возможно есть еще форматы записи для поля типа datetime. Причем формат ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм содержит в себе данные о часовом поясе отправителя запроса. Если веб-операция на 1С получает такое значение, то она считает это время местным временем отправителя и преобразует в свое местное время. Данный пример, а так же как указать значение null более подробно описаны в статье 1С:Предприятие 8. Веб-сервисы. Написание кода веб-сервиса.
Тип число тоже требует обязательного указания значения - хотя бы нуля.

95 комментариев:

  1. Вовремя я на эту статью наткнулся. Сейчас, как раз работаю с веб-сервисами.

    ОтветитьУдалить
  2. "Публиковать Web-сервисы" у меня почему то не активна, что это может быть?

    ОтветитьУдалить
    Ответы
    1. Либо нет веб сервисов, либо есть но на основной конфе, то есть не обновлена конфа базы даннх.

      Удалить
    2. добрый день у меня также не активна кнопка Публиковать Web-сервисы. Конфигурация УТ для Казахстана 2,2,13,9. аналог УТ 10.3. Как можно узнать, что нужно для того что бы опубликовать веб сервис либо она в ней не поддерживается? Заранее благодарен за ответ!!!

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

      Удалить
    4. Если этот пункт недоступен, то нужно переустановить платформу 1с 8, выбрав на одном из этапов добавление соответствующих компонентов.

      Удалить
  3. Владимир огромное Вам спасибо за описание!
    Подскажите пожалуйста начинающему "тестировщику" web-сервисов:
    необходимо протестировать Web-сервис которому в качестве параметра передается xml-строка. Как в soapUi ввести такой параметр?
    Заранее огромное спасибо!

    ОтветитьУдалить
  4. Вопрос снят: используется конструкция

    ОтветитьУдалить
  5. Жду продолжение... Публикация на ОС Linux

    ОтветитьУдалить
  6. Анонимный11 марта, 2013 15:13

    Спасибо за статью.
    Владимир вопрос есть. У меня почему-то при подключении через soapUI идёт запрос на виндовую авторизацию а не basic. В итоге подключится не могу. С чем это может быть связано? Все перерыл, все права раздал но все равно не подключается. ((

    ОтветитьУдалить
    Ответы
    1. Вообще аутентификация средствами винды к веб сервисам возможно только если вы публикуете веб-сервис на веб сервере IIS. Тогда при публикации надо снять галочку "Использовать аутентификацию операционной системы на веб-сервере".

      Если вы публикуете на апач, то будет обычная аутентификация. Это можно проверить, если обратиться через браузер к WSDL веб-сервиса. Тогда возможно soapUI прочит у вас логин пароль не от веб-сервиса, а, допустим, от корпоративного прокси или еще куда. При вводе логина пароля вам должно быть написано к какому ресурсу вводите логин пароль.


      Удалить
  7. Добрый день. У меня вопрос о публикации базы 1С на Web-сервер.
    1С v8.2.18.61. Установил все компоненты в инсталляторе. Модули расширения веб-сервера, сервер 1с и пр. Сделал публикацию через конфигуратор. Все прошло без ошибок. Захожу в базу через Web-интерфейс появляется окно выбора пользователя, выбираю заходит в программу и пустое окно с панелью инструментов, нет ничего, как-будто пустая конфигурация. Через тонкий клиент - все нормально. Пробовал и через IIS и через апач, на win7 и на win2008 одно и тоже. Что не так, подскажите?

    ОтветитьУдалить
    Ответы
    1. Боюсь что это глюк платформы. Если уж пароль запрашивается, то все настроено правильно.

      Удалить
  8. Анонимный03 июня, 2013 16:24

    Здравствуйте. Я опубликовала веб-сервис. Описание WSDL сформировалось. В соапе добавила проект, ввела название , указала ссылку на WSDL. Ввела логин и пароль и вот что получается: WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'. Подскажите пожалуйста в чем может быть проблема.

    ОтветитьУдалить
    Ответы
    1. А вы можете прислать ссылку на WSDL?

      Удалить
    2. Надо Имя пользователя в 1C английским делать

      Удалить
  9. Анонимный10 июня, 2013 21:37

    Спасибо Вам большое за статью. Очень помогла ...

    ОтветитьУдалить
  10. спасибо, все понятно и четко

    ОтветитьУдалить
  11. Добрый вечер коллеги
    Сегодня столкнулась с проблемой, в которой самостоятельно разобраться не могу-можеть быть что-нибудь посоветуете?
    Есть 2 базы 1С, на разных серверах: источник и приемник.
    В приемнике работает фоновое задание, которое регулярно обращается к веб-сервису источника за данными. На днях у клиента произошел какой-то сбой с интернетом, в результате: если обращается фоновое задание за данными-возникает ошибка:"{ОбщийМодуль.ОперативныйОбмен.Модуль(236)}: Ошибка при вызове метода контекста (ДанныеОПоследнейЗагрузке): Ошибка вызова операции сервиса: {http://ss.ru/OperativObmen}:ОперативныйОбмен:ДанныеОПоследнейЗагрузке(): Ошибка HTTP: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 ......"
    Если же все процедуры, выполняемые в фоновом задании, перенести во внешнюю обработку и просто ее запустить с клиента-все работает. Через SoapUI так же все работает без ошибок.
    Какие настройки каких учетных записей могут быть причиной того, что когда выполняется запрос с сервера в фоновом задании-возникает ошибка?

    ОтветитьУдалить
    Ответы
    1. Обычно сервер 1С работает от пользователя по-умолчанию USR1CV82. Но может быть и другой, самое простое вы под ним зайдите в систему и может сразу заметите не ладное - инет не будет работать, нет прав на папку, брандмауэр проверьте. Если все ОК попробуйте сменить в службах Windows пользователя от которого запускается сервер 1С на пользователя с максимальными правами - если сработало, то проще создать нового пользователя и не париться. У меня такое было однажды, правда не с веб-сервисами - просто не было прав на определенную папку.

      Удалить
    2. Пользователя USR1CV82 проверили - если войти в систему под ним-картина та же самая: тест через SoapUI работает, фоновое задание нет.
      Проблема была решена следующим образом: в файле inetcfg.xml "приемника" добавили IP "источника" в список адресов, для которых прокси не используется.
      Может быть кому-нибудь пригодится

      Удалить
  12. А что делать если всё публикуется, но WSDL не формируется?

    ОтветитьУдалить
    Ответы
    1. WSDL вообще пустой или с ошибками?

      Удалить
    2. Эм.. ну я ввожу http://192.168.1.100/MyBase/ws/WebService?wsdl
      выдает ошибку, мол не обнаружен папка, а в папке MyBase лежит только один файл.

      Удалить
    3. Проверьте что база у вас открывается по адресу http://192.168.1.100/MyBase
      а веб сервис в конфигураторе называется "WebService". Если это так, то WSDL должен формироваться.

      Удалить
    4. Попробовал http://192.168.1.100/MyBase
      выдает ошибку
      Ошибка HTTP 401.3 - Unauthorized
      Вы не имеете разрешения на просмотр этого каталога или страницы в связи с конфигурацией списка управления доступом (ACL) или с настройками шифрования для данного ресурса на веб-сервере.

      Стоит правда не Apache, а IIS.
      Как быть?

      Удалить
    5. Но если создать файлик index.html, он прекрасно открывается по указанному выше адресу...

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

      Что-то не доделал?

      Удалить
    6. Мне так трудно сказать. А что за сайт, что за задание?

      Удалить
    7. Цитирую:
      Для подключения 1С от вас необходим уже настроенный и работающий веб-сервис. Вы должны прислать нам ссылку на WSDL описание веб-сервиса. В котором уже должны быть реализованы методы из документации http://docs.abcp.ru/wiki/Dataexchange.view_orders

      Я загрузил эти xdto-пакеты, создал вебсервис, указал там эти пакеты и опубликовал.

      Удалить
    8. хм.. кажется надо добавить операции с параметрами.. но как их тогда связать с xdto-пакетами... был бы очень признателен за помощь..

      Удалить
    9. Посмотрите эту базу: http://yadi.sk/d/VRokHb0X7MwMa
      Скорее всего у веб сервиса вы не указали пространство имен, поэтому он вам не публиковал его.

      Удалить
    10. о. спасибо за помощь.
      я так понимаю аналогичным образом нужно добавить остальные операции, так же как GetListOrders..

      кстати, почему пространство имен именно http://ghostaz.no-ip.org ?
      (я указывал www.URI.com) эм.. URI это имя нарицательное?)
      перечитал еще раз про пространство имен, понял что это что-то вроде уникального идентификатора.. с другой стороны это должна быть работающая ссылка?

      Удалить
    11. По моему, по рекомендациям W3C пространство имен должно быть URI, о том что она должна работать ничего не сказано. А в 1С можно вообще русское предложение написать и он будет работать. Правда не проверял какие могут быть ошибки потом)
      Да, это скорее уникальный идентификатор области в которых определены переменные. Например если посмотрите схемы с того же сайта, order содержит различный состав полей для различных пространств имен.

      Удалить
    12. Всё-таки проблема осталась.
      Если ввожу http://192.168.1.100/MyBase/

      Описание ошибки:
      Ошибка HTTP 403.14 - Forbidden
      Веб-сервер настроен таким образом, чтобы не формировать списка содержимого каталога.


      Если ввожу в браузер http://192.168.1.100/MyBase/ws/WebService?wsdl

      Ошибка HTTP 404.0 - Not Found
      Разыскиваемый вами ресурс был удален, было изменено его имя или он временно недоступен.

      В папке MyBase лежит только файл default.vrd

      Удалить
    13. У меня нет опыта по настройке IIS, потому тут не могу подсказать.

      Удалить
    14. 1)в свойствах папки на вкладке безопасность нужно установить разрешения для пользователя IUSR
      2)если Win x64 (у меня 7-ка), то в настройках пулов IIS, доп.параметры - нужно включить поддержку х32 (выставить значение TRUE)

      Удалить
    15. У вас так http://192.168.1.100/MyBase/ws/WebService?wsdl
      а должно быть так http://192.168.1.100/MyBase/ws/WebService.1cws?wsdl
      ".1cws" поставьте после названия сервиса

      Удалить
    16. Анонимный07 мая, 2014 00:50

      2Kolya Boh: http://www.forum.mista.ru/topic.php?id=341168#4 ;)

      Удалить
    17. Этот комментарий был удален автором.

      Удалить
  13. Анонимный31 июля, 2013 00:27

    Доброго времени суток!
    Делаю публикацию включая веб-сервисы. Прохожу процедуры создания определения и прокси (ошибок нет):
    Определения = Новый WSОпределения(Адрес, ..., ...);
    Прокси = Новый WSПрокси(Определения, "www.url.org", "WebService", "WebServiceSoap");
    Прокси.Obmen1() - тут ошибка.
    А обращение к определению прокси выходит с ошибкой:
    "Ошибка вызова операции сервиса: {www.url.org}:WebService:Obmen1()
    по причине:
    Неизвестная ошибка. Ошибка работы с Интернет: Не могу установить соединение
    по причине:
    Ошибка работы с Интернет: Не могу установить соединение."

    В чем проблема? Уже 2 недели бьюсь (((

    ОтветитьУдалить
    Ответы
    1. Анонимный31 июля, 2013 00:33

      Забыл написать: в журнале рег. базы 1с опубликованной на веб-сервере есть 3 записи WS-соединение (1-Сеанс. Аутентификация, 2-Сеанс. Начало, 3-Сеанс. Завершение). Затем идет ожидание и вываливается ошибка соединения с интернетом.

      Удалить
    2. Если база не секретная, пришлите на ghostazik@gmail.com, я попробую посмотреть что не так.

      Удалить
    3. Анонимный31 июля, 2013 20:16

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

      Удалить
    4. решилась проблема. Адрес сервиса был с портами http://адрес:10000/публикация/, открывали дополнительные порты, куда вроде как ломился запрос, но ни чего не помогало. Помогло только когда указали без порта, сделав соответствующие настройки сервера http://адрес/публикация/.

      Удалить
  14. решилась проблема. Адрес сервиса был с портами http://адрес:10000/публикация/, открывали дополнительные порты, куда вроде как ломился запрос, но ни чего не помогало. Помогло только когда указали без порта, сделав соответствующие настройки сервера http://адрес/публикация/.

    ОтветитьУдалить
    Ответы
    1. Спасибо, что ответили в чем причина, думаю ваш опыт пригодится читателям блога.

      Удалить
  15. Анонимный21 ноября, 2013 15:20

    добрый день
    есть wsdl-ссылка, там работает веб-сервис
    посылаю из 1с запрос по wsпрокси
    вопрос: как в soap header добавить строку? без нее веб-сервис выдает некорректный ответ

    ОтветитьУдалить
  16. Анонимный26 ноября, 2013 16:34

    здравствуйте.
    есть веб-сервис, wsdl-ссылка
    пишу функцию:

    Прокси = WSСсылки.WSСсылка.СоздатьWSПрокси(URI, "Service", "ServiceSoap");
    ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить(URI).Получить("find");
    WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
    WSПараметр.partNumber = Артикул;
    WSПараметр.partnerId = id;
    Результат = Прокси.find(WSПараметр);

    у метода find всего 2 параметра, я их заполняю
    в ответ - недостаточно фактических параметров

    ОтветитьУдалить
    Ответы
    1. Если процедура find имеет два операнда, то и два операнда надо передать. Это в 1С, например в php можно сделать примерно как вы написали - передать один операнд, который является массивом.

      Удалить
  17. Здравствуйте Владимир.
    Опубликовал веб-сервис, при его проверке и вводе в браузере адреса вида http://localhost/test/ws/ost.1cws?wsdl получаю сообщение "веб-сайту не удалось отобразить страницу...". Подскажите, как бороться.

    ОтветитьУдалить
  18. 404 Not found Apache. Опубликовал базу 1с все сделал по документации. В чем может быть проблема?

    ОтветитьУдалить
    Ответы
    1. Скорее всего не по той ссылке обращаетесь. Что бы узнать URL вашей базы вы можете в конфигураторе вызвать меню Отладка -> Начало отладки -> Веб-клиент: начать отладку. По этой команде 1С запустит базу в браузере, который указан в меню Сервис -> Параметры -> Запуск 1С: Предприяетие -> Основные

      Удалить
  19. В описываемом клиенте для тестирования веб сервисов SoapUI в версии 4.6.4 есть ошибка не позволяющая загружать wsdl файлы с русскими символами. Предыдущие версии работают корректно. Ошибка обсуждается тут http://forum.soapui.org/viewtopic.php?f=13&t=22976. Имейте это в виду.

    ОтветитьУдалить
    Ответы
    1. Соглашусь. На момент написания статьи ошибки не было. Сам пользуюсь 4.6.3 там все ок.

      Удалить
  20. Анонимный07 марта, 2014 04:27

    Здравствуйте, у меня в браузере все прекрасно отражается, но в soap вылетает ошибка:
    Error loading [http://192.168.20.40/mybase/ws/serv?wsdl]: org.apache.xmlbeans.XmlException: java.io.IOException: Server returned HTTP response code: 401 for URL: http://192.168.20.40/mybase/ws/serv?wsd.
    Подскажите, пожалуйста, в чем проблема

    ОтветитьУдалить
    Ответы
    1. Логин и пароль латинскими символами прописан? Аутентификацию средствами Apache делали?

      Удалить
    2. Анонимный11 марта, 2014 04:09

      делали, логин и пароль в латинице

      Удалить
    3. Аналогичная ошибка. В базе есть только один пользователь: "Администратор" без пароля. Как создать проект soap IU и передать логин/пароль к базе?

      Что примечательно, в браузере логин спрашивает система, и без проблем пропускает.

      Удалить
  21. Анонимный20 марта, 2014 12:14

    Добрый день! Первым делом хочется сказать спасибо за ценную информацию!

    И, конечно, вопросы...
    Я настраиваю веб-сервисы на IIS. Пробую на базе, которая есть на дисках ИТС "Демонстрационная база "Web-сервисы"". Все настроила и все работает.
    Но я не знаю как проверить работу моих веб-сервисов извне, не из 1С? С помощью SoapUI я могу это сделать? (Если у меня веб-сервер на IIS)?

    ОтветитьУдалить
  22. Да, конечно можно через SoapU, для этого и сделали веб-сервисы что бы была связь между разнородными системами.

    ОтветитьУдалить
    Ответы
    1. Анонимный20 марта, 2014 18:21

      Странно! У меня почему-то при настройке проекта в SoapUI
      Error loading WSDL
      There was something wrong with the WSDL you are trying to import:

      Error loading [http://localhost/MyApp/ws/ws1.1cws?wsdl]: org.apache.xmlbeans.XmlException: org.apache.xmlbeans.XmlException: error: Illegal XML character: 0x132832 org.apache.xmlbeans.impl.piccolo.io.IllegalCharException: Illegal XML character: 0x132832 at org.apache.xmlbeans.impl.piccolo.xml.UTF8XMLDecoder.decode(UTF8XMLDecoder.java:151) at org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader$FastStreamDecoder.read(XMLStreamReader.java:762) at org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader.read(XMLStreamReader.java:162) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yy_refill(PiccoloLexer.java:3474) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.java:3958) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:1400) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714) at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3454) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1276) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1263) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345) at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:722) at com.eviware.soapui.support.xml.XmlUtils.createXmlObject(XmlUtils.java:207) at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlLoader.loadXmlObject(WsdlLoader.java:114) at com.eviware.soapui.impl.wsdl.support.xsd.SchemaUtils.getDefinitionParts(SchemaUtils.java:535) at com.eviware.soapui.impl.wsdl.support.xsd.SchemaUtils.getDefinitionParts(SchemaUtils.java:524) at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionCache.update(AbstractDefinitionCache.java:97) at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext$Loader.construct(AbstractDefinitionContext.java:236) at com.eviware.soapui.support.swing.SwingWorkerDelegator.construct(SwingWorkerDelegator.java:46) at com.eviware.soapui.support.swing.SwingWorker$2.run(SwingWorker.java:149) at java.lang.Thread.run(Unknown Source)

      в чем проблема?

      Удалить
    2. Как уже написал Дмитрий "В описываемом клиенте для тестирования веб сервисов SoapUI в версии 4.6.4 есть ошибка не позволяющая загружать wsdl файлы с русскими символами. Предыдущие версии работают корректно." У вас до словно не та ошибка, но скорее всего связанная. Попробуйте версию 4.6.3

      Удалить
    3. Анонимный17 апреля, 2014 12:52

      Спасибо! Нашла SoapUI 4.6.3. Установила. Настраиваю проект. Ошибка:
      Error loading [http://localhost/MyApp/ws/CompanySearch.1cws?wsdl]: org.apache.xmlbeans.XmlException: org.apache.xmlbeans.XmlException: error: does not close tag

      В чем проблема? В браузере веб-сервис открывается.

      Удалить
    4. Анонимный17 апреля, 2014 14:31

      Ура! Заработало! правда путь по другому указала http://localhost/MyApp/ws/CompanySearch?wsdl

      Удалить
    5. Хорошо. А то я думал на счет вашего прошлого сообщения и не нашел в чем ошибка.

      Удалить
    6. Анонимный17 апреля, 2014 18:42

      Владимир! Спасибо! Что вы на связи, что думаете над нашими вопросами, пытаетесь помочь и помогаете! Это особенно ценно во всех ваших статьях!

      Удалить
    7. Анонимный21 апреля, 2014 19:07

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

      Удалить
    8. Анонимный21 апреля, 2014 19:11

      Ошибка: Внутренняя ошибка. Ошибка инициализации библиотеки модулей - каких-то прав не хватает.

      Удалить
    9. Анонимный21 апреля, 2014 19:25

      Как только даешь "полные права" - тут же все работает.

      Удалить
    10. Надо дать права на исполнение самих веб-сервисов по каждой операции отдельно и на данные с которыми работает веб-сервис.

      Удалить
    11. Анонимный23 апреля, 2014 18:11

      Сделала отдельную роль - заработало!

      Удалить
  23. Анонимный25 мая, 2014 20:48

    Добрый день, Вы писали:
    > Мы видим, что на выполнение операции ушло 1243 миллисекунд

    скажите, при повторном вызове ситуация аналогичная? или соединения кэшируются? если да, то где прописываются настройки количества и ttl соединений?

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

      Удалить
    2. Анонимный26 мая, 2014 22:34

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

      пока что проблему "закрыли" перенастройкой на IIS, но по свободе надо будет покапать конфиг апача

      Удалить
  24. Добрый день, Владимир.В статье Вы используете описание продукта soapUI, и есть такой текст "В поле "Authorisation Type" необходимо указать "Preemptive"." Как сделать аналогичное в обработке 1с, вызывающей метод веб-сервиса? Столкнулся с тем, что именно при вызове метода вылетает ошибка авторизации. И куда вставлять логин и пароль (они мне известны)? Спасибо

    ОтветитьУдалить
    Ответы
    1. Добрый день. Вот пример рабочего кода. Тут видно куда вставлять логин и пароль.
      WSОпределение = Новый WSОпределения("https://test.ru/test/ws/API?wsdl", Логин, Пароль);
      Сервис = WSОпределение.Сервисы[0];
      WSПрокси = Новый WSПрокси(WSОпределение, Сервис.URIПространстваИмен, Сервис.Имя, Сервис.ТочкиПодключения[0].Имя);
      WSПрокси.Пользователь = Логин;
      WSПрокси.Пароль = Пароль;
      ОбъектXDTO = WSПрокси.operation("", Ложь);

      Первый логин/пароль от пользователя который получает WSDL. Второй логин/пароль от пользователя который выполняет операцию. Если не ошибаюсь WSDL может получить любой пользователь, даже без прав на веб сервисы. Возможно нужны права на запуск клиента. А вот вторым пользователем может быть только тот кому разрешены уже права на сами веб операции.

      Удалить
  25. При добавлении проекта в Soap выдается ошибка

    WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.

    В чес может быть причина?

    ОтветитьУдалить
  26. Этот комментарий был удален автором.

    ОтветитьУдалить
  27. Добрый день!
    Unknown error. XDTO data validation error:
    Value: '?' does not match simple type: {http://www.w3.org/2001/XMLSchema}decimal
    reason:
    XDTO data validation error:
    Value: '?' does not match simple type: {http://www.w3.org/2001/XMLSchema}decimal

    Получается, что не воспринимает ни один тип из http://www.w3.org/2001/XMLSchema, кроме String.
    Почему можете сказать?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте, ну судя по ошибке вы передаете ему символ вопроса. Кажется мне что вы используете SoapUI, у которого символ вопросика стоит по умолчанию в в этих полях. Потому и ругается что это не число.

      Удалить
  28. Анонимный17 марта, 2016 14:35

    Добрый день! Наверно глупый вопрос, но все же.. У меня в конфе 1С есть веб-сервис. Работает. Описание в браузере получаю по схеме: http://имя сервера/имя публикации/ws/имя веб-сервиса?wsdl, вижу структуру xml. Могу сохранить в файл .xml. Но мне нужно получить его описание в виде файла .wsdl. Как сформировать этот файл?

    ОтветитьУдалить
    Ответы
    1. Здравствуйте. Это и есть WSDL. Если почитаете, там есть и описание типов и описание самих сервисов.

      Удалить
    2. Анонимный17 марта, 2016 18:28

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

      Удалить
    3. Увы, подтянуть в 1С не получится. Сами метаданные веб сервиса в 1с экспортировать нельзя. Можно экспортировать пакет XDTO, но не из WSDL, а из XSD.

      Удалить
    4. Анонимный17 марта, 2016 19:42

      На примере.. У меня была необходимость обращаться к стороннему веб-сервису. Я запросила у клиента описание этого веб-сервиса, он мне прислал по почте файлик .wsdl. В своей конфигурации я добавила ws-ссылку с указанием в качестве URL источника полного локального пути к файлу (типа file://C:/1c/vipiska.wsdl). Ну и обращалась к этому веб-сервису посредством созданной ws-ссылки.

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

      Прошу прощения за назойливость, но вот на таком глупом месте запнулась)

      Удалить
    5. Тогда да, можете по ссылке http://имя сервера/имя публикации/ws/имя веб-сервиса?wsdl получить wsdl. Сохраните его в файле от отправьте. Должно получиться.

      Удалить
  29. Анонимный09 апреля, 2016 18:49

    Добрый день! Казалось бы простой вопрос, но нигде не могу найти ответ. Внешний веб сервис для авторизации требует передачу нескольких параметров, в SoapUI я их вношу в Headers. Как это сделать в 1С? Заранее благодарю.

    ОтветитьУдалить
  30. Анонимный23 мая, 2016 18:20

    Владимир! Добрый день! Ваши статьи по веб-сервисам - лучшие - сколько работаю с веб-сервисами - постоянно перечитываю ваши статьи - очень полезно!
    Сейчас такая проблема: Есть база 1С на SQL, в ней работающий веб-сервис. Мне нужно доработать этот веб-сервис.
    Делаю файловую копию базы на свой комп. Публикую веб-сервис. И не могу его открыть в IE (http://localhost/LST_ZUP_Test2/ws/Web_LST_ZUP?wsdl) - либо вообще пустое окно, либо спрашивает : вы хотите открыть или сохранить Web_LST_ZUP?wsdl из localhost?
    И дальше хоть открыть, хоть сохранить... чистый экран..

    IIS настроен и работает, другой веб-сервис из моей локальной Бухии работает!

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

    Спасибо!

    ОтветитьУдалить
    Ответы
    1. Анонимный24 мая, 2016 12:32

      Ура! разобралась ... тупанула - не на тот каталог с базой дала права пользователю IIS_IUSRS

      Удалить
    2. Здравствуйте. А я думал думал что может быть. Понимал что что то в веб сервере, но не смог догадаться.
      Спасибо вам за хороший отзыв о моей работе. Хорошо что эта работа несет пользу.

      Удалить
  31. Добрый день!
    Помогите пожалуйста, не можем понять в чём проблема. При попытке выгрузки wsdl через программу soapUI выходит ошибка Error loading [http://urlsite.com/ws/ws123.1cws?wsdl]: java.lang.Exception: Failed to load url; http://urlsite.com/ws/ws123.1cws?wsdl, 0 -
    При этом через браузер всё открывается нормально... ((
    Подскажите пожалуйста, что делать?

    ОтветитьУдалить
    Ответы
    1. Предполагаю что вы установили одну из последних платформ версии 8.3.9
      Они там при аутентификации слово "realm" забыли.
      Посмотрите баг https://bugboard.v8.1c.ru/error/000025093.html
      Вроде исправлено в 8.3.10.1877

      Удалить
  32. Анонимный24 июня, 2021 06:42

    VarangaOfficial - крем варанга отзывы - проверенные и достоверные факты. Воспользовавшись данным интернет-порталом, вы сможете узнать исчерпывающую информацию об этом лекарственном средстве. Лично увидеть данные о проведенных клинических тестированиях, прочитать реальные отзывы пациентов и врачей, использующих крем в своей лечебной практике. Ознакомиться с инструкцией по применению, прочесть об особенностях и методах работы мази, осмыслить, почему крем Варанга настолько эффективен, где можно купить оригинальный препарат и, как избежать покупки подделки. Мы скурпулезно проверяем публикуемые данные. Предоставляем нашим пользователям сведения, которые были взяты только из подлинных источников. Если вы нашли у себя признаки появления грибкового заболевани или уже довольно продолжительное время, без ощутимых результатов пытаетесь излечиться от этого досадного недуга, на нашем сайте вы отыщете быстрый и легкий способ решения проблемы. Приобщайтесь и живите полноценной, здоровой жизнью. Благодаря нам, все ответы на самые волнующие вопросы, теперь собраны в одном месте на удобной в использовании и высоко информационном ресурсе.

    ОтветитьУдалить