библиотека
быстрый фильтр
записи реестра
Скрипты
Разработка

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

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

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

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

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

Версия 3.2.

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

Нравится

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

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

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

У меня не работает фильтрация... Выводятся все записи.
Вот код: (вызывается по кнопке из грида документов)
[javascript]
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);

}
[/javascript]

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

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

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

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

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

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

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

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

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

А если в окно передавать уже отфильтрованный датасет? Применили фильтр, а потом
[javascript]
Window.ComponentsByName('dlData').Dataset = OurFilteredDataset;
[/javascript]

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

Вот так заработало. Олег, огромное спасибо за помощь.
[javascript]
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;

}
[/javascript]

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

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