運算式內置了豐富的計算函數,使用者也可以用js增加自己的計算函數,並在運算式中調用。
定義計算函數
定義普通js函數,執行計算返回結果即可。
<script type="text/javascript">
function myAdd(a, b) {
return a + b;
}
</script>
使用自定義計算函數
在運算式中使用javascript函式呼叫自定義計算函數,語法為:
javascript('js函數名',參數1,參數2,...)
參數可以是欄位或運算式,參數數量不定,系統執行時,先計算參數,再將計算結果傳遞給自定義函數。
javascript並不是特殊函數,其性質和sin,cos是同等的計算函數,自定義函數的調用可以是運算式的一部分,其計算結果可以再參與運算。
示範:
javascript('myFunc',Purchase.Price,Purchase.Qty)
javascript('myFunc', Purchase.PricePurchase.Qty, Purchase.Date)
sum(javascript('myFunc', Purchase. Price) Purchase.Qty)
大寫金額函數
// 數位轉換成大寫金額函數
function atoc(numberValue) {
var numberValue = new String(Math.round(numberValue 100)); // 數字金額
var chineseValue = ""; // 轉換後的漢字金額
var String1 = "零壹貳參肆伍陸柒捌玖"; // 漢字數位
var String2 = "萬仟佰拾億仟佰拾萬仟佰拾元角分"; // 對應單位
var len = numberValue.length; // numberValue 的字串長度
var Ch1; // 數字的漢語讀法
var Ch2; // 數位位元的漢字讀法
var nZero = 0; // 用來計算連續的零值的個數
var String3; // 指定位置的數值
if (len > 15) {
alert("超出計算範圍");
return "";
}
if (numberValue == 0) {
chineseValue = "零元整";
return chineseValue;
}
String2 = String2.substr(String2.length - len, len); // 取出對應位數的STRING2的值
for (var i = 0; i < len; i++) {
String3 = parseInt(numberValue.substr(i, 1), 10); // 取出需轉換的某一位的值
if (i != (len - 3) && i != (len - 7) && i != (len - 11) && i != (len - 15)) {
if (String3 == 0) {
Ch1 = "";
Ch2 = "";
nZero = nZero + 1;
}
else if (String3 != 0 && nZero != 0) {
Ch1 = "零" + String1.substr(String3, 1);
Ch2 = String2.substr(i, 1);
nZero = 0;
}
else {
Ch1 = String1.substr(String3, 1);
Ch2 = String2.substr(i, 1);
nZero = 0;
}
}
else { // 該位是萬億,億,萬,元位等關鍵位
if (String3 != 0 && nZero != 0) {
Ch1 = "零" + String1.substr(String3, 1);
Ch2 = String2.substr(i, 1);
nZero = 0;
}
else if (String3 != 0 && nZero == 0) {
Ch1 = String1.substr(String3, 1);
Ch2 = String2.substr(i, 1);
nZero = 0;
}
else if (String3 == 0 && nZero >= 3) {
Ch1 = "";
Ch2 = "";
nZero = nZero + 1;
}
else {
Ch1 = "";
Ch2 = String2.substr(i, 1);
nZero = nZero + 1;
}
if (i == (len - 11) || i == (len - 3)) { // 如果該位是億位或元位,則必須寫上
Ch2 = String2.substr(i, 1);
}
}
chineseValue = chineseValue + Ch1 + Ch2;
}
if (String3 == 0) { // 最後一位(分)為0時,加上“整”
chineseValue = chineseValue + "整";
}
return chineseValue;
}