Acuminator выдает предупреждения при использовании запросов bql в событиях rowselected / Initialize, где их использовать? - PullRequest
0 голосов
/ 25 января 2019

Я использую userLoginType и userRoles для включения / отключения некоторых полей в моих событиях Row_Selected, но с помощью Acuminator https://github.com/Acumatica/Acuminator я получаю предупреждение PX1049: https://github.com/Acumatica/Acuminator/blob/dev/docs/diagnostics/PX1049.md

мой код следующий:

public class OpportunityMaintExt : PXGraphExtension<OpportunityMaint>
    {
public PXSelectJoin<EPLoginType, InnerJoin<Users, On<Users.loginTypeID, Equal<EPLoginType.loginTypeID>>>,
            Where<Users.pKID, Equal<Current<AccessInfo.userID>>>> userLoginType;
        public PXSelect<Contact, Where<Contact.userID, Equal<Current<AccessInfo.userID>>>> userContact;
        public PXSelect<UsersInRoles, Where<UsersInRoles.username, Equal<Current<AccessInfo.userName>>>> userRoles;
        public string userLoginTypeName;

protected virtual void CROpportunity_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            CROpportunity o = e.Row as CROpportunity;
            CROpportunityExt myOpp = sender.GetExtension<CROpportunityExt>(sender.Current);
            userLoginTypeName = TRLoginInfo.getCurrentUserLoginType(userLoginType.SelectSingle(), userRoles);
enabledisablefields();
}

Проблема в userLoginType.SelectSingle (), Acuminator говорит мне, что: «В Rowselected Handler следует избегать bql и запросов к базам данных». Но если я помещаю это в Initialize (), это выдает то же самое предупреждение.

Итак, куда я должен поместить эти запросы bql / database, если я хочу, чтобы они обрабатывались при просмотре записи?

Большое спасибо!

1 Ответ

0 голосов
/ 25 января 2019

В идеале - вы должны запустить свой BQL в событии RowSelecting в новом PXConnectionScope (BQL в событиях RowSelecting ДОЛЖЕН быть выполнен в новом PXConnectionScope для предотвращения проблем), назначить поля без поддержки db в вашемРасширение DAC, затем используйте их значения в событии RowSelected, чтобы определить, следует ли включать определенные поля.

...