Не понимаю, что неправильно?

Вот два сервиса, датасет прикручен к LookupDataControl, LookupDataControl.DataFieldName = 'ID'. При выполнении такого кода:

ApplyDatasetFilter(LookupDataControl.DatasetLink.Dataset, 'ParentSiteID', ParentSiteID, true);
LookupDataControl.DatasetLink.Dataset.Open();

в окно поиска этого LookupDataControl-а вываливаются все контрагенты из таблицы tbl_Account. Профайлером смотрел - запрос выполняется правильный. LookupDataControl.DatasetLink.Dataset.RecordsCount - имеет правильное значение. Почему же в окне поиска грузятся все контрагенты? Что я делаю не так?

Нравится

4 комментария

да, забыл - код, который я представил, выполняется в событии изменения данных в другом датасете.

Действительно странно, вроде все по логике.
Напишите, пожалуйста, обращение в службу поддержки для более детального рассмотрения проблемы.

Стоян Виталий, Terrasoft Support Team

"SSV" написал:да, забыл - код, который я представил, выполняется в событии изменения данных в другом датасете.

можно чуть поподробнее? Просто код, который Вы предоставили обычно выполняют на OnPrepareSelectWindow и без открытия датасета.

"Глова Сергей" написал:можно чуть поподробнее? Просто код, который Вы предоставили обычно выполняют на OnPrepareSelectWindow и без открытия датасета.

я мало что понимаю в Террасофт-е, возможно Вы и правы... меня до сих пор удивляет, что после изменения условия датасет не нужно переоткрывать, хотя подозреваю (ибо руководства для программистов наверное мы не дождемся), что ядро системы как-то само реагирует на эти изменения... ну да ладно...
в данном случае мне просто нужно было чтобы в LookupDataControl загружались данные из таблицы контрагентов, но не все, а отобранные по условию. И данные по условию отбирались (как я и писал - "Dataset.RecordsCount - имеет правильное значение"), но LookupDataControl почему-то загружался всеми записями. Механизм такой - на форме, в другом LookupDataControl-е (у него другой датасет), я выбираю контрагента, в его обработчике события на изменение данных я получаю нужный мне идентификатор и использую его как параметр для фильтра другого датасета, условно говоря - выбираю все объекты подчиненные выбранному, для этого и вставлен приведенный выше код. Вот вобщем-то и всё, ничего сложного, но логика работы LookupDataControl-а мне не понятна...

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