Ошибка soap сервера метод объекта не обнаружен

   zenaXXX

12.02.13 — 14:02

Помогите пожалуйста, не могу разобраться.

Есть веб сервис сторонний, подключаюсь к нему через 1с

Определения = Новый WSОпределения(«ПутьКМоемуСервису?wsdl»);

WSСервис = Определения.Сервисы[0];

Proxy = Новый WSПрокси(Определения, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ИмяТочкиПодключения[0].Имя);    

Proxy.addComment(«tasks»,45578,»Тест»,»ACCOUNTING»,»»);    

на последней строчке выдает ошибку:

{Форма.Форма.Форма(8)}: Метод объекта не обнаружен (addComment)

Proxy.addComment(«tasks»,45578,»Тест»,»ACCOUNTING»,»»);    

В чем может быть дело. Из других систем этот метод работает

   Serginio1

1 — 12.02.13 — 14:22

ИмяВэбСервиса=ТвоёИмя;//

   ИмяТочкиПодключения=ИмяВэбСервиса+»Soap»;

   
    АдресВэбСервиса=»http://ИмяСервера/ИмяБазы/ws/»+ИмяВэбСервиса;

   Определения= новый WSОпределения(АдресВэбСервиса+»?wsdl»,Юзер,Пароль);

   Прокси= Новый WSПрокси(Определения,URiПространстваИмен,ИмяВэбСервиса,ИмяТочкиПодключения);

   
    Прокси.Пользователь = Юзер;

   Прокси.Пароль = пароль;

   Serginio1

2 — 12.02.13 — 14:26

Прошу прощения. Это к 1С. Для сторонних может быть не так.

Хотя кроме АдресВэбСервиса должно быть одинаково. Смотри в отладчике

   sapphire

3 — 12.02.13 — 14:29

(0) wsdl?

   zenaXXX

4 — 12.02.13 — 14:29

В отладчике у меня есть только одна точка подключения, ее я и прописываю в Новый WSПрокси(), если вызываю с окончанием soap, она ругается что порт не найден

   zenaXXX

5 — 12.02.13 — 14:30

Пробовала и «ПутьКМоемуСервису?wsdl» и «ПутьКМоемуСервису разницы нет

   sapphire

6 — 12.02.13 — 14:30

(0) Проверь имя метода по wsdl

   Asmody

7 — 12.02.13 — 14:31

создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает

   sapphire

8 — 12.02.13 — 14:31

(5) Если подумать, то ПутьКМоемуСервису?wsdl забив в браузер ты увидишь описание web-сервиса….

   sapphire

9 — 12.02.13 — 14:32

(0) web-сервисы чувствительны к регистру букв.

   zenaXXX

10 — 12.02.13 — 14:33

создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает

Она ругается, что формат неверен, в каком формате нужно указывать url

   Asmody

11 — 12.02.13 — 14:34

(10) а в браузере открывается?

   zenaXXX

12 — 12.02.13 — 14:34

Путь у меня ПутьКМоемуСервису.xml?wsdl

   zenaXXX

13 — 12.02.13 — 14:34

открывается в xml формате

   Asmody

14 — 12.02.13 — 14:35

   sapphire

15 — 12.02.13 — 14:36

(12) в формате URI

   sapphire

16 — 12.02.13 — 14:36

Есть веб сервис сторонний — как правило, в виде URI…

   zenaXXX

17 — 12.02.13 — 14:38

Пишет что неверный формат, может нужно каку-нибудь библитеку подгрузить?

   sapphire

18 — 12.02.13 — 14:39

(17) :)))))))))))))))))))))))))))))))))))))))))))

   sapphire

19 — 12.02.13 — 14:40

(17) адрес сервера секретный такой что ли?

   zenaXXX

20 — 12.02.13 — 14:40

ага

   Asmody

21 — 12.02.13 — 14:40

(17) значит не судьба с этим сервисом из 1Ски поработать.

SOAP он такой SOAP, слишком вольно местами трактуемый

   sapphire

22 — 12.02.13 — 14:41

(17) Адрес стороннего web-сервиса какой?

   sapphire

23 — 12.02.13 — 14:41

(21) Не факт, Вить

   sapphire

24 — 12.02.13 — 14:42

(20) Да не нужен мне твой сервант, сама проверь, открывается ли в браузере wsdl-ка

   sapphire

25 — 12.02.13 — 14:42

(21) Если там еще и https то вообще песня :)

   zenaXXX

26 — 12.02.13 — 14:43

открывая ПутьКМоемуСервису.xml?wsdl я получаю тоже что и когда пишу ПутьКМоемуСервису.xml

   sapphire

27 — 12.02.13 — 14:43

(21) использовать платформу 8.3 в качестве ws2ws-proxy :)))

   Balonbl4

28 — 12.02.13 — 14:44

ТС, у меня была схожая ситуация, вот статья с моими изысканиями: http://infostart.ru/public/161726/

   sapphire

29 — 12.02.13 — 14:44

(26) И что получаешь? *уже просто интересно*

   zenaXXX

30 — 12.02.13 — 14:44

не могу использовать 8.3

   Balonbl4

31 — 12.02.13 — 14:45

(27) В моем случае это не помогло(сторонний веб сервис был на Oracle Fusion Middlewere)

   sapphire

32 — 12.02.13 — 14:48

(31) без разницы. Можно использовать любое MQ с поддержкой SOAP в качестве ws2ws-proxy

   sapphire

33 — 12.02.13 — 14:49

(30) Ну не можешь и не можешь.

Короче, ты описание сервиса через обычный браузер видишь?

   Balonbl4

34 — 12.02.13 — 14:51

(32) Можно поподробнее?

   zenaXXX

35 — 12.02.13 — 14:53

я вижу его в формате xml

   sapphire

36 — 12.02.13 — 14:54

(35) Ищи метод addComment и смотри что он должен получить.

   zenaXXX

37 — 12.02.13 — 14:55

<part name=»type» type=»xsd:string»/><part name=»id» type=»xsd:int»/><part name=»comment» type=»xsd:string»/><part name=»user» type=»xsd:string»/><part name=»attachments» type=»soap-enc:Array»/>

   sapphire

38 — 12.02.13 — 14:55

(34) MQ = Message Queue, например, RabbitMQ

   zenaXXX

39 — 12.02.13 — 14:56

это параметры метода addcomment

   sapphire

40 — 12.02.13 — 14:56

(37) Метод в том пространстве имен?

   sapphire

41 — 12.02.13 — 14:57

>>Из других систем этот метод работает

Из каких других, 1С или что-то иное?

   zenaXXX

42 — 12.02.13 — 14:58

что-то иное, код на perl

   sapphire

43 — 12.02.13 — 15:16

(42) на той же машине, что и сервер 1С? :)

   zenaXXX

44 — 12.02.13 — 15:17

нет

   zenaXXX

45 — 12.02.13 — 15:17

на другой машине

   sapphire

46 — 12.02.13 — 15:18

(39) ты с регистром имя метода точно не путаешься, дело в том, что метод addcomment из (39) и addComment из (0) с точки зрения SOAP — разные

   sapphire

47 — 12.02.13 — 15:18

(42) на perl имя метода как звучит?

   zenaXXX

