Версия 19.110.0013
Я создал таблицу расширений внутреннего соединения для APInvoice. Это вызвало проблему с потоком быстрых проверок. В частности, создание быстрой проверки создает запись в таблице APInvoice, но не соответствующую запись в таблице расширений.
Мой DA C
using PX.Data;
using PX.Objects.AP;
namespace MyProject.DAC
{
[PXTable(IsOptional = false)]
[Serializable()]
public class ApInvoiceExtension : PXCacheExtension<APInvoice>
{
#region MyCustomFlag
public abstract class myCustomFlag : IBqlField { }
[PXDBBool()]
[PXUIField(DisplayName = "Custom Flag")]
public virtual bool? MyCustomFlag { get; set; }
#endregion
}
}
Моя таблица
CREATE TABLE [dbo].[ApInvoiceExtension](
[CompanyID] [int] NOT NULL,
[DocType] [char](3) NOT NULL,
[RefNbr] [nvarchar](15) NOT NULL,
[MyCustomFlag] [bit] NULL,
CONSTRAINT [ApInvoiceExtension_PK] PRIMARY KEY CLUSTERED
(
[CompanyID] ASC,
[DocType] ASC,
[RefNbr] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ApInvoiceExtension] ADD DEFAULT ((0)) FOR [CompanyID]
GO
Я вполне уверен, что это связано с определением APQuickCheck, которое является DA C со следующим атрибутом
[PXProjection(typeof(Select2<APRegister,
InnerJoin<APInvoice, On<APInvoice.docType, Equal<APRegister.docType>,
And<APInvoice.refNbr, Equal<APRegister.refNbr>>>,
InnerJoin<APPayment, On<APPayment.docType, Equal<APRegister.docType>,
And<APPayment.refNbr, Equal<APRegister.refNbr>>>>>,
Where<APRegister.docType, Equal<APDocType.quickCheck>,
Or<APRegister.docType, Equal<APDocType.voidQuickCheck>>>>), Persistent = true)]
Сохранение в соответствии с этим прогнозом игнорирует требуемые записи расширения. Я задавался вопросом, была ли проблема, потому что APInvoice, на который ссылаются здесь, был из пространства имен PX.Objects.AP.Standalone
вместо пространства имен PX.Objects.AP
, которое я расширил, поэтому я попытался обойти это, создав расширение DA C для этого пространства имен также , Мое расширение выглядело так:
using PX.Data;
using PX.Objects.AP.Standalone;
namespace MyProject.DAC.Standalone
{
[PXTable(IsOptional = false)]
[Serializable()]
public class ApInvoiceExtension : PXCacheExtension<APInvoice>
{
#region MyCustomFlag
public abstract class myCustomFlag : IBqlField { }
[PXDBBool()]
[PXUIField(DisplayName = "Custom Flag")]
public virtual bool? MyCustomFlag { get; set; }
#endregion
}
}
Это дополнение не изменило поведение, Quick Checks по-прежнему создавал запись в APInvoice, но не в моей таблице APInvoiceExtension.