Добрый день. У меня возникла следующая проблема :
в задача БП вызывается карточка реестра, для неё почему-то не применяется SQFilter. На событии OnPrepare вызывается функция Initialize, в которой я получаю сервис окна, дизэйблю ненужные мне кнопки и применяю
функцию ApplyWorkspaceFilter(WorkspaceWindow, FilterDPValue), в которой WorkspaceWindow - это соответственно нужное мне окно реестра, а FilterDPValue - строка фильта. К примеру FilterDPValue = ds_Account|и CompanyTaskBeginDate =:!SQFilter. При загрузке окна данный фильтр не применяется. Может кто-нибудь подскажет, в чем тут проблема?
Нравится
Могу посоветовать использовать ApplyDatasetFilter. А Dataset получить из датасетлинка реестра (dlData.Dataset).
p.s
Не забывайте про обновление реестра после применения фильтров.
Скажите, пожалуйста, какая у Вас версия и какой реестр Вы пытаетесь отфильтровать.
Есть предположение, что это может быть связанно с функционалом воркспейсов. На датасетлинке воркспейсов есть событие BeforeOpen - в нем сначала отключаются все фильтры, а потом по очереди включаются (по дате, по контакту и т.д)
Версия 3.2.0.17. Реестр зависит от настройки карточки БП, то есть фильтроваться должен по сути любой реестр. Причем он не включает только SQFilter. То есть для строки фильтра ds_Storage|и AccountID =:{3D589C02-297A-4FDC-9353-F5D740B76409}!Lookup|и StorageTypeID =:{69648172-F44D-4F40-B7C8-C362325D820D}!Lookup|и ContainsActualOfferings =:!SQFilter он применяет первых 2 условия и всё.
Раз уж Вы добрались до датасета раздела, то кладите в атрибуты датасета какой-то признак с уникальным именем (а-ля IsFilterByMyBP)и параметры фильтрации. В scr_BaseWorkspace в ApplyStandardWorkspaceFilter дописываем что-то типа
if (BaseWorkspace.GridDataset.Attributes('IsFilterByMyBP')){ //наложить свой фильтр BaseWorkspace.GridDataset.Attributes('IsFilterByMyBP') = false; }