48 — 12.02.13 — 15:19

на perl они вызывают

my $obj = $soap->addComment( $tw_type, $tw_id, $tw_comment, $tw_user, $tw_attachments );

   sapphire

49 — 12.02.13 — 15:19

(45) у сервиса есть эхо-метод?

   sapphire

50 — 12.02.13 — 15:24

(48) в (0) скорее всего ошибка.

в perl пространство имен и прочее статично или дергает из определения?

   zenaXXX

51 — 12.02.13 — 15:24

(49) что за эхо-метод?

   sapphire

52 — 12.02.13 — 15:25

(51) обычно метод echo реализуют у сервисов для диагностики связи.

   Serginio1

53 — 12.02.13 — 15:34

(0) Можешь создать класс на Net для подключения вэб сервиса

а затем через вот этот прокиси v8: Объекты Net в IDispatch

подключить его как ком

   sapphire

54 — 12.02.13 — 15:35

+ в (0) передача параметров неправильная согласно (37):

xml_type_string=ФабрикаXDTO.Тип(«http://www.w3.org/2001/XMLSchema»,»string»);

xml_type_int= ФабрикаXDTO.Тип(«http://www.w3.org/2001/XMLSchema»,»int»);

parameter_type=ФабрикаXDTO.Создать(xml_type_string,»tasks»);

и. т. п.

   sapphire

55 — 12.02.13 — 15:37

(53) Да там в создании WSProxy косяк, ИМХО

   Balonbl4

56 — 12.02.13 — 15:39

(54) 1ска же нормально преобразует в xml примитивные типы, мне кажется, это излишество

   zenaXXX

57 — 12.02.13 — 15:42

с фабрикой я тоже пробовала, но проблема именно в том что 1с-ка не видит этот метод

   sapphire

58 — 12.02.13 — 15:52

(57) Проблема в создании WSProxy

   sapphire

59 — 12.02.13 — 15:53

(57) на (50) ответь

   zenaXXX

60 — 12.02.13 — 15:55

(59) Точно сказать не могу

   sapphire

61 — 12.02.13 — 15:56

(60) Причина? Ты не знаешь статично оно в perl или динамично?

   zenaXXX

62 — 12.02.13 — 15:57

я не вижу весь код

   zenaXXX

63 — 12.02.13 — 15:57

мне дали только пример

   Asmody

64 — 12.02.13 — 15:58

проблема в том, что wsdl скорее всего не соответствует спецификации. из-за чего 1Ска не может преобразовать его в XTDO.

   sapphire

65 — 12.02.13 — 15:59

(64) ИМХО, там она просто из другого пространства имен цепляет.

   sapphire

66 — 12.02.13 — 16:00

(64) врядли

   sapphire

67 — 12.02.13 — 16:02

(64) Меня вот это смущает:

WSСервис = Определения.Сервисы[0];

Proxy = Новый WSПрокси(Определения, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ИмяТочкиПодключения[0].Имя);

   zenaXXX

68 — 12.02.13 — 16:02

что именно (67)

   sapphire

69 — 12.02.13 — 16:02

(64) Для сложных и included type есть такая фича

   sapphire

70 — 12.02.13 — 16:03

(68) URIПространстваИмен и прочее точно соответсвует определению?

   sapphire

71 — 12.02.13 — 16:03

(68) сервис на закрытом порту?

   sapphire

72 — 12.02.13 — 16:04

а то играем в «Угадай мелодию»….

   Serginio1

73 — 12.02.13 — 16:12

(56) Для anyType нужно явное создание типа. Но в данном случае ругается на метод. Если же в (10) она WS ссылку не может загрузить, то возможно, что 1С не понимает. Если бы была ссыдка можно было бы проверить

   zenaXXX

74 — 12.02.13 — 16:13

(71) как это можно проверить

   zenaXXX

75 — 12.02.13 — 17:20

(70) <definitions name=»Определение» targetNamespace=»URIПространстваИмен»>

<types><xsd:schema targetNamespace=»URIПространстваИмен»/></types>

<portType name=»WSСервис.ИмяТочкиПодключения»><operation name=»addComment»><documentation>яяя</documentation><input message=»tns:addCommentIn»/></operation>

</portType>

<binding name=»Binding» type=»tns:WSСервис.ИмяТочкиПодключения»><soap:binding style=»rpc» transport=»http://schemas.xmlsoap.org/soap/http»/><operation name=»addComment»></operation></binding>

<service name=»Сервис»><port name=»WSСервис.ИмяТочкиПодключения» binding=»tns:Binding»><soap:address location=»URIПространстваИмен»/></port></service><message name=»addCommentIn»><part name=»type» type=»xsd:string»/><part name=»id» type=»xsd:int»/><part name=»comment» type=»xsd:string»/><part name=»user» type=»xsd:string»/><part name=»attachments» type=»soap-enc:Array»/></message>

Что типа этого, в чем может быть ошибка

   zenaXXX

76 — 12.02.13 — 17:29

и закрывается все </definitions>

   fisher

77 — 12.02.13 — 17:33

Я давно разочаровался в 1с-овском SOAP. Сплошь и рядом продвинутые веб-сервисы юзают SOAP шире, чем его поддерживает 1С. В итоге 1С их «не понимает».

   zenaXXX

78 — 13.02.13 — 09:10

Помогите, очень надо

   Balonbl4

79 — 13.02.13 — 09:42

(78) Вы статью читали, ссылку на которую я давал в самом начале? Делайте как там.

   На стороне добра

80 — 13.02.13 — 10:48

Сохрани WSDL-описание в xml-файл, и загрузи WSссылку, если будет ошибка «неверный формат», значит надо редактировать xml. Я так раздел за разделом отлаживал. Еще проверь веб-сервис на валидность, можно через сайт http://www.validwsdl.com/

   fisher

81 — 13.02.13 — 11:06

(79) Хорошая идея.

(80) Я тоже как-то было так отлаживал. Избавлял от циклических ссылок в пространствах имен (1С этого не переваривает). Думал, что победа близка. wsdl успешно загрузился. А потом выяснилось, что сервис использует хитрый способ авторизации через установку каких-то заголовков (подробности уже плохо помню), а 1С эту фигню не поддерживает.

Было очень обидно.

   zenaXXX

82 — 13.02.13 — 13:12

файл сохранила, пишет что неверный формат, можно ли какой-нибудь прогой его проверить. Сайт не подходит http://www.validwsdl.com/

   zenaXXX

83 — 14.02.13 — 09:04

Может кто знает, что может не нравиться в wsdl 1с, почему она может писать неверный формат?

   zenaXXX

84 — 14.02.13 — 09:04

и что такое  циклические ссылки в пространствах имен

   Asmody

85 — 14.02.13 — 09:23

(82) SoapUI тебе в помощь.

(83) невалидный wsdl

   zenaXXX

86 — 14.02.13 — 09:26

wsdl валидный, я отправляла запрос с помощью soap-клиента, все нормально отрабатывает

   zenaXXX

87 — 14.02.13 — 09:26

дело именно в 1с, ей что-то не нравиться(

   На стороне добра

88 — 14.02.13 — 10:03

Скинь wsdl сюда

  

zenaXXX

89 — 14.02.13 — 15:42

Нашла))))) Может кому поможет:

