Публикация

Создание колонки с типом FLOAT (дробное число | Decimal) на преднастроенной колонки

Вопрос

Преднастроенная страница. Как создать FLOAT колонку не создавая колонку в объеке?

Объявлено так:

"InPrice": {dataValueType: Terrasoft.DataValueType.FLOAT}, в параметрах страницы тоже есть (дробное, 0,01)

В модели выглядит так:

{
    "operation": "insert",
    "parentName": "InContractParametersGrid",
    "propertyName": "items",
    "name": "InPrice",
    "values": {
        caption: { bindTo: "Resources.Strings.InPriceLcz" },
        contentType: Terrasoft.ContentType.FLOAT,
        bindTo: "InPrice",
        layout: {column: 0, row: 2, colSpan: 12},
        "isRequired": {bindTo: "IsNadmarze"},
        "enabled": {bindTo: "IsNadmarze"}
    }
},

Изображение удалено.

Ответ

Для FLOAT нужно прописывать «Terrasoft.DataValueType.FLOAT».

Как пример, можно посмотреть как реализована базовая колонка «PrimaryPrice» в схеме «ProductPageV2»:Для корректной работы колонки необходимо:

/**
* Цена б.в.
* @private
*/
"PrimaryPrice": {
    "dataValueType": Terrasoft.DataValueType.FLOAT,
    "dependencies": [
        {
            "columns": ["CurrencyRate""Price"],
            "methodName": "recalculatePrimaryPrice"
        }
    ]

- указывать «entityschemaname» (если страница унаследуется от базовой страницы (BasePageV2). Используются базовые методы, которые обращаются к объекту страницы);

- при использовании колонки FLOAT на уровне атрибута указывать точность – свойство «precision» (сколько знаков после запятой) (Рис. 1). Если колонка добавлено на уровне объекта, то по умолчанию эта колонка имеет значение «2» (свойство «decimalPrecision»).

 Изображение удалено.

Другой вариант:

Это обновить приложение на более новую сборку (исправлено начиная с версии 7.8.0).

Также попробуйте повысить точность до полной, в отображении детали можно в конфигураторе, доработав схему детали, переопределением метода:

getGridRowViewModelConfig

Подобным образом:

getGridRowViewModelConfig: function(config) {
    // ovveride
    var gridRowViewModelConfig = this.callParent(arguments);
    gridRowViewModelConfig.rowConfig.UsrFLOAT.dataValueType = 1;
    return gridRowViewModelConfig;
}

Где UsrFLOAT имя колонки, как в объекте детали. Для которой необходимо применить полную точность знаков после запятой.

Полный пример схемы, на которой все тестировалось:

define("UsrSchema3Detail", [], function() {
    return {
        entitySchemaName: "AccountBillingInfo",
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
        methods: {
            init: function() {
                this.callParent(arguments);
                document.dtl = this;
 
            },
            getGridRowViewModelConfig: function(config) {
                // ovveride
                var gridRowViewModelConfig = this.callParent(arguments);
                gridRowViewModelConfig.rowConfig.UsrFLOAT.dataValueType = 1;
                return gridRowViewModelConfig;
            }
        }
    };
});

 

Нравится

Поделиться

0 комментариев
Показать все комментарии