Отображение вычисляемого поля датасета в гриде - кол-во знаков после запятой
Проблема в следующем, создал вычисляемое поле в датасете
С типом Дробное число с точностью 4 знака после запятой(см.рис)
, в обработчик OnDatasetCalcFields поместил скрипт:
//TODO Сумма по цене реализации
var SaleSumma = Dataset('Quantity')*Dataset('SalePrice');
Dataset('CalcSaleSumma')= parseFloat(SaleSumma.toFixed(4));
//Number(SaleSumma.toFixed(4));
Поля из запроса отображаются с 4-я знаками после запятой с дополнением незначащими нулями до 4-х знаков, вычисляемое поле обрезается до фактической точности, хотелось бы сделать "безобразно, но единообразно"(с) :-)
Нравится
Руслан, насколько я понимаю, Вы используете версию 3.3.0. Вычисляемые поля в ней действительно работают так, как Вы описали: незначащие нули отбрасываются. Данная ситуация исправлена в более поздних версиях (проверил на 3.3.2) - достаточно в коде написать:
function ds_OfferingInMovementOnDatasetCalcFields(Dataset) { //TODO Сумма по цене реализации Dataset('CalcSaleSumma') = Dataset('Quantity')*Dataset('SalePrice');
В Вашей версии можно использовать обходной путь. Поскольку вычисляемые поля обычно используются только для отображения, попробуйте заменить тип поля в датасете на строковый, а в коде оставить:
function ds_OfferingInMovementOnDatasetCalcFields(Dataset) { //TODO Сумма по цене реализации var SaleSumma = Dataset('Quantity')*Dataset('SalePrice'); Dataset('CalcSaleSumma') = SaleSumma.toFixed(4); //Number(SaleSumma.toFixed(4));
Да, спасибо, как всегда помогло :-). Только вместо запятой(разделитель целой и дробной части) - точка... но текст есть текст.
Ну, если критично отображение запятой, то можно выполнить ещё и replace:
function ds_OfferingInMovementOnDatasetCalcFields(Dataset) { //TODO Сумма по цене реализации var SaleSumma = Dataset('Quantity')*Dataset('SalePrice'); Dataset('CalcSaleSumma') = SaleSumma.toFixed(4).replace(/\./g, ','); //Number(SaleSumma.toFixed(4));