В этом случае вы хотите обновить значения из DA C CSAnswer информацией из DA C INItemCost . Насколько я понимаю, атрибут PXFormula [] может использоваться для обновления значений из той же записи DA C и / или для агрегированных вычислений.
Типичный пример : Сетка Цена за единицу и Количество используются для получения Расширенная цена (значения из той же записи DA C). И этот результат обновляется в итоговой сумме документа (агрегированной итоговой). Я не видел, чтобы он использовался в примере, подобном вашему.
Однако я смог обновить значение с помощью этого альтернативного подхода:
public class InventoryItemMaint_Extension : PXGraphExtension<InventoryItemMaint>
{
protected virtual void CSAnswers_Value_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
if (e.Row == null) return;
CSAnswers answer = (CSAnswers)e.Row;
CSAnswersExt answerExt = sender.GetExtension<CSAnswersExt>(answer);
if (answerExt != null)
{
INItemCost itemCost = PXSelect<INItemCost, Where<INItemCost.inventoryID, Equal<Required<InventoryItem.inventoryID>>>>.Select(this.Base, this.Base.Item.Current.InventoryID);
if (itemCost != null && itemCost.AvgCost != null)
{
answerExt.UsrPrice = itemCost.AvgCost * (decimal)365;
}
}
}
}
Результат
Дополнительные примечания
- Я использовал поле CSAnswers_Value для обновления данных, учитывая, что средняя стоимость является отключенным полем
- Этот лог c будет обновлять UsrPrice в новых записях и для определенных строк атрибута c, которые обновляются. Если вы хотите массово обновить существующие данные, вам придется использовать дополнительные логи c.