Действие на чекбокс

Добрый день!

Подскажите, пожалуйста.
Читаю сей мануал http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/CalculatedF...
Моя задача добавить чекбокс и по нажатию на него делать что-то с другим полем.
Пока не понятны пункты 3 и 4.

3. Настроить визуальное отображение поля [Остаток для оплаты]

Для этого нужно в свойстве diff модели представления описать конфигурационный объект с необходимыми параметрами. - Где это найти?

4. В свойство attributes модели представления добавить колонку [UsrBalance]

В конфигурационном объекте колонки [UsrBalance] указать зависимость от колонок [Amount] и [PaymentAmount], а также метод-обработчик — calculateBalance, который будет рассчитывать значение для колонки [UsrBalance]. - Где это найти?

Пожалуйста, тыкните носом. Спасибо.

Нравится

2 комментария

Добрый день! Описание строения любых модулей приведено по ссылке: 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):

// Визуальное отображение поля [Остаток для оплаты] на странице редактирования.
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "insert",
                    "parentName": "Header",
                    "propertyName": "items",
                    "name": "UsrBalance",
                    "values": {
                        "bindTo": "UsrBalance",
                        "layout": {"column": 12, "row": 2, "colSpan": 12}
                    }
                }
            ]/**SCHEMA_DIFF*/

То что внутри внешних фигурных скобок называется конфигурационным объектом.

Для выполнения пунктов 4-6 Вам необходимо было бы добавить следующее.

В секцию attributes добавить конфигурационный объект для атрибута (свойства) UsrBalance (пункт 4):

                // Название колонки модели представления.
                "UsrBalance": {
                    // Тип данных колонки модели представления.
                    dataValueType: Terrasoft.DataValueType.FLOAT,
                    // Массив конфигурационных объектов, определяющих зависимости колонки [UsrBalance].
                    dependencies: [
                        {
                            // Значение колонки [UsrBalance] зависит от значений колонок [Amount] 
                            // и [PaymentAmount].
                            columns: ["Amount", "PaymentAmount"],
                            // Метод-обработчик, который вызывается при изменении значения одной из колонок [Amount] 
                            // и [PaymentAmount].
                            methodName: "calculateBalance"
                        }
                    ]
                }

В секцию methods метод calculateBalance (пункт 5) :

                // Метод-обработчик, который рассчитывает значение колонки [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);
                }
            }

В секцию methods метод onEntityInitialized (пункт 6) :

        // Переопределение базового метода Terrasoft.BasePageV2.onEntityInitialized, который 
                // срабатывает после окончания инициализации схемы объекта страницы редактирования.
                onEntityInitialized: function () {
                    // Вызывается родительская реализация метода.
                    this.callParent(arguments);
                    // Вызов метода-обработчика, который рассчитывает значение колонки [UsrBalance].
                    this.calculateBalance();
                }
Показать все комментарии