v7: Обмен данными с интернет магазином API #709360


#0 by Sevnet
Куплен движ OWOX, есть 1С 7.7. Возникла следующая неразрешимая самостоятельно проблема. При получении ответа на HTTP запрос, в строке-ответе HTTP кириллица приходит в виде кодировки HTML-entetles - так её называет декодер студии Арт.Лебедева Например: "Антон" → "Антон", "HTML-Entities" → "UTF-8". Готовые примеров декодирования я нигде не нашел, да и не ясно, что это вообще за кодировка такая HTML-Entities??? Строка запроса, например информации о заказе, целиком выглядит так:
#1 by Sevnet
Помогите, плиз, разобраться что за кодировка и как её переводить в кириллицу??? Возможно можно каким-то образом разобрать файл в таблицу или ещё какой-нить более приемлемый вид, чтобы уже обращаться туда?
#2 by Miracle_Miracle
и что тут такого? Какой-то антон при получении товара самовывозом должен оплатить наличными 10874.75
#3 by Sevnet
Тут всё ок, имеется ввиду в 1С 7.7 перевести программным методом кодировку в текст? А при отправке параметров, обратно текст в кодировку??
#4 by Sevnet
Как?
#5 by Miracle_Miracle
Вот соответствия.Переводи,потом парсь.
#6 by Gepard
с помощью чего получаются данные с сайта?
#7 by Miracle_Miracle
А вообще я твою муть открыл в IE и сохранил в тхт и все сохранилось с кирилицей.
#8 by Sevnet
Miracle_Miracle. за ссылку спс, я искал эту таблицу но находил только в 10тиричном виде, без указание на то что бывает и HEX. Вот с IE  я тоже долго долбался, т.к. встречал упоминания об этом методе, но та и не разобрался как в конфигураторе  это сделать? Gepard С помощью запроса "open" объекта winhttp: objHTTP = СоздатьОбъект("winhttp.winhttprequest.5.1"); хотя этот же объект эквивалентен Вообще я разницы в них не улавливаю...
#9 by Gepard
а если так?
#10 by Gepard
еще некоторые рекомендуют ServerXmlHttpRequest
#11 by Sevnet
Gepard, попробовал не фига. У меня в заголовках указана    кодировка objHTTP.setRequestHeader("Content-Type", "text/xml;charset=utf-8");
#12 by Sevnet
ServerXmlHttpRequest, а что это если вкратце? И как им пользоваться, а то я загуглил всё в основном на аглоязычных сайтах?
#13 by Gepard
кстати, можно попробовать там же добавить SetRequestHeader("Accept-Charset","windows-1251");
#14 by Gepard
вполне может получиться заставить сервер возвращать данные в виндовой кодировке)
#15 by Sevnet
та не, я пробовал выставлять один фиг, тоже самое возвращает, там и в документации к движку OWOX сказано, что возвращает utf-8
#16 by Эмбеддер
после "&#" идет юникокод символа, перевести в строку можно через вызов функции Символ, даже таблиц не надо создавать
#17 by Gepard
можно так попробовать
#18 by Sevnet
Gepard да раскодировать я смогу, ща где-нить нарою готовый код, только символы кода подменю и засуну в глобальный модуль... Мне бы какой нить метод разбора полей, чтобы не по тупому поиском нужных текстовых частей и отрезания всего вокруг по названию тегов, методом а то это как-то глаза режет...
#19 by Sevnet
Эмбеддер, а юникод разве на 10чином формате??? А у меня HEX, если так, то сначала надо преобразовывать в 10чный, а потом через Символ Gepard, за ссылку спс, я по-моему напарывался на неё, но тут проблема в том что разбор 10чных кодов, а мне сервак возвращает HEX, поэтому он мне не подошел.
#20 by Miracle_Miracle
вот пример чтения xml И тебе все равно нужно знать содержимое каких тегов тебя интересует.
#21 by Sevnet
Эмбеддер, попробовал через функцию Симв вот что получил: ? ? 192 237
#22 by Эмбеддер
забыл что 7-ка в условии, в 8-ке так срабатывает правильно Сообщить(Символ(4*256+1*16+0));
#23 by Sevnet
Ладно, таблица соответствий символов у меня есть, заварил чай, пойду разбирать своим уродским методом: текст ответа и потом его так же резать до нужных 3х HEX знаков, а их по таблице соответствия HTML символов какой-нить процедуркой провращать в желаемый вид. Чую получится уродский код, ну да я на суперпрограммера и не претендую. Чё получится выкладу сюда.
#24 by Эмбеддер
я правильно понял, ты саму структуру xml хочешь разобрать  кодом на 1С? лучше взять готовое. в 8-ке я использовал (и в 7-ке тоже можно) MSXML2.xmlHttp для отправки и получения, Msxml2.DOMDocument для разбора а уже саму строку в этой кодировке можно разбирать в коде 1С
#25 by Sevnet
Эмбеддер, О!, а что за Msxml2.DOMDocument и где есть по нему мануал можешь скинуть? Но есть одно, НО, я получаю данные в ответе в виде сплошной строки... У меня получится её разобрать этим объектом?
#26 by Sevnet
точнее даже лучше примеры кода с разбором xml
#27 by Эмбеддер
куски кода могу привести если ИспользоватьHTTPS тогда
#28 by Эмбеддер
если распарсивать средствами 8-ки, то таким образом если средствами 7-ки то только так
#29 by Эмбеддер
с обработкой ошибок         DOCToSave.loadXML(xmlHttp.responseText);         If DOCToSave.parseError.errorCode <> 0 Then             Сообщить("Ошибка разбора XML результата: " + DOC.parseError.reason);
#30 by Эмбеддер
и еще в 8-ке имея XDTO (как в 1-м варианте), можно получить иерархическую структуру данных (мне так было удобнее работать), функция тебе не пригодится но разбор полученных данных можешь сделать подобным образом
#31 by Sevnet
Эмбеддер, xml документ получился без проблем, спс, но вот в 8ке я вообще ничего не знаю, дуплю уже полчаса на последний пост, не могу понять что этот код делает делает. Как я понял ОбъектXDTO - это тот самый файл xml? В виде ссылки на файл или текста? Новый - это аналог СоздатьОбъект? В 7ке есть такие типы значений: Тип("ЗначениеXDTO"), Тип("ОбъектXDTO") ? Что аналог а 7ке этому: Новый Массив; - таблица? Новый Структура; - ???
#32 by Sevnet
Да, и ещё забыл спросить, а что на выходе то после распарсивания xml фала? Таблица? Или какая структура то вообще?
#33 by Эмбеддер
про ОбъектXDTO я зря написал, это в 8-ке, только запутал andrewks для 7-ки выкладывал пример здесь вот такой код полностью распарсивает строку, в том числе и те твои символы нормально понимает))) Функция ВывестиЭлем(ТекЭлем,Знач Смещ);          Рез=1; и в результате работы получается Элемент Orders:     Элемент record_type:     Элемент part:         Элемент record:                 Элемент second_name:                 Элемент email:                 Элемент phones:                     Элемент record:                 Элемент addresses:             Элемент created:                 Текст элемента: 2014-04-03 20:46:31             Элемент changed:                 Текст элемента: 2014-04-03 20:46:31             Элемент merchandises:                 Элемент record:                     Элемент id:                     Элемент goods:                 Элемент record:                     Элемент comment:                     Элемент created:                         Текст элемента: 2014-04-03 20:46:31             Элемент invoices:                 Элемент record:                     Элемент payment_method:                         Элемент title:                             Текст элемента: Оплата наличными при получении                     Элемент payment_currency:                     Элемент amount:
#34 by Sevnet
Эмбеддер, спасибище огромное, всё работает, и кириллица нормально выводится! Но у меня возникло несколько вопросов, т.к. я встретил несколько методов впервые, и сам никогда ими не пользовался: 1. Что за оператор "Знач" Crtl+F1 его не знает, где почитать?    Функция ВывестиЭлем(ТекЭлем, Знач Смещ); 2. Где взять файл синтаксис помощника для объекта Msxml2.DOMDocument?? Типо фалик *.als 3. Не знал, что можно вызывать функцию саму в себе), и в упор не могу раздуплится, каким образом эта строчка выводит сообщения в табло? Если можно поясните, плиз, или пошлите куда-нить почитать?
#35 by Злопчинский
ЗНАЧ - параметр передается не по ссылке, а по значению. То есть фактически параметр, передаваемый в процедуру - останется без изменения, в процедуре будет сделана копия, которая даже если изменится - не поменяется исходный параметр
#36 by Злопчинский
Вывод сообщенйи в табло: ВывестиЭлем(...) - очевидно, что внутри этой функции (или внутри других функций/процедур, вызываемых из этой) используется оператор
#37 by Sevnet
да тут тупанул... Мануальчик бы по методам Msxml2.DOMDocument
#38 by Злопчинский
> Не знал... вызывать функцию саму в себе... Просвещайся: Рекурсия
#39 by Эмбеддер
"2. Где взять файл синтаксис помощника для объекта Msxml2.DOMDocument?? Типо фалик *.als" к 1С это отношения не имеет, поэтому *.als файла не будет. это объект фирмы майкрософт. у меня доки нет, гугль рулит
#40 by ДенисЧ
хочется просто взять и послать....
#41 by ДенисЧ
10 секунд гугля
#42 by Sevnet
сори затупил, чёта думал, что это в 1С какой-то объект. Я просто самоучка, и программирование не основная деятельность, а только сопутствующая.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

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