BPMonline 7.7.0.2326
В мобильном приложении будет всего 1 раздел Лиды.

Возможно ли при загрузке приложения сразу открывать карточку нового лида, а не реестр?
И в какой схеме это реализовывать?

Нравится

5 комментариев

Виктория, здравствуйте!

Подобную задачу можно решить, кастомизировав страницу реестра приложения. Для этого необходимо добавить код:

loadData: function() {
                               this.callParent(arguments);
                               this.openEditPage();

Пример для раздела "Контакты" добавляю ниже. Однако, обратите внимание, что при подобной доработке карточка редактирования будет открываться при каждом открытии раздела.

Ext.define('ContactGridPage.Controller', {
                extend: 'Terrasoft.controller.BaseGridPage',
                statics: {
                               Model: Contact
                },
                config: {
                               refs: {
                                               view: '#ContactGridPage'
                               }
                },
 
               loadData: function() {
                               this.callParent(arguments);
                               this.openEditPage();
                }
 
});

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

Здравствуйте!

Создала модуль UsrMobileLeadGridPage:

/* globals Lead: false */
Terrasoft.LastLoadedPageData = {
controllerName: "UsrMobileLeadGridPage.Controller",
viewXType: "usrmobileleadgridpageview"
};

Ext.define("UsrMobileLeadGridPage.View", {
extend: "Terrasoft.view.BaseGridPage",
xtype: "usrmobileleadgridpageview",
config: {
id: "UsrMobileLeadGridPage"
}
});

Ext.define("UsrMobileLeadGridPage.Controller", {
extend: "Terrasoft.controller.BaseGridPage",
statics: {
Model: Lead
},
config: {
refs: {
view: "#UsrMobileLeadGridPage"
}
},

loadData: function() {
this.callParent(arguments);
this.openEditPage();
}
}
);

И модуль UsrMobileLeadEditPage:

/* globals Lead: false */
Terrasoft.LastLoadedPageData = {
controllerName: "UsrMobileLeadEditPage.Controller",
viewXType: "usrmobileleadeditpageview"
};

Ext.define("UsrMobileLeadEditPage.View", {
extend: "Terrasoft.view.BaseEditPage",
xtype: "usrmobileleadeditpageview",
config: {
id: "UsrMobileLeadEditPage"
}
});

Ext.define("UsrMobileLeadEditPage.Controller", {
extend: "Terrasoft.controller.BaseEditPage",

statics: {
Model: Lead
},

config: {
refs: {
view: "#UsrMobileLeadEditPage"
}
}

});

Добавила в UsrMobileApplicationManifestAgents в блоке Models:

"Lead": {
"Grid": "UsrMobileLeadGridPage",
"Edit": "UsrMobileLeadEditPage",
"RequiredModels": [
"Lead",
"LeadTypeStatus",
"QualifyStatus",
"LeadRegisterMethod",
"LeadType",
"Contact",
"UsrPlaceReceiptLead"
],
"ModelExtensions": [
"UsrMobileLeadModelConfig"
],
"PagesExtensions": [
"UsrMobileLeadActionsSettingsAgents",
"UsrMobileLeadGridPageSettingsAgents",
"UsrMobileLeadRecordPageSettingsAgents"
]
},

При синхронизации возникает ошибка:
Uncaught TypeError: Object prototype may only be an Object or null

Скажите, как правильно настроить открытие карточки при загрузке раздела?

Виктория, Ваш код верный и не соберджит ошибок. Для того чтобы разобратся почему реализация не работает - предоставьте в рамках инцидента 0285053 параметры подключения к конфигурации.

Добрый день!
В процессе подключения к Вашей базе в рамках инцидента 0285053 были найдены некоторые недоработки:
UsrMobileLeadGridPage, там было несколько проблем:
1. В extend-е Вы указали Terrasoft.view.BaseGridPage, а нужно было Terrasoft.view.BaseGridPage.View.
2. Нужно было определить класс хранилища (UsrMobileLeadGridPage.Store).
3. При добавлении view нужно было указать гриду этот store.

Сейчас после синхронизации и запуска приложения открывается карточка редактирования Лида. Но у меня есть пара вопросов:
1. после сохранения Лида пользователь все-равно будет возвращаться в реестр и метод loadData снова сработает и карточка редактирования откроется снова. Так и задумывалось?
2. У Вас в Лидах настроена фильтрация по какому-то Id, соот-но, после добавления новой записи пользователь ее не увидит.

Вот этот фильтр не показывает записи Лидов:
Terrasoft.sdk.Module.addFilter("Lead", Ext.create("Terrasoft.Filter", {
compareType: Terrasoft.ComparisonTypes.Equal,
property: "Id",
value: "47e361ae-0000-0000-0000-9ec808adfee3"
}));

Спасибо Вам большое!!!!
Все заработало так, как надо!!!

1. Да, так и задумывалось, чтобы постоянно открывалась карточка при входе в реестр раздела Лиды.
2. Фильтрация настроена специально, чтобы пользователь не видел данных реестра.

Спасибо!!!

Показать все комментарии