Вопрос

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

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

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

Нравится

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

Если вам нужно, чтобы на детали постоянно был включен какой-то дополнительный фильтр и он не снимался при переходе от одной записи к другой записи в основном гриде раздела, то вам необходимо добавить передачу параметра DoNotDisableAllFilters=true в общюю функцию RefreshCommonDetail в нужном вам разделе. Например, для детали "Проекты" в разделе "Контрагенты":

RefreshCommonDetail(BaseWorkspace, wndProjectDetail, 	'ClientID', 'ClientID', null, null, null, null, null, null, true);

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

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

Зря я не написал для какой версии надо фильтровать данные в детали...
В моей версии (3.2.017) объявление для RefreshCommonDetail() (scr_WorkspaceUtils) следующее:

function RefreshCommonDetail(BaseWorkspace, WindowContainer, ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI, AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID) {...}

Т.е. очень нужный в моем случае 11 аргумент отсутствует))! Подскажите, пожалуйста, как можно отфильтровать данные на вкладке с поправкой на версию?

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

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

По сути следует добавить вместо

	} else {
		RefreshDetailDataByParentID(ParentID, Dataset, ChildFilterName);
	}	

строки

	} else {
		if (IsUndefined(DoNotDisableAllFilters)) {
			DoNotDisableAllFilters = true;
		}
		RefreshDetailDataByParentID(ParentID, Dataset, ChildFilterName,
			DoNotDisableAllFilters);
	}	

и добавить сам параметр в объявление функции:
Заменить

function RefreshCommonDetail(BaseWorkspace, WindowContainer, 
		ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI,
		AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID) {

на

function RefreshCommonDetail(BaseWorkspace, WindowContainer, 
		ParentItemFieldName, ChildFilterName, DatasetUSI, EditWindowUSI,
		AdditionalAttributes, AlwaysRefresh, SimpleRefresh, ParentItemID,
		DoNotDisableAllFilters) {

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

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