Добрый день!
Подскажите, пожалуйста.
Читаю сей мануал http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/CalculatedF...
Моя задача добавить чекбокс и по нажатию на него делать что-то с другим полем.
Пока не понятны пункты 3 и 4.
3. Настроить визуальное отображение поля [Остаток для оплаты]
Для этого нужно в свойстве diff модели представления описать конфигурационный объект с необходимыми параметрами. - Где это найти?
4. В свойство attributes модели представления добавить колонку [UsrBalance]
В конфигурационном объекте колонки [UsrBalance] указать зависимость от колонок [Amount] и [PaymentAmount], а также метод-обработчик — calculateBalance, который будет рассчитывать значение для колонки [UsrBalance]. - Где это найти?
Пожалуйста, тыкните носом. Спасибо.
Нравится
Добрый день! Описание строения любых модулей приведено по ссылке: http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/SchemaStru…
Там вы можете почитать и про свойство diff и attributes.
В системе есть похожая логика на ту, что вы хотите: она реализована в странице активности. Там по нажатию на чекбокс "Напомнить автору" становится доступным поле "Дата напоминания автору". Думаю, вы можете там подсмотреть реализацию.
Здравствуйте!
В конце пункта 6 статьи http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/CalculatedFields.html
приведен результирующий исходный код модуля OrderPageV2 как результат выполнения пунктов 2...6.
Если бы Вы писали этот код сами "с чистого листа", то для выполнения пункта 3 Вам необходимо было бы добавить следующие строки в этот модуль (секция diff):
[javascript]
// Визуальное отображение поля [Остаток для оплаты] на странице редактирования.
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"parentName": "Header",
"propertyName": "items",
"name": "UsrBalance",
"values": {
"bindTo": "UsrBalance",
"layout": {"column": 12, "row": 2, "colSpan": 12}
}
}
]/**SCHEMA_DIFF*/
[/javascript]
То что внутри внешних фигурных скобок называется конфигурационным объектом.
Для выполнения пунктов 4-6 Вам необходимо было бы добавить следующее.
В секцию attributes добавить конфигурационный объект для атрибута (свойства) UsrBalance (пункт 4):
[javascript]
// Название колонки модели представления.
"UsrBalance": {
// Тип данных колонки модели представления.
dataValueType: Terrasoft.DataValueType.FLOAT,
// Массив конфигурационных объектов, определяющих зависимости колонки [UsrBalance].
dependencies: [
{
// Значение колонки [UsrBalance] зависит от значений колонок [Amount]
// и [PaymentAmount].
columns: ["Amount", "PaymentAmount"],
// Метод-обработчик, который вызывается при изменении значения одной из колонок [Amount]
// и [PaymentAmount].
methodName: "calculateBalance"
}
]
}
[/javascript]
В секцию methods метод calculateBalance (пункт 5) :
[javascript]
// Метод-обработчик, который рассчитывает значение колонки [UsrBalance].
calculateBalance: function () {
// Проверяем, проинициализованы ли в момент открытия страницы редактирования
// колонки [Amount] и [PaymentAmount]. Если нет, то устанавливаем для
// них нулевые значения.
if (!this.get("Amount")) {
this.set("Amount", 0);
}
if (!this.get("PaymentAmount")) {
this.set("PaymentAmount", 0);
}
// Расчет разницы между значениями в колонках [Amount] и [PaymentAmount].
var result = this.get("Amount") - this.get("PaymentAmount");
// Результат расчета присваивается в качестве значения колонке [UsrBalance].
this.set("UsrBalance", result);
}
}
[/javascript]
В секцию methods метод onEntityInitialized (пункт 6) :
[javascript]
// Переопределение базового метода Terrasoft.BasePageV2.onEntityInitialized, который
// срабатывает после окончания инициализации схемы объекта страницы редактирования.
onEntityInitialized: function () {
// Вызывается родительская реализация метода.
this.callParent(arguments);
// Вызов метода-обработчика, который рассчитывает значение колонки [UsrBalance].
this.calculateBalance();
}
[/javascript]