Отображение вычисляемого поля датасета в гриде - кол-во знаков после запятой

Проблема в следующем, создал вычисляемое поле в датасете
С типом Дробное число с точностью 4 знака после запятой(см.рис)
, в обработчик OnDatasetCalcFields поместил скрипт:

function ds_OfferingInMovementOnDatasetCalcFields(Dataset) {
        //TODO Сумма по цене реализации
        var SaleSumma =  Dataset('Quantity')*Dataset('SalePrice');
        Dataset('CalcSaleSumma')= parseFloat(SaleSumma.toFixed(4));
        //Number(SaleSumma.toFixed(4));
         

Поля из запроса отображаются с 4-я знаками после запятой с дополнением незначащими нулями до 4-х знаков, вычисляемое поле обрезается до фактической точности, хотелось бы сделать "безобразно, но единообразно"(с) :-)

Нравится

3 комментария

Руслан, насколько я понимаю, Вы используете версию 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));
Показать все комментарии