Имя: Пароль:
1C
1С v8
Попытка получения неинициализированного значения параметра сеанса
, ,
0 laby1
 
26.02.16
14:13
Подскажите, что не так, почему ошибку дает при обращении к номенклатуре:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
    Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
КонецПроцедуры

Для номенклатуры на чтение в роли установил доступ:

Номенклатура ИЗ Справочник.Номенклатура КАК Номенклатура
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаправлениеМенеджера КАК НаправлениеМенеджера
    ПО Номенклатура.Родитель = НаправлениеМенеджера.НоменклатурнаяГруппа
ГДЕ НаправлениеМенеджера.Пользователь = &Пользователь
1 portowyi
 
26.02.16
14:26
(0)
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
    Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
КонецПроцедуры

Вот здесь нужно:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
    ПараметрыСеанса.Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
КонецПроцедуры

И "Пользователь" определен в "Общие" - "Параметры сеанса"?
2 portowyi
 
26.02.16
14:27
(1) Добавлю - а посему в "Пользователь" записывается строка? Или "НаправлениеМенеджера.Пользователь" в запросе это тоже строка? Если так, то как то не по фен шую.
3 laby1
 
26.02.16
14:32
(2) Да, там строка, я пока до фен-шуя как правильно по пользователю не дошел, пока Гилев строкой научил
4 portowyi
 
26.02.16
14:47
(3) Строками пользоваться - зело, можно кучу ошибок огрести. В системе нужен справочник "Пользователи". Если очень нужно, то через ГУИДы системного справочника "ПользователиИБ" можно их связать. И параметр сеанса "ТекущийПользователь" сделать типом "СправочникСсылка.Пользователи". Ну и "НаправлениеМенеджера.Пользователь" так же установить в тип "СправочникСсылка.Пользователи".
5 laby1
 
26.02.16
14:48
(1) Да, ошибка ушла! И запрос доделал:

Номенклатура ИЗ Справочник.Номенклатура КАК Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаправлениеМенеджера КАК НаправлениеМенеджера
    ПО (Номенклатура.Родитель = НаправлениеМенеджера.НоменклатурнаяГруппа
            ИЛИ Номенклатура.ЭтоГруппа)
ГДЕ НаправлениеМенеджера.Пользователь = &Пользователь ИЛИ НаправлениеМенеджера.Пользователь ЕСТЬ NULL
6 laby1
 
26.02.16
14:49
(4) Да, спасибо, когда пойму что такое ПользователиИБ, так и сделаю
7 portowyi
 
26.02.16
14:49
(5) Вот и ладненько)
8 laby1
 
26.02.16
14:53
(6) Хотя что такое ПользователиИБ это понятно - это те самые пользователи, которых мы добавляем через администрирование, непонятно где они хранятся, есть подозрение, что они вообще не в конфигурации, хотя с другой стороны для каждой конфигурации они свои ...
9 portowyi
 
26.02.16
14:57
(8) В таблицах БД они хранятся. Но эти данные недоступны для интерактивного редактирования, кроме как через Администраование. Ну а если программно - то в СП посмотрите (в индексе СП введите "ПользователиИнформационнойБазы"). Менеджер пользователей ИБ позволяет как получать информацию о них, так и редактировать.
10 xxTANATORxx
 
26.02.16
14:59
так кошернее делать (для 8.2)

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
    
    Если ТребуемыеПараметры = Неопределено Тогда
        
    Иначе        
        
        УстановленныеПараметры = Новый Структура;
        
        Для Каждого ИмяПараметра ИЗ ТребуемыеПараметры Цикл
            УстановитьЗначениеПараметраСеанса(ИмяПараметра, УстановленныеПараметры);
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцедуры

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