OrionXL

Полезные функции и процедуры для платформы 1С 8

Роман Иванов @ 19:41 07.09.2011

Функция преобразования строки текста в браузерно ориентированное представление, аналог urlencode

Вариант первый для версии 1С 8

функция urlencode(стр)
перем хекс[16];
хекс[1]="0";
хекс[2]="1";
хекс[3]="2";
хекс[4]="3";
хекс[5]="4";
хекс[6]="5";
хекс[7]="6";
хекс[8]="7";
хекс[9]="8";
хекс[10]="9";
хекс[11]="A";
хекс[12]="B";
хекс[13]="C";
хекс[14]="D";
хекс[15]="E";
хекс[16]="F";
рез="";
для сч=1 по стрДлина(стр) цикл
чар=сред(стр,сч,1);
если (чар>="a")и(чар<="z") тогда рез=рез+чар; продолжить; конецЕсли;
если (чар>="A")и(чар<="Z") тогда рез=рез+чар; продолжить; конецЕсли;
если (чар>="0")и(чар<="9") тогда рез=рез+чар; продолжить; конецЕсли;
кс=кодСимв(чар);
рез=рез+"%"+ хекс[ цел(кс/16)+1 ] + хекс[ цел(кс%16)+1 ];
конецЦикла; // сч=1...стрДлина(стр)
возврат рез;
конецФункции // urlencode(стр)

Вариант второй для версии 1С 8

Функция URLEncode(Стр1)

СтрокаСимволов = " !""@№#;%:?*().,/$^&";

Рез = "";
Стр= СокрЛП(Стр1);
Для Сч=1 По СтрДлина(Стр) Цикл

Символ = Сред(Стр, Сч, 1);
КС = КодСимвола(Символ);
// Перевод из UNICODE в ASCII
Если ((КС > 1039) И (КС < 1104)) Тогда
КС = КС - 848;
ИначеЕсли КС = 8470 Тогда
КС = 185;
ИначеЕсли КС = 1105 Тогда
КС = 184;
ИначеЕсли КС = 1025 Тогда
КС = 168;
КонецЕсли;

флЗаменили = 0;
Если Найти(СтрокаСимволов, Символ) > 0 Тогда

Рез = Рез + "%"+ Hex[Цел(КС/16)] + Hex[Цел(КС%16)];
флЗаменили = 1;

КонецЕсли;

Если (КС <= 127) и (флЗаменили = 0) Тогда
Рез = Рез + Символ;
ИначеЕсли флЗаменили = 0 Тогда
Рез = Рез + "%"+ Hex[Цел(КС/16)] + Hex[Цел(КС%16)];
КонецЕсли;

КонецЦикла;

Возврат Рез;
КонецФункции // URLEncode()

Вариант третий для версии 1С 8

Функция URLEncode4(Строка="")
ScrCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScrCtrl.Language="JScript";
Сообщение = ScrCtrl.eval("var uri='"+Строка+"'; encodeURI(uri);") ;
Возврат Сообщение;
КонецФункции

Функция URLEncode4(Строка="") ScrCtrl = Новый COMОбъект("MSScriptControl.ScriptControl"); ScrCtrl.Language="JScript"; Сообщение = ScrCtrl.eval("var uri='"+Строка+"'; encodeURI(uri);") ; Возврат Сообщение;

КонецФункции

алгоритмы, методы, программы - OrionXL