файл распространяется Acumatica.

у скрыть вкладку «Комиссионные по строке заказа на продажу», но хочу, чтобы вкладка была скрыта только для определенной роли. Это возможно?

Ответы на вопрос(1)

Решение Вопроса
Вариант № 1: Использование свойства VisibleExp PXTabItem

виями, которые используют значения управления вводом из определенного контейнера (PXForm чаще всего используется для этого сценария).

Например, чтобы скрыть вкладку Комиссионные за заказы на продажу для заказовTR типа, вы должны составитьVisibleExp следующее:

<px:PXTabItem Text="Commissions"
              VisibleExp="DataControls[&quot;edOrderType&quot;].Value!=TR" 
              BindingContext="form" 
              RepaintOnDemand="false">

Краткий обзор 3PXTabItem свойства, использованные в приведенном выше фрагменте кода:

BindingContext: идентификатор элемента управления контейнера, в котором размещены элементы управления вводом, используемые для вычисления видимого свойства для PXTabItemVisibleExp: выражение для вычисления видимого свойства для PXTabItemRepaintOnDemand: контролирует инициализацию элемента управления PXTab. При значении True (значение по умолчанию) PXTabItem будет инициализироваться только тогда, когда пользователь выбирает вкладку, в противном случае он будет инициализироваться при каждой обратной передаче.Вариант № 2: В коде скрыть все элементы управления, размещенные внутри PXTabItem

Без сомнения, этот подход является шагом вперед с точки зрения гибкости по сравнению сPXTabItem VisibleExp свойство. Это позволяет создавать более сложные условия внутри бизнес-логики и не полагаться на веб-страницу.

Чтобы скрыть вкладку «Заказы на продажу», вы должны подписаться на обработчик RowSelected для SOOrder следующим образом:

public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
{
    public void SOOrder_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
    {
        SOOrder order = (SOOrder)e.Row;
        if (order == null) return;

        bool financeRoleMember = System.Web.Security.Roles.IsUserInRole("FINANCE");
        Base.SalesPerTran.AllowSelect = financeRoleMember;
        PXUIFieldAttribute.SetVisible<SOOrder.salesPersonID>(Base.Document.Cache, null, financeRoleMember);
    }
}

С участиемAllowSelect свойство установлено в false,SalesPerTran представление данных будет автоматически скрывать каждыйPXGrid, чьяDataMember свойство установлено вSalesPerTran, Поскольку вкладка «Заказы на продажу» также содержит поиск по умолчанию для продавца, нам необходимо дополнительно установитьвидимый собственность наложный дляPXUIFieldAttribute украшать поле SOOrder SalesPersonID.PXTabItem автоматически скрывается, когда не содержит видимых элементов управления.

Пожалуйста, обратите внимание, похоже наPXTabItem VisibleExp свойство, чтобы этот подход функционировал правильно, вы должны всегда устанавливатьRepaintOnDemand вложный дляPXTabItem ты условно прячешься. Для этого конкретного примера мы можем пропустить этот шаг, потому чтоRepaintOnDemand установлен вложный в оригиналеSO301000.aspx файл распространяется Acumatica.

Ваш ответ на вопрос