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

PDF
Основы

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

Действия по открытию страницы из пользовательского обработчика, которые позволяет выполнять Creatio 8 Atlas:

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

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

  1. На шаге 1 алгоритма кастомизации страницы Freedom UI при необходимости добавьте на страницу кнопку, по нажатию на которую планируется открывать страницу записи.
  2. На шаге 2 алгоритма кастомизации страницы Freedom UI настройте открытие страницы записи из пользовательского обработчика.

    1. Подключите сервис открытия страниц sdk.HandlerChainService. Подключение сервиса аналогично описанному в алгоритме отображения значения системных переменных.
    2. В секции viewConfigDiff привяжите свойство clicked к соответствующему запросу. Бизнес-логика открытия страницы описывается в секции handlers. Свойство clicked отвечает за действие, которое выполняется при нажатии на кнопку.

      Пример привязки свойства clicked к пользовательскому запросу usr.SomeRequest представлен ниже.

      Секция viewConfigDiff
    3. В секцию handlers добавьте реализацию пользовательского запроса.

      Чтобы открыть страницу:

      1. Получите экземпляр singleton-сервиса открытия страниц sdk.HandlerChainService.
      2. Отправьте системный запрос crt.UpdateRecordRequest, который выполняет открытие страницы по указанному идентификатору.

      Пример обработчика запроса usr.SomeRequest, который отправляет системный запрос crt.UpdateRecordRequest, представлен ниже. Запрос crt.UpdateRecordRequest открывает страницу записи SomeSchemaName с идентификатором SomeRecordId.

      Секция handlers

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

      1. Получите экземпляр singleton-сервиса открытия страниц sdk.HandlerChainService.
      2. Отправьте системный запрос crt.CreateRecordRequest, который выполняет создание страницы с заполнением полей указанными значениями.

      Пример обработчика запроса usr.SomeRequest, который отправляет системный запрос crt.CreateRecordRequest, представлен ниже. Запрос crt.CreateRecordRequest открывает страницу записи SomeSchemaName и заполняет поле SomeField значением "SomeRecordId".

      Секция handlers

Подробный пример открытия страницы записи приведен в статье Открыть страницу записи из пользовательского обработчика.

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

  1. Выполните шаги 1-2 алгоритма открытия страницу записи из пользовательского обработчика.
  2. На шаге 2 алгоритма открытия страницу записи из пользовательского обработчика настройте открытие Freedom UI страницы из пользовательского обработчика. Для этого в секцию handlers добавьте реализацию пользовательского запроса.

    1. Получите экземпляр singleton-сервиса открытия страниц sdk.HandlerChainService.
    2. Отправьте системный запрос crt.OpenPageRequest, который выполняет открытие Freedom UI страницы по указанному имени.

    Пример обработчика запроса usr.SomeRequest, который отправляет системный запрос crt.OpenPageRequest, представлен ниже. Запрос crt.OpenPageRequest открывает страницу SomePageName.

    Секция handlers

Подробный пример открытия Freedom UI страницы приведен в статье Открыть Freedom UI страницу из пользовательского обработчика.

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

Пример. На странице записи пользовательского раздела 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-devkit/common.

    Зависимости AMD-модуля
    /* Объявление AMD-модуля. */
    define("UsrAppHandlerChainSe_FormPage", /**SCHEMA_DEPS*/["@creatio-devkit/common"] /**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".

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

Пример. На странице записи пользовательского раздела Handler Chain Service добавить кнопку Открыть страницу (Open page). Кнопка открывает Freedom UI страницу StudioHomePage.

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

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

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

  4. На панели действий Freedom UI дизайнера нажмите на кнопку . После сохранения настроек страницы открывается исходный код страницы Freedom UI.

2. Настроить открытие Freedom UI страницы 

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

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

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

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

    1. Получите экземпляр singleton-сервиса открытия страниц sdk.HandlerChainService.
    2. Отправьте системный запрос crt.OpenPageRequest, который выполняет открытие страницы StudioHomePage.
    Секция handlers
    handlers: /**SCHEMA_HANDLERS*/[
        {
            request: "usr.OpenUsrTestPageRequest",
            /* Реализация обработчика пользовательского запроса. */
            handler: async (request, next) => {
                /* Получает экземпляр singleton-сервиса открытия страниц. */
                const handlerChain = sdk.HandlerChainService.instance;
                /* Отправляет системный запрос crt.OpenPageRequest, который выполняет открытие указанной Freedom UI страницы. */
                await handlerChain.process({
                    type: 'crt.OpenPageRequest',
                    schemaName: 'StudioHomePage'
                });
                /* Вызывает следующий обработчик, если он присутствует, и возвращаем его результат. */
                return next?.handle(request);
            }
        }
    ] /**SCHEMA_HANDLERS*/,
    
    Полный исходный код схемы страницы
  4. На панели инструментов дизайнера клиентского модуля нажмите Сохранить (Save).

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

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

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

В результате выполнения примера открывается Freedom UI страница StudioHomePage.