Добрый день!
Подскажите, пожалуйста.
Читаю сей мануал 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):
// Визуальное отображение поля [Остаток для оплаты] на странице редактирования. 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(); }