#0
by bahamut13
Здравствуйте, помогите разобраться. В 1с7 выполняется следующий vbscript: |Sub Send SendBinary в WSDL файле: Ошибка: Client: Client:Type conversion failure for element Data HRESULT=0x80020005: Несовпадение типов. - Client:Unspecified client error. HRESUL Т.е. он вроде как не может привести строку B64str к типу base64binary? Но почему и как от этого избавиться? На 1с8 все работает норм: ВебСервис.SendBinary(Пользователь,Пароль,GLN,Реляция,ИмяФайла,Данные) Хотя Данные также имеют тип Строка, но нужно чтобы и на 1с7 работало. Поможет ли замена MSSOAP.SOAPClient30 на к-л другой? Или же вставку делать не на vbscript?
#2
by bahamut13
да-да, я нашел несколько внешних компонент и даже метод 1с который конвертирует в base64 - но вопрос не в этом, а в том почему в данном примере возникает ошибка несоответствия типов. То что SendBinary вызывается из vbscript прошу принять как данность - так надо и меняться если и будет, то разве что язык сей вставки.
#4
by ЧеловекДуши
DIME и бинарные вложения Поскольку XML представляет собой текстовый формат, для передачи бинарных данных требуется их перекодировка, например, в кодировку base64. Это означает, что в случае передачи бинарных данных, во-первых, увеличивается время вызова, так как перекодировка в base64 занимает некоторое время, а, во-вторых, увеличивается объем данных, которые необходимо передать по HTTP. SOAP Toolkit, начиная с версии 3.0, поддерживает новый формат HTTP-запросов, называемый DIME – Direct Internet Message Encapsulation. DIME является по сути бинарным форматом передачи данных и не требует их перекодировки. Сообщение в формате DIME представляет собой совокупность DIME-записей. Каждая запись состоит из заголовка и бинарных данных. Заголовок записи включает в себя длину записи, тип данных и идентификатор записи. Такая организация позволяет быстро найти нужную запись и прочитать данные из нее. SOAP Toolkit использует формат DIME для передачи бинарных вложений. Преимущество передачи бинарных данных в виде вложений заключается в том, что данные будут передаваться более эффективно и на их обработку потребуется меньше времени и ресурсов.
#5
by ЧеловекДуши
Dim o As MSSOAPLib30.SoapClient30 Set o = New MSSOAPLib30.SoapClient30 o.MSSoapInit "D:ProjectsSOAPSample2IISSample2.WSDL" Dim f As FileAttachment30 Set f = New FileAttachment30 o.PutFile f
#6
by sttt
у тебя процедура называется CALL SoapClient.SendBinary - ПередатьБинарник а ты ему строку передаешь))
#7
by bahamut13
Угу, так было бы намного проще... но файл должен передаваться на сервер как параметр <s:element maxOccurs="1" minOccurs="0" name="Data" type="s:base64Binary"/> а не как вложение и менять серверную часть я не могу А вы знаете другое представление base64binary в vb? Я нет, потому и передаю в виде строки. Тем более что на 1с8 передача строки проходит нормально, а тут он ругается на несоответствие типов)) У кого еще какие идеи по поводу того что 1с8 воспринимает строки такого типа "0YHRgtGA0L7QutCwINGBINC30LDQutC+0LTQuNGA0L7QstCw0L3QvdGL0LzQuCDQsiBiYXNlNjQg0LTQsNC90L3Ri9C80Lg=" как base64binary, а 1с7 и vbscript не хотят?
#8
by Ковычки
0YHRgtGA0L7QutCwINGBINC30LDQutC+0LTQuNGA0L7QstCw0L3QvdGL0LzQuCDQ siBiYXNlNjQg0LTQsNC90L3Ri9C80Lg=
#9
by Ковычки
стр="0YHRgtGA0L7QutCwINGBINC30LDQutC+0LTQuNGA0L7QstCw0L3QvdGL0LzQuCDQ" "siBiYXNlNjQg0LTQsNC90L3Ri9C80Lg=";
#10
by bahamut13
А это вообще к чему? Если про то что не пытался ли я делать что-то типа хардкодного B64str = ""0YHRgtGA0L7QutCwINGBINC30LDQutC+0LTQuNGA0L7QstCw0L3QvdGL0LzQuCDQsiBiYXNlNjQg0LTQsNC90L3Ri9C80Lg="" то да - пытался, не прошло... может в vb есть специальный тип для base64binary?
#12
by bahamut13
И-и? Даже B64str = ""0Ks="" не отправляется. vb просто не хавает строки как base64biary. Любой длинны. Любого символьного состава. Как убедить vb или MSSOAP.SOAPClient30 что данная строка есть base64biary? Неужели придется самому xml-запрос составлять (что-то такое где-то видел, но надо еще вспомнить и найти) для сервера и так работать?
#14
by bahamut13
В общем думаю остановиться на следующем варианте: с помощью soapUI получил текст запроса и параметры setRequestHeader на основе wsdl файла... посмотрю еще максимальный размер отсылаемого файла и может придется опять все на vbscript переводить, но это не слишком сложно - главное не придирается к содержимому переменной data =)
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- Ошибка выполнения запроса "Ошибка при выполнении операции над данными: Ошибка SQL: Де
- v7: Общая файловая ошибка при доступе к файлу. Ошибка загрузки метаданных.
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Ошибка SQL 08S01 Ошибка связи
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Перенос данных Бухгалтерия из v7 в v8
- Ошибка при вызове web-сервиса 1C 8.3 (Внутренняя ошибка. Ошибка инициализации б)
В этой группе 1С
- УТ11 есть контроль расхождения ордера и поступления или ордера и реализации?
- Поиск текста по внешним обработкам есть ?
- Программа снятия скриншота в RDP
- v8: УНФ. отчет Потребность в запасах
- v7: Объект "Таблица" при закрытии не выгружается из ОЗУ процесса
- Передача параметра. 1С КД
- Чем менеджер записи РС лучше чем набор записей РС?
- Обращение к реквизиту формы из обработки
- НайтиСтроки
- ТСД (терминал сбора данных) на Андроид с аппаратным сканером ШК
- Соединить 2 макета для печатной формы
- Как быстрее обновить базу 1с 8
- УТ 11: автоматический зачет оплаты
- Фоновое задание
- Конструктор запросов (отрицательное значение)
- НастройкиКлиентскогоПриложения - подскажите синтаксис
- Gflax. По собственной воле преобразовывает jpg в gif
- вывод данных из формы списка регистра сведений.
- v8: Внешняя печатная форма «Заказа поставщику»
- Расчетное поле в ворде