Имя: Пароль:
1C
1С v8
Бухгалтерия 8.2 функция ПолучитьЗначениеПоУмолчанию() как получить значение ПВХ?
0 AugustBlack
 
02.08.11
13:30
Как получить значение ПВХ?
К примеру сделал я доработку, теперь нада сделать чтобы в настройках пользователя можно было включать и выключать ее. Воть я зашел в Планы видов характеристик-Настройки пользователей-создал "Напоминать об истечении сроков договоров контрагентов" с типом "Булево". Опция появилась в настройках пользователя. Так вот....как ее прочитать программно? нашел функцию ПолучитьЗначениеПоУмолчанию  которая возвращает значение, вот что пишу.

Юзер = глЗначениеПеременной("глТекущийПользователь");
Настройка = "Напоминать об истечении сроков договоров контрагентов";
   Если УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(Юзер, Настройка) = Истина Тогда
   Сообщить("Опция включена!");

Иначе
   Сообщить("Опция отключена!");
КонецЕсли

в этой функции используется запрос к регистру сведений..

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Пользователь", Пользователь);
   Запрос.УстановитьПараметр("Настройка"   , ПланыВидовХарактеристик.НастройкиПользователей[Настройка]);
   Запрос.Текст = "
   |ВЫБРАТЬ
   |    Значение
   |ИЗ
   |    РегистрСведений.НастройкиПользователей КАК РегистрЗначениеПрав
   |
   |ГДЕ
   |    Пользователь = &Пользователь
   | И Настройка    = &Настройка";

Как обратится к значению новосозданного элемента ПВХ ? ПланыВидовХарактеристик.НастройкиПользователей["Напоминать об истечении сроков договоров контрагентов"] выдает ошибку. Глянул в отладчике там значения вместе пишутся т.е ОткрыватьПриЗапускеПанельФункций - т.е имена гдето задаются или как есть. Не работал раньше с пвх, гуглю ничего толкового не найду. Подскажите как тут.
1 PVV65
 
02.08.11
13:35
ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоНаименованию("Напоминать об истечении сроков договоров контрагентов")
2 AugustBlack
 
02.08.11
13:47
спс, смотрю в отладчике получил ссылку на этот элемент. но теперь ошибка в функции.....
{ОбщийМодуль.УправлениеПользователями.Модуль(46)}: Получение элемента по индексу для значения не определено
       НастройкаСсылка = ПланыВидовХарактеристик.НастройкиПользователей[Настройка];        


в функции:

Функция ПолучитьЗначениеПоУмолчанию(Пользователь, Настройка) Экспорт

   Если Пользователь = глЗначениеПеременной("глТекущийПользователь") Тогда        
       НастройкаСсылка = ПланыВидовХарактеристик.НастройкиПользователей[Настройка];        
       КэшНастроекПользователей = глЗначениеПеременной("ЗначенияНастроекПользователей");
       ЗначениеНастройки = КэшНастроекПользователей[НастройкаСсылка];
       Если ЗначениеНастройки = Неопределено Тогда
           ЗначениеНастройки = ПолучитьЗначениеПоУмолчаниюПользователя(Пользователь, Настройка);
           КэшНастроекПользователей[НастройкаСсылка] = ЗначениеНастройки;
           #Если Сервер Тогда
               глЗначениеПеременнойУстановить("ЗначенияНастроекПользователей", КэшНастроекПользователей, Истина);
           #КонецЕсли
       КонецЕсли;    
       Возврат ЗначениеНастройки;        
   КонецЕсли;
   
   Возврат ПолучитьЗначениеПоУмолчаниюПользователя(Пользователь, Настройка);

КонецФункции // ПолучитьЗначениеПоУмолчанию()
3 AugustBlack
 
02.08.11
13:57
м..вроде заработало..не стал разбираться в той функции, быстрее вручную проверить регистр:
   Юзер = глЗначениеПеременной("глТекущийПользователь");
   Настройка = ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоНаименованию("Напоминать об истечении сроков договоров контрагентов");
   
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Пользователь", Юзер);
   Запрос.УстановитьПараметр("Настройка"   , Настройка);
   Запрос.Текст = "
   |ВЫБРАТЬ
   |    Значение
   |ИЗ
   |    РегистрСведений.НастройкиПользователей КАК РегистрЗначениеПрав
   |
   |ГДЕ
   |    Пользователь = &Пользователь
   | И Настройка    = &Настройка";

   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Если Выборка.Значение = Истина Тогда Сообщить("1") Иначе Сообщить("2"); КонецЕсли;
   КонецЦикла;
Программист всегда исправляет последнюю ошибку.