![]() |
![]() |
![]() |
|
Сохранение настроек интерфейса управляемой формы | ☑ | ||
---|---|---|---|---|
0
CagoBHuK
17.01.11
✎
12:14
|
Здравствуйте, уважаемые гуру!
Возник вопрос следующего характера, касательно управляемых форм: имеется ли возможность сохранять настройку интерфейса управляемой формы для дальнейшего выбора, например, из двух сохраненных настроек? Приведу пример: На управляемой форме 2 группы кнопок по 1 кнопке в каждой. Хотелось бы сохранить 2 настройки таким образом, что бы в первой настройке в первой группе была кнопка №1, а во второй №2. Соответственно, вторая настройка должна содержать в первой группе уже кнопку №2, а во второй группе кнопку №1. Графически можно описать это вот так: http://s49.radikal.ru/i125/1101/1b/c976efffed16.jpg Я знаю, что при изменении управляемой формы, у пользователя сохраняются настройки, и что при повторном открытии они восстанавливаются. Но хотелось бы сохранять РАЗЛИЧНЫЕ настройки формы для возможности быстрого между ними переключения. |
|||
1
Beans
17.01.11
✎
12:18
|
изучать объект "ХранилищеСистемныхНастроек",
информации и примеров по ней нет. я несколько дней с ним помучился и плюнул! |
|||
2
CagoBHuK
17.01.11
✎
12:56
|
Я так понял, что список настроек отображения формы можно получить либо так: ХранилищеСистемныхНастроек.ПолучитьСписок(ЭтаФорма.ИмяФормы+"/НастройкиОкна"), либо так: ХранилищеСистемныхНастроек.ПолучитьСписок(ЭтаФорма.ИмяФормы+"/НастройкиФормы"). Непонятно только, почему в первом случае мне возвращается пустой список значений, а во втором в нем всегда один элемент, значение которого - пустая строка? Где же находится описание формы-то? Что с ним дальше делать? Как присунуть его форме?
|
|||
3
Beans
17.01.11
✎
13:13
|
СписокНастроек1 =ХранилищеСистемныхНастроек.ПолучитьСписок("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна",);
НастройкиОкна = ХранилищеСистемныхНастроек.Загрузить("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна","") ; ХранилищеСистемныхНастроек.Сохранить("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна","МояНастройка",НастройкиОкна ); СписокНастроек2 = ХранилищеСистемныхНастроек.ПолучитьСписок("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна",); А как это должно на практике работать не знаю. |
|||
4
CagoBHuK
17.01.11
✎
17:20
|
СписокНастроек1 =ХранилищеСистемныхНастроек.ПолучитьСписок("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна",);
Получаем: СписокНастроек1.Количество() = 1 СписокНастроек1[0].Значение = "" То есть в списке одно единственное значение - пустая строка, хотя должно быть значение типа НастройкиОкна. //---------------------------------------------- НастройкиФормы (FormSettings) Описание: Содержит настройки состава, взаимного расположения и свойств элементов управляемой формы. Доступность: Сервер, толстый клиент. Сериализуется. //------------------------------------ Это - то, что мне необходимо, однако, данный метод мне возвращает почему-то пустой список значений. |
|||
5
Beans
17.01.11
✎
17:48
|
у меня наоборот у всех форм есть как раз /НастройкиОкна
а /НастройкиФормы нет, где ее взять хз. по умолчанию ключ пустая строка "" получить настройки можно НастройкиОкна = ХранилищеСистемныхНастроек.Загрузить("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна","") ; и тип будет НастройкиОкна заметил если настройку удалить - то вновь она появится только после перезапуска конфигуратора! по моим экспериментам по умолчанию загружается именно настройка с пустой строкой "" но можно сохранить свою на основе первой ХранилищеСистемныхНастроек.Сохранить("Документ.Документ1.Форма.ФормаДокумента/НастройкиОкна","МояНастройка",НастройкиОкна ); появится еще в списке "МояНастройка" и по логике если перед открытием формы заменить "МояНастройка" на "" методом Сохранить то она и должна применится. Но в результате экспериментов мне так и не удалось повлять на поведение формы |
|||
6
Beans
17.01.11
✎
17:50
|
попробуй помучить главного методиста Радченко на эту тему,
пусть дает пример здесь http://devtrainingforum.v8.1c.ru/forum/ |
|||
7
Beans
17.01.11
✎
17:51
|
ну и еще на всякий случай может найдешь чего полезного
v8: СКД. Программная установка параметров в управляемой форме отчета. Как? |
|||
8
CagoBHuK
18.01.11
✎
10:15
|
Получается, что это можно делать только при открытии формы что ли? Тогда весь смысл теряется. Хочется, что бы пользователь САМОСТОЯТЕЛЬНО имел возможность выбрать настройку.
|
|||
9
CagoBHuK
18.01.11
✎
12:34
|
Открылось для меня, что у формы есть такое свойство, как "КлючНазначенияИспользования". Если сначала сохранить настройку методом;
ХранилищеСистемныхНастроек.Сохранить(ЭтаФорма.ИмяФормы+"/НастройкиОкна","МояНастройка",НастройкиОкна ); А потом при создании на сервере сделать; ЭтаФорма.КлючНазначенияИспользования = "МояНастройка"; Тогда окно восстановит настройку, сохраненную в "МояНастройка". |
|||
10
CagoBHuK
18.01.11
✎
14:26
|
Итак, путем "мозге хох залупирт", потратив кучу времени, я все-таки допер, каким образом работает сей механизм. Итак, проведем экспериментос.
1. Создаем управляемую форму. (я делал это именно внутри конфигуратора, а не внутри внешней обработки. 2. В форме создаем элементы, которые будем двигать/изменять. 3. В форме создаем 3 кнопки. Тексты их обработчиков ниже: &НаКлиенте Процедура УправлениеНастройкамиФормы_ЗагрузитьНастройкиФормы(Команда) СписокНастроек = ХранилищеСистемныхНастроек.ПолучитьСписок(ЭтаФорма.ИмяФормы+"/НастройкиФормы"); ИмяНастройки = СписокНастроек.ВыбратьЭлемент(); Если Не ИмяНастройки = Неопределено Тогда НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.ИмяФормы+"/НастройкиФормы",ИмяНастройки); ХранилищеСистемныхНастроек.Сохранить(ЭтаФорма.ИмяФормы+"/НастройкиФормы","",НастройкиФормы ); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура УправлениеНастройкамиФормы_СохранитьНастройкиФормы(Команда) ИмяНастройки = ""; Подсказка = "Введите название настройки"; Если ВвестиСтроку(ИмяНастройки, Подсказка, 0, Истина) Тогда НастройкиФормы = ХранилищеСистемныхНастроек.Загрузить(ЭтаФорма.ИмяФормы+"/НастройкиФормы",""); ХранилищеСистемныхНастроек.Сохранить(ЭтаФорма.ИмяФормы+"/НастройкиФормы",ИмяНастройки,НастройкиФормы); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура УправлениеНастройкамиФормы_УдалитьНастройкуФормы(Команда) СписокНастроек = ХранилищеСистемныхНастроек.ПолучитьСписок(ЭтаФорма.ИмяФормы+"/НастройкиФормы"); ИмяНастройки = СписокНастроек.ВыбратьЭлемент(); Если Не ИмяНастройки = Неопределено Тогда ХранилищеСистемныхНастроек.Удалить(ЭтаФорма.ИмяФормы+"/НастройкиФормы", ИмяНастройки, глЗначениеПеременной("глТекущийПользователь").Наименование) КонецЕсли; КонецПроцедуры В этом коде глЗначениеПеременной("глТекущийПользователь") замените на имя пользователя. 4. Тестируем то, что у нас получилось. Открываем нашу форму. Хреновертим с ее видом и нажимаем кнопку сохранения настройки. Вводим красивое имя "Один". Настройка сохранилась. 5. Теперь хреновертим еще и снова нажимаем кнопку сохранения настройки. Вводим красивое имя "Два". 6. Перезапускаем 1С для верности. 7. Открываем нашу форму, кнопаем пимпу загрузки настроек и выбираем настройку с красивым названием "Один". 8. Перезапускаем один эс и снова открываем форму. Что же мы видим?... Ничего не изменилось. Настроечка с красивым названием "Один" не применилась! 9. Перезапускаем 1С для верности. 10. Открываем нашу форму, кнопаем пимпу загрузки настроек и выбираем настройку с красивым названием "Один". 11. Закрываем один эс. 12. Открываем конфигуратор, открываем любой модуль, встаем в любое незначимое место и добавляем туда символ пробела, например. То есть суть модуля не изменится, но изменится конфигурация. 13. Обновляем конфигурацию. 14. Запускаем один эс и открываем нашу красивую формы. 15. Вуаля! Настроечка с красивым названием "Один" применилась! Выводы: хотя механизм и работает, но фунциклирует но почему-то исключительно с помощью обновления конфиги, хотя настройки действительно можно сохранять. Непонятно, почему же все-таки он работает правильно, если делать все это платформенными методами. PS: Уж не знаю, баг ли это, или нет, но в 1С по этому поводу не писал. |
|||
11
CagoBHuK
01.02.11
✎
11:23
|
Возможно будет интересно, в конфигурации Библиотека Стандартных Подсистем есть обработка УправлениеНастройкамиФорм. Там вроде как сохранение настроек работает. Только оно позволяет манипулировать текущими настройками форм, тупо заменяя их, а не сохраняя для дальнейшего использования.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |