Все идентификаторы в 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;
}
}