Коллеги, добрый день.

Вопрос: как происходит (должна происходить) инициализация нового раздела?

Почему возник вопрос:
Террасофт не запущен, в прошлом сеансе был открыт раздел "Документы", деталь "Контакты".
Запускаем Террасофт.
В детали в 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 нужную... вот это мне непонятно...

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

Спасибо!

Нравится

4 комментария

Здравствуйте,
Так как "Перейти к" разделу и выделить запись, это дополнительная возможность, предварительно нужно проинициализировать раздел.
Одним из этапов начальной инициализации раздела является выбор данных реестра согласно фильтрам и сортировке, которые были предварительно настроены в разделе.
Так как в нашем случае клиент Террасофта не был запущен, пройдет инициализация, и выбор записей, после чего применится фильтр , по записи с грида c которой мы переходим.
Если бы раздел, в который мы переходим, уже открывался до этого, лишнего запроса не было бы.

Алексей,

Спасибо за ответ, возможно в этом поведении приложения есть смысл... но не тогда, когда мы знаем ID-ники записей, которые хотим выбрать.
Хорошо, попробуем поработать над этим.

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

Спасибо, Алексей,

Думаю что нет, я просто хотел узнать как это работает в коробочной версии.
Если возникнут сложности с переделкой стандартного поведения, то непременно обращусь!

Показать все комментарии