1С & SOAP: Ошибка при получении данных #786089


#0 by kolesnikov
Добрый день. В связи с тем что 1с-программистов, работающих с веб-сервисами, нет, пришлось самому попробовать взяться за некую авантюру (с 1с, к сожалению, дел имел мало) Дело в том, что у нас на предприятии есть информационная система(бд MSSQL),с поднятым на той стороне веб-сервисом, принимающим и отдающим штатную структуру, приказы по кадрам,список сотрудников и т.п. Есть потребность эти данные из 1С туда перегружать. Для начала хотел попробовать авторизоваться на сервере методом Login(String UserName, String Password), потом получить штатную структуру GetStaffTree(AuthHeader authHeader) и перенести ее в форму 1С. Токен authHeader получается при авторизации Сложность возникла после авторизации на сервисе Описание метода Login POST /ImportStaff.asmx HTTP/1.1 <soap:Envelope xmlns:xsi="; xmlns:xsd="; xmlns:soap="; HTTP/1.1 200 OK <soap:Envelope xmlns:xsi="; xmlns:xsd="; xmlns:soap="; <soap:Envelope xmlns:xsi="; xmlns:xsd="; xmlns:soap="; HTTP/1.1 200 OK <soap:Envelope xmlns:xsi="; xmlns:xsd="; xmlns:soap="; В 1С авторизовался: Прокси = WSСсылки.WSCсылка1.СоздатьWSПрокси(";, "ImportStaff", "ImportStaffSoap"); На форму выносил Поле, отображал там результат авторизации - успешно отображает токен. далее использовал метод GetStaffTree Результат - ошибка несоответствия типов: Ошибка при вызове метода контекста (GetStaffTree) Данные = Прокси.GetStaffTree(Авторизация); по причине: Несоответствие типов (параметр номер '1') Судя по всему проблема в том, что токен получился строковый, а тип, который ждет метод GetSTaffTree, должен быть authHeader Подскажите пожалуйста можно ли как-то выпутаться из этой ситуации и отобразить полученные данные в размещенной таблице на форме? Как корректно оперировать токеном?
#1 by Fragster
ты передаешь строку, а надо передавать что-то с типом,  похожим на authHeader
#2 by Fragster
смотри синтакс помощник Фабрика.Создать
#3 by impulse9
Вы должны в XDTO пакетах в 1С описать все используемые типы
#4 by impulse9
В гугле много информации про настройку веб-сервисов в 1С, как со стороны сервера, так и со стороны клиента
#5 by Serginio1
Скорее всего тебе нужно создать AuthHeader и в поле AuthenticatedToken Передать Авторизация.LoginResult
#6 by kolesnikov
>Скорее всего тебе нужно создать AuthHeader >и в поле >AuthenticatedToken >Передать >Авторизация.LoginResult Если несложно подскажите пожалуйста примерно как бы это выглядело?
#7 by Serginio1
А вообще почитай для начала с первой серии
#8 by kolesnikov
отчасти проблема еще и в том что не совсем получается правильно задать гуглу вопрос чтобы получить правильный ответ. +где-то видел частичные примеры работы 1с и веб-сервисов через xmlhttp и вследствие отсутствия опыта не пойму каким способом легче реализовать задачу в данном случае
#9 by kolesnikov
>   благодарю, гляну
#10 by Serginio1
Можно упростить себе проблему. Я так понимаю у вас там сайт написан на .Net то тебе могут помочь тамошние C# ники
#11 by kolesnikov
>Вы должны в XDTO пакетах в 1С описать все используемые типы Должен ли я описывать эти типы, если они в WSСсылке из подтянутой wsdl в Типах объектах лежат? пардон,понимаю что вопросы глупые, но ни разу со всем этим добром дел не имел.
#12 by Dotoshin
Если с xdto совсем дел не имел, то лучше начать с теории:
#13 by h-sp
поставьте хотя бы 8.2.19. С какой целью на такой старой платформе работаете?
#14 by kolesnikov
промежуточно пока попробовал сделать так Прокси = WSСсылки.Aviabit.СоздатьWSПрокси(";, "ImportStaff", "ImportStaffSoap");
#15 by kolesnikov
ошибки не выдало, будем дальше ковырять.
#16 by kolesnikov
после некоторых более осознанных махинаций получилось выгрузить штатку всем спасибо.
#17 by kolesnikov
возник небольшой нюанс. в передаваемой структуре         <StaffTree> Есть параметр IsDirectory типа short. В базе,с которой дергаются данные, имеет значения 0-1-2 В реквизите столбца таблицы я выставил тип данных "Число". В итоге числа 1-2 отображаются, 0 нет. Из описания к методу: IsDirectory Тип данных: Целое число Описание: Тип записи со строчными данными проблем нет. short нужно отдельно прописывать через ФабриXDTO.Тип? заполнение таблицы сейчас происходит следующим образом:
#18 by mehfk
>>В итоге числа 1-2 отображаются, 0 нет. У поля формы выбери формат представления нуля.
#19 by kolesnikov
благодарю
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С