Как использовать встроенные атрибуты с пользовательскими ЦАПами - PullRequest
0 голосов
/ 26 ноября 2018

При попытке удалить атрибут из пользовательского класса DAC появляется ошибка «Не удалось найти тип объекта».Я использую ЦАП в графике, который используется страницей, которая позволяет пользователю добавлять атрибуты в пользовательский ЦАП.Страница, которую я сделал, похожа на страницу классов Contact и Lead - CR207000.

Вот DAC, которому я назначаю атрибуты.

[Serializable]
public class MyCustomGroup : IBqlTable
{
    #region CustomGroupID
    [PXDBIdentity(IsKey = true)]
    [PXUIField(DisplayName = "Custom Group")]
    [PXSelector(typeof(MyCustomGroup.CustomGroupID),
            typeof(MyCustomGroup.descr),
            typeof(MyCustomGroup.capacity),
            DescriptionField = typeof(MyCustomGroup.descr))]
    public virtual int? CustomGroupID { get; set; }
    public abstract class CustomGroupID : IBqlField { }
    #endregion

    #region NoteID
    [PXSequentialNote(new Type[0], SuppressActivitiesCount = true)]
    [PXUIField(DisplayName = "Noteid")]
    public virtual Guid? NoteID { get; set; }
    public abstract class noteID : IBqlField { }
    #endregion

    #region Descr
    [PXDBString(60, IsUnicode = true, InputMask = "")]
    [PXUIField(DisplayName = "Descr")]
    [PXDefault("<New>")]
    public virtual string Descr { get; set; }
    public abstract class descr : IBqlField { }
    #endregion

    #region Capacity
    [PXDBInt()]
    [PXUIField(DisplayName = "Capacity")]
    public virtual int? Capacity { get; set; }
    public abstract class capacity : IBqlField { }
    #endregion

    #region Tstamp
    [PXDBTimestamp()]
    [PXUIField(DisplayName = "Tstamp")]
    public virtual byte[] Tstamp { get; set; }
    public abstract class tstamp : IBqlField { }
    #endregion

    #region CreatedByID
    [PXDBCreatedByID()]
    public virtual Guid? CreatedByID { get; set; }
    public abstract class createdByID : IBqlField { }
    #endregion

    #region CreatedByScreenID
    [PXDBCreatedByScreenID()]
    public virtual string CreatedByScreenID { get; set; }
    public abstract class createdByScreenID : IBqlField { }
    #endregion

    #region CreatedDateTime
    [PXDBCreatedDateTimeUtc]
    [PXUIField(DisplayName = "Created Date Time")]
    public virtual DateTime? CreatedDateTime { get; set; }
    public abstract class createdDateTime : IBqlField { }
    #endregion

    #region LastModifiedByID
    [PXDBLastModifiedByID()]
    public virtual Guid? LastModifiedByID { get; set; }
    public abstract class lastModifiedByID : IBqlField { }
    #endregion

    #region LastModifiedByScreenID
    [PXDBLastModifiedByScreenID()]
    public virtual string LastModifiedByScreenID { get; set; }
    public abstract class lastModifiedByScreenID : IBqlField { }
    #endregion

    #region LastModifiedDateTime
    [PXDBLastModifiedDateTimeUtc]
    public virtual DateTime? LastModifiedDateTime { get; set; }
    public abstract class lastModifiedDateTime : IBqlField { }
    #endregion
}

Я использую это вкласс Graph для заполнения сетки атрибутов на моей странице:

public CSAttributeGroupList<MyCustomGroup, MyCustomGroupLinker> AttGrpMapping;

Вот второй пользовательский ЦАП, который я использую в CSAttributeGroupList выше:

[Serializable]
public class MyCustomGroupLinker : IBqlTable
{
#region LinkerID
[PXDBIdentity(IsKey = true)]
[PXUIField(DisplayName = "Linker ID")]
public virtual int? LinkerID { get; set; }
public abstract class linkerID : IBqlField { }
#endregion

#region GroupNoteID
[PXDBGuid()]
[PXUIField(DisplayName = "Custom Group")]
    [PXSelector(typeof(MyCustomGroup.noteID),
        SubstituteKey =typeof(MyCustomGroup.descr))]
public virtual Guid? GroupNoteID { get; set; }
public abstract class groupNoteID : IBqlField { }
#endregion

#region RelatedNoteID
[PXDBGuid()]
[PXUIField(DisplayName = "Related Note ID")]
public virtual Guid? RelatedNoteID { get; set; }
public abstract class relatedNoteID : IBqlField { }
#endregion
}

Спасибо за вашу помощь!

...