Terrasoft 2.8

Фильтрация данных на вкладке

Здравствуйте!

Расскажите, пожалуйста, каким образом можно фильтровать данные в детали. Отображать данные связанные с записью в реестре удается, а вот включить дополнительные фильтры - никак.

Нравится

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

Если вам нужно, чтобы на детали постоянно был включен какой-то дополнительный фильтр и он не снимался при переходе от одной записи к другой записи в основном гриде раздела, то вам необходимо добавить передачу параметра DoNotDisableAllFilters=true в общюю функцию RefreshCommonDetail в нужном вам разделе. Например, для детали "Проекты" в разделе "Контрагенты":
[javascript]
RefreshCommonDetail(BaseWorkspace, wndProjectDetail, 'ClientID', 'ClientID', null, null, null, null, null, null, true);
[/javascript]

А для того, чтобы наложить фильтр дополнительный, вы можете сделать это в функции инициализации детали в нужном вам разделе.

Спасибо, Андрей!

Зря я не написал для какой версии надо фильтровать данные в детали...
В моей версии (3.2.017) объявление для RefreshCommonDetail() (scr_WorkspaceUtils) следующее:
[javascript]
function RefreshCommonDetail(BaseWorkspace, WindowContainer, ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI, AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID) {...}
[/javascript]
Т.е. очень нужный в моем случае 11 аргумент отсутствует))! Подскажите, пожалуйста, как можно отфильтровать данные на вкладке с поправкой на версию?

По сути основное отличие функции RefreshCommonDetail в 3.2.0.17 и 3.3.2 это добавление параметра DoNotDisableAllFilters.

В функции RefreshCommonDetail, вызванивается RefreshDetailDataByParentID с scr_DB, в которую также добавлен параметр DoNotDisableAllFilters, сама функция RefreshDetailDataByParentID не менялась с версии 3.2.0.17 и 3.3.2, поэтому вам следует сравнить RefreshCommonDetail и дописать необходимую логику.

По сути следует добавить вместо
[javascript]
} else {
RefreshDetailDataByParentID(ParentID, Dataset, ChildFilterName);
}

[/javascript]
строки
[javascript]
} else {
if (IsUndefined(DoNotDisableAllFilters)) {
DoNotDisableAllFilters = true;
}
RefreshDetailDataByParentID(ParentID, Dataset, ChildFilterName,
DoNotDisableAllFilters);
}
[/javascript]

и добавить сам параметр в объявление функции:
Заменить
[javascript]
function RefreshCommonDetail(BaseWorkspace, WindowContainer,
ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI,
AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID) {
[/javascript]

на
[javascript]
function RefreshCommonDetail(BaseWorkspace, WindowContainer,
ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI,
AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID,
DoNotDisableAllFilters) {
[/javascript]

На всякий случай выслал вам на почту скрипты scr_WorkspaceUtils и scr_DB

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