Как обновить записи, не относящиеся к текущему графику?

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

У меня есть новая настраиваемая страница с новыми таблицами и связанными с ней графиками. Он отлично работает для сохранения этих пользовательских данных. У меня есть действие, которое требует обновления настраиваемого поля в INItemLotSerial (обратите внимание, что с ним не связан график). Обычно я создал экземпляр соответствующего графа и выполнил обновления, используя этот экземпляр.

Мне просто нужно сделать эквивалент обновления INItemLotSerial set usr1 = 'test', где InventoryID = x и LotSerialNbr = y

Я не уверен, как к этому подойти? Я думал, что могу выбрать запись в экземпляре DAC и обновить значения, но я не знаю, как передать это обратно в БД.


person mag    schedule 04.06.2015    source источник


Ответы (2)


  1. вам нужен вид. Допустим, вы создали такой вид:
    public PXSelect<PMTask> PMTasksSelect;

  2. вы каким-то образом читаете свой объект
    PMTask pm = PMTasksSelect.Select(Base).FirstOrDefault();

  3. Сообщите кешу Acumatica, что вы изменили объект:
    PMTasksSelect.Cache.SetValueExt(pm, "RateTableID", "A"); PMTasksSelect.Cache.SetStatus(task2, PXEntryStatus.Modified); PMTasksSelect.Cache.IsDirty = true;

  4. Наконец, вы можете сохранить свои изменения в db:

    PMTasksSelect.Cache.Update(taskExt);

person Yuriy Zaletskyy    schedule 05.06.2015
comment
Я попробую оба предложенных подхода - этот отличается от того, что я обычно делаю, поэтому я хотел бы посмотреть, смогу ли я заставить его работать. Спасибо! - person mag; 05.06.2015

Вам необходимо представление, относящееся к ЦАП, который вы хотите обновить. Итак, в этом случае вы можете определить представление для ЦАП, например

public PXSelect<INItemLotSerial, Where<INItemLotSerial.inventoryID, Equal<Current<YourField>>,
                                        And<INItemLotSerial.lotSerialNbr, Equal<Current<YourField>>>>> LotSerialInfo;

Таким образом, это представление будет кэшировать запись, которую вы хотите обновить. Теперь вы можете обновить запись в любое время, например

INItemLotSerial rec = LotSerialInfo.Current as INItemLotSerial;
//Get extension if you want
recExt.YourExtField = "something";
LotSerialInfo.Update(rec);

Постоянство вашего графика сохранит информацию, которую вы вставили / обновили / удалили.

Надеюсь, это даст вам идею и поможет. :)

person Sin    schedule 05.06.2015
comment
Спасибо, я начал этот путь и отговорил себя от него, я доведу его до конца и посмотрю, как оно пойдет - спасибо! - person mag; 05.06.2015