Открыть страницу записи из пользовательского обработчика

Средний
PDF

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

  • Изменить контакт (Edit contact). Кнопка открывает страницу контакта с указанным идентификатором.
  • Создать заявку (Create request). Кнопка открывает страницу новой заявки пользовательского раздела Requests. Поле Название (Name) заявки заполняется значением "New request".

В приложении Creatio версий 7.Х и 8.Х используется одинаковый способ открытия страницы записи. При создании записи можно передать необходимые значения по умолчанию для колонок.

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

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

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

  2. Настройте интерфейс страницы пользовательского раздела Handler Chain Service.

    1. На странице приложения Requests нажмите на кнопку .
    2. Используя шаблон Данные и бизнес-процессы (Records & business processes), создайте пользовательское приложение Handler Chain Service. Для этого воспользуйтесь инструкцией, которая приведена в статье Создать пользовательское приложение.
    3. В рабочей области страницы приложения Handler Chain Service откройте страницу Страница записи Handler Chain Service (Handler Chain Service form page).
    4. Удалите поле Название (Name), которое по умолчанию добавлено на страницу Страница записи Handler Chain Service (Handler Chain Service form page).
    5. Добавьте кнопку, которая открывает страницу контакта с указанным идентификатором.

      1. На панель инструментов Freedom UI дизайнера добавьте компонент типа Кнопка (Button).
      2. На панели действий Freedom UI дизайнера нажмите на кнопку и на панели настройки заполните свойство кнопки Заголовок (Title) — "Изменить контакт" ("Edit contact").

    6. Добавьте кнопку, которая открывает страницу новой заявки пользовательского раздела Requests.

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

        • Заголовок (Title) — "Создать заявку" ("Create request").
        • Стиль (Style) — выберите "Основной" ("Primary").
    7. На панели действий Freedom UI дизайнера нажмите на кнопку . После сохранения настроек страницы открывается исходный код страницы Freedom UI.

2. Настроить открытие страниц записи 

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

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

    Зависимости AMD-модуля
    /* Объявление AMD-модуля. */
    define("UsrAppHandlerChainSe_FormPage", /**SCHEMA_DEPS*/["@creatio/sdk"] /**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/(sdk)/**SCHEMA_ARGS*/ {
            ...
        };
    });
    
  2. В секции viewConfigDiff измените значение свойства clicked:

    • usr.EditContactRequest — для элемента EditContactButton.
    • usr.CreateUsrRequestRequest — для элемента CreateRequestButton.

    Свойство clicked отвечает за действие, которое выполняется при нажатии на кнопку.

    Секция viewConfigDiff
    viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
        {
            "operation": "insert",
            "name": "EditContactButton",
            "values": {
                ...,
                "clicked": {
                    /* Привязывает к событию кнопки clicked отправку кастомного запроса usr.EditContactRequest. */
                    "request": "usr.EditContactRequest"
                }
            },
            ...
        },
        {
            "operation": "insert",
            "name": "CreateRequestButton",
            "values": {
                ...,
                "clicked": {
                    /* Привязывает к событию кнопки clicked отправку кастомного запроса usr.CreateUsrRequestRequest. */
                    "request": "usr.CreateUsrRequestRequest"
                }
            },
            ...
        }
    ]/**SCHEMA_VIEW_CONFIG_DIFF*/,
    
  3. В секции handlers добавьте реализации обработчиков пользовательских запросов:

    • usr.EditContactRequest.

      1. Получите экземпляр singleton-сервиса открытия страниц sdk.HandlerChainService.
      2. Отправьте системный запрос crt.UpdateRecordRequest, который выполняет открытие страницы контакта с указанным идентификатором. Посмотреть идентификатор контакта, страницу которого планируется открыть, можно в строке браузера. В нашем примере откроем страницу контакта Alexander Wilson идентификатор которого "98dae6f4-70ae-4f4b-9db5-e4fcb659ef19".
    • usr.CreateUsrRequestRequest.

      1. Получите экземпляр singleton-сервиса открытия страниц sdk.HandlerChainService.
      2. Отправьте системный запрос crt.CreateRecordRequest, который выполняет открытие страницы новой заявки. Поле Название (Name) заполняется значением "New request".
    Секция handlers
    handlers: /**SCHEMA_HANDLERS*/[
        {
            request: "usr.EditContactRequest",
            /* Реализация обработчика пользовательского запроса. */
            handler: async (request, next) => {
                /* Получает экземпляр singleton-сервиса открытия страниц. */
                const handlerChain = sdk.HandlerChainService.instance;
                /* Отправляет системный запрос crt.UpdateRecordRequest, который выполняет открытие страницы контакта с указанным Id. */
                await handlerChain.process({
                    type: 'crt.UpdateRecordRequest',
                    entityName: 'Contact',
                    recordId: '98dae6f4-70ae-4f4b-9db5-e4fcb659ef19'
                });
                /* Вызывает следующий обработчик, если он присутствует, и возвращаем его результат. */
                return next?.handle(request);
            }
        },
        {
            request: "usr.CreateUsrRequestRequest",
            /* Реализация обработчика пользовательского запроса. */
            handler: async (request, next) => {
                /* Получает экземпляр singleton-сервиса открытия страниц. */
                const handlerChain = sdk.HandlerChainService.instance;
                /* Отправляет системный запрос crt.CreateRecordRequest, который выполняет открытие страницы новой заявки. Поле [Name] заполняется указанным значением. */
                await handlerChain.process({
                    type: 'crt.CreateRecordRequest',
                    entityName: 'UsrAppRequests',
                            defaultValues: [{
                                attributeName: 'UsrName',
                                value: 'New request'
                    }]
                });
                /* Вызывает следующий обработчик, если он присутствует, и возвращаем его результат. */
                return next?.handle(request);
            }
        }
    ] /**SCHEMA_HANDLERS*/,
    
    Полный исходный код схемы страницы
  4. На панели инструментов дизайнера клиентского модуля нажмите Сохранить (Save).

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

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

  1. Перейдите на страницу приложения Handler Chain Service и нажмите Запустить приложение (Run app).
  2. На панели инструментов приложения Handler Chain Service нажмите Добавить (New).
  3. На странице записи пользовательского раздела Handler Chain Service нажмите Изменить контакт (Edit contact).

В результате выполнения примера открывается страница контакта Alexander Wilson идентификатор которого "98dae6f4-70ae-4f4b-9db5-e4fcb659ef19".

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

  1. Обновите страницу приложения Handler Chain Service.
  2. На панели инструментов приложения Handler Chain Service нажмите Добавить (New).
  3. На странице записи пользовательского раздела Handler Chain Service нажмите Создать заявку (Create request).

В результате выполнения примера открывается страница новой заявки пользовательского раздела Requests. Поле Название (Name) заявки заполняется значением "New request".