Имя: Пароль:
1C
1С v8
8.2 управляемая форма отправка СМС
,
0 2307861c
 
07.11.11
18:01
Отправляю вот таким кодом

       WinHttp= Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
       WinHttp.Option(2,"Windows-1251");                  
       WinHttp.Open("GET","http://smpp.sms-project.ru/submit_sm.php?system_id=" + Логин +  "&password=" + Пароль + "&source_addr=" + СокрЛП(Объект.Отправитель) + "&destination_addr=" + Получатель +  "&short_message=" + ТекстДляСМС,0);
       WinHttp.SetRequestHeader("Accept-Language", "ru");
       WinHttp.SetRequestHeader("Accept-Charset","Windows-1251");//
       WinHttp.setRequestHeader("Content-Language", "ru");
       WinHttp.setRequestHeader("Content-Charset", "Windows-1251"); //
       WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251");
       WinHttp.Send();    

А на этом сайте в статистике, да и на телефон приходит

Р¢РµСС‚ Р¾С‚Р¿С€Р°Р²РºРё Р¡РœР¡

Коддировку указал Windows-1251 (как просила служба техподдержки сервиса)
В чем может быть дело?
1 H A D G E H O G s
 
07.11.11
18:02
В том, что 1С работает с utf-8
2 2307861c
 
07.11.11
18:04
(1) Хорошо. Пробовал перед отправкой вот так тест обработать

       
       ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
       ЗаписьТекста = Новый ЗаписьТекста(ИмяВременногоФайла);
       ЗаписьТекста.Записать(ТекстДляСМС);
       ЗаписьТекста.Закрыть();
       
       ЧтениеТекста = Новый ЧтениеТекста(ИмяВременногоФайла, "windows-1251");
       ТекстДляСМС = ЧтениеТекста.Прочитать();
       ЧтениеТекста.Закрыть();
       УдалитьФайлы(ИмяВременногоФайла);
3 2307861c
 
07.11.11
18:05
(1)Результат тот же иероглифы вместо текста в СМС.
4 H A D G E H O G s
 
07.11.11
18:11
ТекстДляСМС = ЧтениеТекста.Прочитать();

преобразование в utf8
5 Gonya
 
07.11.11
18:17
Установи консольный wget
Сформируй средствами 1с cmd файл "wget http://****************"
Запусти  его
6 2307861c
 
07.11.11
18:20
(4)А как его вытянуть без переобразования?
7 2307861c
 
07.11.11
18:39
Может кто стыкался с этой проблемой?
8 Wobland
 
07.11.11
18:41
(6) фар, к примеру, многое умеет. используй внешние средства
9 H A D G E H O G s
 
07.11.11
18:47
Ну хоть бы тестового юзера на
http://smpp.sms-project.ru/

завел для нас!
10 2307861c
 
07.11.11
19:08
(9)Помоему и них нет такой возможности. А рабочего пользователя не могу дать.
11 2307861c
 
07.11.11
19:08
Вобще их сайт вот sms-project.ru
12 xazrad
 
07.11.11
19:23
(0) была такая проблема на 7.7 решение на 7.7. тут V7HttpReader UTF-8 может поможет
13 2307861c
 
07.11.11
19:43
(12)А какую функцию использовать? Пробовал вторую вобще пустую строку возвращала.
14 zladenuw
 
07.11.11
19:50
(13) надо не строку а ссылку юзать  
xazrad
1 - 03.10.11 - 17:05
нашел
http://infostart.ru/public/18816/
15 2307861c
 
07.11.11
19:52
(14)Так я вот и брал из инфостарта эти функции перваю вобще вернулу пустую строку
16 2307861c
 
07.11.11
19:53
(14)Первая функция также дала иероглифы в результате
17 zladenuw
 
07.11.11
19:56
хм, ОС какая ?
18 acsent
 
07.11.11
19:56
А если URL encode попробовать?
19 zladenuw
 
07.11.11
19:57
Код 1C v 8.х
    Если Код=208 Тогда
               Если Код2=129 Тогда Итог=Итог+"Ё";
               Иначе
                   Итог=Итог+Симв(КодСимв("А")+Код2-144);
               КонецЕсли;
           ИначеЕсли Код=209 Тогда
               Если Код2=145 Тогда Итог=Итог+"ё";
               ИначеЕсли  Код2=150 Тогда Итог=Итог+"і";  // украинская
               ИначеЕсли  Код2=151 Тогда Итог=Итог+"ї";  // украинская
               Иначе
                   Итог=Итог+Симв(КодСимв("р")+Код2-128);
               КонецЕсли;
           КонецЕсли;
20 2307861c
 
07.11.11
19:58
(17)Windows 7? 1c 8.2
(18)Это что?
21 2307861c
 
07.11.11
20:00
(19)Откуда переменная Код2, там только Код есть переменная
22 zladenuw
 
07.11.11
20:02
вообщем нарыл у себя.

