Вопрос
Преднастроенная страница. Как создать 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;
}
}
};
});