Всем доброго времени суток.
Помогите, пожалуйста, уже всю голову сломала...
Каким образом можно программно "добраться" до быстрого фильтра??? (установить его и применить).
Или может быть существуют другие (более простые) решения моей задачи: при добавлении к записи раздела файлов из Библиотеки необходимо, чтобы в окне Библиотеки отображалась только конкретная запись (ID ее есть). ApplyDatasetFilter почему-то сбрасывается после отработки функции обработчика, и окно Библиотеки открывается со всеми записями.
Версия 3.2.
Заранее спасибо.
Нравится
Программно установить быстрый фильтр не получится.
Фильтрация при выборе значения из справочника.
У меня не работает фильтрация... Выводятся все записи.
Вот код: (вызывается по кнопке из грида документов)
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; }
(функция добавления шаблонов документов из библиотеки, в зависимости от типа документа)