gifts2017

Демо связи веб сервисов 1С и php

Опубликовал Трактор Трактор (Трактор) в раздел Программирование - Практика программирования

Демонстрация обращения к веб сервису 1С из php. Пример простейший, уровня hello world. Дана одна страница и информационная база 1С с одним справочником и одним веб сервисом. Веб сервис выдаёт содержимое справочника по запросу странички.

Ранее я уже публиковал пример работы с web сервисами 1С из javascript http://infostart.ru/public/16001/ и относительно сложную связку web сервисов 1С и cms Drupal http://infostart.ru/public/59207/ В разработке  на Друпале можно видеть примеры полноценной работы из php с сервисами 1С.

В этом примере на web страничке отображается содержимое справочника. Для большей содержательности сделал поиск по наименованию. В первой таблице возвращщается всё содержимое справочника, а во второй одна строка.

Особенность работы php с soap в том, что, если сервис возвращает одно значение, то php получит объект, а если значений несколько, то массив. Обходится это просто. Нужно поместить объект в массив.

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

ib="Srvr="127.0.0.1";Ref="otladka";Usr="site";Pwd="site";">

В примере имя и пароль указыаются и в файле default.vrd и при в скрипте php. Можно оставить имя/пароль только в одном месте. Потому что, если имя/пароль указаны в default.vrd, то имя/пароль передаваемые при подключении игнорируются.

 

В файле, прикреплённом к публикации архив с выгрузкой базы 1С 8.3, файл default.vrd с указанными именем и паролем пользователя 1С, файл demo_web_service.php, который обращается к web сервису 1С по адресу http://127.0.0.1/otladka/ws/lyay.1cws?wsdl

Настройки изменяются прямо в коде. Если в справочник добавить ещё один элемент, содержащий в наименовании "Заг", то вторая таблица на страничке перестанет отображаться.

 


О сути времени

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Демо связи веб сервисов 1С и php.zip
.zip 45,13Kb
19.07.13
131
.zip 45,13Kb 131 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Николай Зевеке (zekrus) 06.08.13 21:56
Вопрос, а точно редакция 8.3 какая?
2. Трактор Трактор (Трактор) 07.08.13 00:09
(1) 1С 8.3.3.641 Почему спрашиваешь?
3. Николай Зевеке (zekrus) 07.08.13 08:26
(2) Трактор, Решил попробовать. Работает. В строке 28 надо вставить $
4. Николай Зевеке (zekrus) 07.08.13 08:27
(2) Трактор, Не в курсе можно ли через твою обработку с сайта файл передать в 1с?
5. Трактор Трактор (Трактор) 07.08.13 09:39
(4) Можно, конечно.
Передача файлов из 1С на сайт сделана тут http://infostart.ru/public/59207/
С сайта в 1С делается похоже. Как-то так:
	$data = file_get_contents('некийфайл.zip');
	  $Параметры = array('data' => $data,
                         'ИмяФайла' => 'некийфайл.zip',
                         'Описание' => 'Некое описание',
                         'К_ЧемуОтносится' => 'Идентификатор куда его лепить');
      $Ответ1С = $Клиент1С->add($Параметры);
...Показать Скрыть
6. Николай Зевеке (zekrus) 07.08.13 10:01
(5) Трактор, Очень хоца в этом примере посмотреть (для полной картинки так сказать).
7. Alexey J (790th) 23.08.13 08:01
После <?php

Нужна строка:

define("Клиент1С", 1);

Иначе при первом вызове if (is_soap_fault(Клиент1С)){
Из function ПодключитьсяК1С(){
не понимает откуда брать значение для сравнения
8. poyson (poyson) 13.11.13 13:48
9. Надежда (user_2010) 12.11.14 13:58
Может быть вы поможете?
Есть такой вопрос: сделала веб-сервис в 1С, опубликовала, он работает в SoapUI, еще проверяли из других программ - работает... Но нужно его использовать в программе, которая работает на платформе SharePoint. Так вот у них мой веб-сервис не работает. Как они объясняют: не тот синтаксис веб-сервиса.

Вот такой синтаксис делает 1С:
xs:schema targetNamespace=
xs:element name=

А вот так надо SharePoint:
s:schema elementFormDefault=
s:element name=

Почему 1С делает "xs", а не "s"?

Т.е. вместо "<xs:..." должно быть "<s:...".

Как это сделать в 1С? Как изменить синтаксис опубликованного веб-сервиса?
10. Трактор Трактор (Трактор) 12.11.14 14:49
Почему 1С делает "xs", а не "s"?

(9) user_2010, 1С тут права полностью. Имя пространства имён, а речь о нём, в документации не определено. Это шарепойнтыпо ушам катаются. Пусть пользуют что есть.

Как изменить имя пространства имён в 1С я не знаю.
11. Надежда (user_2010) 12.11.14 15:29
А как им использовать: у них выходит ошибка синтаксиса?
Я полгода назад делала для них тестовый веб-сервис, все работало. Но мой комп сломался и все умерло... сейчас даже не узнать - как выглядел веб-сервис тогда...
Куда копать????
а у вас как выглядят веб-всервисы xs или s?
12. Трактор Трактор (Трактор) 12.11.14 15:44
А как им использовать: у них выходит ошибка синтаксиса?

(11) user_2010, очень просто использовать. Принять имя пространства имён, которое даёт 1С. Поменять у себя там, где они предлагают менять тебе. В 1С имя пространства имён, на сколько мне известно, не меняется.

а у вас как выглядят веб-всервисы xs или s?

xs и xs1
13. Надежда (user_2010) 12.11.14 15:55
Ага, понятно! Спасибо! Попробуем...
14. Андрей Ильин (Anddy) 20.05.15 16:14
А можно ли как-то уйти от return при получении ответа? Например, у меня есть конструкция $result = $SOAP_client1->setUser($arr_data); что бы посмотреть ответ пользуюсь конструкцией $result->return; можно сделать так, что бы вместо return было что мое например $result->SetUserResult
15. Трактор Трактор (Трактор) 20.05.15 17:51
(14) >> А можно ли как-то уйти от return при получении ответа?
Совсем не уйдёшь, но можешь определить возвращаемые параметры.
Получишь возвращаемый параметр $result->SetUserResult и рядом с ним будет $result->return
16. Андрей Ильин (Anddy) 20.05.15 18:01
(15) Трактор, а этот возвращаемый параметр мне нужно задать через XDTO пакет? Если не сложно, в 2-словах?
17. Трактор Трактор (Трактор) 20.05.15 20:05
В свойствах параметра веб сервиса указываешь, что он выходной, в функции, обрабатывающей этот метод заполняешь переменную, соответствующую этому параметру. Ответ можешь посмотреть в soapui.
18. Андрей Ильин (Anddy) 20.05.15 21:11
Спасибо большое! Завтра буду пробовать!
19. Андрей Ильин (Anddy) 22.05.15 10:40
(17) Трактор, спасибо большое! Получилось.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа