Как добавить кнопку в режиме добавления новой записи
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. — Демонстрация результата выполнения кейса
Данная кнопка будет отображаться на странице в режиме добавления новой записи. Чтобы отобразить кнопку на странице в режиме редактирования необходимо выполнить кейс "Как добавить кнопку на страницу редактирования в совмещенном режиме."