![]() |
|
как работать с хранилищем системных настроек? | ☑ | ||
---|---|---|---|---|
0
GANR
16.11.11
✎
19:17
|
Нужно, чтобы форма документа открывалась с разными системными настройками видимости её элементов, в зависимости от выбранного контрагента (настройки задаются интерактивно). Почему при открытии формы уже созданного документа она отображается с настройками по умолчанию, а если посмотреть меню Действия...\Изменить форму - вижу те настройки, которые сохранял? Как сделать так, чтобы настройки вступали в силу сразу при открытии формы ???
Код модуля формы документа прилагается &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Ключ.Пустая() Тогда Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Параметры.Вставить("Объект", Объект.Контрагент); Запрос.Текст = "ВЫБРАТЬ | мдмНастройкиФорм.Настройки |ИЗ | РегистрСведений.мдмНастройкиФорм КАК мдмНастройкиФорм |ГДЕ | мдмНастройкиФорм.Объект = &Объект"; Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Выборка.Следующий(); ХранилищеСистемныхНастроек.Сохранить(ИмяФормы + "/НастройкиФормы", "", Выборка.Настройки.Получить(), , Неопределено); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии() СохранитьНастройкиНаСервере(); КонецПроцедуры &НаСервере Процедура СохранитьНастройкиНаСервере() Настройки = ХранилищеСистемныхНастроек.Загрузить(ИмяФормы + "/НастройкиФормы"); Если Настройки <> Неопределено Тогда НаборЗаписей = РегистрыСведений.мдмНастройкиФорм.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Объект.Установить(Объект.Контрагент); НаборЗаписей.Прочитать(); ТекЗапись = ?(НаборЗаписей.Количество() <> 0, НаборЗаписей[0], НаборЗаписей.Добавить()); ТекЗапись.Объект = Объект.Контрагент; ТекЗапись.Настройки = Новый ХранилищеЗначения(Настройки); НаборЗаписей.Записать(); КонецЕсли; ХранилищеСистемныхНастроек.Удалить(ИмяФормы + "/НастройкиФормы", "", Неопределено); КонецПроцедуры |
|||
1
GANR
17.11.11
✎
09:30
|
up
|
|||
2
Maxus43
17.11.11
✎
09:36
|
почему при создании на сервере они сохраняются? по логике надо их получать и применять
|
|||
3
GANR
17.11.11
✎
09:44
|
(3) При открытии, следующим за созданием на сервере система должна прочитать настройки, сохраненные при создании на сервере. Она их читает, но почему-то не применяет. Как же изловчиться не выходя за пределы формы?
|
|||
4
Maxus43
17.11.11
✎
09:47
|
не осилил. читаем книги - "Всё что должно быть сделано с формой для открытия должно быть сделано при создании на сервере" (с) общий смысл разработки управляемого приложения.
З.ы. Применяй в при создании на сервере |
|||
5
GANR
17.11.11
✎
09:48
|
(4) Что-же конкретно я делаю не так?
|
|||
6
Maxus43
17.11.11
✎
09:50
|
(5) я не вижу из кода где ты применяеш настройки
>>При открытии, следующим за созданием на сервере система должна прочитать настройки это она сама должна? кто сказал? я хз, с настройками не работал |
|||
7
GANR
17.11.11
✎
11:00
|
(6) Заработало!!! Надо использовать событие модуля менеджера документа "обработка получения формы" - оно происходит ПЕРЕД созданием формы объекта и именно в нем нужно менять настройки.
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) ТекДокумент = Неопределено; Параметры.Свойство("Ключ", ТекДокумент); Если Не ЗначениеЗаполнено(ТекДокумент) Тогда Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Параметры.Вставить("Объект", ТекДокумент.Контрагент); Запрос.Текст = "ВЫБРАТЬ | мдмНастройкиФорм.Настройки |ИЗ | РегистрСведений.мдмНастройкиФорм КАК мдмНастройкиФорм |ГДЕ | мдмНастройкиФорм.Объект = &Объект"; Результат = Запрос.Выполнить(); Если Не Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Выборка.Следующий(); ХранилищеСистемныхНастроек.Сохранить("Документ.ТестовыйДокумент.Форма.ФормаДокумента/НастройкиФормы", "", Выборка.Настройки.Получить(), , Неопределено); КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |