Убедитесь, что объединенные таблицы сопровождаются вставленной строкой

#acumatica

#acumatica

Вопрос:

Я часто нахожу, что у меня будет представление данных как таковое

 PXSelectJoin<A, LeftJoin<B, ON<A.foreignKey, Equal<B.pk>>>, LeftJoin<C, ON<B.foreignKey, Equal<C.pk>>>> View;
  

И я вставлю строку в резервный кэш представления:

 View.Insert(new A()
    {
        ForeignKey = KeyThatExistsInTheDatabase
    }
)
  

И строка A будет вставлена правильно, но объединенные таблицы B и C не будут отображаться в пользовательском интерфейсе, хотя я создал правильную ссылку в строке A при вставке. Пользовательский интерфейс будет отображать только данные из таблицы A, а остальные поля из объединенных таблиц будут равны нулю. Однако, пока я не нажму сохранить / вручную обновить эту строку в пользовательском интерфейсе, волшебным образом появятся данные.

Я пробовал:

 View.Select();
View.View.RequestRefresh();
  

но ни одно из них не решает мою проблему. Кто-нибудь надежно смог ввести все объединенные таблицы, когда была вставлена строка с правильным внешним ключом?

Ответ №1:

Вы можете получать записи данных в одном из двух режимов: объединенный или только для чтения. Если вы хотите просмотреть несохраненные изменения из базы данных вместе с измененными записями в кэше, выберите PXSelect<>

Имейте в виду, что платформа объединяет записи данных только для основного ЦАП представления данных.
По этой причине вы не увидите новую запись в объединенных таблицах, пока изменения не будут сохранены в базе данных (Perist или кнопка Сохранить).

Возможный путь к вашей цели — переопределить ваш dataview как PXSelectReadonly. Но в этом случае вы должны реализовать свои собственные методы обработки записей.

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