Acumatica ERPは#17.201.0043を構築するので、それが利用可能カスタマイズセレクター列ダイアログ(経由AR請求書カスタマーのルックアップのために定義された列のリストをカスタマイズすることも可能ですが、注意してくださいカスタマイズマネージャの[データクラス]セクションにあります)。詳細な手順については、
Acumatica ERP verでAR請求書のカスタマールックアップを変更するには、次のスクリーンショットをご覧ください。 6.130以前の手順に従ってください。 Customize Selector Columnsポップアップで生成されたPXCustomizeSelectorColumnsの定義は、Acumatica ERP内の大部分のセレクタとうまく機能します。基本的には、PXCustomizeSelectorColumnsは単にPXCacheの初期化時に列のカスタムセットとセレクタのために最初に定義された列を置き換えます。
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false)]
public class PXCustomizeSelectorColumns: PXEventSubscriberAttribute
{
private readonly Type[] _columns;
public PXCustomizeSelectorColumns(params Type[] columns)
{
_columns = columns;
}
public override void CacheAttached(PXCache cache)
{
cache.SetAltered(this.FieldName, true);
foreach (PXEventSubscriberAttribute attr in cache.GetAttributes(null, this.FieldName))
{
PXSelectorAttribute sel = attr as PXSelectorAttribute;
if (sel == null)
continue;
sel.SetFieldList(_columns);
sel.Headers = null;
}
}
}
だから何がPXCustomizeSelectorColumnsは、セレクタの最初に定義された列を置き換える失敗しないように属性を引き起こす可能性がありますか? PXCacheが初期化された後にPXDimensionSelectorAttributeまたはPXSelectorAttributeのインスタンスに対してSetColumns
メソッドが実行されるたびに、PXCustomizeSelectorColumnsがジョブを実行する機会はありません。そうは言って
[PXDBInt()]
[PXUIField(DisplayName = "Customer", Visibility = PXUIVisibility.Visible)]
[Serializable]
public class CustomerAttribute : AcctSubAttribute
{
...
public virtual void FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
{
if (this.AttributeLevel == PXAttributeLevel.Item || e.IsAltered)
{
PopulateFields(sender);
}
PXFieldSelecting handler = GetAttribute<PXDimensionSelectorAttribute>().FieldSelecting;
handler(sender, e);
}
protected virtual void PopulateFields(PXCache sender)
{
if (_FieldList == null)
{
_FieldList = new string[this._fields.Length];
_HeaderList = new string[this._fields.Length];
for (int i = 0; i < this._fields.Length; i++)
{
Type cacheType = BqlCommand.GetItemType(_fields[i]);
PXCache cache = sender.Graph.Caches[cacheType];
if (cacheType.IsAssignableFrom(typeof(BAccountR)) ||
_fields[i].Name == typeof(BAccountR.acctCD).Name ||
_fields[i].Name == typeof(BAccountR.acctName).Name)
{
_FieldList[i] = _fields[i].Name;
}
else
{
_FieldList[i] = cacheType.Name + "__" + _fields[i].Name;
}
_HeaderList[i] = PXUIFieldAttribute.GetDisplayName(cache, _fields[i].Name);
}
}
var attr = GetAttribute<PXDimensionSelectorAttribute>().GetAttribute<PXSelectorAttribute>();
attr.SetColumns(_FieldList, _HeaderList);
}
...
}
、ARInvoiceカスタマー・セレクタにカスタムフィールドを追加するために、一つはARInvoice.CustomerIDフィールドの宣言されたすべての属性を交換しCustomerActive属性の中にお客様セレクタの列を再定義する必要があります
[PXDefault()]
[CustomerActive(typeof(Search<BAccountR.bAccountID>),
new Type[]
{
typeof(BAccountR.acctCD),
typeof(BAccountR.acctName),
typeof(CustomerExt.usrDemoField),
typeof(Address.addressLine1),
typeof(Address.addressLine2),
typeof(Address.postalCode),
typeof(CustomerAttribute.Contact.phone1),
typeof(Address.city),
typeof(Address.countryID),
typeof(CustomerAttribute.Location.taxRegistrationID),
typeof(Customer.curyID),
typeof(CustomerAttribute.Contact.salutation),
typeof(Customer.customerClassID),
typeof(Customer.status)
},
Visibility = PXUIVisibility.SelectorVisible, DescriptionField = typeof(Customer.acctName), Filterable = true, TabOrder = 2)]
カスタマイズを公開した後、カスタムデモフィールドは最終的にARInvoiceカスタマー・セレクタに表示されます:
は、レイアウトエディタでARInvoiceカスタマー・セレクタ、オープン請求書とメモ画面内部のカスタムフィールドに対して検索を有効にし、顧客選択のGridProperties.FastFilterFieldsプロパティとしてUsrDemoFieldを入力するには、次の
これはうまくいきました。ありがとうございました。 – Krunal