Управлять значениями системных настроек на странице

Средний
PDF

Пример. На странице записи пользовательского раздела Requests отобразить:

  • Город пользователя.
  • Номер последней созданной записи в разделе Requests, который увеличен на 1. Значение номера увеличивается при создании новой или копировании существующей заявки.

В качестве значений используются значения пользовательских системных настроек.

1. Настроить интерфейс страницы 

  1. Используя шаблон Данные и бизнес-процессы (Records & business processes), создайте пользовательское приложение Requests. Для этого воспользуйтесь инструкцией, которая приведена в статье Создать пользовательское приложение.
  2. Добавьте системную настройку, которая хранит номер заявки.

    1. На странице приложения Requests нажмите Запустить приложение (Run app).
    2. Перейдите в дизайнер системы по кнопке . В блоке Настройка системы (System setup) перейдите по ссылке Системные настройки (System settings).
    3. На панели инструментов раздела нажмите Добавить настройку (Add setting).
    4. Заполните свойства системной настройки:

      • Название (Name) — "Номер заявки" ("Request number").
      • Код (Code) — "UsrRequestLastNumber".
      • Тип (Type) — выберите "Целое число" ("Integer").
      • Значение по умолчанию (Default value) — введите "0".
  3. Добавьте системную настройку, которая хранит название города.

    1. На панели инструментов раздела нажмите Добавить настройку (Add setting).
    2. Заполните свойства системной настройки:

      • Название (Name) — "Город" ("City").
      • Код (Code) — "UsrDefaultCity".
      • Тип (Type) — выберите "Справочник" ("Lookup").
      • Справочник (Lookup) — выберите "Город" ("City").
      • Значение по умолчанию (Default value) — выберите "New York" ("Нью-Йорк").
  4. Перейдите на страницу приложения Requests и в рабочей области откройте страницу Страница записи Requests (Requests form page).

    Поле Название (Name) по умолчанию добавлено на страницу Страница записи Requests (Requests form page).

  5. Добавьте надпись номера заявки.

    1. В рабочую область Freedom UI дизайнера добавьте компонент типа Надпись (Label).
    2. На панели действий Freedom UI дизайнера нажмите на кнопку и на панели настройки заполните свойства надписи:

      • Текст (Text) — "Номер заявки" ("Request number").
      • Стиль (Style) — выберите "Описание" ("Caption").
      • Цвет текста (Text color) — выберите серый цвет.
  6. Аналогично добавьте надписи:

    • Значения системной настройки номера заявки.
    • Города.
    • Значения системной настройки города.

    Свойства надписей, которые необходимо добавить, приведены в таблице ниже.

    Значения свойств надписей
    Элемент
    Свойство
    Значение свойства
    Надпись, которая содержит значение системной настройки номера заявки
    Текст (Text)
    "Номер заявки (значение)" ("Request number (value)")
    Стиль (Style)
    Выберите "Обычный текст" ("Body text")
    Надпись города
    Текст (Text)
    "Город" ("City")
    Стиль (Style)
    Выберите "Описание" ("Caption")
    Цвет текста (Text color)
    Выберите серый цвет
    Надпись, которая содержит значение системной настройки города
    Текст (Text)
    "Город (значение)" ("City (value)")
    Стиль (Style)
    Выберите "Обычный текст" ("Body text")
  7. На панели действий Freedom UI дизайнера нажмите на кнопку . После сохранения настроек страницы открывается исходный код страницы Freedom UI.

2. Управлять значениями системных настроек 

