Имя: Пароль:
1C
1С v8
Присвоение реквизита 8.2
0 manti
 
16.04.13
16:00
Как присвоить реквизиту ОтборПользователь с типом спр Пользователи значение тек. пользователя?
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   //Установим фильтр по тек. пользователю
   Если НЕ ПолучитьТекПользователь() Тогда
       Элементы.ОтборПользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя);
       Элементы.ОтборПользователь.Доступность = Ложь;        
   КонецЕсли;
       
КонецПроцедуры

&НаСервере
Функция ПолучитьТекПользователь()
   
   Возврат    РольДоступна("Администратор");
   
КонецФункции

Пишет:
Поле объекта недоступно для записи (ОтборПользователь)
Элементы.ОтборПользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя);
ПолноеИмя совпадает с наименованием в справочнике
1 fisher
 
16.04.13
16:02
ОтборПользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя);
2 MSII
 
16.04.13
16:04
И посмотри, нет ли у тебя в конфигурации параметра сеанса ТекущийПользователь.
3 manti
 
16.04.13
16:05
(1) в отладчике вроде присваивает значение, но почему то на форме не прописывает тек. пользователя
(2) такого точно нет)
4 manti
 
16.04.13
16:07
(3) в реквизит ОтборПользователь
5 Любопытная
 
16.04.13
16:09
Ты пишешь в элемент формы, а надо писать в ЗНАЧЕНИЕ элемента
6 fisher
 
16.04.13
16:11
Свойство "ПутьКДанным" у поля формы "ОтборПользователь" что содержит?
7 Infsams654
 
16.04.13
16:13
(0) зачем НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя если можно сразу
ОтборПользователь = ТекущийПользователь
8 manti
 
16.04.13
16:13
(6)  Пользователь = типу спр Пользователи
9 manti
 
16.04.13
16:14
(5) как к значению обратиться?
10 Любопытная
 
16.04.13
16:16
(9) угадай с трех раз ;)
Элемент у тебя какой? Надпись, поле выбора или еще чего? Реквизит с ним связан какой-нить, или так просто на форме лежит?
11 manti
 
16.04.13
16:20
(10) Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя);
ай какой я не внимательный)
12 manti
 
16.04.13
16:22
Как можно вызвать процедуру отбора что на клиенте?

&НаКлиенте
Процедура ОтборПользовательПриИзменении(Элемент)
13 manti
 
16.04.13
16:27
&НаКлиенте
Процедура ОтборПользовательПриИзменении(Элемент)
   Если Пользователь.Пустая() тогда
       Возврат;
   КонецЕсли;
   
   ОтборОбъект = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ОтборОбъект.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
   
   ОтборОбъект.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
   ОтборОбъект.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Пользователь"); // Тут указываем имя поля для отбора
   ОтборОбъект.ПравоеЗначение = Пользователь;
   //Параметры.ВладелецФайла; // тут указываем ссылку для отбора
   ОтборОбъект.Использование = Истина;
КонецПроцедуры
14 Любопытная
 
16.04.13
16:30
Она вызывается при изменении значения элемента. Хочешь вызвать ее код вне этого события? Перепиши его в другую процедуру на клиенте и вызывай ее по мере необходимости
15 manti
 
16.04.13
16:35
(14) нужно чтобы вызывалась с сервера

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   //Установим фильтр по тек. пользователю

   Если НЕ ПолучитьТекПользователь() Тогда
       Элементы.ОтборПользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя);
       Элементы.ОтборПользователь.Доступность = Ложь;        
   КонецЕсли;
   ОтборПользовательПриИзменении();    
КонецПроцедуры
получается ОтборПользовательПриИзменении() нужно сделать серверной поскольку на сервере на видит клиенncre. процедуру
16 Любопытная
 
16.04.13
16:39
Сделай ее серверной и вызывай ее в том числе и из клиентского метода элемента.
17 manti
 
16.04.13
16:43
(16) Элементы.НадписьПольз.Заголовок = Строка(Элементы.ОтборПользователь.ВыделенныйТекст); не получается на сервере получить значение реквизита ОтборПользователь

&НаСервере
Процедура ОтборПольз()
   
   
   ОтборОбъект = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ОтборОбъект.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
   
   ОтборОбъект.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
   ОтборОбъект.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Пользователь"); // Тут указываем имя поля для отбора
   ОтборОбъект.ПравоеЗначение = Пользователь;
   ОтборОбъект.Использование = Истина;

   
   Элементы.Список.Обновить();                
   Элементы.НадписьПольз.Заголовок = "";
   Элементы.НадписьПольз.Заголовок = Строка(Элементы.ОтборПользователь.ВыделенныйТекст);

КонецПроцедуры

Свойство "ВыделенныйТекст" недоступно на сервере
18 manti
 
16.04.13
16:45
(17) Элементы.НадписьПольз.Заголовок = Строка(Пользователь);
с реквизита взял )
19 Любопытная
 
16.04.13
16:46
Чет у тебя код везде разный... ты бы всю задачу целиком озвучил уже. Выделенный текст вполне логично не доступен на сервере - там нет никакого текста.
20 manti
 
16.04.13
16:49
первоначальная задача - присвоение реквизита, остальное - побочное
Основная теорема систематики: Новые системы плодят новые проблемы.