Dev ›
Подсистема сохранения и восстановления настроек динамических списков ›
#14
30.11.11 13:01
(13) dim0n_la,
Итак.
Что происходит.
На форме динамический список. У пользователей есть автоматически сохраняемые и восстанавливаемые "основные" настройки этого списка. Вы в конфигураторе мышкой (не программно ПриОткрытии) изменяете условное оформление списка. Пользователи этих изменений не видят, т.к. у них при открытии формы восстанавливается "основная" настройка. Чтобы увидеть изменения пользователь должен 1. в настройках дин. списка удалить все элементы условного оформления; 2. снять у настройки "основная" галку "открывать" или вообще удалить эту настройку 3. Закрыть / открыть форму.
Как платформа управляет настройками дин. списка.
Рассмотрим случай когда на форме есть дин. список, для него не используется подсистема управления настройками. Настройки, заданные в конфигураторе "мышкой", будем называть "настройки разработчика". Настройки, заданные в режиме предприятия, будем называть "настройки пользователя". Ситуация следующая: заданы настройки разработчика, пользователь открыл форму, изменил все настройки (отбор, сортировка, группировка, УО). Какие настройки будут установлены при следующем открытии формы:
Отбор: сначала восстанавливаются настройки пользователя со сброшенными галочками использования, затем восстанавливаются настройки разработчика. В случае конфликта приоритет у настроек разработчика.
Сортировка и группировка: восстанавливаются настройки разработчика.
Условное оформление: восстанавливаются настройки пользователя. Получается, если пользователь изменил настройки УО (или не изменил, а просто открыл настройку списка, нажал ОК, без изменения настроек), то изменения в настройках разработчика не повлияют на настройки списка, восстановленные платформой. Настройки разработчика установятся только если в настройках пользователя список элементов УО пустой. Вот это как раз наша ситуация.
Что делать.
Вариант без доработки подсистемы вы сами подсказали: в режиме предприятия удалить настройки УО, удалить основную сохраненную настройку, закрыть/открыть форму. Это неудобно. Нужно дорабатывать подсистему. Вижу два приемлемых варианта доработки.
1. Сделать настройку "Стандарт". Подсистема при закрытии формы будет сохранять текущую настройку, затем очищать настройки списка. При следующем открытии формы платформа установит настройки разработчика, затем подсистема запомнит эти настройки под именем "стандарт", после чего восстановит пользовательскую настройку с галкой "открывать". В вашем случае получается так: вы меняете в конфигураторе настройку, пользователь открывает форму, видит свою основную настройку, затем жмет "восстановить настройку", выбирает настройку "Стандарт", видит ту настройку, которую вы установили в конфигураторе.
2. Сделать возможность сохранения настроек не для конкретного пользователя, а для группы пользователей или для всех пользователей. Заводим роль унсАдминистратор. Пользователь с этой ролью может управлять настройками других пользователей, настройками "для групп пользователей" и настройками "для всех пользователей". Пользователь без этой роли может сохранять только свои настройки, а настройки своей группы или всех пользователей только восстанавливать. При открытии формы подсистема отбирает все настройки с признаком Открывать "для всех пользователей", "для группы пользователя", "для текущего пользователя" и выбирает из них настройку "с большей конкретизацией": если есть настройка "для всех пользователей" и есть настройка "для текущего пользователя", то будет восстановлена настройка "для текущего пользователя"; если есть настройка для группы 1-го уровня и для группы 2-го уровня, то будет восстановлена настройка для группы второго уровня. В вашем случае вам в режиме предприятия нужно будет создать общую настройку для всех пользователей. В конфигураторе настраивать ничего не будем. К примеру вам нужно сделать чтобы подсвечивались документы, помеченные на удаление. Вы в режиме предприятия восстанавливаете настройку для всех пользователей (или создаете ее). В УО задаете подсветку для помеченных, сохраняете настройку как "настройку для всех пользователей", говорите пользователям восстановить общую настройку. Причем, если у пользователя нет собственной сохраненной настройки, то общая настройка будет установлена автоматически.
Мне больше нравится второй вариант. Идея не моя, такую доработку предложил Gluk_1C. Думаю её реализовать на выходных.