|
Интеграция 1С 8.3 и MS Project | ☑ | ||
---|---|---|---|---|
0
denis_jj
03.04.15
✎
15:15
|
Здравствуйте, коллеги.
Столкнулись с такой проблемой. Интегрируем 1С 8.3 (8.3.5.1383) и Microsoft Project 2013. Используем для этого WEB-сервисы Project PSI. На стороне 1С подключаемся к сервису Project и считываем список проектов. В момент чтения Ответ = Прокси.ReadProjectList(Парам); платформа выдает ошибку: {Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (ReadProjectList) Ответ = Прокси.ReadProjectList(Парам); по причине: Ошибка вызова операции сервиса: {http://schemas.microsoft.com/office/project/server/webservices/Project/}:Project:ReadProjectList() по причине: Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://www.w3.org/2001/XMLSchema}anyType - [1,613] Проверка дополнительного свойства: форма: Элемент имя: {http://www.w3.org/2001/XMLSchema}element по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://www.w3.org/2001/XMLSchema}anyType - [1,613] Проверка дополнительного свойства: форма: Элемент имя: {http://www.w3.org/2001/XMLSchema}element по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://www.w3.org/2001/XMLSchema}anyType по причине: Несоответствие типов XDTO: Тип '{http://www.w3.org/2001/XMLSchema}anyType' не соответствует типу '{http://www.w3.org/2001/XMLSchema}topLevelElement' Тип свойства не соответствует типу значения Для моделирования конфигурации нужно создать пустую базу, создать в ней обработку с приведенным ниже кодом. &НаСервере Процедура ТестНаСервере() Определение = Новый WSОпределения("http://srvprj:8081/pwa1/_vti_bin/psi/Project.asmx?wsdl","domain\user","password",,,); Прокси = Новый WSПрокси(Определение,"http://schemas.microsoft.com/office/project/server/webservices/Project/","Project","ProjectSoap",,,); Прокси.Пользователь = "domain\user"; Прокси.Пароль = "password"; ТипПараметр = Прокси.ФабрикаXDTO.Пакеты.Получить("http://schemas.microsoft.com/office/project/server/webservices/Project/").Получить("ReadProjectList"); Парам = Прокси.ФабрикаXDTO.Создать(ТипПараметр); Ответ = Прокси.ReadProjectList(Парам); КонецПроцедуры &НаКлиенте Процедура Тест(Команда) ТестНаСервере(); КонецПроцедуры Кто сталкивался с подобной ситуацией? Подскажите как обойти. |
|||
1
Господин ПЖ
03.04.15
✎
15:30
|
1с "не унесла" какой-то тип
|
|||
2
denis_jj
03.04.15
✎
15:36
|
Мы перехватили данные обмена между 1С и сервером Project. В них нигде нет ссылки на тип '{http://www.w3.org/2001/XMLSchema}topLevelElement' на который ссылается платформа. Сервис, разработанный на C# работает с этим (и другими) методами нормально.
Считаем, что это баг платформы 1С. |
|||
3
DmitrO
03.04.15
✎
15:42
|
(2)так платформа вам говорит что вы суете ей anyType, а она ожидает topLevelElement
в передаваемых данных может и не быть нигде имени типа (topLevelElement). |
|||
4
rsv
03.04.15
✎
15:43
|
(0) Можа по старинке через DOM ?
|
|||
5
DmitrO
03.04.15
✎
15:48
|
а так?
ТипПараметр = Прокси.ФабрикаXDTO.Тип("http://schemas.microsoft.com/office/project/server/webservices/Project/", "ReadProjectList"); |
|||
6
denis_jj
03.04.15
✎
15:55
|
(5) Пробовали. То же самое. Пробовали и WS ссылку в конфигурацию вносить, ничего не получается.
|
|||
7
timurhv
03.04.15
✎
15:55
|
(2) Это кривой веб-сервис со стороны MS Project - проходили при интеграции с Java - программистами
|
|||
8
DmitrO
03.04.15
✎
15:56
|
по документации (или по схеме) какого типа должен быть параметр у метода ReadProjectList
|
|||
9
DmitrO
03.04.15
✎
15:56
|
?
|
|||
10
denis_jj
03.04.15
✎
16:00
|
(8)(9) Нет там параметра, пустой он. в C# этот метод без параметра.
|
|||
11
timurhv
03.04.15
✎
16:00
|
Ставьте wireshark, отлавливайте что возвращает веб-сервис, смотрите что в xml не так.
|
|||
12
denis_jj
03.04.15
✎
16:01
|
(7) Можно более точные данные? Готовы привлечь Microsoft к решению проблемы. На C# всё работает нормально, багов нет.
|
|||
13
DmitrO
03.04.15
✎
16:02
|
(10)а без параметра вызывать?
|
|||
14
denis_jj
03.04.15
✎
16:03
|
(11) отловили ответ. XML визуально нормальный. Содержит описание схемы и полученные данные. В C# читает корректно.
|
|||
15
denis_jj
03.04.15
✎
16:03
|
(10) без параметра выдает ошибку. Параметр должен быть, только он сам пустой.
|
|||
16
Bloood
03.04.15
✎
16:12
|
SOAP UI вам в помощь. На крайний случай сохраняйте wsdl описание на компьютере и правьте ее под 1С. С any type 1с работает.
|
|||
17
timurhv
03.04.15
✎
16:14
|
(15) Уверены, что параметр верный? Попробуйте так:
Параметры = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("адрес типа", "ReadProjectList")); |
|||
18
denis_jj
03.04.15
✎
17:55
|
(17) С параметром уверен. Пробовали другие методы, например ReadProject(). Для него аналогичным способом создавали параметр. В этом методе если передать пустой УИД проекта, то платформа возвращает результат, но только пустой. А как только передаем УИД существующего проекта и ответ из проджекта идет не пустой - возникает ошибка.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |