Как при закрытии прибить окно? Или как сбросить фильтр, который был установлен в гриде, и который не нужен при открытии другой записи реестра?
Нравится
Как Вы вызываете окно? Все указывает на то, что окно кешируется и вновь отображает значение фильтра, хоть и не применяет его. Если через GetSingleItemByCode, то замените получение окна на System.GetNewItemByUSI('wnd_*') - так оно будет заново создаваться, а не получаться из кеша.
а функция WinCache_Get из скрипта scr_WindowUtils - это не она ли кэширует окно? и кэширует она получается по-умолчанию, ибо ShowEditWindowEx принимает параметр UseCache, который из scr_BaseGridAreaUtilsне передается и в этом случае окно кэшируется. Как передать этот параметр? Или только редактировать scr_BaseGridAreaUtils?
Именно об этом я и говорил. По умолчанию окна кешируются. Вы правильно нашли, где именно они берутся из кеша.
Обходной вариант - создать собственное окно выбора, унаследованное от wnd_SelectData и при его создании использовать Services.GetNewItemByUSI.
Данный подход реализован, в частности, и в базовом функционале. Например, раздел [Запросы] вызывает собственное окно выбора wnd_SelectReportTable, это происходит по нажатию на кнопку "Добавить", а точнее - в функции scr_QueryUtils.ShowTableSelectWindow()
В таком случае нужно аккуратно изменить базовый вызов. Например, так:
В функцию ShowEditWindowEx передавать еще один параметр, в котором будет false. Но передавать придется из scr_BaseGridAreaUtils.AddGridAreaData(), поэтому напрямую писать false не стоит. Предлагаю передавать в качестве еще одного параметра значение BaseGridArea.WindowUseCache, которое на данный момент не определено. Заполнять же его из своего скрипта на обработчике кнопки "Добавить" BaseGridArea.WindowUseCache = false (доступ к BaseGridArea будет, так как Ваше окно унаследовано). Таким образом с одной кнопки "Добавить" вызов в результате произойдет без использования кеша, а в остальных случаях будет использовано неопределенное значение, которое и так имеет параметр UseCache в функции ShowEditWindowEx.