Я получаю ошибки при попытке сохранить SO строки в коде настройки Acumatica.Я создал новый простой класс PXGraph, который определяет базовое представление SOLine для кэширования и сохранения.Это просто:
public PXSelect<SOLine> OrderLines;
В пользовательском коде он создает несколько SO-строк в моем кеше представления выше, выполняя вставку в кеш:
SOLine newOrderLineItem = lineGraph.OrderLines.Cache.Insert();
, а затем использует результирующую строку для установки егоценности до настойчивости.После добавления этих строк я стараюсь их сохранить.Я пробовал оба:
lineGraph.OrderLines.Cache.Persist(PXDBOperation.Insert);
и:
lineGraph.Actions.PressSave();
и оба дают ошибки.Первый говорит: «OrderDate» не может быть пустым ».Однако перед выполнением Persist все строки имеют значение OrderDate.StackTrace показывает, что он генерируется в событии RowPersisting.Так что когда-то между вызовом Persist () и событием RowPersisting по умолчанию (которое я не определил), для строки OrderDate строки было установлено значение null, но я понятия не имею, где.В последнем сообщается: «В записи« Перекрестная ссылка »возникла как минимум одна ошибка», а «« Поставщик / Клиент »не может быть пустым».Тем не менее, CustomerID и VendorID строки не являются пустыми, и оба действительны.
Что я могу сделать, чтобы устранить эти ошибки или сохранить строки по-другому, что на самом деле работает?
v17.209.0028
Стек вызовов Persist ():
at PX.Data.PXDBDefaultAttribute.RowPersisting(PXCache sender, PXRowPersistingEventArgs e)
at PX.Data.PXCache.OnRowPersisting(Object item, PXDBOperation operation)
at PX.Data.PXCache`1.PersistInserted(Object row)
at PX.Data.PXCache`1.Persist(PXDBOperation operation)
at Aktion.Acumatica.Customizations.EDI.EEdiDocInboundProcess.CreateOrderAndLineItems(EEdiStOrdHed doc, EEdiStOrdHed origDoc)
at Aktion.Acumatica.Customizations.EDI.EEdiDocInboundProcess.CreateSalesOrder(EEdiStOrdHed doc)
Обновление (3/16): Поэтому я просто поместил в SOLECLE подклассы моего собственного класса и переопределил установщик свойства OrderDate, чтобы перехватитьэто устанавливается в ноль.Это сработало, но я до сих пор не знаю, что пытается его обнулить, так как стек вызовов просто говорит мне, что это внешний код.В любом случае, теперь ошибка: «Операция не может быть пустой».Я предполагаю, что буду сохранять поля по умолчанию и переопределяющие сеттеры от ошибок до тех пор, пока у меня не закончатся поля - или терпение.