Сохранение настроек интерфейса управляемой формы #527584


#0 by CagoBHuK
Здравствуйте, уважаемые гуру! Возник вопрос следующего характера, касательно управляемых форм: имеется ли возможность сохранять настройку интерфейса управляемой формы для дальнейшего выбора, например, из двух сохраненных настроек? Приведу пример: На управляемой форме 2 группы кнопок по 1 кнопке в каждой. Хотелось бы сохранить 2 настройки таким образом, что бы в первой настройке в первой группе была кнопка №1, а во второй №2. Соответственно, вторая настройка должна содержать в первой группе уже кнопку №2, а во второй группе кнопку №1. Графически можно описать это вот так: Я знаю, что при изменении управляемой формы, у пользователя сохраняются настройки, и что при повторном открытии они восстанавливаются. Но хотелось бы сохранять РАЗЛИЧНЫЕ настройки формы для возможности быстрого между ними переключения.
#1 by Beans
изучать объект "ХранилищеСистемныхНастроек", информации и примеров по ней нет. я несколько дней с ним помучился и плюнул!
#2 by CagoBHuK
Я так понял, что список настроек отображения формы можно получить либо так: ХранилищеСистемныхНастроек.ПолучитьСписок(ЭтаФорма.ИмяФормы+"/НастройкиОкна"), либо так: ХранилищеСистемныхНастроек.ПолучитьСписок(ЭтаФорма.ИмяФормы+"/НастройкиФормы"). Непонятно только, почему в первом случае мне возвращается пустой список значений, а во втором в нем всегда один элемент, значение которого - пустая строка? Где же находится описание формы-то? Что с ним дальше делать? Как присунуть его форме?
#3 by Beans
А как это должно на практике работать не знаю.
#4 by CagoBHuK
То есть в списке одно единственное значение - пустая строка, хотя должно быть значение типа НастройкиОкна. Описание: Содержит настройки состава, взаимного расположения и свойств элементов управляемой формы. Доступность: Сервер, толстый клиент. Сериализуется. //------------------------------------ Это - то, что мне необходимо, однако, данный метод мне возвращает почему-то пустой список значений.
#5 by Beans
у меня наоборот у всех форм есть как раз /НастройкиОкна а /НастройкиФормы нет, где ее взять хз. по умолчанию ключ пустая строка "" получить настройки можно НастройкиОкна = ХранилищеСистемныхНастроек.Загрузить("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна","") ; и тип будет НастройкиОкна заметил если настройку удалить - то вновь она появится только после перезапуска конфигуратора! по моим экспериментам по умолчанию загружается именно настройка с пустой строкой "" но можно сохранить свою на основе первой ХранилищеСистемныхНастроек.Сохранить("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна","МояНастройка",НастройкиОкна ); появится еще в списке "МояНастройка"  и по логике если перед открытием формы заменить "МояНастройка" на "" методом Сохранить то она и должна применится. Но в результате экспериментов мне так и не удалось повлять на поведение формы
#6 by Beans
попробуй помучить главного методиста Радченко на эту тему, пусть дает пример здесь
#7 by Beans
ну и еще на всякий случай может найдешь чего полезного
#8 by CagoBHuK
Получается, что это можно делать только при открытии формы что ли? Тогда весь смысл теряется. Хочется, что бы пользователь САМОСТОЯТЕЛЬНО имел возможность выбрать настройку.
#9 by CagoBHuK
Открылось для меня, что у формы есть такое свойство, как "КлючНазначенияИспользования". Если сначала сохранить настройку методом; А потом при создании на сервере сделать; ЭтаФорма.КлючНазначенияИспользования = "МояНастройка"; Тогда окно восстановит настройку, сохраненную в "МояНастройка".
#10 by CagoBHuK
Итак, путем "мозге хох залупирт", потратив кучу времени, я все-таки допер, каким образом работает сей механизм. Итак, проведем экспериментос. 1. Создаем управляемую форму. (я делал это именно внутри конфигуратора, а не внутри внешней обработки. 2. В форме создаем элементы, которые будем двигать/изменять. 3. В форме создаем 3 кнопки. Тексты их обработчиков ниже: В этом коде глЗначениеПеременной("глТекущийПользователь") замените на имя пользователя. 4. Тестируем то, что у нас получилось. Открываем нашу форму. Хреновертим с ее видом и нажимаем кнопку сохранения настройки. Вводим красивое имя "Один". Настройка сохранилась. 5. Теперь хреновертим еще и снова нажимаем кнопку сохранения настройки. Вводим красивое имя "Два". 6. Перезапускаем 1С для верности. 7. Открываем нашу форму, кнопаем пимпу загрузки настроек и выбираем настройку с красивым названием "Один". 8. Перезапускаем один эс и снова открываем форму. Что же мы видим?... Ничего не изменилось. Настроечка  с красивым названием "Один" не применилась! 9. Перезапускаем 1С для верности. 10. Открываем нашу форму, кнопаем пимпу загрузки настроек и выбираем настройку с красивым названием "Один". 11. Закрываем один эс. 12. Открываем конфигуратор, открываем любой модуль, встаем в любое незначимое место и добавляем туда символ пробела, например. То есть суть модуля не изменится, но изменится конфигурация. 13. Обновляем конфигурацию. 14. Запускаем один эс и открываем нашу красивую формы. 15. Вуаля! Настроечка с красивым названием "Один" применилась! Выводы: хотя механизм и работает, но фунциклирует но почему-то исключительно с помощью обновления конфиги, хотя настройки действительно можно сохранять. Непонятно, почему же все-таки он работает правильно, если делать все это платформенными методами. PS: Уж не знаю, баг ли это, или нет, но в 1С по этому поводу не писал.
#11 by CagoBHuK
Возможно будет интересно, в конфигурации Библиотека Стандартных Подсистем есть обработка УправлениеНастройкамиФорм. Там вроде как сохранение настроек работает. Только оно позволяет манипулировать текущими настройками форм, тупо заменяя их, а не сохраняя для дальнейшего использования.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С