Работа с WEB-сервисами
Доброго времени суток, уважаемые форумчане!
Я впервые столкнулся с необходимостью разработки веб-сервиса в базе 1С и решил попробовать
начать с самого простого - сделать веб-сервис, возвращающий длину переданной строки.
В качестве примера использовал статью
https://wiseadvice-it.ru/o-kompanii/blog/articles/web-servisy-1s-sozdanie-i-nastroika/
Создал веб-сервис, указал в нем операцию и аргумент, указал имя файла публикации (файл P1).
Потом попытался опубликовать. Окно с параметрами публикации в файле P2.
В результате публикации был изменен конфигурационный файл Apach - туда добавилось
описание базы 1С:
# 1c publication
Alias "/1cprogr_31052017" "F:/Contracts/WEB_SERVICE_1C/"
<Directory "F:/Contracts/WEB_SERVICE_1C/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "F:/Contracts/WEB_SERVICE_1C/default.vrd"
</Directory>
А в каталоге F:/Contracts/WEB_SERVICE_1C/ создался не файл "waLengthString.1cws",
а "default.vrd". И этот файл содержит такой фрагмент:
<point name="wa_LengthString"
alias="wa_LengthString.1cws"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
И теперь по интернет-адресу "\\<IP-адрес сервера>\<Имя базы 1С>" стала открываться сама база в веб-интерфейсе.
Подскажите, пожалуйста, что я сделал неправильно, и как мне теперь обратиться к веб-сервису из другой базы?
аранее благодарю.
Я впервые столкнулся с необходимостью разработки веб-сервиса в базе 1С и решил попробовать
начать с самого простого - сделать веб-сервис, возвращающий длину переданной строки.
В качестве примера использовал статью
Создал веб-сервис, указал в нем операцию и аргумент, указал имя файла публикации (файл P1).
Потом попытался опубликовать. Окно с параметрами публикации в файле P2.
В результате публикации был изменен конфигурационный файл Apach - туда добавилось
описание базы 1С:
# 1c publication
Alias "/1cprogr_31052017" "F:/Contracts/WEB_SERVICE_1C/"
<Directory "F:/Contracts/WEB_SERVICE_1C/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "F:/Contracts/WEB_SERVICE_1C/default.vrd"
</Directory>
А в каталоге F:/Contracts/WEB_SERVICE_1C/ создался не файл "waLengthString.1cws",
а "default.vrd". И этот файл содержит такой фрагмент:
<point name="wa_LengthString"
alias="wa_LengthString.1cws"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
И теперь по интернет-адресу "\\<IP-адрес сервера>\<Имя базы 1С>" стала открываться сама база в веб-интерфейсе.
Подскажите, пожалуйста, что я сделал неправильно, и как мне теперь обратиться к веб-сервису из другой базы?
аранее благодарю.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
(1)
Правильно все, потому что стоит галка "Публиковать тонкий и веб клиент".
К веб сервису обращаешься с именем вебсервиса \IP-адрес сервера\Имя базы 1С\ws\ИмяВебСервиса.
Имя указано в колонке "Адрес".
И теперь по интернет-адресу "\IP-адрес сервера\Имя базы 1С\" стала открываться сама база в веб-интерфейсе.
Правильно все, потому что стоит галка "Публиковать тонкий и веб клиент".
К веб сервису обращаешься с именем вебсервиса \IP-адрес сервера\Имя базы 1С\ws\ИмяВебСервиса.
Имя указано в колонке "Адрес".
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Правильно все, потому что стоит галка "Публиковать тонкий и веб клиент".
К веб сервису обращаешься с именем вебсервиса \IP-адрес сервера\Имя базы 1С\ws\ИмяВебСервиса.
Имя указано в колонке "Адрес".
И теперь по интернет-адресу "\IP-адрес сервера\Имя базы 1С\" стала открываться сама база в веб-интерфейсе.
Правильно все, потому что стоит галка "Публиковать тонкий и веб клиент".
К веб сервису обращаешься с именем вебсервиса \IP-адрес сервера\Имя базы 1С\ws\ИмяВебСервиса.
Имя указано в колонке "Адрес".
(3)wertep, спасибо!
В другой базе я указал:
WSDL = Новый WSОпределения("<IP-адрес сервера>/<Имя базы 1С>/ws/wa_LengthString.1cws?wsdl","<ИмяПользователя>","<ПарольПользователя>");
ВСПрокси = Новый WSПрокси(WSDL,"http://v8.1c.ru/wa_LengthString","wa_LengthString", "wa_LengthStringSoap");
ВСПрокси.Пользователь = "<ИмяПользователя>";
ВСПрокси.Пароль = "<ПарольПользователя>";
ОтветВС = ВСПрокси.CalcLengthString("тестовая строка");
В переменной ОтветВС вернулась длина строки.
У меня сомнения - правильно ли я указал параметр "wa_LengthStringSoap"? Я просто взял её из примера.
В другой базе я указал:
WSDL = Новый WSОпределения("<IP-адрес сервера>/<Имя базы 1С>/ws/wa_LengthString.1cws?wsdl","<ИмяПользователя>","<ПарольПользователя>");
ВСПрокси = Новый WSПрокси(WSDL,"http://v8.1c.ru/wa_LengthString","wa_LengthString", "wa_LengthStringSoap");
ВСПрокси.Пользователь = "<ИмяПользователя>";
ВСПрокси.Пароль = "<ПарольПользователя>";
ОтветВС = ВСПрокси.CalcLengthString("тестовая строка");
В переменной ОтветВС вернулась длина строки.
У меня сомнения - правильно ли я указал параметр "wa_LengthStringSoap"? Я просто взял её из примера.
(4)
Поэтому адресу он возвращает описание вебсервиса. Можно этот адрес открыть прямо из браузера и увидеть что он вернул.
Обращайся без "?wsdl" на конце.
Да тамже ты создаешь определения. Должно быть правильно наверное. Смотря чем твой сервис занимается.
Для быстрой проверки кто что возвращает проще использовать Soup IU например.
wa_LengthString.1cws?wsdl
Обращайся без "?wsdl" на конце.
Да тамже ты создаешь определения. Должно быть правильно наверное. Смотря чем твой сервис занимается.
Для быстрой проверки кто что возвращает проще использовать Soup IU например.
(5) wertep, при обращении с ?wsdl на экране показывается текст веб-страницы.
Спасибо Вам огромное за помощь.
Если позволите, еще спрошу у Вас совета.
Если мне надо передать через веб-сервис в другую базу большой объем данных (например, перечень заказов за квартал),
то как это правильнее делать - один раз сформировать и передать большой XDTO-пакет с информацией по всем заказам,
или передавать каждый заказ в отдельном пакете?
Спасибо Вам огромное за помощь.
Если позволите, еще спрошу у Вас совета.
Если мне надо передать через веб-сервис в другую базу большой объем данных (например, перечень заказов за квартал),
то как это правильнее делать - один раз сформировать и передать большой XDTO-пакет с информацией по всем заказам,
или передавать каждый заказ в отдельном пакете?
(4)
Если откроешь в браузере ссылку "<IP-адрес сервера>/<Имя базы 1С>/ws/wa_LengthString.1cws?wsdl", то получишь XML в конце которого будут примерно такие строчки
В первый параметр вставляешь CardsManagerService, а второй CardsManagerPort.
ВСПрокси = Новый WSПрокси(WSDL,"http://v8.1c.ru/wa_LengthString","wa_LengthString", "wa_LengthStringSoap")
Если откроешь в браузере ссылку "<IP-адрес сервера>/<Имя базы 1С>/ws/wa_LengthString.1cws?wsdl", то получишь XML в конце которого будут примерно такие строчки
<wsdl:service name="CardsManagerService">
<wsdl:port binding="tns:CardsManagerServiceSoapBinding" name="CardsManagerPort">
В первый параметр вставляешь CardsManagerService, а второй CardsManagerPort.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)