Имя: Пароль:
1C
1С v8
Web сервисы
0 lamme
 
24.01.13
13:08
82.
что есть - создал web -сервис. опубликовал. настроил IIS
настроил IE по ЖКК. Прочитал ЖКК все что касается настройки веб сервисов.

по ссылке типа http://localhost/MyApp ... заходит в 1С (открывается выбор пользователй, потом открывается 1С и тд)

в MyApp лежат файлы
web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
       <handlers>
           <add name="1C Web-service Extension" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files\1cv82\8.2.17.153\bin\wsisapi.dll" resourceType="Unspecified" requireAccess="None" />
       </handlers>
   </system.webServer>
</configuration>



и
default.vrd

 <?xml version="1.0" encoding="UTF-8" ?>
- <point xmlns="http://v8.1c.ru/8.2/virtual-resource-system" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" base="/MyApp" ib="Srvr="1cdev-v.ocs.ru";Ref="Почтовая программа (Разработка)";">
- <ws>
 <point name="СтатусыЗаявок" alias="StatusRequest.1cws" />
 <point name="ПолучениеАдресаПоИНН" alias="AdressRequest.1cws" />
 </ws>
 </point>


как достучатся извне - до сервиса  AdressRequest  ?
1 lamme
 
24.01.13
13:09
ввожу в строке браузера
http://localhost/myapp/StatusRequest.1cws
ругается
2 lamme
 
24.01.13
13:09
Файл не обнаружен 'v8res://mngsrv/statusrequest.1cws'
3 Нуф-Нуф
 
24.01.13
13:10
лучше тренироваться на кошках. разверни демо ДО, опубликуй их вебсервисы, проверь работоспособность и начинай ваять свои
4 lamme
 
24.01.13
13:10
что делает вообще сервис
на входе ИНН
на выходе - адрес контр.
5 lamme
 
24.01.13
13:11
на кошках и тренируюсь.
хотя .. что есть демо ДО ?
6 lamme
 
24.01.13
13:12
весь вопрос - как протестировать сервис
что он работает
7 Нуф-Нуф
 
24.01.13
13:12
демо документооборо
8 Нуф-Нуф
 
24.01.13
13:12
т
9 lamme
 
24.01.13
13:14
осталось найти
есть он где то на итс ?
10 Нуф-Нуф
 
24.01.13
13:17
ну епт. стаж 6 лет и не знаешь где достать последний релиз ДО? Стыдно должно быть
11 lamme
 
24.01.13
13:21
неа. не стыдно задавать вопросы никогда. и стаж тут не имеет значения.
12 lamme
 
24.01.13
13:22
итс = был легкий путь )
13 lamme
 
24.01.13
13:23
(10)
да тут можно и без ДО.
одновременно с моим сервсисом публикуется и другой - который работает.
При обращении ко второму - точно такая же ошибка идет , как и к моему.

Думаю - что это все таки какие то настройки чего-то не сделаны
14 Dimon77
 
24.01.13
13:27
(1) вместо адреса http://localhost/myapp/StatusRequest.1cws надо вводить http://localhost/myapp/WS/StatusRequest.1cws
15 lamme
 
24.01.13
13:31
(14)
сервис выложен в папку C:\inetpub\wwwroot\myapp
16 lamme
 
24.01.13
13:32
начал выдавать окно выбора логин-пароля.
ввожу свои 3 раза
потом вот такое вот


Предоставленные учетные данные не дают права на просмотр этого каталога или страницы.
17 Dimon77
 
24.01.13
13:37
(16) Нужно создать пользователя для веб сервиса в латинице, если пользователь назван на кириллице то просто происходит ошибка авторизации, видимо из за перехода в другую кодировку
18 lamme
 
24.01.13
13:41
да.
есть такое
вернее - есть пользователь
латиница
пароль

при вводе его - не проходит
19 Dimon77
 
24.01.13
13:48
(18) А что говорит журнал регистрации?
20 lamme
 
24.01.13
13:58
методом научног тыка удалось установить что надо было в IIS правильно выставить правила аутидентификации
21 lamme
 
24.01.13
13:59
правда все вернулось в
Файл не обнаружен 'v8res://mngsrv/statusrequest.1cws'
22 lamme
 
24.01.13
14:26
только дошло .. хотя может и не прав
сервис возвращает что -то
т.е. ему надо POST запросом что-то отправить- чтобы он что-то выдал?
23 Dimon77
 
24.01.13
15:31
(22) А ты логин и пароль пользователя из базы вводил?
Может это все таки в IIS, что то запрещено, раз уж раньше задавался вопрос логина пароля?
24 Serginio1
 
24.01.13
15:55
25 lamme
 
25.01.13
13:06
разобрался
все-таки это логин-пароль оказались самой 1С базы
26 lamme
 
25.01.13
13:06
а как теперб собственно можно протестировать сервис - что он работает и выдает то что надо ?
27 lamme
 
25.01.13
13:08
те сейчас в браузере выдает xml
дальше то как проверить - как передать параметр на сервис и получить какой-то ответ ?
28 lamme
 
25.01.13
13:14
нашел пример с 2 файлами
- html
- js

в js идет :

