Создать обращение по сообщению из внутренней ленты другого обращения

Сложный
PDF

Пример реализован для продуктов линейки Service Creatio.

Пример. На вкладку Обработка (Processing) страницы обращения добавить всплывающую кнопку. Кнопка отображается при выделении текста в сообщениях c почты и портала самообслуживания, отправленных с внутренней ленты обращения. При нажатии на кнопку создается новое обращение. Поля Тема (Subject) и Описание (Description) заполняются автоматически. Значения полей — выделенный текст.

Создать схему замещающей модели представления страницы обращения 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).

  3. Заполните свойства схемы.

    • Код (Code) — "SocialMessageHistoryItemPageV2".
    • Заголовок (Title) — "SocialMessageHistoryItemPageV2".
    • Родительский объект (Parent object) — выберите "SocialMessageHistoryItemPageV2".
  4. Реализуйте логику работы всплывающей кнопки.

    • В свойстве methods реализуйте методы:

      • onSelectedTextChanged() — передает значение выделенного текста в атрибут HighlightedHistoryMessage. Срабатывает при выделении текста.
      • onSelectedTextButtonClick() — создает обращение, тему которого получает из атрибута HighlightedHistoryMessage. Логика создания обращения определена в родительской схеме BaseMessageHistory. Срабатывает при нажатии на всплывающую кнопку.
      • getMessageFromHistory() — переопределенный метод родительской схемы, который получает тему выделенного сообщения.
    • В массив модификаций diff добавьте конфигурационный объект с настройками элемента SelectionHandlerMultiLineLabel пакета Message, который реализует логику создания нового обращения на основе выделенного текста.

    Исходный код схемы замещающей модели представления страницы обращения представлен ниже.

    SocialMessageHistoryItemPageV2
    define("SocialMessageHistoryItemPageV2", ["SocialMessageConstants", "css!SocialMessageHistoryItemStyle"], function(socialMessageConstants) {
        return {
            /* Название схемы объекта страницы записи. */
            entitySchemaName: "BaseMessageHistory",
            /* Детали модели представления страницы записи. */
            details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
            /* Методы модели представления страницы записи. */
            methods: {
                /* Переопределение базового метода. Получает тему для выделенного сообщения. */
                getMessageFromHistory: function() {
                    var message = this.get("HighlightedHistoryMessage");
                    if (this.isHistoryMessageEmpty(message)) {
                        message = this.get("[Activity:Id:RecordId].Body");
                    }
                    return message;
                },
                /* Обработчик события выделения текста. */
                onSelectedTextChanged: function(text) {
                    this.set("HighlightedHistoryMessage", text);
                },
                /* Обработчик нажатия всплывающей кнопки. */
                onSelectedTextButtonClick: function() {
                    /* Подготовка данных по обращению из истории. */
                    this.prepareCaseDataFromHistory();
                }
            },
            /* Отображение кнопки на странице записи. */
            diff: /**SCHEMA_DIFF*/[
                /* Метаданные для добавления на страницу всплывающей кнопки. */
                {
                    /* Выполняется операция изменения существующего элемента. */
                    "operation": "merge",
                    /* Мета-имя изменяемого компонента. */
                    "name": "MessageText",
                    /* Свойства, передаваемые в конструктор элемента. */
                    "values": {
                        /* Свойства генератора представления. */
                        "generator": function() {
                            return {
                                /* Значение HTML-тега id. */
                                "id": "MessageText",
                                /* Значение маркера. */
                                "markerValue": "MessageText",
                                /* Название класса компонента. */
                                "className": "Terrasoft.SelectionHandlerMultilineLabel",
                                /* Настройка CSS-стилей. */
                                "classes": {
                                    "multilineLabelClass": ["messageText"]
                                },
                                /* Заголовок. */
                                "caption": {"bindTo": "Message"},
                                "showLinks": true,
                                /* Привязка события изменения выделенного текста к методу-обработчику. */
                                "selectedTextChanged": {"bindTo": "onSelectedTextChanged"},
                                /* Привязка события нажатия всплывающей кнопки выделенного текста к методу-обработчику. */
                                "selectedTextHandlerButtonClick": {"bindTo": "onSelectedTextButtonClick"},
                                /* Признак видимости всплывающей кнопки. */
                                "showFloatButton": true
                            };
                        }
                    }
                }
            ]/**SCHEMA_DIFF*/
        };
    });
    
  5. На панели инструментов дизайнера нажмите Сохранить (Save).

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

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

  1. Обновите страницу раздела Обращения (Cases).
  2. Откройте страницу обращения.

В результате выполнения примера на вкладку Обработка (Processing) страницы обращения добавлена всплывающая кнопку. Кнопка отображается при выделении текста в сообщениях c почты и портала самообслуживания, отправленных с внутренней ленты обращения. При нажатии на кнопку создается новое обращение. Поля Тема (Subject) и Описание (Description) заполняются автоматически. Значения полей — выделенный текст.