Здравствуйте, уважаемые пользователи Community!
Сегодня хочу показать Вам один из вариантов фильтрации базового окна выбора (wnd_SelectData). К примеру, у Вас в карточке редактирования есть LookupDataControl поле, при нажатии на которое происходит выбор данных из раздела "Контакты". Задача состоит в том, чтобы отфильтровать окно выбора контактов, по определенному полю.
Для этого, как один из вариантов, можно использовать атрибуты окна.
Алгоритм выполнения задачи будет следующим:
1. Запускаем TS Admin и открываем сервис карточки редактирования.
2. Выделяем нужное нам LookupDataControl поле, и переходим на закладку события - открываем (генерируем) событие OnPrepareSelectWindow.
3. В обработчике события определяем атрибут окна 'NeedsToBeFiltered':
function edtPrimaryContactOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
SelectWindow.Attributes('NeedsToBeFiltered') = true;
}
4. Открываем сервис скрипта scr_SelectData (Common \ Window Templates \ Select Data) и находим функцию - обработчик события function wnd_SelectDataExOnShow(Window)
5. В начале функции добавляем следующий код:
function wnd_SelectDataExOnShow(Window) {
if (Window.Attributes('NeedsToBeFiltered') == true)
{
var Dataset = dlData.Dataset;
//присваиваем значения параметру, на основе которого необходимо отфильтровать данные:
var Parameter = 'ParameterValue';
//включаем созданный ранее фильтр сравнения FilterName в сервисе sq_Contact
ApplyDatasetFilter(Dataset, 'FilterName', Parameter, true);
}
//далее идет текст функции
}
Как замечание: у Вас должен быть создан соответствующий фильтр и параметр в сервисе sq_Contact, причем название фильтра и параметра должны совпадать!
Приятной работы с Terrasoft!