Все идентификаторы в Siebel хранятся в 36-ричной системе счисления.
В Siebel, есть стандартная функция RowIdToRowIdNum (<Id>), она преобразует Id из 36-ричной кодировки в 10-ричную. Но по каким-то соображениям обратного преобразования не предусмотрено. Такое преобразование легко делается на eScript.
Ниже приведено два скрипта, первый из них описывает обратную функцию преобразования, второй простую перекодировку из 10-ричной в 36-ричную систему счисления.
Функция конвертации RowIdNum в RowId:
В Siebel, есть стандартная функция RowIdToRowIdNum (<Id>), она преобразует Id из 36-ричной кодировки в 10-ричную. Но по каким-то соображениям обратного преобразования не предусмотрено. Такое преобразование легко делается на eScript.
Ниже приведено два скрипта, первый из них описывает обратную функцию преобразования, второй простую перекодировку из 10-ричной в 36-ричную систему счисления.
Функция конвертации RowIdNum в RowId:
function RowIdNumToRowId(sRowIdNum:String):chars
{
var aArr:Array=sRowIdNum.split("-");
var cResult:chars="";
var cPrefix:chars="";
if(aArr.length>1)
{
var fDecmal:float;
var sArr36:String="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
fDecmal=aArr[0];
while(fDecmal>35)
{
cPrefix=sArr36[fDecmal % 36]+cPrefix;
fDecmal=Math.floor(fDecmal/36);
}
cPrefix=sArr36[fDecmal]+cPrefix;
fDecmal=aArr[1];
while(fDecmal>35)
{
cResult=sArr36[fDecmal % 36]+cResult;
fDecmal=Math.floor(fDecmal/36);
}
cResult=cPrefix+"-"+sArr36[fDecmal]+cResult;
}
aArr=null;
return cResult;
}
Функция преобразования из 10-ричной в 36-ричную систему счисления:function ToBase36(Base10:float):chars
{
var fDecmal:float=Base10;
var cResult:chars="";
var sArr36:String="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
while(fDecmal>35)
{
cResult=sArr36[fDecmal % 36]+cResult;
fDecmal=Math.floor(fDecmal/36);
}
cResult=sArr36[fDecmal]+cResult;
return cResult;
}
Этот комментарий был удален автором.
ОтветитьУдалитьтолько что понадобилось:
ОтветитьУдалитьWScript.Echo(NumToRowId("32189444993-671-1723953981"));
function NumToRowId(num)
{
try
{
var arr = num.split("-");
var i = 0;
for (i; i < arr.length; i++)
arr[i] = parseInt(arr[i]).toString(36);
return arr.join("-").toUpperCase();
}
finally
{
arr = null;
}
}