Creatio development guide
Это документация Creatio версии 7.11.0. Мы рекомендуем использовать новую версию документации.

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

Glossary Item Box

Описание кейса

На страницу добавления нового контрагента необходимо добавить кнопку, которая будет открывать страницу редактирования основного контакта.

ВАЖНО

По умолчанию для добавиления нового контрагента используется миникарточка. Чтобы для добавления контрагента использовать страницу добавления, необходимо установить значение false в поле [Значение по умолчанию] системной настройки [Использовать миникарточку добавления контрагента].

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

К СВЕДЕНИЮ

В обычный режим отображения страницы редактирования можно перейти не только при создании записи, но и если обновить страницу, находящуюся в совмещенном режиме отображения, например, с помощью клавиши F5. При этом вертикальный реестр должен быть скрыт.

Алгоритм реализации кейса

1. Создать замещающую страницу редактирования контрагента

Для этого необходимо создать замещающий клиентский модуль, в котором в качестве родительского объекта указать схему AccountPageV2 (рис. 1).

Процесс создания замещающей страницы описан в статье "Создание клиентской схемы".

Рис. 1. — Свойства замещающей страницы редактирования

2. В коллекцию локализируемых строк замещающей схемы страницы добавить строку с заголовком кнопки

Для этого, кликнув правой кнопкой по узлу структуры [LocalizableStrings], выбрать команду [Добавить] (рис. 2).

Рис. 2. — Добавление в схему локализируемой строки

Для созданной строки заполнить свойства (рис. 3):

Рис. 3. — Свойства пользовательской локализированной строки

  • [Название] — "OpenPrimaryContactButtonCaption";
  • [Заголовок] — "OpenPrimaryContactButtonCaption";
  • [Значение] — "Основной контакт".

3.  Добавить реализацию методов

В коллекцию методов модели представления раздела необходимо добавить реализацию следующих методов:

  • isAccountPrimaryContactSet(), который будет проверять, заполнено ли поле [Основной контакт] страницы;
  • метод-обработчик нажатия кнопки onOpenPrimaryContactClick(), который будет выполнять переход на страницу редактирования основного контакта.

Исходный код страницы редактирования приведен ниже.

4. Добавить кнопку на страницу редактирования

Для этого в массив diff нужно добавить конфигурационный объект с настройками расположения и стиля кнопки на странице контрагента.

Полностью исходный код схемы модели представления страницы редактирования контрагента:

define("AccountPageV2", [], function() {
    return {
        // Название схемы объекта страницы редактирования.
        entitySchemaName: "Account",
        // Коллекция методов модели представления страницы редактирования.
        methods: {
            // Метод проверяет, заполнено ли поле [Основной контакт] страницы.
            isAccountPrimaryContactSet: function() {
                return this.get("PrimaryContact") ? true : false;
            },
            // Метод-обработчик нажатия кнопки.
            onOpenPrimaryContactClick: function() {
                // Определение идентификатора основного контакта.
                var primaryId = this.get("PrimaryContact").value;
                if (primaryId) {
                    // Формирование строки адреса.
                    var requestUrl = "CardModuleV2/ContactPageV2/edit/" + primaryId;
                    // Публикация сообщения и переход на страницу редактирования
                    // основного контакта.
                    this.sandbox.publish("PushHistoryState", {
                        hash: requestUrl
                    });
                }
            }
        },
        //Настройка визуализации кнопки на странице редактирования.
        diff: [
            // Метаданные для добавления на страницу нового элемента управления - пользовательской кнопки.
            {
                // Указывает на то, что выполняется операция добавления элемента на страницу.
                "operation": "insert",
                // Мета-имя родительского элемента управления, в который добавляется кнопка.
                "parentName": "LeftContainer",
                // Указывает на то, что кнопка добавляется в коллекцию элементов управления
                // родительского элемента (мета-имя которого указано в parentName).
                "propertyName": "items",
                // Мета-имя добавляемой кнопки.
                "name": "MainContactButton",
                // Дополнительные свойства элемента.
                "values": {
                    // Тип добавляемого элемента - кнопка.
                    itemType: Terrasoft.ViewItemType.BUTTON,
                    // Привязка заголовка кнопки к локализуемой строке схемы.
                    caption: {bindTo: "Resources.Strings.OpenPrimaryContactButtonCaption"},
                    // Привязка метода-обработчика нажатия кнопки.
                    click: {bindTo: "onOpenPrimaryContactClick"},
                    // Привязка свойства доступности кнопки.
                    enabled: {bindTo: "isAccountPrimaryContactSet"},
                    // Стиль отображения кнопки.
                    "style": Terrasoft.controls.ButtonEnums.style.BLUE,
                    // Настройка расположения поля.
                    "layout": {
                        "column": 1,
                        "row": 6,
                        "colSpan": 1
                    }
                }
            }
        ]
    };
});

После сохранения схемы и обновления веб-страницы системы с удалением кэша, на странице создания нового контрагента появится кнопка [Основной контакт], которая будет активизироваться после заполнения у контрагента поля [Основной контакт] (рис. 4).

Рис. 4. — Демонстрация результата выполнения кейса

Данная кнопка будет отображаться на странице в режиме добавления новой записи. Чтобы отобразить кнопку на странице в режиме редактирования необходимо выполнить кейс "Как добавить кнопку на страницу редактирования в совмещенном режиме."

© Terrasoft 2002-2018.

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

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