Коллеги, добрый день.
Вопрос: как происходит (должна происходить) инициализация нового раздела?
Почему возник вопрос:
Террасофт не запущен, в прошлом сеансе был открыт раздел "Документы", деталь "Контакты".
Запускаем Террасофт.
В детали в ActionMenuItem есть пункт "Контакт" (т.е. перейти к контакту).
Переходим к контакту. При этом профайлером отслеживаем, что происходит...
А происходит вот что:
-Достаются из БД сервисы раздела - все ОК
при этом вызываются методы (Call Stack):
ShowGroupWorkspace
ShowWorkspace
GotoWorkspace
GotoWorkspaceByReferenceInfo
GotoWorkspaceByActionMenuItem
GotoReference
Приведу как выглядит последний метод:
var WorkspaceWindow = PrepareWorkspace(GroupCode, WorkspaceUSI, AddHistory,
ActivateMainPage);
if (IsEmptyValue(IDDataFieldValue)
|| (Assigned(IDDataFieldValue) && IsEmptyArray(IDDataFieldValue))) {
return;
}
System.BeginProcessing();
try {
FilterWorkspace(WorkspaceWindow, IDDataFieldValue)
} finally {
System.EndProcessing();
}
Что происходит с запросами к базе:
1) PrepareWorkspace - выбирает ПРОИЗВОЛЬНЫЕ контакты (в соответствии с настройкой сортировки + настройкой числа строк), которые мне в общем то НЕ НУЖНЫ. (в моем случае 40 записей)
2) Происходит запрос с выборкой НУЖНОГО мне 1 контакта в FilterWorkspace(WorkspaceWindow, IDDataFieldValue)
Не кажется что это слегка не логично?
Возможно я что-то не доглядел и нужно копать глубже, в методы обработки событий Workspace
Но зачем вытаскивать из базы 40 "левых" записей перед тем, как показать 1 нужную... вот это мне непонятно...
Возможно это ошибка кастомизации, пожэтому хотелось бы узнать, как это происходит в коробке...
Спасибо!