Как мы можем добавить универсальный поиск для новых пользовательских экранов в Acumatica - PullRequest
2 голосов
/ 20 апреля 2020

Требование пользователя - добавить универсальный поиск для нового экрана, добавлен наш новый экран в разделе Inventory Module, а также новый экран - это не экран ввода, это просто экран просмотра пользователем, поэтому в DA C для поля id заметки мы имеем добавлен атрибут поиска, но он не работает.

Может кто-нибудь помочь мне с примером кода или исправить меня, где я делаю неправильно. Также дайте мне знать, можно ли добавить атрибут поиска для новых экранов или нет в Acumatica?

Заранее спасибо.

 #region Noteid
        public new abstract class noteid : PX.Data.BQL.BqlGuid.Field<noteid> { }
        protected Guid? _Noteid;
        [PXSearchable(PX.Objects.SM.SearchCategory.All , "{0}", new Type[] { typeof(KWLotSerialDetails.lotSerialNbr) },
            new Type[] { typeof(KWLotSerialDetails.lotSerialNbr), typeof(KWLotSerialDetails.inventoryID)},
            NumberFields = new Type[] { typeof(KWLotSerialDetails.lotSerialNbr) },
              Line1Format = "{0}{1}", Line1Fields = new Type[] { typeof(KWLotSerialDetails.lotSerialNbr), typeof(KWLotSerialDetails.inventoryID)},
              Line2Format = "{1}{2}", Line2Fields = new Type[] { typeof(KWLotSerialDetails.lotSerialNbr), typeof(KWLotSerialDetails.inventoryID) })]

        public virtual Guid? Noteid
        {
            get
            {
                return this._Noteid;
            }
            set
            {
                this._Noteid = value;
            }
        }
        #endregion

1 Ответ

0 голосов
/ 27 апреля 2020

Вы можете добавить универсальный поиск в пользовательские таблицы. Поиск добавляется в DA C, а не на экран, поэтому не имеет значения использовать его на «экране просмотра пользователя». Когда полнотекстовый индекс перестраивается, ваше поле NoteID обрабатывается в таблице SearchIndex.

Я могу ошибаться, но я также думаю, что вам нужно преобразовать поле Noteid в NoteID / noteID, чтобы это работало правильно , C# чувствителен к регистру, и FullIndexRebuild.cs содержит: entity.GetNestedType ("noteID") ... поэтому я думаю, что он не находит ваше поле Noteid / noteid из-за этого.

Один из моих пользовательских PXSearchable поля NoteID:

#region NoteID
[PXNote]
[PXSearchable(PX.Objects.SM.SearchCategory.IN, "{0}",
    new Type[] { typeof(SSINItemManufacturer.manufacturerItem) },
    new Type[] { typeof(SSINItemManufacturer.manufacturerItem) },
    NumberFields = new Type[] { typeof(SSINItemManufacturer.manufacturerItem) },
    Line1Format = "{0}", Line1Fields = new Type[] { typeof(SSINItemManufacturer.manufacturerItem) },
    Line2Format = "{0}", Line2Fields = new Type[] { typeof(SSINItemManufacturer.manufacturerItem) },
    WhereConstraint = typeof(Where<Current<SSINItemManufacturer.isActive>, NotEqual<False>>),
    MatchWithJoin = typeof(InnerJoin<InventoryItem, On<InventoryItem.inventoryID, Equal<SSINItemManufacturer.inventoryID>>>),
    SelectForFastIndexing = typeof(Select2<SSINItemManufacturer, InnerJoin<InventoryItem, On<SSINItemManufacturer.inventoryID, Equal<InventoryItem.inventoryID>>>>)
    )]
public virtual Guid? NoteID { get; set; }
public abstract class noteID : PX.Data.BQL.BqlGuid.Field<noteID> { }
#endregion

Также убедитесь, что ваш DA C «известен» на экране «Перестроить полнотекстовый объект». Проверьте экран SM209500, чтобы убедиться, что ваш DA C указан в списке, и, если это так, попробуйте перестроить полнотекстовый индекс на нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...