Функция ПреобразоватьСтрокуВУТФ8(Стр)
   Длина=СтрДлина(Стр);
   Итог="";
   Для Н=1 По Длина Цикл
       Знак=Сред(Стр,Н,1);
       Код=КодСимвола(Знак);
       Если Код<128 Тогда
           Итог=Итог+Знак;
       Иначе
           Если (Код>=КодСимвола("А"))И(Код<=КодСимвола("п")) Тогда
               Итог=Итог+Символ(208)+Символ(144+Код-КодСимвола("А"));
           ИначеЕсли (Код>=КодСимвола("р"))И(Код<=КодСимвола("я")) Тогда
               Итог=Итог+Символ(209)+Символ(128+Код-КодСимвола("р"));
           ИначеЕсли (Знак="ё") Тогда
               Итог=Итог+Символ(209)+Символ(145);
           ИначеЕсли (Знак="Ё") Тогда
               Итог=Итог+Символ(208)+Символ(129);
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат Итог;
КонецФункции //ПреобразоватьСтрокуВУТФ8
23 zladenuw
 
07.11.11
20:03
использовал для перевода в гугле, пока не закрыли его :).....
24 acsent
 
07.11.11
20:03
(20) у тебя текст смс передается в строке адреса
wiki:URL
25 2307861c
 
07.11.11
20:04
(22)У меня такая ж функция, не помагает
26 zladenuw
 
07.11.11
20:04
с ос 7 может разные приколы быть.... вернее ОС 7 + 1С
27 zladenuw
 
07.11.11
20:10
есть комп где нет 7 ?
28 zladenuw
 
07.11.11
20:11
вариант создать текст, конвертнуть в utf-8  и его отправить.
29 zladenuw
 
07.11.11
20:12
в 7 нет 1251...
30 2307861c
 
07.11.11
20:20
(29)Есть, попробую
31 2307861c
 
07.11.11
20:34
(29)на виндовс XP тоже самое
32 2307861c
 
07.11.11
20:40
Вот ссылка как отображает текст смс-ок сервис http://s017.radikal.ru/i426/1111/38/27577f452eb0.jpg
33 acsent
 
07.11.11
20:41
А если кодировку в заголовках указать как утф?
34 2307861c
 
07.11.11
20:42
Отправляюю вот так
       WinHttp= Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
       WinHttp.Option(2,"windows-1251");                  
       WinHttp.Open("GET", "http://smpp.sms-project.ru/" + ТекстДляСМС,0);
       WinHttp.SetRequestHeader("Accept-Language", "ru");
       WinHttp.SetRequestHeader("Accept-Charset","windows-1251");//
       WinHttp.setRequestHeader("Content-Language", "ru");
       WinHttp.setRequestHeader("Content-Charset", "windows-1251"); //
       WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=windows-1251");
       WinHttp.Send();        

Уже пробовал и UTF-8 ставить меняются только иероглифы
35 acsent
 
07.11.11
20:59
urlencode уже пробовал?
36 2307861c
 
07.11.11
21:00
(35) Сейчас пробую, разбираюсь
37 2307861c
 
07.11.11
21:03
(35)УРА. Большое спасибо заработало.
38 2307861c
 
07.11.11
21:03
Вот перевод в анкоде
&НаСервере
Функция КодСимволаASCII(Символ)
  КодUNICODE = КодСимвола(Символ);
  Если ((КодUNICODE > 1039) И (КодUNICODE < 1104)) Тогда
      Возврат (КодUNICODE - 848);
  ИначеЕсли КодUNICODE = 8470 Тогда
      Возврат 185;
  ИначеЕсли КодUNICODE = 1105 Тогда
      Возврат 184;
  ИначеЕсли КодUNICODE = 1025 Тогда
      Возврат 168;
  Иначе
      Возврат КодUNICODE;
  КонецЕсли;
КонецФункции

&НаСервере
Функция URLEncode( value )

   table = "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14" +
           "%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28" +
           "%29%2A%2B%2C%2D%2E%2F%30%31%32%33%34%35%36%37%38%39%3A%3B%3C" +
           "%3D%3E%3F%40%41%42%43%44%45%46%47%48%49%4A%4B%4C%4D%4E%4F%50" +
           "%51%52%53%54%55%56%57%58%59%5A%5B%5C%5D%5E%5F%60%61%62%63%64" +
           "%65%66%67%68%69%6A%6B%6C%6D%6E%6F%70%71%72%73%74%75%76%77%78" +
           "%79%7A%7B%7C%7D%7E%7F%80%81%82%83%84%85%86%87%88%89%8A%8B%8C" +
           "%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0" +
           "%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4" +
           "%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8" +
           "%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC" +
           "%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0" +
           "%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF";
   
   result = "";        
           
   length = СтрДлина( value );        
   
   Для i = 1 По  length Цикл        
       symbol = Сред( value, i, 1 );        
       //code = КодСимвола( symbol );    
       code = КодСимволаASCII( symbol );
       result = result + Сред( table, code*3 + 1, 3 );        
   КонецЦикла;
   
   
   
   Возврат result;
КонецФункции