Добрый день,подскажите пожалуйста,а в мобильном приложении есть функция автозаполнения поля ? Если да,то как это можно организовать ? Чтобы при создании новой записи в разделе,поле автоматически заполнялось значением,что то вроде счетчика записей. Например у меня в разделе есть 10 записей - запись 1,запись 2,запись 3 ... 10. При создании новой чтобы поле Название сразу заполнялось как запись 11. Подскажите примерный ход действий(на данный момент беру запросом с базы,сортируя и беру следующее число,но такой подход не очень хороший). Может быть есть более правильный вариант ? Спасибо!
Нравится
Автонумерацию таким образом делать не нужно. Во-первых, для этого есть стандартный механизм в системе. Во-вторых, в мобильном приложении это может вызвать проблемы с совпадением номеров при синхронизации записей. Автонумерацию нужно на стороне BPM делать.
Что касается автоматической установки значений, то есть несколько вариантов. Можно сделать, например, на уровне событий объекта мобильного приложения:
Terrasoft.sdk.Model.setModelEventHandler("ActivitySKU", Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.Before].update, function(config) { var record = config.scope.eventConfig.records[0]; record.set("UsrIsChecked", true); Ext.callback(config.success, config.scope); });
Или с помощью Custom бизнес правила:
Terrasoft.sdk.Model.addBusinessRule("ModelName", { name: "RuleName", ruleType: Terrasoft.RuleTypes.Custom, events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged], executeFn: function(record, rule, column, customData, callbackConfig) { record.set("UsrColumn", "some value"); Ext.callback(callbackConfig.success, callbackConfig.scope); } })
Третий вариант - в кастомной странице повесить на загруженную запись дополнительный обработчик на изменение записи:
onLoadRecord: function(loadedRecord) { this.callParent(arguments); loadedRecord.on("columnchanged", this.onRecordColumnChanged, this); },
Но я ещё столкнулся проблемой, что при изменении значения в записи не обновляется значение в соотвествующем поле на странице, приходилось доставать контрол и вручную в нём дублировать значение.
var control = Ext.getCmp("control_id"); control.setValue("some value");
Такое есть смысл на стороне сервера. Есть специальное действие в БП для получения номера по порядку.
На мобильном в автономном режиме такая нумерация не имеет смысла, поскольку на сервере или на другом телефоне могут также добавить записи. Поле можно оставить пустым, а заполнить тем же БП при синхронизации в основную базу.
Автонумерацию таким образом делать не нужно. Во-первых, для этого есть стандартный механизм в системе. Во-вторых, в мобильном приложении это может вызвать проблемы с совпадением номеров при синхронизации записей. Автонумерацию нужно на стороне BPM делать.
Что касается автоматической установки значений, то есть несколько вариантов. Можно сделать, например, на уровне событий объекта мобильного приложения:
Terrasoft.sdk.Model.setModelEventHandler("ActivitySKU", Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.Before].update, function(config) { var record = config.scope.eventConfig.records[0]; record.set("UsrIsChecked", true); Ext.callback(config.success, config.scope); });
Или с помощью Custom бизнес правила:
Terrasoft.sdk.Model.addBusinessRule("ModelName", { name: "RuleName", ruleType: Terrasoft.RuleTypes.Custom, events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged], executeFn: function(record, rule, column, customData, callbackConfig) { record.set("UsrColumn", "some value"); Ext.callback(callbackConfig.success, callbackConfig.scope); } })
Третий вариант - в кастомной странице повесить на загруженную запись дополнительный обработчик на изменение записи:
onLoadRecord: function(loadedRecord) { this.callParent(arguments); loadedRecord.on("columnchanged", this.onRecordColumnChanged, this); },
Но я ещё столкнулся проблемой, что при изменении значения в записи не обновляется значение в соотвествующем поле на странице, приходилось доставать контрол и вручную в нём дублировать значение.
var control = Ext.getCmp("control_id"); control.setValue("some value");
Бершеда Д. Н. пишет:
Но я ещё столкнулся проблемой, что при изменении значения в записи не обновляется значение в соотвествующем поле на странице, приходилось доставать контрол и вручную в нём дублировать значение.
Здравствуйте.
Данная проблема, скорее всего, решается передачей в метод .set третьего параметра true.