Фильтрация записей в гриде

Всем доброго времени суток.

Помогите, пожалуйста, уже всю голову сломала...

Каким образом можно программно "добраться" до быстрого фильтра??? (установить его и применить).

Или может быть существуют другие (более простые) решения моей задачи: при добавлении к записи раздела файлов из Библиотеки необходимо, чтобы в окне Библиотеки отображалась только конкретная запись (ID ее есть). ApplyDatasetFilter почему-то сбрасывается после отработки функции обработчика, и окно Библиотеки открывается со всеми записями.

Версия 3.2.

Заранее спасибо.

Нравится

9 комментариев

Программно установить быстрый фильтр не получится.

Фильтрация при выборе значения из справочника.

У меня не работает фильтрация... Выводятся все записи.
Вот код: (вызывается по кнопке из грида документов)

function btnAddShablonOnClick(Control) {
	var WorkspaceWindow = GetAttribute(Self, 'WorkspaceWindow');
	var DetailPages = WorkspaceWindow.ComponentsByName('pcDetails');
	var FilesPage = WorkspaceWindow.ComponentsByName('pgFilesDetail');
	var FilesDetailWindow = 
		WorkspaceWindow.ComponentsByName('wndFilesDetail').Window;
	var FileDataWindow = FilesDetailWindow.ComponentsbyName('wndFileData').Window;  
 
	var SelWin = ShowSelectWorkspaceWindow('wnd_LibraryWorkspace', FileDataWindow);
	NotVisibleDetails(SelWin.ComponentsByName('wnddata').Window.
		ComponentsbyName('pcDetails'));
	SelWin.ComponentsByName('wnddata').Window.ComponentsbyName('pcDetails').
		ItemsByName('pgFilesDetail').IsVisible = true;
 
	var DocTypeID = BaseGridArea.GridDataset.DataFields.
		ItemsByName('DocumentTypeID').Value;
	var LibID = GetDatasetFieldValueByID('ds_DocumentType', DocTypeID,
			'ShablonGroupID');
	SetAttribute(SelWin.ComponentsByName('wnddata').Window.
		ComponentsByName('wndGridData').Window, 'ParentItemID', LibID);
	var DataSet = SelWin.ComponentsByName('wnddata').Window.
		ComponentsByName('wndGridData').Window.ComponentsByName('dlData').Dataset;
 
	var IsEnabled = !IsEmptyValue(LibID);
	ApplyDatasetFilter(DataSet, 'ID', LibID, IsEnabled);
 
}

Была в отпуске, не могла об этом думать )

После применения фильтра датасет нужно переоткрывать.

Пробовала. Все равно не фильтруется.

....
DataSet.Close();
DataSet.Open();
}

Попробуйте перед применением фильтра закрывать датасет, а после - открывать. Например, так:

if (DataSet.State != dstInactive) {
    DataSet.Close();
}
ApplyDatasetFilter(DataSet, 'ID', LibID, IsEnabled);
DataSet.Open();

Вообще я правильно понимаю, что Вы сначала открываете окно (с помощью функции ShowSelectWorkspaceWindow), а потом накладываете фильтр на датасет? Попробуйте наоборот: сначала применить фильтр, а потом открывать окно.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Закрывать - применять фильтр - открывать - это я тоже пробовала, не применяется...
А с применением фильтра до открытия окна сложность заключается в том, как взять нужный датасет и передать его... тк заполнение всех компонентов окна выполняется совсем в других местах (скриптах). Но я как раз думаю над этим. Спасибо.

А если в окно передавать уже отфильтрованный датасет? Применили фильтр, а потом

Window.ComponentsByName('dlData').Dataset = OurFilteredDataset;

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Вот так заработало. Олег, огромное спасибо за помощь.

function btnAddShablonOnClick(Control) {
	var WorkspaceWindow = GetAttribute(Self, 'WorkspaceWindow');
	var DetailPages = WorkspaceWindow.ComponentsByName('pcDetails');
	var FilesPage = WorkspaceWindow.ComponentsByName('pgFilesDetail');
	var FilesDetailWindow = 
		WorkspaceWindow.ComponentsByName('wndFilesDetail').Window;
	var FileDataWindow = FilesDetailWindow.ComponentsbyName('wndFileData').Window; 
 
	var DocTypeID = BaseGridArea.GridDataset.DataFields.
		ItemsByName('DocumentTypeID').Value;
	var LibID = GetDatasetFieldValueByID('ds_DocumentType', DocTypeID,
			'ShablonGroupID');
	var IsEnabled = !IsEmptyValue(LibID);
 
	var LibDataset = Services.GetNewItemByUSI('ds_Library');
	ApplyDatasetIDFilter(LibDataset, LibID, IsEnabled);
	var SelWin = Services.GetNewItemByUSI('wnd_SelectWorkspaceData');
	SetAttribute(SelWin, 'NotifyObject', FileDataWindow);
	SetAttribute(SelWin, 'WorkspaceUSI', 'wnd_LibraryWorkspace');
	System.BeginProcessing();
	try {
		SelWin.Prepare();
		SelWin.ComponentsByName('wnddata').Window.ComponentsByName('wndGridData').
			Window.ComponentsByName('dlData').Dataset = LibDataset;
		SelWin.Show();
		LibDataset.Open();
	} finally {
		System.EndProcessing();
	}
 
	NotVisibleDetails(SelWin.ComponentsByName('wnddata').Window.
		ComponentsbyName('pcDetails'));
	SelWin.ComponentsByName('wnddata').Window.ComponentsbyName('pcDetails').
		ItemsByName('pgFilesDetail').IsVisible = true;
 
}

(функция добавления шаблонов документов из библиотеки, в зависимости от типа документа)

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