Я создал новую пользовательскую таблицу и новый экран (FormView) для ввода данных.Я создал общий запрос для перехода к новому экрану ввода.После того, как я ввел и сохранил первую запись в новой таблице с новым экраном ввода, на экране «Общий запрос» возникает ошибка приведения в один из столбцов.Это все должно быть очень быстро и легко, но я не могу обойти ошибку приведения.
Новая структура таблицы:
CREATE TABLE [dbo].[DPItemRebate](
[CompanyID] [int] NOT NULL,
[VendorID] [int] NOT NULL,
[CustomerID] [int] NOT NULL,
[InventoryID] [int] NOT NULL,
[RebateAmt] [decimal](19, 4) NOT NULL,
CONSTRAINT [PK_DPItemRebate] PRIMARY KEY CLUSTERED
([CompanyID] ASC, [VendorID] ASC, [CustomerID] ASC, [InventoryID] ASC)...
ЦАП:
[Serializable]
public class DPItemRebate : IBqlTable
{
#region VendorID
[PXDBInt(IsKey = true)]
[PXUIField(DisplayName = "Vendor")]
[Vendor(typeof(Search<BAccountR.bAccountID,
Where<BAccountR.type, Equal<BAccountType.companyType>,
Or<Vendor.type, NotEqual<BAccountType.employeeType>>>>),
Visibility = PXUIVisibility.SelectorVisible, CacheGlobal = true,
Filterable = true)]
[PXRestrictor(typeof(Where<Vendor.status, IsNull,
Or<Vendor.status, Equal<BAccount.status.active>,
Or<Vendor.status, Equal<BAccount.status.oneTime>>>>),
PX.Objects.AP.Messages.VendorIsInStatus, typeof(Vendor.status))]
public virtual int? VendorID { get; set; }
public abstract class vendorID : IBqlField { }
#endregion
#region CustomerID
[PXDBInt(IsKey = true)]
[PXUIField(DisplayName = "Customer")]
[CustomerActive(typeof(Search<BAccountR.bAccountID,
Where<Customer.type, IsNotNull,
Or<BAccountR.type, Equal<BAccountType.companyType>>>>),
Visibility = PXUIVisibility.SelectorVisible,
DescriptionField = typeof(Customer.acctName),
Filterable = true)]
public virtual int? CustomerID { get; set; }
public abstract class customerID : IBqlField { }
#endregion
#region InventoryID
[PXDBInt(IsKey = true)]
[PXUIField(DisplayName = "Inventory Item")]
[Inventory(typeof(Search<InventoryItem.inventoryID,
Where2<Match<Current<AccessInfo.userName>>,
And<InventoryItem.itemStatus, NotEqual<InventoryItemStatus.unknown>>>>),
typeof(InventoryItem.inventoryCD), typeof(InventoryItem.descr),
Filterable = true)]
public virtual int? InventoryID { get; set; }
public abstract class inventoryID : IBqlField { }
#endregion
#region RebateAmt
[PXDBDecimal()]
[PXUIField(DisplayName = "Rebate Amount")]
public virtual Decimal? RebateAmt { get; set; }
public abstract class rebateAmt : IBqlField { }
#endregion
}
Общий запрос:
Tables: DPItemRebate.DPItemRebate
Relations: <none>
Results:
Object: DPItemRebate
Data Fields: vendorID, vendorID_description, customerID, customerID_description, inventoryID, inventoryID_description, rebateAmt
Поля ЦАП являются поисковыми, за исключением RebateAmt.Я заимствовал атрибуты селектора из другого места в коде Acumatica DAC.Я добавил все поля на новую страницу ввода, ввел данные с новой страницы, затем открыл общий запрос, и он выдает ошибку:
"[InvalidCastException: Specified cast is not valid.]
System.Data.SqlClient.SqlBuffer.get_Int32() +65
PX.Data.PXDataRecord.GetInt32(Int32 i) +96
PX.Data.PXDBIntAttribute.RowSelecting(PXCache sender, PXRowSelectingEventArgs e) +210
PX.Data.PXCache.OnRowSelecting(Object item, PXDataRecord record, Int32& position, Boolean isReadOnly) +650"
и
"[PXException: Error: An error occurred during processing of the field Customer: Specified cast is not valid..]"
Когда я комментируюопределения определения DAC для Vendor, CustomerActive и Inventory;ошибка приведения исчезнет, так что, скорее всего, она связана;но мне это нужно для поиска в полевых условиях.Что я не так определяю?