ошибка была в том что в узле

<portType name=»WSСервис.ИмяТочкиПодключения»><operation name=»Com»><documentation>яяя</documentation><input message=»tns:addCommentIn»/></operation>  не было выходного

<output message=»tns:addCommentIn»/>

и в самом начале было просто <?xml version=’1.0′?>, я поставила

<?xml version=’1.0′ encoding=’UTF-8′?>

Помогите пожалуйста, не могу разобраться. Есть веб сервис сторонний, подключаюсь к нему через 1с на последней строчке выдает ошибку: {Форма.Форма.Форма}: Метод объекта не обнаружен (addComment) Proxy.addComment(«tasks»,45578,»Тест»,»ACCOUNTING»,»»);     В чем может быть дело. Из других систем этот метод работает

Прошу прощения. Это к 1С. Для сторонних может быть не так. Хотя кроме АдресВэбСервиса должно быть одинаково. Смотри в отладчике

В отладчике у меня есть только одна точка подключения, ее я и прописываю в Новый WSПрокси, если вызываю с окончанием soap, она ругается что порт не найден

Пробовала и «ПутьКМоемуСервису?wsdl» и «ПутьКМоемуСервису разницы нет

Проверь имя метода по wsdl

создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает

Если подумать, то ПутьКМоемуСервису?wsdl забив в браузер ты увидишь описание web-сервиса….

web-сервисы чувствительны к регистру букв.

создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает Она ругается, что формат неверен, в каком формате нужно указывать url

а в браузере открывается?

Путь у меня ПутьКМоемуСервису.xml?wsdl

открывается в xml формате

Есть веб сервис сторонний — как правило, в виде URI…

Пишет что неверный формат, может нужно каку-нибудь библитеку подгрузить?

:)))))))))))))))))))))))))))))))))))))))))))

адрес сервера секретный такой что ли?

значит не судьба с этим сервисом из 1Ски поработать. SOAP он такой SOAP, слишком вольно местами трактуемый

Адрес стороннего web-сервиса какой?

Да не нужен мне твой сервант, сама проверь, открывается ли в браузере wsdl-ка

Если там еще и https то вообще песня :)

открывая ПутьКМоемуСервису.xml?wsdl я получаю тоже что и когда пишу ПутьКМоемуСервису.xml

использовать платформу 8.3 в качестве ws2ws-proxy :)))

ТС, у меня была схожая ситуация, вот статья с моими изысканиями:

И что получаешь? *уже просто интересно*

В моем случае это не помогло(сторонний веб сервис был на Oracle Fusion Middlewere)

без разницы. Можно использовать любое MQ с поддержкой SOAP в качестве ws2ws-proxy

Ну не можешь и не можешь. Короче, ты описание сервиса через обычный браузер видишь?

Ищи метод addComment и смотри что он должен получить.

<part name=»type» type=»xsd:string»/><part name=»id» type=»xsd:int»/><part name=»comment» type=»xsd:string»/><part name=»user» type=»xsd:string»/><part name=»attachments» type=»soap-enc:Array»/>

MQ = Message Queue, например, RabbitMQ

это параметры метода addcomment

Метод в том пространстве имен?

>>Из других систем этот метод работает Из каких других, 1С или что-то иное?

на той же машине, что и сервер 1С? :)

ты с регистром имя метода точно не путаешься, дело в том, что метод addcomment из и addComment из с точки зрения SOAP — разные

на perl имя метода как звучит?

на perl они вызывают my $obj = $soap->addComment( $tw_type, $tw_id, $tw_comment, $tw_user, $tw_attachments );

у сервиса есть эхо-метод?

в скорее всего ошибка. в perl пространство имен и прочее статично или дергает из определения?

обычно метод echo реализуют у сервисов для диагностики связи.

Можешь создать класс на Net для подключения вэб сервиса а затем через вот этот прокиси подключить его как ком

+ в передача параметров неправильная согласно : и. т. п.

Да там в создании WSProxy косяк, ИМХО

1ска же нормально преобразует в xml примитивные типы, мне кажется, это излишество

с фабрикой я тоже пробовала, но проблема именно в том что 1с-ка не видит этот метод

Проблема в создании WSProxy

Причина? Ты не знаешь статично оно в perl или динамично?

проблема в том, что wsdl скорее всего не соответствует спецификации. из-за чего 1Ска не может преобразовать его в XTDO.

ИМХО, там она просто из другого пространства имен цепляет.

Для сложных и included type есть такая фича

URIПространстваИмен и прочее точно соответсвует определению?

сервис на закрытом порту?

а то играем в «Угадай мелодию»….

Для anyType нужно явное создание типа. Но в данном случае ругается на метод. Если же в она WS ссылку не может загрузить, то возможно, что 1С не понимает. Если бы была ссыдка можно было бы проверить

</portType> <binding name=»Binding» type=»tns:WSСервис.ИмяТочкиПодключения»><soap:binding style=»rpc» transport=»http://schemas.xmlsoap.org/soap/http»/><operation name=»addComment»></operation></binding> <service name=»Сервис»><port name=»WSСервис.ИмяТочкиПодключения» binding=»tns:Binding»><soap:address location=»URIПространстваИмен»/></port></service><message name=»addCommentIn»><part name=»type» type=»xsd:string»/><part name=»id» type=»xsd:int»/><part name=»comment» type=»xsd:string»/><part name=»user» type=»xsd:string»/><part name=»attachments» type=»soap-enc:Array»/></message> Что типа этого, в чем может быть ошибка

и закрывается все </definitions>

Я давно разочаровался в 1с-овском SOAP. Сплошь и рядом продвинутые веб-сервисы юзают SOAP шире, чем его поддерживает 1С. В итоге 1С их «не понимает».

Вы статью читали, ссылку на которую я давал в самом начале? Делайте как там.

Сохрани WSDL-описание в xml-файл, и загрузи WSссылку, если будет ошибка «неверный формат», значит надо редактировать xml. Я так раздел за разделом отлаживал. Еще проверь веб-сервис на валидность, можно через сайт

Хорошая идея. Я тоже как-то было так отлаживал. Избавлял от циклических ссылок в пространствах имен (1С этого не переваривает). Думал, что победа близка. wsdl успешно загрузился. А потом выяснилось, что сервис использует хитрый способ авторизации через установку каких-то заголовков (подробности уже плохо помню), а 1С эту фигню не поддерживает. Было очень обидно.

файл сохранила, пишет что неверный формат, можно ли какой-нибудь прогой его проверить. Сайт не подходит

Может кто знает, что может не нравиться в wsdl 1с, почему она может писать неверный формат?

и что такое  циклические ссылки в пространствах имен

SoapUI тебе в помощь. невалидный wsdl

wsdl валидный, я отправляла запрос с помощью soap-клиента, все нормально отрабатывает

дело именно в 1с, ей что-то не нравиться(

Нашла))))) Может кому поможет: ошибка была в том что в узле <portType name=»WSСервис.ИмяТочкиПодключения»><operation name=»Com»><documentation>яяя</documentation><input message=»tns:addCommentIn»/></operation>  не было выходного <output message=»tns:addCommentIn»/> и в самом начале было просто <?xml version=’1.0′?>, я поставила <?xml version=’1.0′ encoding=’UTF-8′?>

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Содержание статей: 1С:Предприятие 8. Веб-сервисы
Предыдущая статья: 1С:Предприятие 8. Веб-сервисы. Реализация собственного веб-сервиса

