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»,»»);
В чем может быть дело. Из других систем этот метод работает
1 — 12.02.13 — 14:22
ИмяВэбСервиса=ТвоёИмя;//
ИмяТочкиПодключения=ИмяВэбСервиса+»Soap»;
АдресВэбСервиса=»http://ИмяСервера/ИмяБазы/ws/»+ИмяВэбСервиса;
Определения= новый WSОпределения(АдресВэбСервиса+»?wsdl»,Юзер,Пароль);
Прокси= Новый WSПрокси(Определения,URiПространстваИмен,ИмяВэбСервиса,ИмяТочкиПодключения);
Прокси.Пользователь = Юзер;
Прокси.Пароль = пароль;
2 — 12.02.13 — 14:26
Прошу прощения. Это к 1С. Для сторонних может быть не так.
Хотя кроме АдресВэбСервиса должно быть одинаково. Смотри в отладчике
3 — 12.02.13 — 14:29
(0) wsdl?
4 — 12.02.13 — 14:29
В отладчике у меня есть только одна точка подключения, ее я и прописываю в Новый WSПрокси(), если вызываю с окончанием soap, она ругается что порт не найден
5 — 12.02.13 — 14:30
Пробовала и «ПутьКМоемуСервису?wsdl» и «ПутьКМоемуСервису разницы нет
6 — 12.02.13 — 14:30
(0) Проверь имя метода по wsdl
7 — 12.02.13 — 14:31
создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает
8 — 12.02.13 — 14:31
(5) Если подумать, то ПутьКМоемуСервису?wsdl забив в браузер ты увидишь описание web-сервиса….
9 — 12.02.13 — 14:32
(0) web-сервисы чувствительны к регистру букв.
10 — 12.02.13 — 14:33
создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает
Она ругается, что формат неверен, в каком формате нужно указывать url
11 — 12.02.13 — 14:34
(10) а в браузере открывается?
12 — 12.02.13 — 14:34
Путь у меня ПутьКМоемуСервису.xml?wsdl
13 — 12.02.13 — 14:34
открывается в xml формате
14 — 12.02.13 — 14:35
15 — 12.02.13 — 14:36
(12) в формате URI
16 — 12.02.13 — 14:36
Есть веб сервис сторонний — как правило, в виде URI…
17 — 12.02.13 — 14:38
Пишет что неверный формат, может нужно каку-нибудь библитеку подгрузить?
18 — 12.02.13 — 14:39
(17) :)))))))))))))))))))))))))))))))))))))))))))
19 — 12.02.13 — 14:40
(17) адрес сервера секретный такой что ли?
20 — 12.02.13 — 14:40
ага
21 — 12.02.13 — 14:40
(17) значит не судьба с этим сервисом из 1Ски поработать.
SOAP он такой SOAP, слишком вольно местами трактуемый
22 — 12.02.13 — 14:41
(17) Адрес стороннего web-сервиса какой?
23 — 12.02.13 — 14:41
(21) Не факт, Вить
24 — 12.02.13 — 14:42
(20) Да не нужен мне твой сервант, сама проверь, открывается ли в браузере wsdl-ка
25 — 12.02.13 — 14:42
(21) Если там еще и https то вообще песня
26 — 12.02.13 — 14:43
открывая ПутьКМоемуСервису.xml?wsdl я получаю тоже что и когда пишу ПутьКМоемуСервису.xml
27 — 12.02.13 — 14:43
(21) использовать платформу 8.3 в качестве ws2ws-proxy :)))
28 — 12.02.13 — 14:44
ТС, у меня была схожая ситуация, вот статья с моими изысканиями: http://infostart.ru/public/161726/
29 — 12.02.13 — 14:44
(26) И что получаешь? *уже просто интересно*
30 — 12.02.13 — 14:44
не могу использовать 8.3
31 — 12.02.13 — 14:45
(27) В моем случае это не помогло(сторонний веб сервис был на Oracle Fusion Middlewere)
32 — 12.02.13 — 14:48
(31) без разницы. Можно использовать любое MQ с поддержкой SOAP в качестве ws2ws-proxy
33 — 12.02.13 — 14:49
(30) Ну не можешь и не можешь.
Короче, ты описание сервиса через обычный браузер видишь?
34 — 12.02.13 — 14:51
(32) Можно поподробнее?
35 — 12.02.13 — 14:53
я вижу его в формате xml
36 — 12.02.13 — 14:54
(35) Ищи метод addComment и смотри что он должен получить.
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»/>
38 — 12.02.13 — 14:55
(34) MQ = Message Queue, например, RabbitMQ
39 — 12.02.13 — 14:56
это параметры метода addcomment
40 — 12.02.13 — 14:56
(37) Метод в том пространстве имен?
41 — 12.02.13 — 14:57
>>Из других систем этот метод работает
Из каких других, 1С или что-то иное?
42 — 12.02.13 — 14:58
что-то иное, код на perl
43 — 12.02.13 — 15:16
(42) на той же машине, что и сервер 1С?
44 — 12.02.13 — 15:17
нет
45 — 12.02.13 — 15:17
на другой машине
46 — 12.02.13 — 15:18
(39) ты с регистром имя метода точно не путаешься, дело в том, что метод addcomment из (39) и addComment из (0) с точки зрения SOAP — разные
47 — 12.02.13 — 15:18
(42) на perl имя метода как звучит?
48 — 12.02.13 — 15:19
на perl они вызывают
my $obj = $soap->addComment( $tw_type, $tw_id, $tw_comment, $tw_user, $tw_attachments );
49 — 12.02.13 — 15:19
(45) у сервиса есть эхо-метод?
50 — 12.02.13 — 15:24
(48) в (0) скорее всего ошибка.
в perl пространство имен и прочее статично или дергает из определения?
51 — 12.02.13 — 15:24
(49) что за эхо-метод?
52 — 12.02.13 — 15:25
(51) обычно метод echo реализуют у сервисов для диагностики связи.
53 — 12.02.13 — 15:34
(0) Можешь создать класс на Net для подключения вэб сервиса
а затем через вот этот прокиси v8: Объекты Net в IDispatch
подключить его как ком
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»);
и. т. п.
55 — 12.02.13 — 15:37
(53) Да там в создании WSProxy косяк, ИМХО
56 — 12.02.13 — 15:39
(54) 1ска же нормально преобразует в xml примитивные типы, мне кажется, это излишество
57 — 12.02.13 — 15:42
с фабрикой я тоже пробовала, но проблема именно в том что 1с-ка не видит этот метод
58 — 12.02.13 — 15:52
(57) Проблема в создании WSProxy
59 — 12.02.13 — 15:53
(57) на (50) ответь
60 — 12.02.13 — 15:55
(59) Точно сказать не могу
61 — 12.02.13 — 15:56
(60) Причина? Ты не знаешь статично оно в perl или динамично?
62 — 12.02.13 — 15:57
я не вижу весь код
63 — 12.02.13 — 15:57
мне дали только пример
64 — 12.02.13 — 15:58
проблема в том, что wsdl скорее всего не соответствует спецификации. из-за чего 1Ска не может преобразовать его в XTDO.
65 — 12.02.13 — 15:59
(64) ИМХО, там она просто из другого пространства имен цепляет.
66 — 12.02.13 — 16:00
(64) врядли
67 — 12.02.13 — 16:02
(64) Меня вот это смущает:
WSСервис = Определения.Сервисы[0];
Proxy = Новый WSПрокси(Определения, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ИмяТочкиПодключения[0].Имя);
68 — 12.02.13 — 16:02
что именно (67)
69 — 12.02.13 — 16:02
(64) Для сложных и included type есть такая фича
70 — 12.02.13 — 16:03
(68) URIПространстваИмен и прочее точно соответсвует определению?
71 — 12.02.13 — 16:03
(68) сервис на закрытом порту?
72 — 12.02.13 — 16:04
а то играем в «Угадай мелодию»….
73 — 12.02.13 — 16:12
(56) Для anyType нужно явное создание типа. Но в данном случае ругается на метод. Если же в (10) она WS ссылку не может загрузить, то возможно, что 1С не понимает. Если бы была ссыдка можно было бы проверить
74 — 12.02.13 — 16:13
(71) как это можно проверить
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>
Что типа этого, в чем может быть ошибка
76 — 12.02.13 — 17:29
и закрывается все </definitions>
77 — 12.02.13 — 17:33
Я давно разочаровался в 1с-овском SOAP. Сплошь и рядом продвинутые веб-сервисы юзают SOAP шире, чем его поддерживает 1С. В итоге 1С их «не понимает».
78 — 13.02.13 — 09:10
Помогите, очень надо
79 — 13.02.13 — 09:42
(78) Вы статью читали, ссылку на которую я давал в самом начале? Делайте как там.
80 — 13.02.13 — 10:48
Сохрани WSDL-описание в xml-файл, и загрузи WSссылку, если будет ошибка «неверный формат», значит надо редактировать xml. Я так раздел за разделом отлаживал. Еще проверь веб-сервис на валидность, можно через сайт http://www.validwsdl.com/
81 — 13.02.13 — 11:06
(79) Хорошая идея.
(80) Я тоже как-то было так отлаживал. Избавлял от циклических ссылок в пространствах имен (1С этого не переваривает). Думал, что победа близка. wsdl успешно загрузился. А потом выяснилось, что сервис использует хитрый способ авторизации через установку каких-то заголовков (подробности уже плохо помню), а 1С эту фигню не поддерживает.
Было очень обидно.
82 — 13.02.13 — 13:12
файл сохранила, пишет что неверный формат, можно ли какой-нибудь прогой его проверить. Сайт не подходит http://www.validwsdl.com/
83 — 14.02.13 — 09:04
Может кто знает, что может не нравиться в wsdl 1с, почему она может писать неверный формат?
84 — 14.02.13 — 09:04
и что такое циклические ссылки в пространствах имен
85 — 14.02.13 — 09:23
(82) SoapUI тебе в помощь.
(83) невалидный wsdl
86 — 14.02.13 — 09:26
wsdl валидный, я отправляла запрос с помощью soap-клиента, все нормально отрабатывает
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: нет смысла писать директивы компиляции &НаСервере, &НаКлиенте и другие.
——————
На каждый вызов веб-операции создается отдельный сеанс с информационной базой, поэтому при каждом вызове веб-операции происходит инициализация параметров сеанса. Инициализация параметров сеанса происходит в модуле сеанса в процедуре «УстановкаПараметровСеанса».
Замечание 2: не нагружайте эту процедуру лишними действиями.
Лично я в данное процедуре при первом вызове делаю инициализацию только самых часто используемых параметров сеанса. И только если нужны другие параметры сеанса, при повторном вызове, обрабатываю указанные параметры.
Пример:
Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
//суть изменений — получить сразу только важные параметры, а если нужны еще параметры воспользоваться подсистемой БСП
Если ИменаПараметровСеанса=Неопределено Тогда
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ ПЕРВЫЕ 1
| Пользователи.Ссылка КАК Ссылка
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.ИдентификаторПользователяИБ = &ИдентификаторПользователяИБ»;
ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
Запрос.Параметры.Вставить(«ИдентификаторПользователяИБ «, ИдентификаторПользователяИБ);
РезультатПользователи = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ПараметрыСеанса.ТекущийПользователь = ВыборкаДетальныеЗаписи.Ссылка;
КонецЦикла;
ПараметрыСеанса.ТекущийКонтрагент = ПараметрыСеанса.ТекущийПользователь.Контрагент;
Иначе
СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
КонецЕсли;
КонецПроцедуры
——————
Если вы читали статью 1С:Предприятие 8. Веб-сервисы. Реализация собственного веб-сервиса, то заметили что в дереве метаданных параметр ws-операции называется «Param», а в реализующем его методе называется «Параметр». Дело в том что наименование операндом в методе ws-операции не имеет значение, 1С подставляет операнды в том порядке в котором они указаны в дереве метаданных ws-операции. Например у нас есть операция Example1, в конфигураторе мы указали что операция имеет два параметра «param1» и «param2» и создали процедуру которая выводит «param2».
Модуль веб-сервиса исполняется только на Сервере.
Замечание 1: нет смысла писать директивы компиляции &НаСервере, &НаКлиенте и другие.
——————
На каждый вызов веб-операции создается отдельный сеанс с информационной базой, поэтому при каждом вызове веб-операции происходит инициализация параметров сеанса. Инициализация параметров сеанса происходит в модуле сеанса в процедуре «УстановкаПараметровСеанса».
Замечание 2: не нагружайте эту процедуру лишними действиями.
Лично я в данное процедуре при первом вызове делаю инициализацию только самых часто используемых параметров сеанса. И только если нужны другие параметры сеанса, при повторном вызове, обрабатываю указанные параметры.
Пример:
Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
//суть изменений — получить сразу только важные параметры, а если нужны еще параметры воспользоваться подсистемой БСП
Если ИменаПараметровСеанса=Неопределено Тогда
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ ПЕРВЫЕ 1
| Пользователи.Ссылка КАК Ссылка
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.ИдентификаторПользователяИБ = &ИдентификаторПользователяИБ»;
ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
Запрос.Параметры.Вставить(«ИдентификаторПользователяИБ «, ИдентификаторПользователяИБ);
РезультатПользователи = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ПараметрыСеанса.ТекущийПользователь = ВыборкаДетальныеЗаписи.Ссылка;
КонецЦикла;
ПараметрыСеанса.ТекущийКонтрагент = ПараметрыСеанса.ТекущийПользователь.Контрагент;
Иначе
СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
КонецЕсли;
КонецПроцедуры
——————
Если вы читали статью 1С:Предприятие 8. Веб-сервисы. Реализация собственного веб-сервиса, то заметили что в дереве метаданных параметр ws-операции называется «Param», а в реализующем его методе называется «Параметр». Дело в том что наименование операндом в методе ws-операции не имеет значение, 1С подставляет операнды в том порядке в котором они указаны в дереве метаданных ws-операции. Например у нас есть операция Example1, в конфигураторе мы указали что операция имеет два параметра «param1» и «param2» и создали процедуру которая выводит «param2».
Если мы вызовем ws-операцию Example1 и передадим в качестве параметров param1=1, param2=2, то в результат получим 2.
Но если мы поменяем порядок операндов в конфигураторе:
То тот же самый вызов вернет 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. Для работы необходимо настроить несколько вещей. Если один или несколько из указанных ниже параметров заданы неправильно, это может привести к ошибкам, перечисленным в разделе «проблема».
-
Данные для входа в базу данных Microsoft Dynamics SL отсутствуют или неправильно хранятся в реестре.
-
Приложение Microsoft. Соломоновы. PMA. Security. ImpersonateDLL. dll отсутствует, не зарегистрировано или у пользователей нет разрешений на доступ к файлу.
-
Учетная запись в пуле приложений не имеет разрешений на доступ к разделу реестра HKEY_LOCAL_MACHINE SOFTWAREMicrosoftBusiness PortalPMASolomon
-
Файл CAPICOM. dll отсутствует, не зарегистрирован, имеет неверную версию или у пользователей нет разрешений на доступ к файлу.
-
Сервер, на котором запущены службы IIS и SQL Server, должен поддерживать связь с помощью протокола TCP/IP.
-
Путь к файлу PCService. ASX в файле ProjectService. WSDL указан неправильно
-
Путь должен указывать на имя сервера IIS
-
Путь должен содержать номер порта
-
Путь должен быть URL-адресом, который не является SSL
-
При использовании заголовков узлов IIS путь должен разрешаться на соответствующий веб-сайт.
-
-
Сайт IIS не использует проверку подлинности Windows (NTLM)
-
Переменная SessionState в файле Web. config задана неправильно
Обычно сообщение об ошибке не содержит подробной информации о том, какие из предыдущих элементов могут быть неправильными. Поэтому мы рекомендуем попробовать все возможные решения.
Решение
Разрешение 1- Запуск служебной программы PCConfiguration
-
Откройте файл PCConfiguration. exe на сервере бизнес-портала и дважды щелкните его, чтобы выполнить. Обычно это расположение находится в папке c:Inetpubwwwrootbin или в папке C:InetpubwwwrootwssVirtualDirectories80bin.
-
Заполните следующие поля:
-
Имя сервера SQL Server: введите имя сервера SQL Server, на котором размещаются базы данных Microsoft Dynamics SL.
-
Системная БД — введите имя базы данных системы Microsoft Dynamics SL.
-
Пользователь SQL: введите имя пользователя SQL, у которого есть доступ к системной базе данных. «SA» или «BusinessPortalUser» — распространенные параметры.
-
Password (пароль): введите пароль пользователя, введенного в поле пользователя SQL
-
-
Нажмите кнопку проверить соединение. Если появляется сообщение об ошибке, проверьте значения на этапе 2. Примечание. Эта кнопка может не выполнить действие из-за ошибки 55474.
-
Нажмите кнопку обновить реестр. Появится следующее сообщение: «данные успешно записаны в реестр».
-
Закройте служебную программу и попробуйте еще раз.
Разрешение 2 — проверка файла Microsoft. Соломоновы. PMA. Security. ImpersonateDLL. dll
-
На сервере бизнес-портала запустите диспетчер информационных служб Интернета (IIS).
-
Щелкните правой кнопкой мыши веб-сайт бизнес-портала и выберите пункт «Свойства»
-
На вкладке домашний каталог запишите значение в поле «локальный путь».
-
На вкладке «домашний каталог» Обратите внимание на значение в поле со списком «Группа приложений».
-
Нажмите кнопку ОК, чтобы закрыть окно «Свойства».
-
В диспетчере IIS разверните элемент «пулы приложений». Щелкните правой кнопкой мыши группу приложений, найденную на шаге 4, и выберите пункт «Свойства».
-
На вкладке «удостоверение» Обратите внимание на пользователя, указанного в качестве удостоверения пула приложений.
-
Нажмите кнопку ОК, чтобы закрыть окно «Свойства».
-
Закрытие диспетчера IIS
-
В проводнике Windows перейдите к каталогу, найденному на шаге 3.
-
Прокрутите папку bin вниз и найдите файл Microsoft. Соломоновы. PMA. Security. ImpersonateDLL. dll.
-
Если этот файл отсутствует, может потребоваться переустановка бизнес-портала
-
-
Щелкните файл правой кнопкой мыши и выберите пункт Свойства.
-
На вкладке «безопасность» убедитесь в том, что у пользователя на шаге 7 есть права «чтение» и «чтение & выполнения»
-
Нажмите кнопку ОК, чтобы закрыть окно «Свойства».
-
Щелкните файл правой кнопкой мыши и выберите команду «Открыть с помощью…»
-
Выберите «выбрать программу из списка»
-
Нажмите кнопку «Обзор…»
-
Перейдите в папку C:WindowsSystem32 и найдите файл regsvr32. exe и нажмите кнопку «Открыть».
-
Нажмите кнопку ОК. Появится следующее сообщение: «DllRegisterServer в C:InetpubwwwrootbinMicrosoft.Solomon.Pma.Security.ImpersonateDLL.dll успешно».
-
Попробуйте еще раз загрузить страницы рабочего портала
Разрешение 3 : Проверка раздела реестра
-
На сервере бизнес-портала запустите диспетчер информационных служб Интернета (IIS).
-
Щелкните правой кнопкой мыши веб-сайт бизнес-портала и выберите пункт Свойства.
-
На вкладке «домашний каталог» Обратите внимание на значение в поле со списком «пул приложений».
-
Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства» и выйти из диспетчера IIS
-
Выберите Пуск-> выполнить и введите RegEdt32. В этом случае следует открыть редактор реестра.
-
Перейдите на HKEY_LOCAL_MACHINE SOFTWAREMicrosoftBusiness PortalPMASolomon
-
Если этот раздел реестра отсутствует, ознакомьтесь с разделом разрешение 1, чтобы запустить служебную программу PCConfiguration
-
-
Щелкните правой кнопкой мыши «Соломоновы» и выберите «разрешения»
-
Убедитесь в том, что пользователь из этапа 3 имеет разрешения «чтение»
-
Попробуйте еще раз загрузить страницы рабочего портала
Более подробную информацию вы видите в статье базы знаний 912363 .
Разрешение 4 : Проверка файла CAPICOM. dll
-
Перейдите в папку C:WindowsSystem32 на сервере бизнес-портала.
-
Щелкните правой кнопкой мыши элемент CAPICOM. Файл DLL и выберите пункт «Свойства»
-
Если этот файл отсутствует, возможно, потребуется скопировать файл с другой рабочей станции или переустановить бизнес-портал.
-
-
На вкладке Версия убедитесь в том, что в версии файла отображается 2.1.0.1
-
Если версия файла неверна, возможно, потребуется скопировать файл с другой рабочей станции или переустановить бизнес-портал
-
-
На вкладке Безопасность Убедитесь, что в группе доменные службы есть разрешение чтение и чтение & выполнение прав на этот файл. Ознакомьтесь состатьей базы знаний 927618
-
Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства».
-
Щелкните файл правой кнопкой мыши и выберите команду «Открыть с помощью…»
-
Выберите «выбрать программу из списка»
-
Нажмите кнопку «Обзор…»
-
Перейдите в папку C:WindowsSystem32 и найдите файл regsvr32. exe и нажмите кнопку Открыть.
-
Нажмите кнопку ОК. Появится следующее сообщение: «DllRegisterServer в C:WINDOWSsystem32capicom.dll успешно».
-
Попробуйте еще раз загрузить страницы рабочего портала
-
Если вы по-прежнему получаете сообщение об ошибке:
-
Чтобы снова запустить служебную программу PCConfiguration, ознакомьтесь с разрешениями 1.
-
Перезапустите IIS, нажав Пуск-> выполнить и введите «IISReset».
-
Попробуйте еще раз загрузить страницы рабочего портала
-
Более подробную информацию вы видите в статье базы знаний 909144 .
Разрешение 5 – Проверка возможности связи сервера IIS и сервера SQL Server с помощью протокола TCP/IP
-
Протокол TCP/IP должен быть включен как на сервере SQL Server, так и на сервере IIS, на котором размещаются сайты бизнес-портала.
-
Сведения о том, как это проверить, можно найти в статье база знаний 954024
Разрешение 6 : Проверьте путь к файлу PCService. ASX в файле ProjectService. WSDL
-
На сервере бизнес-портала откройте файл ProjectService. WSDL. Обычно это расположение находится в каталоге C:Program FilesMicrosoft DynamicsBusiness PortalApplicationsPMA.
-
Открытие файла в блокноте
-
Прокрутите файл вниз и найдите тег, который начинается со слова «<SOAP: Address Location =»
-
В этом теге должен быть указан URL-адрес для файла PCService. asmx. Он должен выглядеть примерно так: «HTTP://MachineName: 80/BUSINESSPORTAL/PMA/PCService. asmx» у этого URL-адреса есть несколько конкретных требований. Проверьте и, при необходимости, исправьте указанные ниже элементы.
-
URL-адрес должен указывать имя компьютера (например, BPSERVER). IP-адреса (например, 192.168.0.10), localhost или Domain Name (например, BP.contoso.com) не будут работать для запросов SOAP.
-
Чтобы найти имя компьютера, нажмите Пуск-> выполнить и введите CMD.
-
Введите имя узла и нажмите клавишу ВВОД
-
Должно быть возвращено имя компьютера. Параметр MachineName в URL-адресе должен соответствовать этому значению.
-
-
URL-адрес не должен использовать SSL. URL-адрес должен начинаться с «http://», а не «https://»
-
Если на вашем веб-сайте настроено использование SSL, ознакомьтесь со статьей база знаний 924723 , в которой вы узнаете, как настроить исключение, разрешающее подключение к файлу PCService. asmx без SSL.
-
-
URL-адрес должен быть разрешаемым на сайте BusinessPortal в службах IIS.
-
Это может быть вызвано тем, что при использовании заголовков узлов для различения нескольких веб-сайтов, запущенных на одном и том же сервере.
-
Более подробную информацию вы видите в статье базы знаний 2005711 .
-
-
-
Протестируйте URL-адрес, чтобы убедиться, что он является допустимым. Для этого скопируйте URL-адрес и вставьте его в Internet Explorer на сервере бизнес-портала. Он должен открыть страницу под названием «PCServices». Если вместо этого вы получаете сообщение об ошибке SharePoint или появляется сообщение об ошибке «не удается отобразить страницу», проверьте элементы на шаге 4.
-
Теперь, когда у файла ProjectService. WSDL есть допустимый URL-адрес, попробуйте еще раз попробовать на странице бизнес-портала
Дополнительные сведения приведены в статье база знаний 892356 или статья базы знаний 897024 .
Разрешение 7 : Проверка способа проверки подлинности в IIS
-
На сервере бизнес-портала запустите диспетчер информационных служб Интернета (IIS).
-
Щелкните правой кнопкой мыши веб-сайт бизнес-портала и выберите пункт Свойства.
-
На вкладке Безопасность каталога в разделе «Управление доступом и проверка подлинности» выберите команду Изменить…
-
Убедитесь, что установлен флажок Встроенная проверка подлинности Windows.
-
Убедитесь, что флажок «разрешить анонимный доступ», «Краткая проверка подлинности для серверов домена Windows» и «Проверка подлинности .NET Passport» не установлены.
-
Проверка подлинности Basic не требуется. Тем не менее, если флажок установлен, это не должно приводить к проблеме.
-
Нажмите кнопку ОК, а затем еще раз нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства».
-
Закрытие диспетчера IIS
-
Перезапустите IIS, нажав Пуск-> выполнить и введите «IISReset».
-
Попробуйте еще раз на странице бизнес-портала
Разрешение 8 : проверка переменной sessionState в файле Web. config
-
На сервере бизнес-портала запустите диспетчер информационных служб Интернета (IIS).
-
Щелкните правой кнопкой мыши веб-сайт бизнес-портала и выберите пункт Свойства.
-
На вкладке «домашний каталог» Обратите внимание на значение в поле «локальный путь».
-
Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Свойства» и выйти из диспетчера IIS
-
Перейдите к каталогу, найденному на шаге 3, и найдите файл Web. config.
-
Создание резервной копии файла Web. config
-
Откройте файл web.config в блокноте.
-
Поиск тега, который начинается с «<sessionState»
-
Изменение всего тега для чтения «<sessionState =» INPROC «/>»
-
Сохранение файла и закрытие блокнота
-
Перезапустите IIS, нажав Пуск-> выполнить и введите «IISReset».
-
Попробуйте еще раз загрузить страницы рабочего портала
Разрешение 9 : запустите сценарий PCConnectDebug и отправьте результаты в службу поддержки.
-
Скачать B2004933_pcConnectDebug. zip
-
Распаковка файла на сервере бизнес-портала
-
Скопируйте файл «pcConnectDebug. ASP» в каталог C:Program FilesMicrosoft DynamicsBusiness PortalApplicationsPMA.
-
На сервере бизнес-портала откройте Internet Explorer и войдите в бизнес-портал.
-
Щелкните веб-страницу центра проектов
-
Вставьте следующий URL-адрес, чтобы открыть страницу PCConnectDebug: http://ServerName:Port/BusinessPortal/Applications/PMA/pcconnectdebug.ASP замените значение serverName именем сервера BP. Замените «порт» на номер порта, на котором работает веб-сайт BP.
-
Вам будет предложено «нажмите ОК», чтобы продолжить. Нажмите кнопку ОК.
-
Откроется веб-страница, которая начинается с «Запуск отладки…». В Internet Explorer щелкните файл-> сохранить как… и сохраните страницу в файле.
-
Внимание!в зависимости от того, насколько далеко может быть предоставлена Отладка, результаты могут содержать пароль в открытом тексте. Вы можете изменить файл в блокноте и заменить Фактический пароль на слово «thePassword» перед отправкой файла для поддержки.
-
-
Отправьте этот файл службе поддержки пользователей Майкрософт для дальнейшего анализа.
-
После устранения проблемы удалите файл pcConnectDebug. ASP из каталога C:Program FilesMicrosoft DynamicsBusiness PortalApplicationsPMA.