function ПриОтветеВебСервиса(xmlhttp){
   if (xmlhttp.readyState == 4) {// когда ответ готов.
       if(xmlhttp.status != 200) {// Если всё плохо - скажем об этом
           alert("Запрос завершился неудачно. Ответ сервера: " + xmlhttp.responseText)
       }
       else{

           // Выберем всех сотров из ответа сервера
           var выборкаСотров = xmlhttp.responseXML.getElementsByTagName(ИЕ("Сотрудник"))

           // Заполняем таблицу сотров на странице
           var ТаблицаСотров = document.getElementById("Сотрудники").getElementsByTagName("tbody")[0] // получим tbody
           
           // Удалим строки, добавленные в прошлый раз
           while (ТаблицаСотров.rows.length>1) ТаблицаСотров.deleteRow(1)

           for (var поз = 0; поз < выборкаСотров.length; поз++){
               var СтрокаТаблицы = document.createElement("tr")
               ТаблицаСотров.appendChild(СтрокаТаблицы)

               ДобавитьЯчейкуВСтроку(СтрокаТаблицы, выборкаСотров[поз], "Код")
               ДобавитьЯчейкуВСтроку(СтрокаТаблицы, выборкаСотров[поз], "Наименование")
               ДобавитьЯчейкуВСтроку(СтрокаТаблицы, выборкаСотров[поз], "ДатаРождения")
               ДобавитьЯчейкуВСтроку(СтрокаТаблицы, выборкаСотров[поз], "ИНН")
               ДобавитьЯчейкуВСтроку(СтрокаТаблицы, выборкаСотров[поз], "Пол")
               ДобавитьЯчейкуВСтроку(СтрокаТаблицы, выборкаСотров[поз], "Ссылка")
           }
       }

       // Когда сервер ответил можно включить кнопочку. Пусть пользователь ещё поиграется.
       document.getElementById("MyButton").value = "Получить список сотрудников. Найдено " + поз + " человек."
       document.getElementById("MyButton").disabled = false
   }

}

function ПолучитьСотрудников(){
var xmlhttp = getXmlHttp()
   определитьБраузер()

   // создаём соединение типа POST, второй параметр - адрес, параметр true значит аснхронное, то есть браузер не бедет ждать ответа сервера, а продолжит работу
   xmlhttp.open('POST', 'http://localhost/ws/ПолучениеАдресаПоИНН', true) // путь, например, может быть таким: '/./ws/sotrudniki.1cws'

   // Скажем что делать когда придёт ответ - вызвать функцию ПриОтветеВебСервиса()
   xmlhttp.onreadystatechange = function() {ПриОтветеВебСервиса(xmlhttp)}

   // по идее без следующих двух строк легко обойтись. Я их взял из книжки уже после того как всё работало.
   xmlhttp.setRequestHeader("Content-Type", "Content-Type: application/x-www-form-urlencoded") // Set some headers: the body of this POST request is XML
//    xmlhttp.setRequestHeader("SOAPAction", '""') // This header is a required part of the SOAP protocol

   xmlhttp.send('<?xml version="1.0" encoding="UTF-8"?> ' +
       '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> ' +
        '<soap:Body> <m:СтатусыЗаявок xmlns:m="http://www.sample-package.org"> '+
   '<m:СтрокаПоиска xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
   +document.getElementById('ИмяСотрудника').value+' </m:СтрокаПоиска> '+
   '</m:СтатусыЗаявок> </soap:Body> </soap:Envelope>')




всегда выдает ответ
Запрос завершился неудачно. Ответ сервера
Неверный формат.
29 Serginio1
 
25.01.13
13:52
Из 1С не судьба. Через WS ссылку или
ИмяВэбСервиса=ТвоёИмя;//"ws1.1cws"


   ИмяТочкиПодключения=ИмяВэбСервиса+"Soap";
   
    АдресВэбСервиса="http://ИмяСервера/ИмяБазы/ws/"+ИмяВэбСервиса;


   Определения= новый WSОпределения(АдресВэбСервиса+"?wsdl",Юзер,Пароль);
   Прокси= Новый WSПрокси(Определения,URiПространстваИмен,ИмяВэбСервиса,ИмяТочкиПодключения);
   
    Прокси.Пользователь = Юзер;
   Прокси.Пароль = пароль;
   
Прокси.ВызовТвоегоМетода();
30 lamme
 
25.01.13
13:53
О ///
31 lamme
 
25.01.13
13:53
О ...
32 lamme
 
25.01.13
14:45
делаю
Юзер="Admin";
Пароль="";
Определения = Новый WSОпределения("http://localhost/ws/ПолучениеАдресаПоИНН.1cws?wsdl",Юзер,Пароль);

ругается
При создании описания сервиса произошла ошибка.
по причине:
Ошибка при выполнении файловой операции  'http://Admin:xxxxxxx@localhost/ws/ПолучениеАдресаПоИНН.1cws?wsdl'
по причине:
Ошибка работы с Интернет:  внутренняя ошибка сервера (500). <html>
<head><title> A server error occurred. </title></head>
<h1> Сервис не найден.  </h1>
<hr/>
An error occurred processing this request.</html>
по причине:
Ошибка работы с Интернет:  внутренняя ошибка сервера (500)
33 ptiz
 
25.01.13
14:58
Может, ему русские буквы "ПолучениеАдресаПоИНН" не нравятся?
34 Balonbl4
 
25.01.13
15:04
(32) Не мучайся, используй soapUI (гугл ит!)
35 Serginio1
 
25.01.13
15:04
Определения = Новый WSОпределения("http://localhost/ws/ПолучениеАдресаПоИНН?wsdl",Юзер,Пароль);

или
Определения = Новый WSОпределения("http://localhost/ws/AdressRequest.1cws?wsdl",Юзер,Пароль);