Бизнес-логика настраивается в дизайнере клиентского модуля. В этом примере настроим управление значениями системных настроек.

  1. Подключите сервис системных настроек sdk.SysSettingsService. Для этого добавьте в AMD-модуль зависимость @creatio-devkit/common.

    Зависимости AMD-модуля
    /* Объявление AMD-модуля. */
    define("UsrAppRequests_FormPage", /**SCHEMA_DEPS*/["@creatio-devkit/common"] /**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/(sdk)/**SCHEMA_ARGS*/ {
        return {
            ...
        };
    });
    
  2. В секцию viewModelConfig добавьте атрибуты:

    • UsrDefaultCity — хранит информацию о значении системной настройки UsrDefaultCity.
    • UsrRequestLastNumber — хранит информацию о значении системной настройки UsrRequestLastNumber.
    Секция viewModelConfig
    viewModelConfig: /**SCHEMA_VIEW_MODEL_CONFIG*/{
        "attributes": {
            ...,
            /* Атрибут, который хранит значение системной настройки UsrDefaultCity. */
            "UsrDefaultCity": {},
            /* Атрибут, который хранит значение системной настройки UsrRequestLastNumber. */
            "UsrRequestLastNumber": {}
        }
    }/**SCHEMA_VIEW_MODEL_CONFIG*/,
    
  3. В секции viewConfigDiff измените значения свойств:

    • caption — для элемента RequestNumberValue. Привяжите свойство к значению атрибута $UsrRequestLastNumber. Свойство caption отвечает за текст, который содержит элемент.
    • caption — для элемента CityValue. Привяжите свойство к значению атрибута $UsrDefaultCity.
    Секция viewConfigDiff
    viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
        ...,
        {
            "operation": "insert",
            "name": "RequestNumberValue",
            "values": {
                ...,
                /* Свойство, которое отвечает за текст, который содержит элемент. Привязано к значению атрибута UsrRequestLastNumber. */
                "caption": "$UsrRequestLastNumber",
                ...
            },
            ...
        },
        ...,
        {
            "operation": "insert",
            "name": "CityValue",
            "values": {
                ...,
                /* Свойство, которое отвечает за текст, который содержит элемент. Привязано к значению атрибута UsrDefaultCity. */
                "caption": "$UsrDefaultCity",
                ...
            },
            ...
        }
    ]/**SCHEMA_VIEW_CONFIG_DIFF*/,
    
  4. В секции handlers добавьте пользовательскую реализацию обработчика системного запроса crt.HandlerViewModelInitRequest. Обработчик выполняется при инициализации View модели.

    1. Создайте экземпляр сервиса системных значений из @creatio-devkit/common.
    2. Получите значение системной настройки UsrDefaultCity и запишите его в атрибут UsrDefaultCity.
    3. Получите состояние страницы.
    4. Получите значение системной настройки UsrRequestLastNumber.
    5. При создании новой или копировании существующей записи отправьте запрос на обновление значения системной настройки UsrRequestLastNumber (увеличьте ее на 1).
    6. Обновите значение атрибута UsrRequestLastNumber.
    Секция handlers
    handlers: /**SCHEMA_HANDLERS*/[
        {
            request: "crt.HandleViewModelInitRequest",
            /* Пользовательская реализация обработчика системного запроса. */
            handler: async (request, next) => {
                /* Ожидает окончание отработки остальных обработчиков инициализации. */
                await next?.handle(request);
                /* Создает экземпляр сервиса системных значений из @creatio-devkit/common. */
                const sysSettingsService = new sdk.SysSettingsService();
                /* Получает значение системной настройки UsrDefaultCity и записывает его в атрибут UsrDefaultCity. */
                const defaultCity = await sysSettingsService.getByCode('UsrDefaultCity');
                request.$context.UsrDefaultCity = defaultCity.displayValue;
                /* Получает состояние страницы. */
                const cardState = await request.$context.CardState;
                /* При создании новой или копировании существующей записи увеличиваем значение системной настройки UsrRequestLastNumber. */
                if (cardState === 'add' || cardState === 'copy') {
                    /* Получает значение системной настройки UsrRequestLastNumber и записывает его в атрибут UsrRequestLastNumber. */
                    const requestLastNumber = await sysSettingsService.getByCode('UsrRequestLastNumber');
                    /* Отправляем запрос на обновления значения системной настройки UsrRequestLastNumber. */
                    await sysSettingsService.update({
                        code: 'UsrRequestLastNumber',
                        /* Новое значение на 1 больше предыдущего. */
                        value: ++requestLastNumber.value
                    });
                    /* Обновляет значение атрибута UsrRequestLastNumber. */
                    request.$context.UsrRequestLastNumber = requestLastNumber.value;
                }
            },
        }
    ]/**SCHEMA_HANDLERS*/,
    
    Полный исходный код схемы страницы
  5. На панели инструментов дизайнера клиентского модуля нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера при создании новой заявки:

  1. Перейдите на страницу приложения Requests и нажмите Запустить приложение (Run app).
  2. На панели инструментов приложения Requests нажмите Добавить (New).

В результате выполнения примера на странице записи пользовательского раздела Requests отображаются:

  • Город пользователя. В качестве значения используется значение по умолчанию системной настройки Город (City, код UsrDefaultCity).
  • Номер последней созданной записи в разделе Requests, который увеличен на 1. В качестве значения используется значение системной настройки Номер заявки (Request number, код UsrRequestLastNumber), которое увеличивается на 1 при создании новой заявки.

Чтобы посмотреть результат выполнения примера при копировании существующей заявки:

  1. Предварительно добавьте заявку Request's name.
  2. В строке заявки Request's name в реестре раздела нажмите —> Копировать (Copy).

В результате выполнения примера на странице скопированной записи пользовательского раздела Requests отображаются:

  • Город пользователя. В качестве значения используется значение по умолчанию системной настройки Город (City, код UsrDefaultCity).
  • Номер последней созданной записи в разделе Requests, который увеличен на 1. В качестве значения используется значение системной настройки Номер заявки (Request number, код UsrRequestLastNumber), которое увеличивается на 1 при копировании существующей заявки.