Как я могу установить пользовательское поле? - PullRequest
0 голосов
/ 21 марта 2019

Я добавил пользовательский флажок UsrContractCustomer в CRCase. Мой первый шаг - попытаться установить флажок, когда пользователь выбирает бизнес-счет (CustomerID).

Contract Customer Checkbox

Вот моя последняя попытка установить флажок.

  protected void CRCase_CustomerID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
  {
    var row = (CRCase)e.Row;
    if (row.CustomerID != null)
    {
      //CRCaseExt rowExt = PXCache<CRCase>.GetExtension<CRCaseExt>(row);
      CRCaseExt rowExt = row.GetExtension<CRCaseExt>();
      rowExt.UsrContractCustomer = true;
    }
  }

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Решение Брендана верное.В другом посте я получил значение, которое я хотел использовать для установки пользовательского поля.«Ложь» была заменена условием, которое устанавливает поле флажка.

sender.SetValueExt<CRCaseExt.usrContractCustomer>(crcase, false);

Спасибо за помощь и поддержку.

0 голосов
/ 21 марта 2019

В вашем поле в расширении dac вы должны использовать формулу для установки значения. Это будет проверять или снимать отметку с вашего поля, когда клиент введен или удален. Наличие логики на поле также устраняет необходимость записывать изменения уровня графа, такие как события.

[PXFormula(typeof(IIf<Where<CRCase.customerID, IsNull>, False, True>))]

Если вы хотите использовать событие как есть, я бы попробовал установить значение кэша, например:

cache.SetValueExt<CRCaseExt.usrContractCustomer>(e.Row, row.CustomerID != null);
...