Итак. Код метода каждой ws-операции находится в модуле веб-сервиса, к которому принадлежит эта ws-операция.

Код веб-сервиса 1с

Модуль веб-сервиса исполняется только на Сервере.
Замечание 1: нет смысла писать директивы компиляции &НаСервере, &НаКлиенте и другие.
——————
На каждый вызов веб-операции создается отдельный сеанс с информационной базой, поэтому при каждом вызове веб-операции происходит инициализация параметров сеанса. Инициализация параметров сеанса происходит в модуле сеанса в процедуре «УстановкаПараметровСеанса».
Замечание 2: не нагружайте эту процедуру лишними действиями.

Лично я в данное процедуре при первом вызове делаю инициализацию только самых часто используемых параметров сеанса. И только если нужны другие параметры сеанса, при повторном вызове, обрабатываю указанные параметры.
Пример:

Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)

//суть изменений — получить сразу только важные параметры, а если нужны еще параметры воспользоваться подсистемой БСП
Если ИменаПараметровСеанса=Неопределено Тогда
   Запрос = Новый Запрос;
   Запрос.Текст =
   «ВЫБРАТЬ ПЕРВЫЕ 1
   | Пользователи.Ссылка КАК Ссылка
   |ИЗ
   | Справочник.Пользователи КАК Пользователи
   |ГДЕ
   | Пользователи.ИдентификаторПользователяИБ = &ИдентификаторПользователяИБ»;
   ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
   Запрос.Параметры.Вставить(«ИдентификаторПользователяИБ «, ИдентификаторПользователяИБ);  
   РезультатПользователи = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ПараметрыСеанса.ТекущийПользователь = ВыборкаДетальныеЗаписи.Ссылка;       
   КонецЦикла;
   ПараметрыСеанса.ТекущийКонтрагент = ПараметрыСеанса.ТекущийПользователь.Контрагент;
Иначе
   СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
КонецЕсли;
КонецПроцедуры
——————

Если вы читали статью 1С:Предприятие 8. Веб-сервисы. Реализация собственного веб-сервиса, то заметили что в дереве метаданных параметр ws-операции называется «Param», а в реализующем его методе называется «Параметр». Дело в том что наименование операндом в методе ws-операции не имеет значение, 1С подставляет операнды в том порядке в котором они указаны в дереве метаданных ws-операции. Например у нас есть операция Example1, в конфигураторе мы указали что операция имеет два параметра «param1» и «param2» и создали процедуру которая выводит «param2».

Код веб-сервиса 1с

Модуль веб-сервиса исполняется только на Сервере.
Замечание 1: нет смысла писать директивы компиляции &НаСервере, &НаКлиенте и другие.
——————
На каждый вызов веб-операции создается отдельный сеанс с информационной базой, поэтому при каждом вызове веб-операции происходит инициализация параметров сеанса. Инициализация параметров сеанса происходит в модуле сеанса в процедуре «УстановкаПараметровСеанса».
Замечание 2: не нагружайте эту процедуру лишними действиями.

Лично я в данное процедуре при первом вызове делаю инициализацию только самых часто используемых параметров сеанса. И только если нужны другие параметры сеанса, при повторном вызове, обрабатываю указанные параметры.
Пример:

Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)

//суть изменений — получить сразу только важные параметры, а если нужны еще параметры воспользоваться подсистемой БСП
Если ИменаПараметровСеанса=Неопределено Тогда
   Запрос = Новый Запрос;
   Запрос.Текст =
   «ВЫБРАТЬ ПЕРВЫЕ 1
   | Пользователи.Ссылка КАК Ссылка
   |ИЗ
   | Справочник.Пользователи КАК Пользователи
   |ГДЕ
   | Пользователи.ИдентификаторПользователяИБ = &ИдентификаторПользователяИБ»;
   ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
   Запрос.Параметры.Вставить(«ИдентификаторПользователяИБ «, ИдентификаторПользователяИБ);  
   РезультатПользователи = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ПараметрыСеанса.ТекущийПользователь = ВыборкаДетальныеЗаписи.Ссылка;       
   КонецЦикла;
   ПараметрыСеанса.ТекущийКонтрагент = ПараметрыСеанса.ТекущийПользователь.Контрагент;
Иначе
   СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
КонецЕсли;
КонецПроцедуры
——————

Если вы читали статью 1С:Предприятие 8. Веб-сервисы. Реализация собственного веб-сервиса, то заметили что в дереве метаданных параметр ws-операции называется «Param», а в реализующем его методе называется «Параметр». Дело в том что наименование операндом в методе ws-операции не имеет значение, 1С подставляет операнды в том порядке в котором они указаны в дереве метаданных ws-операции. Например у нас есть операция Example1, в конфигураторе мы указали что операция имеет два параметра «param1» и «param2» и создали процедуру которая выводит «param2».

Код веб-сервиса 1с

Если мы вызовем ws-операцию Example1 и передадим в качестве параметров param1=1, param2=2, то в результат получим 2.
Но если мы поменяем порядок операндов в конфигураторе:

Код веб-сервиса 1с

То тот же самый вызов вернет 1.
Замечание 3: после смены порядка параметров ws-операции, не забудьте поменять их порядок в заголовке функции, реализующей эту операцию.
Замечание 4: в качестве операндов ws-операции можете использовать отличные от заданных в конфигураторе имена.
——————

Если у части параметров ws-операции установлена галочка «Возможно пустое значение», то данный параметр может быть не указан при вызове, но тут есть несколько нюансов. При использовании клиента, например SoapClient вы не можете при передачи параметра просто взять и не указать параметр совсем. Например:

$a=$client->Plus2();


Эта строка вызовет ошибку «Неизвестная ошибка. Недостаточно параметров операции». То есть сам параметр надо передать, указав значение null:

$zz=array(«Param»=>null);
$a=$client->Plus2($zz);

Но тогда возникает вопрос, а как этот пустой параметр будет передан в 1С. Логично что программисту 1С захочется сделать в методе веб-операции следующее:

Функция Plus2(Параметр=0)
Возврат Параметр+2;
КонецФункции

То есть указать значение операнда в случае его отсутствия.
Теперь надо вызвать наш веб-операцию с пустым. Приведу пример xml сообщения soap с передачей значение null.

<soapenv:Envelope xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:uri=»www.URI.com»>
   <soapenv:Header/>
   <soapenv:Body>
      <uri:Plus2>
         <uri:Param xsi:nil=»true»></uri:Param>
      </uri:Plus2>
   </soapenv:Body>
</soapenv:Envelope>


xsi:nil=»true»  — указывает, что данный параметр не имеет значение. Для того что бы можно было указать null дополнительно надо связать префикс xsi с пространством имен: xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance».


Но если он сделает вызов такой ws-операции с пустым значением то получит сообщение об ошибке:

<soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>
   <soap:Header/>
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Client</faultcode>
         <faultstring>Неизвестная ошибка. {WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено
по причине:
{WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено</faultstring>
         <detail>Неизвестная ошибка. {WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено
по причине:
{WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено</detail>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>



Все потому, что переданное значение null преобразуется в значение 1с — «Неопределено». В этом можно убедиться если переписать процедуру так.



Функция Plus2(Параметр=0)
Если Параметр = Неопределено Тогда
Результат = 1;
Иначе
Результат = 2;
КонецЕсли;
Возврат Результат;
КонецФункции


Результатом будет — 1. 
Замечание 5: нет смысла писать значение операнда ws-операции по умолчанию(Функция Plus2(Параметр=0)). Для операндов, которые могут принимать пустое значение надо добавить проверку на равенство «Неопределено».
——————

Замечание 6: При передачи в веб-операцию параметра строкового типа, строка из одного или нескольких пробелов обрезается до пустой строки.
——————

Замечание 7: При передаче в веб-операцию параметра типа дата (datetime) с использованием формата с указанием на часовой пояс, время приводится к часовому поясу в котором находится платформа 1с. Например если операция имеет параметр «Дата» типа datetime, ПК на котором располагается 1с находится в часовом поясе +6, то при передаче в этот параметр значения ‘2012-09-14T00:00:00.000+02:00’ в коде веб-операции данный параметр будет иметь значение ‘14.09.2012 4:00:00’. Следовательно ‘+02:00’ указывает на то, в каком поясе находится отправитель. Это позволит вам не задумываться о переводе времени при работе в нескольких часовых поясах.
——————

Веб-сервисы как правило создают для обмена информацией с информационными системами разного происхождения. Перед программистом 1С возникает вопрос какие структуры XDTO стоит использовать. Например нужно на сайт из 1С передать информацию по какому либо товару. Есть два подхода: передача в виде объектов и передача в виде таблиц. При передаче в виде объектов вы создаете иерархическую структуру XDTO например:

То тот же самый вызов вернет 1.
Замечание 3: после смены порядка параметров ws-операции, не забудьте поменять их порядок в заголовке функции, реализующей эту операцию.
Замечание 4: в качестве операндов ws-операции можете использовать отличные от заданных в конфигураторе имена.
——————

Если у части параметров ws-операции установлена галочка «Возможно пустое значение», то данный параметр может быть не указан при вызове, но тут есть несколько нюансов. При использовании клиента, например SoapClient вы не можете при передачи параметра просто взять и не указать параметр совсем. Например:

$a=$client->Plus2();


Эта строка вызовет ошибку «Неизвестная ошибка. Недостаточно параметров операции». То есть сам параметр надо передать, указав значение null:

$zz=array(«Param»=>null);
$a=$client->Plus2($zz);

Но тогда возникает вопрос, а как этот пустой параметр будет передан в 1С. Логично что программисту 1С захочется сделать в методе веб-операции следующее:

Функция Plus2(Параметр=0)
Возврат Параметр+2;
КонецФункции

То есть указать значение операнда в случае его отсутствия.
Теперь надо вызвать наш веб-операцию с пустым. Приведу пример xml сообщения soap с передачей значение null.

<soapenv:Envelope xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:uri=»www.URI.com»>
   <soapenv:Header/>
   <soapenv:Body>
      <uri:Plus2>
         <uri:Param xsi:nil=»true»></uri:Param>
      </uri:Plus2>
   </soapenv:Body>
</soapenv:Envelope>


xsi:nil=»true»  — указывает, что данный параметр не имеет значение. Для того что бы можно было указать null дополнительно надо связать префикс xsi с пространством имен: xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance».


Но если он сделает вызов такой ws-операции с пустым значением то получит сообщение об ошибке:

<soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>
   <soap:Header/>
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Client</faultcode>
         <faultstring>Неизвестная ошибка. {WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено
по причине:
{WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено</faultstring>
         <detail>Неизвестная ошибка. {WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено
по причине:
{WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено</detail>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>



Все потому, что переданное значение null преобразуется в значение 1с — «Неопределено». В этом можно убедиться если переписать процедуру так.



Функция Plus2(Параметр=0)
Если Параметр = Неопределено Тогда
Результат = 1;
Иначе
Результат = 2;
КонецЕсли;
Возврат Результат;
КонецФункции


Результатом будет — 1. 
Замечание 5: нет смысла писать значение операнда ws-операции по умолчанию(Функция Plus2(Параметр=0)). Для операндов, которые могут принимать пустое значение надо добавить проверку на равенство «Неопределено».
——————

Замечание 6: При передачи в веб-операцию параметра строкового типа, строка из одного или нескольких пробелов обрезается до пустой строки.
——————

Замечание 7: При передаче в веб-операцию параметра типа дата (datetime) с использованием формата с указанием на часовой пояс, время приводится к часовому поясу в котором находится платформа 1с. Например если операция имеет параметр «Дата» типа datetime, ПК на котором располагается 1с находится в часовом поясе +6, то при передаче в этот параметр значения ‘2012-09-14T00:00:00.000+02:00’ в коде веб-операции данный параметр будет иметь значение ‘14.09.2012 4:00:00’. Следовательно ‘+02:00’ указывает на то, в каком поясе находится отправитель. Это позволит вам не задумываться о переводе времени при работе в нескольких часовых поясах.
——————

Веб-сервисы как правило создают для обмена информацией с информационными системами разного происхождения. Перед программистом 1С возникает вопрос какие структуры XDTO стоит использовать. Например нужно на сайт из 1С передать информацию по какому либо товару. Есть два подхода: передача в виде объектов и передача в виде таблиц. При передаче в виде объектов вы создаете иерархическую структуру XDTO например:

На рисунке видно что имеется объект «Номенклатура», этот объект имеет поле «ЕдиницаИзмерения», которое имеет тип объекта «Единица измерения» и при выгрузке остатков через объект «Остатки номенклатуры» в свойстве «Массив» будет происходить передача всего объекта номенклатура и его остатка. То есть при каждой передаче передается довольное объемный объект Номенклатура, хотя она меняется довольно редко и при большом количестве номенклатуры (порядка 2000 при данной структуре) выгрузка бы просто не завершилась, т.к. хостинг ограничивает и объем передаваемых данных и время выполнения скрипта по передаче. Для ускорения передачи проще передавать массив [УИДНоменклатуры — Остаток]. В таком случае передается только уникальный идентификатор номенклатуры, по которому мы всегда сможем получить его свойства.
И у того и у другого способа есть свои достоинства и недостатки.
Достоинства объектного способа:

  • вы всегда получаете полный объем информации и нет необходимости в синхронизации объектов по идентификаторам;
  • удобочитаемость — вы всегда видите наименование объекта и его свойства. а не просто идентификатор.

Недостатки объектного способа:

  • при изменении структуры приходится переписывать код всех процедур в которых идет работа с этим объектом;
  • большой объем передаваемых данных;
  • для формирования объекта необходимо получать все его свойства из запроса или лругим способом.

Достоинства табличного подхода:

  • небольшой объем передаваемых данных;
  • при изменении свойств объекта достаточно изменить только одну процедуру п синхронизации этого объекта;
  • для передачи ссылки на объект нет необходимости получать все его свойства в каждой ws-операции.

Недостатки табличного подхода:

  • трудно читать soap-сообщения;
  • при выгрузке данных ссылок на объекты, надо продумать еще и операции по получению свойств этих объектов и их своевременную синхронизацию(например при смене наименования товара его надо тут же выгрузить на сайт);

Замечание 8: при проектировании структуры выгрузки веб-сервиса не пренебрегайте вопросами объема передаваемых данных и времени их передачи, т.к. передача через веб-сервисы действительно проходит долго. Приведу пример своего опыта. Я хотел узнать максимальный объем передаваемых данных и создал веб сервис который передавал массив объектов XDTO. Один объект занимал примерно 740 байт (это довольно мало, т.к. не забывайте что в этот объем входят и длинна тегов soap сообщения). При канале в 5 Мбит/с смог передать 150 тысяч таких объектов и все это занимало чуть больше 100 Мб. И эта передача выполнялась 3,5 минуты. После 100 Мбайт soap-клиент (souapUI) просто завис. При использовании платного хостинга данная выгрузка бы прервалась на 2 минуте (обычно такое ограничения ставят хостеры на время выполнения скрипта).
——————

Замечание 9: для уменьшения передаваемых данных используйте короткие названия свойств объектов XDTO, т.к. они используются в названиях тегов (каждый тег повторяется два раза при открытии и закрытии тега). Используется кодировка UTF8, а это 2 байта на символ.
——————

Замечание 10: Указание  типа dateTime без символа «T» например: «2012-09-14 15:00:00» не вызывает ошибки, но отбрасывает часы,минуты и секунды. То есть система примет эту дату как «2012-09-14».
——————

Замечание 11: в качестве URI пространства имен можно указать не только ссылку, но и строки не являющие ссылками, даже в кириллице и даже цифры, но это совсем не означает что не происходит проверок этого поля. В это поле, например, нельзя указать «http://tcp://». Но ошибку выдаст уже веб-сервер

Как сделать в 1С, 1С: Конвертация данных, Конвертация данных, Обмен между базами, Закрытие месяца, Оценка задач, Отчеты в 1С, Моделирование, HTTP, Управление проектами, БУ, com-объекты, 1С: WMS Управление складом, РСБУ, 1С: Сценарное тестирование , Запросы 1С, LINUX, WEB, Оптимизация, 1С:Зарплата и Управление Персоналом, Excel, 1С: ERP, ADO, 1С:Управление производственным предприятием, Внедрение, Продажи, Отчетность, 1С: Розница, 1С: CRM , 1С:Бухгалтерия, 1С:Комплексная автоматизация, Производство, Интеграция 1С , Налоги , Отпуск, MS SQL Server , Расширение конфигурации, МСФО, СКД, Word, WEB-сервисы 1С, Внедрение ERP, Перенос данных, Торговое оборудование, Лизинг, 1С:Управление нашей фирмой, Администрирование 1С, 1С: Колледж, Правила обмена, 1С: Платформа — Наши эксперты

Проблемы

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

Сообщение об ошибке 1:

Ошибка: вложение: превышено максимальное число повторных попыток соединения. HRESULT = 0x80004005: Неопределенная ошибка — клиент: произошла непредвиденная ошибка во время обработки этого запроса. HRESULT = 0x80004005: Неопределенная ошибка — клиент: Отправка сообщения SOAP завершилась сбоем или не удается распознать полученный ответ (HRESULT = 0x80004005) HRESULT = 0x80004005: Неуказанная ошибка FaultCode = клиент faultString = вложение: максимально допустимое число повторных попыток подключения истекло.

Дополнительные сведения можно найти в разрешениях 6, 7, 8 и 9.

Сообщение об ошибке 2:

Соединитель: истекло время ожидания подключения. HRESULT = 0x800A1527-Client: в ходе обработки запроса возникла непредвиденная ошибка. HRESULT = 0x800A1527-клиент: не удалось отправить сообщение SOAP или не удается распознать полученный ответ HRESULT = 0x800A1527-клиент: Неуказанная ошибка клиента.

Дополнительные сведения можно найти в разрешениях 6, 7, 8 и 9.

Сообщение об ошибке 3:

Соединитель: неверный сертификат. HRESULT = 0x800A1529-Client: в ходе обработки запроса возникла непредвиденная ошибка. HRESULT = 0x800A1529-клиент: не удалось отправить сообщение SOAP или не удается распознать полученный ответ HRESULT = 0x800A1529-клиент: Неуказанная ошибка клиента. HRESULT=0x800A1529

Ознакомьтесь с разрешениями 6 и 9

Сообщение об ошибке 4:

Соединитель: Неуказанная ошибка HTTP. HRESULT = 0x800A1518-Client: в ходе обработки запроса возникла непредвиденная ошибка. HRESULT = 0x800A1518-клиент: не удалось отправить сообщение SOAP или не удается распознать полученный ответ HRESULT = 0x800A1518-клиент: Неуказанная ошибка клиента. HRESULT=0x800A1518

Дополнительные сведения можно найти в разрешениях 6, 7, 8 и 9.

Сообщение об ошибке 5:

Сбой подключения.: в соединителе не включена совпадающая схема авторизации. HRESULT = 0x80004005: Неопределенная ошибка — клиент: произошла непредвиденная ошибка во время обработки этого запроса. HRESULT = 0x80004005: Неопределенная ошибка — клиент: Отправка сообщения SOAP завершилась сбоем или не удается распознать полученный ответ (HRESULT = 0x80004005) HRESULT = 0x80004005: Неопределенная ошибка

Дополнительные сведения о разрешениях 7 и 9

Сообщение об ошибке 6:

Клиент: не удалось загрузить запрос в SoapReader. HRESULT = 0x80070057: неверный параметр. -Клиент: ошибка «неопределенный клиент». HRESULT = 0x80070057: неверный параметр. FaultCode = Client.

Дополнительные сведения можно найти в разрешениях 6, 7, 8 и 9.

Сообщение об ошибке 7:

Приложению не удается открыть системную базу данных. [DBNETLIB] [ConnectionOpen (соединение ()).] SQL Server не существует или в доступе отказано.Чтобы устранить эту проблему, системный администратор должен запустить pcConfiguration на сервере бизнес-портала.

Дополнительные сведения о разрешениях 5 и 9

Сообщение об ошибке 8:

Произошла ошибка. Ошибка: произошла ошибка при попытке открыть системную базу данных. (pcconnect)

Дополнительные сведения о разрешениях 1, 2, 3, 4 и 9

Сообщение об ошибке 9:

Приложение не может считать сведения о подключении к Соломоновы. Чтобы устранить эту проблему, системный администратор должен запустить pcConfiguration на сервере бизнес-портала.

Дополнительные сведения о разрешениях 1, 2, 3, 4 и 9

Сообщение об ошибке 10:

Не удается подключиться к системной базе данных. Запустите PCConfiguration. Недопустимые имя пользователя и пароль.

Дополнительные сведения о разрешениях 4 и 9

Сообщение об ошибке 11:

Ошибка: Клиент SOAP: при обработке запроса SOAP произошла ошибка. Недопустимый путь к PCService. asmx, указанному в ProjectService. wsdlYour. чтобы устранить эту проблему, запустите системный администратор pcConfiguration-Update на сервере бизнес-портала.

Ознакомьтесь с разрешениями 6 и 9

Причина

Для того чтобы страницы проекта были доступны, службы IIS должны иметь возможность подготовить и отправить запрос протокола SOAP в файл PCService. asmx.  Для работы необходимо настроить несколько вещей.  Если один или несколько из указанных ниже параметров заданы неправильно, это может привести к ошибкам, перечисленным в разделе «проблема».

  1. Данные для входа в базу данных Microsoft Dynamics SL отсутствуют или неправильно хранятся в реестре.

  2. Приложение Microsoft. Соломоновы. PMA. Security. ImpersonateDLL. dll отсутствует, не зарегистрировано или у пользователей нет разрешений на доступ к файлу.

  3. Учетная запись в пуле приложений не имеет разрешений на доступ к разделу реестра HKEY_LOCAL_MACHINE SOFTWAREMicrosoftBusiness PortalPMASolomon

  4. Файл CAPICOM. dll отсутствует, не зарегистрирован, имеет неверную версию или у пользователей нет разрешений на доступ к файлу.

  5. Сервер, на котором запущены службы IIS и SQL Server, должен поддерживать связь с помощью протокола TCP/IP.

  6. Путь к файлу PCService. ASX в файле ProjectService. WSDL указан неправильно

    1. Путь должен указывать на имя сервера IIS

    2. Путь должен содержать номер порта

    3. Путь должен быть URL-адресом, который не является SSL

    4. При использовании заголовков узлов IIS путь должен разрешаться на соответствующий веб-сайт.

  7. Сайт IIS не использует проверку подлинности Windows (NTLM)

  8. Переменная SessionState в файле Web. config задана неправильно

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

Решение

Разрешение 1- Запуск служебной программы PCConfiguration

  1. Откройте файл PCConfiguration. exe на сервере бизнес-портала и дважды щелкните его, чтобы выполнить.  Обычно это расположение находится в папке c:Inetpubwwwrootbin или в папке C:InetpubwwwrootwssVirtualDirectories80bin.

  2. Заполните следующие поля:

    1. Имя сервера SQL Server: введите имя сервера SQL Server, на котором размещаются базы данных Microsoft Dynamics SL.

    2. Системная БД — введите имя базы данных системы Microsoft Dynamics SL.

    3. Пользователь SQL: введите имя пользователя SQL, у которого есть доступ к системной базе данных.  «SA» или «BusinessPortalUser» — распространенные параметры.

    4. Password (пароль): введите пароль пользователя, введенного в поле пользователя SQL

  3. Нажмите кнопку проверить соединение.  Если появляется сообщение об ошибке, проверьте значения на этапе 2. Примечание. Эта кнопка может не выполнить действие из-за ошибки 55474.

  4. Нажмите кнопку обновить реестр.  Появится следующее сообщение: «данные успешно записаны в реестр».

  5. Закройте служебную программу и попробуйте еще раз.

Разрешение 2 — проверка файла Microsoft. Соломоновы. PMA. Security. ImpersonateDLL. dll

  1. На сервере бизнес-портала запустите диспетчер информационных служб Интернета (IIS).

  2. Щелкните правой кнопкой мыши веб-сайт бизнес-портала и выберите пункт «Свойства»

  3. На вкладке домашний каталог запишите значение в поле «локальный путь».

  4. На вкладке «домашний каталог» Обратите внимание на значение в поле со списком «Группа приложений».

  5. Нажмите кнопку ОК, чтобы закрыть окно «Свойства».

  6. В диспетчере IIS разверните элемент «пулы приложений».  Щелкните правой кнопкой мыши группу приложений, найденную на шаге 4, и выберите пункт «Свойства».

  7. На вкладке «удостоверение» Обратите внимание на пользователя, указанного в качестве удостоверения пула приложений.

  8. Нажмите кнопку ОК, чтобы закрыть окно «Свойства».

  9. Закрытие диспетчера IIS

  10. В проводнике Windows перейдите к каталогу, найденному на шаге 3.

  11. Прокрутите папку bin вниз и найдите файл Microsoft. Соломоновы. PMA. Security. ImpersonateDLL. dll.

    1. Если этот файл отсутствует, может потребоваться переустановка бизнес-портала

  12. Щелкните файл правой кнопкой мыши и выберите пункт Свойства.

  13. На вкладке «безопасность» убедитесь в том, что у пользователя на шаге 7 есть права «чтение» и «чтение & выполнения»

  14. Нажмите кнопку ОК, чтобы закрыть окно «Свойства».

  15. Щелкните файл правой кнопкой мыши и выберите команду «Открыть с помощью…»

  16. Выберите «выбрать программу из списка»

  17. Нажмите кнопку «Обзор…»

  18. Перейдите в папку C:WindowsSystem32 и найдите файл regsvr32. exe и нажмите кнопку «Открыть».

  19. Нажмите кнопку ОК.  Появится следующее сообщение: «DllRegisterServer в C:InetpubwwwrootbinMicrosoft.Solomon.Pma.Security.ImpersonateDLL.dll успешно».

  20. Попробуйте еще раз загрузить страницы рабочего портала

Разрешение 3 : Проверка раздела реестра

  1. На сервере бизнес-портала запустите диспетчер информационных служб Интернета (IIS).

  2. Щелкните правой кнопкой мыши веб-сайт бизнес-портала и выберите пункт Свойства.

  3. На вкладке «домашний каталог» Обратите внимание на значение в поле со списком «пул приложений».

  4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства» и выйти из диспетчера IIS

  5. Выберите Пуск-> выполнить и введите RegEdt32.  В этом случае следует открыть редактор реестра.

  6. Перейдите на HKEY_LOCAL_MACHINE SOFTWAREMicrosoftBusiness PortalPMASolomon

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

  7. Щелкните правой кнопкой мыши «Соломоновы» и выберите «разрешения»

  8. Убедитесь в том, что пользователь из этапа 3 имеет разрешения «чтение»

  9. Попробуйте еще раз загрузить страницы рабочего портала

Более подробную информацию вы видите в статье базы знаний 912363 .

Разрешение 4 : Проверка файла CAPICOM. dll

  1. Перейдите в папку C:WindowsSystem32 на сервере бизнес-портала.

  2. Щелкните правой кнопкой мыши элемент CAPICOM. Файл DLL и выберите пункт «Свойства»

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

  3. На вкладке Версия убедитесь в том, что в версии файла отображается 2.1.0.1

    1. Если версия файла неверна, возможно, потребуется скопировать файл с другой рабочей станции или переустановить бизнес-портал

  4. На вкладке Безопасность Убедитесь, что в группе доменные службы есть разрешение чтение и чтение & выполнение прав на этот файл.  Ознакомьтесь состатьей базы знаний 927618

  5. Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства».

  6. Щелкните файл правой кнопкой мыши и выберите команду «Открыть с помощью…»

  7. Выберите «выбрать программу из списка»

  8. Нажмите кнопку «Обзор…»

  9. Перейдите в папку C:WindowsSystem32 и найдите файл regsvr32. exe и нажмите кнопку Открыть.

  10. Нажмите кнопку ОК.  Появится следующее сообщение: «DllRegisterServer в C:WINDOWSsystem32capicom.dll успешно».

  11. Попробуйте еще раз загрузить страницы рабочего портала

  12. Если вы по-прежнему получаете сообщение об ошибке:

    1. Чтобы снова запустить служебную программу PCConfiguration, ознакомьтесь с разрешениями 1.

    2. Перезапустите IIS, нажав Пуск-> выполнить и введите «IISReset».

    3. Попробуйте еще раз загрузить страницы рабочего портала

Более подробную информацию вы видите в статье базы знаний 909144 .

Разрешение 5 – Проверка возможности связи сервера IIS и сервера SQL Server с помощью протокола TCP/IP

  1. Протокол TCP/IP должен быть включен как на сервере SQL Server, так и на сервере IIS, на котором размещаются сайты бизнес-портала.

  2. Сведения о том, как это проверить, можно найти в статье база знаний 954024

Разрешение 6 : Проверьте путь к файлу PCService. ASX в файле ProjectService. WSDL

  1. На сервере бизнес-портала откройте файл ProjectService. WSDL.  Обычно это расположение находится в каталоге C:Program FilesMicrosoft DynamicsBusiness PortalApplicationsPMA.

  2. Открытие файла в блокноте

  3. Прокрутите файл вниз и найдите тег, который начинается со слова «<SOAP: Address Location =»

  4. В этом теге должен быть указан URL-адрес для файла PCService. asmx.  Он должен выглядеть примерно так: «HTTP://MachineName: 80/BUSINESSPORTAL/PMA/PCService. asmx» у этого URL-адреса есть несколько конкретных требований.  Проверьте и, при необходимости, исправьте указанные ниже элементы.

    1. URL-адрес должен указывать имя компьютера (например, BPSERVER).  IP-адреса (например, 192.168.0.10), localhost или Domain Name (например, BP.contoso.com) не будут работать для запросов SOAP.

      1. Чтобы найти имя компьютера, нажмите Пуск-> выполнить и введите CMD.

      2. Введите имя узла и нажмите клавишу ВВОД

      3. Должно быть возвращено имя компьютера.  Параметр MachineName в URL-адресе должен соответствовать этому значению.

    2. URL-адрес не должен использовать SSL.  URL-адрес должен начинаться с «http://», а не «https://»

      1. Если на вашем веб-сайте настроено использование SSL, ознакомьтесь со статьей база знаний 924723 , в которой вы узнаете, как настроить исключение, разрешающее подключение к файлу PCService. asmx без SSL.

    3. URL-адрес должен быть разрешаемым на сайте BusinessPortal в службах IIS.

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

      2. Более подробную информацию вы видите в статье базы знаний 2005711 .

  5. Протестируйте URL-адрес, чтобы убедиться, что он является допустимым.  Для этого скопируйте URL-адрес и вставьте его в Internet Explorer на сервере бизнес-портала.  Он должен открыть страницу под названием «PCServices».  Если вместо этого вы получаете сообщение об ошибке SharePoint или появляется сообщение об ошибке «не удается отобразить страницу», проверьте элементы на шаге 4.

  6. Теперь, когда у файла ProjectService. WSDL есть допустимый URL-адрес, попробуйте еще раз попробовать на странице бизнес-портала

Дополнительные сведения приведены в статье база знаний 892356 или статья базы знаний 897024 .

Разрешение 7 : Проверка способа проверки подлинности в IIS

  1. На сервере бизнес-портала запустите диспетчер информационных служб Интернета (IIS).

  2. Щелкните правой кнопкой мыши веб-сайт бизнес-портала и выберите пункт Свойства.

  3. На вкладке Безопасность каталога в разделе «Управление доступом и проверка подлинности» выберите команду Изменить…

  4. Убедитесь, что установлен флажок Встроенная проверка подлинности Windows.

  5. Убедитесь, что флажок «разрешить анонимный доступ», «Краткая проверка подлинности для серверов домена Windows» и «Проверка подлинности .NET Passport» не установлены.

  6. Проверка подлинности Basic не требуется. Тем не менее, если флажок установлен, это не должно приводить к проблеме.

  7. Нажмите кнопку ОК, а затем еще раз нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства».

  8. Закрытие диспетчера IIS

  9. Перезапустите IIS, нажав Пуск-> выполнить и введите «IISReset».

  10. Попробуйте еще раз на странице бизнес-портала

Разрешение 8 : проверка переменной sessionState в файле Web. config

  1. На сервере бизнес-портала запустите диспетчер информационных служб Интернета (IIS).

  2. Щелкните правой кнопкой мыши веб-сайт бизнес-портала и выберите пункт Свойства.

  3. На вкладке «домашний каталог» Обратите внимание на значение в поле «локальный путь».

  4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства» и выйти из диспетчера IIS

  5. Перейдите к каталогу, найденному на шаге 3, и найдите файл Web. config.

  6. Создание резервной копии файла Web. config

  7. Откройте файл web.config в блокноте.

  8. Поиск тега, который начинается с «<sessionState»

  9. Изменение всего тега для чтения «<sessionState =» INPROC «/>»

  10. Сохранение файла и закрытие блокнота

  11. Перезапустите IIS, нажав Пуск-> выполнить и введите «IISReset».

  12. Попробуйте еще раз загрузить страницы рабочего портала

 Разрешение 9 : запустите сценарий PCConnectDebug и отправьте результаты в службу поддержки. 

  1. Скачать B2004933_pcConnectDebug. zip

  2. Распаковка файла на сервере бизнес-портала

  3. Скопируйте файл «pcConnectDebug. ASP» в каталог C:Program FilesMicrosoft DynamicsBusiness PortalApplicationsPMA.

  4. На сервере бизнес-портала откройте Internet Explorer и войдите в бизнес-портал.

  5. Щелкните веб-страницу центра проектов

  6. Вставьте следующий URL-адрес, чтобы открыть страницу PCConnectDebug: http://ServerName:Port/BusinessPortal/Applications/PMA/pcconnectdebug.ASP замените значение serverName именем сервера BP.  Замените «порт» на номер порта, на котором работает веб-сайт BP.

  7. Вам будет предложено «нажмите ОК», чтобы продолжить.  Нажмите кнопку ОК.

  8. Откроется веб-страница, которая начинается с «Запуск отладки…».   В Internet Explorer щелкните файл-> сохранить как… и сохраните страницу в файле.

    1. Внимание!в зависимости от того, насколько далеко может быть предоставлена Отладка, результаты могут содержать пароль в открытом тексте.  Вы можете изменить файл в блокноте и заменить Фактический пароль на слово «thePassword» перед отправкой файла для поддержки.

  9. Отправьте этот файл службе поддержки пользователей Майкрософт для дальнейшего анализа.

  10. После устранения проблемы удалите файл pcConnectDebug. ASP из каталога C:Program FilesMicrosoft DynamicsBusiness PortalApplicationsPMA.

Понравилась статья? Поделить с друзьями:
  • Ошибка soap сервера внутренняя ошибка
  • Ошибка soap сервера unknown error
  • Ошибка soap сервера bad allocation
  • Ошибка soap сервера 504 gateway timeout
  • Ошибка soap сервера 502 bad gateway