2015-05-25 3 views
1

У меня проблема в Acumatica. Я создал триггер в таблице InventoryItem, чтобы вставить вставленные записи в мою настроенную таблицу.Refresh Stock Items Экран

Проблема заключается в том, что всякий раз, когда я пытаюсь сохранить новые запасы в Acumatica, она не отражает правильные сохраненные в прошлом данные запаса. Неверные данные на вкладке общих настроек. Мне нужно закрыть экран и снова открыть его, чтобы увидеть правильные данные.

Может кто-нибудь, пожалуйста, помогите мне в отношении того, как я могу получить обновленный экран позиции сразу после сохранения. Или есть ли ошибка в Acumatica всякий раз, когда есть настраиваемый триггер?

ответ

1

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

  • Override сохраняется
  • вызова базовых действий
  • создать новый экземпляр графа
  • поиска для т он запись, чтобы установить, как ток кэша заголовка
  • певда перенаправления требуется исключение

поэтому код может выглядеть, как показано ниже [Может потребоваться модификация]

[PXOverride] 
public void Persist(Action persit) 
{ 
persit();// this will call base Persist(); 
InventoryItemMaint grp = PXGraph.CreateInstance<InventoryItemMaint>(); 
InventoryItem inv = PXSelect<InventoryItem, Where<InventoryItem.inventoryCD, Equal<Required<InventoryItem.inventoryCD>>>>.Select(grp, this.Base.Item.Current.InventoryCD.Trim()); 
if (inv != null && inv.InventoryID.HasValue) 
{ 
    grp.Item.Current = grp.Item.Search<InventoryItem.inventoryID>(inv.InventoryID); 
    throw new PXRedirectRequiredException(grp, "Reloading Item"); 
} 
} 

Если вы не хотите, чтобы весь экран чтобы быть обновленным, вместо того, чтобы бросать исключение, вы можете просто обновить требуемый метод просмотра, предложенный другим пользователем (Юра Залецкий) на этом посту.

+1

спасибо, это решило мою проблему. –

0

Вы можете попробовать выбрать метод. Например: это настройка представления данных в исходном коде Acumatica элемент (вы можете использовать страницу исследовать исходный код)

[PXViewName(Messages.InventoryItem)] 
public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>> ItemSettings; 

Через настройки (я предполагаю, что вы используете AEF), добавьте выберите метод для этого представления данных

[PXViewName(Messages.InventoryItem)] 
public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>> ItemSettings; 

protected virtual IEnumerable itemSettings() 
{ 
    return new PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>>(Base).Select(); 
} 

Иногда я использую процедуру хранения sql для вставки данных в таблицу, метод select полезен для перезагрузки экрана с вставленными данными.

+0

Привет HDanh, им получать ниже ошибки при публикации с помощью кода «ошибка:. Не может неявно преобразовать тип„PX.Data.PXSelect >>>“до„System.Collections.IEnumerable“Явное преобразование существует (в вам не хватает роли?) в файле: Код # InventoryItemMaint (36 " –

+0

Я успешно опубликовал проект, но, к сожалению, он не решает проблему, мне все равно нужно перезагрузить страницу, чтобы просмотреть сохраненную позицию запаса. –

+0

Хм, в основном Acumatica рекомендует работать с кешем. Я попробую другой способ, основанный на вашем триггере, но вы можете попробовать это альтернативное решение: – HDanh

1

Скажем, ваша сетка привязана для просмотра PayRollsDetails. Затем вы можете использовать следующий код, чтобы обновить сетку:

PayRollsDetails.View.Cache.Clear(); 
PayRollsDetails.View.Cache.ClearQueryCache();