Добрый день.
В продолжение темы:
8.3. обновить элемент ОтображениеСостоянияПросмотра
По одной задаче стало необходимо в динамическом списке программно включать\отключать ограничение по полю.
Это методы из серии УстановитьОграниченияИспользования...()
Сейчас тестирую УстановитьОграниченияИспользованияВОтборе()
И он ведёт себя странно.
Если сначала пользователь установит отбор по полю, а только потом установить запрет по нему, то случится одно из двух:
1. Если пользователь наложил отбор через ctrl+F, то отбор перестанет учитываться. Но при этом в поле ОтображениеСостоянияПросмотра отбор останется, будто применён. Обновить это поле никак нельзя. Получается, пользователь видит, будто применен отбор, хотя это не так.
2. Если пользователь наложил отбор через "Настроить список", то установка ограничения по полю никак его не отменит. Отбор будет работать, хотя вообще на это поле накладывать ограничение нельзя. Интересно, что если зайти в "Настроить список", то отбор будет отображаться помеченным красным крестиком, но всё равно будет накладываться. При этом если программно получить исполняемую СКД, то по её запросу НЕТ этого отбора. Как вообще таким образом настройки накладываются на СКД не понимаю. Пытался сделать "КомпоновщикНастроек.Восстановить()", но и это не помогает. Отборы в пользовательских настройках остаются и галочки использования не снимаются.
Теперь вопрос. Это вообще нормальное поведение? Как программно установить ограничения по полю, чтобы оно реально применилось?
Тестировал на серверной базе платформы 8.3.12 и на файловой 8.3.14. То же поведение.
Сделал простую обработку, в которой это можно проверить. По кнопкам включения и отключения ограничений применяется метод УстановитьОграниченияИспользованияВОтборе() к полю "Поле1"