В Фиксированных активах (FA303000) у меня есть настройка, которая содержит два пользовательских поля и одну пользовательскую таблицу, которая является дочерней таблицей, на которую ссылается столбец AssetID FixedAsset.
Теперь по какой-то причине мы должны удалить половину наших основных средств и снова вернуть их в Acumatica. Мы не создаем весь снимок, чтобы создать и восстановить процесс. Мы обрабатываем половину записей основных средств, удаляя их и возвращая обратно.
Сначала я думал, что мне просто нужно поместить эти записи во временную таблицу, используя (выберите * в duplicate_FixedAsset из FixedAsset.), Затем удалите те записи из FixedAsset и положить его обратно в FixedAsset.
Запись пользовательских полей из основных средств будет возвращена, и для моей пользовательской дочерней таблицы, которая связана через AssetID, я могу использовать AssetCD, чтобы получить AssetID и связать его обратно снова и все должно быть в порядке.
Но, я ошибся, когда вставка этой записи не появилась на странице Основные средства.
После проверки события Row_Deleting я обнаружил ниже фрагмент кода.
protected virtual void FixedAsset_RowDeleting(PXCache sender, PXRowDeletingEventArgs e)
{
FixedAsset asset = (FixedAsset)e.Row;
if (asset == null) return;
if (null != (FATran)PXSelect<FATran, Where<FATran.assetID, Equal<Current<FixedAsset.assetID>>, And<FATran.batchNbr, IsNotNull>>>.SelectSingleBound(this, new object[] { asset }))
{
throw new PXSetPropertyException(Messages.BalanceRecordCannotBeDeleted);
}
this.EnsureCachePersistence(typeof(FARegister));
this.EnsureCachePersistence(typeof(FABookHistory));
foreach (FARegister reg in PXSelectJoinGroupBy<FARegister,
LeftJoin<FATran, On<FARegister.refNbr, Equal<FATran.refNbr>>>,
Where<FATran.assetID, Equal<Required<FixedAsset.assetID>>>,
Aggregate<GroupBy<FARegister.refNbr>>>.Select(this, asset.AssetID))
{
this.Caches<FARegister>().Delete(reg);
}
foreach (FABookHistory hist in PXSelect<FABookHistory, Where<FABookHistory.assetID, Equal<Required<FixedAsset.assetID>>>>.Select(this, asset.AssetID))
{
this.Caches<FABookHistory>().Delete(hist);
}
}
Итак, это не тот простой процесс, о котором я думал в начале. Это показывает, что FARegister и FABookHistory также связаны между собой.
Итак, я был бы очень признателен, если бы знал, какие надлежащие шаги следует предпринять, чтобы убедиться, что не только я получаю Основные средства обратно, не нарушая никаких отношений с другими таблицами, но также и с правильной ссылкой на мои настраиваемые поля и таблицу.