Создание колонки с типом 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; } } }; });