Creatio development guide
PDF
Документация по разработке

Как добавить разницу дат в полях страницы редактирования

Glossary Item Box

Для работы с датами в клиентской части приложения используются возможности стандартного JavaScript-объекта Date. Например, для получения дня месяца для определенной даты в соответствии с локальным временем пользователя используется метод Date.prototype.getDate(). А для установки дня месяца относительно текущего месяца — метод Date.prototype.setDate(). Все свойства и методы объекта Date приведены в документации.

Например, при создании нового договора нужно, чтобы в поле [Дата завершения] ([End Date]) отображалась дата на 5 дней больше, чем в поле [Дата начала] ([Start Day]). Для этого необходимо:

1. Создать замещающую схему страницы редактирования записи раздела [Договоры] ContractPageV2 ([Section edit page schema - "Contracts"]). Как создать замещающую схему описано в статье "Создание клиентской схемы".

2. В созданную схему добавить следующий код:

define("ContractPageV2", [], function() {
    return {
        entitySchemaName: "Contract",
        methods: {
            // Установка даты выполняется после инициализации объекта.
            onEntityInitialized: function() {
                // Проверка режима новой записи
                if ((this.isAddMode() && this.Ext.isEmpty(this.get("EndDate")))) {
                    // Вызов вспомогательного метода.
                    this.setEndDate(this.get("StartDate"), 5);
                }
                // Вызов базовой функциональности.
                this.callParent(arguments);
            },
            // Вспомогательный метод для установки даты.
            setEndDate: function(date, dateOffsetInDays) {
                var offsetDate = new Date();
                offsetDate.setDate(date.getDate() + dateOffsetInDays);
                this.set("EndDate", offsetDate);
            }
        }
    };
});

3. Сохранить изменения.

4. Обновить страницу браузера.

В результате при добавлении нового договора будет автоматически установлена дата его завершения, отличающаяся от даты начала на 5 дней (рис. 1).

Рис. 1. — Результат выполнения кейса

К СВЕДЕНИЮ

Чтобы дата в поле [Дата завершения] ([End Date]) пересчитывалась автоматически при изменении пользователем поля [Дата начала] ([Start Day]), необходимо воспользоваться функциональностью вычисляемых полей. Как это сделать подробно описано в статье "Добавление вычисляемых полей".

© Terrasoft 2002-2019.

Был ли данный материал полезен?

Как можно улучшить эту статью?