Поиск…


Вступление

В этом разделе вы рассмотрите два подхода к условному скрытию вкладок на экранах ввода данных в Acumatica.

Свойство VisibleExp для управления PXTab в Aspx

Свойство VisibleExp является булевым выражением, которое определяет, видима ли данная вкладка (когда логическое выражение TRUE) или скрыто. Вы указываете свойство VisibleExp для элементов управления PXTab на странице Aspx:

<px:PXTabItem Text="Credit Card Processing Info" BindingContext="form" 
    VisibleExp="DataControls[&quot;chkIsCCPayment&quot;].Value = 1">

VisibleExp состоит из входных элементов управления , размещенных в контейнере с идентификатором , указанным в свойстве BindingContext контроля PXTab. Вы не можете использовать элементы управления ввода из нескольких контейнеров. Доступ к определенному управлению ввода осуществляется через словарь DataControls по его идентификатору, а не по имени поля ЦАП.

Обычно свойство VisibleExp используется для составления довольно простых булевых выражений с жестко заданными значениями управления вводом, которые вряд ли будут меняться со временем. Например, на экране Sales Orders (SO.30.10.00) используется следующее выражение, чтобы скрыть вкладку « Настройки платежа » для заказов типа Transfer :

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

Чтобы скрыть вкладку «Действия» для «Ведение с новым статусом»

Чтобы скрыть вкладку из мероприятий с экрана Leads (CR.30.10.00), установите BindingContext свойство для формирования (верхнего уровня свинца Основная форма имеет вид ID) и определить VisibleExp вернуть FALSE , если ведущий статус Open (Status выпадающий имеет edStatus ID) :

<px:PXTabItem Text="Activities" LoadOnDemand="True" 
    BindingContext="form" VisibleExp="DataControls[&quot;edStatus&quot;].Value != H">

введите описание изображения здесь

Разрешить выбор свойств в представлениях данных

В отличие от свойства VisibleExp , определенного в Aspx, вы управляете свойством AllowSelect для представления данных, хотя код расширения BLC или BLC. Свойство AllowSelect позволяет использовать более сложные булевы выражения (по сравнению с свойством VisibleExp ) и, при необходимости, извлекать дополнительную информацию из базы данных или других источников, недоступных на веб-странице.

Ниже приведены 3 наиболее распространенных сценария работы с свойством AllowSelect :

  • RowSelected обработчик события для лица верхнего уровня, чтобы скрыть вкладку « Приложения » для счетов-фактур « Денежные продажи и наличные». Типы возврата :

     public class SOInvoiceEntry : ARInvoiceEntry
     {
         ...
         protected override void ARInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
         {
             ...
    
             Adjustments.AllowSelect =
                 doc.DocType != ARDocType.CashSale &&
                 doc.DocType != ARDocType.CashReturn;
         }
         ...
     }
    
  • BLC, чтобы отобразить вкладку « Информация о пополнении запасов » на экране « Сведения о складе», только если активированы функции « Пополнение запасов и инвентаризации» :

     public class INItemSiteMaint : PXGraph<INItemSiteMaint, INItemSite>
     {
         ...
         public INItemSiteMaint()
         {
             ...        
    
             bool enableSubItemReplenishment = PXAccess.FeatureInstalled<FeaturesSet.replenishment>() && PXAccess.FeatureInstalled<FeaturesSet.subItem>();
             subitemrecords.AllowSelect = enableSubItemReplenishment;
         }
         ...
     }
    
  • Обработчик RowSelected для сущности верхнего уровня, чтобы скрыть вкладку « История издержек », если текущий актив не является амортизируемым, а « Амортизация» «История просмотров» установлена ​​в « Бок о бок» в настройках основных средств:

     public class AssetMaint : PXGraph<AssetMaint, FixedAsset>
     {
         ...
         protected virtual void FixedAsset_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
         {
             ...
    
             AssetHistory.AllowSelect = asset.Depreciable == true && fasetup.Current.DeprHistoryView == FASetup.deprHistoryView.SideBySide;
         }
         ...
     }
    

Каждый раз, когда свойство AllowSelect используется для условного изменения видимости вкладок, хотя код расширения BLC или BLC, вы должны установить для свойства RepaintOnDemand значение false в Aspx для соответствующего контейнера PXTab:

<px:PXTabItem Text="Depreciation History" RepaintOnDemand="false">

По умолчанию свойство RepaintOnDemand является истинным . Это свойство управляет инициализацией контейнера PXTab: если установлено значение true , PXTab не будет инициализироваться до тех пор, пока он не будет выбран пользователем. Очевидно, вам нужно, чтобы RepaintOnDemand установил значение false, чтобы гарантировать правильное поведение данного контейнера PXTab, несмотря на то, был ли он выбран или нет.

Чтобы скрыть вкладку «Перекрестная ссылка» для предметов запаса, которые нельзя продать

Чтобы скрыть вкладку « Перекрестные ссылки » на экране « Элементы запасов» (IN.20.25.00) для элементов с статусом « Нет продаж» , выполните следующие действия:

  1. реализовать InventoryItem_RowSelected обработчик в расширении BLC InventoryItemMaint, чтобы установить для свойства AllowSelect значение false для itemxrefrecords данных itemxrefrecords если для параметра Item Status установлено значение No Sales :

    public class InventoryItemMaintExt : PXGraphExtension<InventoryItemMaint>
    {
        protected void InventoryItem_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            InventoryItem item = (InventoryItem)e.Row;
            if (item == null) return;
    
            Base.itemxrefrecords.AllowSelect = (item.ItemStatus != InventoryItemStatus.NoSales);
        }
    }
    
  2. в диспетчере настройки установите для свойства RepaintOnDemand значение false для вкладки Cross-Reference и опубликуйте настройку: введите описание изображения здесь

После того, как вы выполнили 2 простых шага выше, вкладка « Перекрестная ссылка » не должна быть доступна для элементов «Акции» без статуса « Продажи» :

введите описание изображения здесь

Чтобы скрыть вкладку «Атрибуты» для неактивных позиций на складе

Чтобы условно скрыть вкладку ** Атрибуты ** на экране « Элементы запасов» (IN.20.25.00), действуйте следующим образом:

  1. реализовать обработчик InventoryItem_RowSelected в расширении InventoryItemMaint BLC , чтобы установить AllowSelect свойство ложным для Answers и Category представлений данных , если Элемент Статус был установлен на Неактивный. Также обратите внимание Visible набор свойств к ложному для PXUIFieldAttribute добавляемого на InventoryItem.ImageUrl поле с помощью обработчика CacheAttached:

    public class InventoryItemMaintExt : PXGraphExtension<InventoryItemMaint>
    {
        protected void InventoryItem_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            InventoryItem item = (InventoryItem)e.Row;
            if (item == null) return;
    
            bool showAttributesTab = item.ItemStatus != InventoryItemStatus.Inactive;
            Base.Answers.AllowSelect = Base.Category.AllowSelect = showAttributesTab;
            PXUIFieldAttribute.SetVisible<InventoryItem.imageUrl>(sender, item, showAttributesTab);
        }
    
        [PXMergeAttributes(Method = MergeMethod.Append)]
        [PXUIField(DisplayName = "Image")]
        protected void InventoryItem_ImageURL_CacheAttached(PXCache sender)
        { }
    }
    
  2. в диспетчере настройки установите для свойства RepaintOnDemand значение false для вкладки « Атрибуты » и опубликуйте настройку: введите описание изображения здесь

После того, как вы выполнили 2 шага выше, вкладка « Атрибуты » не должна быть доступна для элементов запасов с неактивным статусом:

введите описание изображения здесь



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow