Имя: Пароль:
1C
1С v8
перекодировка текста в 1С 8
0 novichok79
 
30.05.18
11:49
доброе время суток, уважаемые друзья. есть нетленочка с куртизанками и преферансом на базе БСП 2.4.2.124. в нетленочке запилен поиск контрашей (контрагентов) по сервису dadata.ru, но у dadata.ru 28-го мая какой-то трэш творился с обновлением базы данных сайта.
есть еще https://egrul.nalog.ru/
запилил получение капчи, значения с сайта возвращаются, но в непонятной кодировке, не utf-8. есть ли способ быстро перекодировать текст в 1С? через двоичныеданные, а потом получение потока для ЧтенияJSON получаются дважды закодированные символы.
в других нетленочках все делается так

MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
MSScriptControl.Language = "javascript";
Стрим = Новый COMОбъект("ADODB.Stream");
Стрим.Open();
MSScriptControl.Eval("Стрим.Write(Соединение.responseBody)");

но, к счастью, у меня сервак на каком-то linux'е,
там вот эта дичь отсутствует
Стрим = Новый COMОбъект("ADODB.Stream");

что я делаю не так? есть ли аналоги в 1С. заранее благодарю за помощь.
1 novichok79
 
30.05.18
12:06
опять же
Книга знаний: Перекодировщик из UTF-8 в Windows-1251 и обратно

но надо сделать это средствами платформы 8.3.11
2 novichok79
 
30.05.18
12:13
возвращает такую строку в 1С

{"ERRORS":{"ogrninnfl":["Необходимо указать ОГРНИП или ИНН индивидуального предпринимателя"]}}

если переводим из ISO-8859-1 в utf-8 в онлайне
получается такое

{"ERRORS":{"ogrninnfl":["Необходимо указать ОГРНИП или ИНН индивидуального предпринимателя"]}}
3 hhhh
 
30.05.18
12:18
(1) ссылка не читается
4 novichok79
 
30.05.18
12:20
(3) движок мисты видимо ее конвертнул. но там тоже через adodb.stream сделано
5 singlych
 
30.05.18
12:25
ммм, а если записать в txt а потом ЧтениеJSON.ОткрытьФайл(ИмяФайла, Кодировка)?
6 novichok79
 
30.05.18
12:27
ну в интернетах предлагают делать через ЧтениеТекста
7 mistеr
 
30.05.18
12:34
(2) То, что ты показал, очень похоже на UTF-8. Возможно, byte order не тот, что ожидает 1С.
8 hhhh
 
30.05.18
12:39
(6) мне надо было только русские буквы, я сделал тупо


    Для ии = 1 По СтрДл Цикл
        КодСимв = КодСимвола(сред(Стр, ии, 1));
        Если КодСимв >= 192 И КодСимв <= 255 Тогда
    
             Рез2 = Рез2 + Символ(КодСимв + 848);
9 novichok79
 
30.05.18
12:42
(7) уже неважно, через выгрузку результата HTTP запроса во временный файл все взлетело.
10 mistеr
 
30.05.18
12:55
(9) Потому что в файл пишется BOM.
11 novichok79
 
30.05.18
12:56
(10) значит действительно верно предположение в (7)
12 mistеr
 
30.05.18
12:57
Вообще идиотизм, конечно. До сих пор желто-красные не могут нормальные потоки и конвейер реализовать. В куче ситуаций приходится сохранять во временные файлы.
13 novichok79
 
30.05.18
12:58
(12) это да, но по сравнению с 8.1 уже прогресс, что можно сделать почти все через типовые механизмы.