Как известно системный журнал (журнал ошибок) складских (и не только) журналов хранится в таблице JournalError и взаимодействие с ним происходит через класс JournalErrorList и его наследников JournalErrorTransList и JournalErrorVoucherList.
В этих классах инициализация происходит в методе initDb, суть которой - заполнение кэша таблицы JournalError соответствующего журнала в виде RecordSortedList.
Вопрос собственно в реализации этого метода. Возьмём для примера JournalErrorTransList (в JournalErrorVoucherList тоже самое).
X++:
void initDb()
{
if (xGlobal::clientKind() == ClientType::Client)
{
this.unPack(JournalErrorTransList::packInitDb(journalTableData.journalTable()));
this.selectDbCalled(true);
}
else
this.selectDb(journalTableData.journalTable(),false);
}
Для чего необходимо при вызове метода на клиентской стороне выполнять выборку из таблицы на серверной стороне и упаковывать её в контейнер (это делает статический метод packInitDb), а затем заполнять кэш уже из контейнера?
Выигрыш в скорости? Да неоткуда ему вроде взяться, наоборот лишние шаги.
Уменьшить объем данных, передаваемых между клиентом и сервером? Так всё равно контейнер передастся.
Необходимость создания какого-либо объекта только на серверной стороне? Нет - итоговый результат одинаков.
Аксапта 3 СП4. Что там в более новых версиях возможности посмотреть у меня нет.