Добрый день! Во всех карточках редактирования необходимо реализовать следующее: модально открывать окно выбора при клике по LookupDataControl'у. Пробовал несколько вариантов. Возможно ли такое?

Нравится

1 комментарий

Здравствуйте, Антон.

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

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

Здравствуйте, уважаемые пользователи 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!

Нравится

Поделиться

1 комментарий

А зачем так сложно? Не проще в событии OnPrepareSelectWindow сразу наложить фильтры на LookupDataControl.DataField.LookupDataset? Примеров реализации в стандартной конфигурации множество.

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