Имя: Пароль:
1C
1С v8
Вывод значений функции СвойстваСеанса
0 noise
 
06.06.20
02:59
Привет всем! Необходимо воспользоваться данной функцией, но ничего не происходит выводится пустая строка. Все ли я делаю правильно ? Я новичок в 1С.
Описание функции https://its.1c.ru/db/bsp312doc#content:380:hdoc
&НаСервере
Функция СвойстваСеанса() Экспорт
Результат = Новый Структура();
    
    Результат.Вставить("Номер");
    Результат.Вставить("ИмяПользователя");
    Результат.Вставить("ИмяКлиентскогоКомпьютера");
    Результат.Вставить("ИдентификаторКлиентскогоПриложения");
    Результат.Вставить("ИдентификаторЯзыка");
    Результат.Вставить("МоментСозданияСеанса");
    Результат.Вставить("МоментПоследнейАктивностиСеанса");
    Результат.Вставить("Блокировка");
    Результат.Вставить("БлокировкаСУБД");
    Результат.Вставить("Передано");
    Результат.Вставить("ПереданоЗа5Минут");
    Результат.Вставить("СерверныхВызовов");
    Результат.Вставить("СерверныхВызововЗа5Минут");
    Результат.Вставить("ДлительностьСерверныхВызовов");
    Результат.Вставить("ДлительностьТекущегоСерверногоВызова");
    Результат.Вставить("ДлительностьСерверныхВызововЗа5Минут");
    Результат.Вставить("ПереданоСУБД");
    Результат.Вставить("ПереданоСУБДЗа5Минут");
    Результат.Вставить("ДлительностьВызововСУБД");
    Результат.Вставить("ДлительностьТекущегоВызоваСУБД");
    Результат.Вставить("ДлительностьВызововСУБДЗа5Минут");
    Результат.Вставить("СоединениеСУБД");
    Результат.Вставить("ВремяСоединенияСУБД");
    Результат.Вставить("МоментЗахватаСоединенияСУБД");
    Результат.Вставить("ОписаниеСоединения");
    Результат.Вставить("Спящий");
    Результат.Вставить("ЗавершитьЧерез");
    Результат.Вставить("ЗаснутьЧерез");
    Результат.Вставить("ПрочитаноСДиска");
    Результат.Вставить("ПрочитаноСДискаВТекущемВызове");
    Результат.Вставить("ПрочитаноСДискаЗа5Минут");
    Результат.Вставить("Лицензия");
    Результат.Вставить("ЗанятоПамяти");
    Результат.Вставить("ЗанятоПамятиВТекущемВызове");
    Результат.Вставить("ЗанятоПамятиЗа5Минут");
    Результат.Вставить("ЗаписаноНаДиск");
    Результат.Вставить("ЗаписаноНаДискВТекущемВызове");
    Результат.Вставить("ЗаписаноНаДискЗа5Минут");
    Результат.Вставить("РабочийПроцесс");
    
    Возврат Результат;
    
конецфункции

&НаКлиенте
Процедура ИзвлечьВсеНосители(Команда)
     Результат = СвойстваСеанса();
     сообщить(результат.ИмяПользователя);
     КонецПроцедуры
1 Chameleon1980
 
06.06.20
04:38
ау. вы хоть капельку вникаете в то, что написано.
вот создается структура с ключами и пустыми значениями. что вы нахер ожидаетеиувидеть! получая не заполненное значение из структуры по ключу?
вым даже капли не вникаете.
2 Kassern
 
06.06.20
14:03
(0) Да уж... правильно вам написали, вы сами создаете структуру, но ничем ее не заполняете. Сами пишите "Результат.Вставить("ИмяПользователя");" без значения после ключа, а потом запрашиваете результат.ИмяПользователя. Естественно будет пусто. Вы можете написать Результат.Вставить("ИмяПользователя","Вася"), тогда вам вернет "Вася". Это я так для общего понимания пример привел)
Я понимаю откуда вы подтянули эту функцию. К ней обращаются по COM и заполняют данную структуру, но у вас эти функции пропущены.
Вот например:
Функция СловарьСвойствСеансов()
    
    Результат = Новый Структура();
    
    Результат.Вставить("Номер", "session-id");
    Результат.Вставить("ИмяПользователя", "user-name");
    Результат.Вставить("ИмяКлиентскогоКомпьютера", "host");
    Результат.Вставить("ИдентификаторКлиентскогоПриложения", "app-id");
    Результат.Вставить("ИдентификаторЯзыка", "locale");
    Результат.Вставить("МоментСозданияСеанса", "started-at");
    Результат.Вставить("МоментПоследнейАктивностиСеанса", "last-active-at");
    Результат.Вставить("БлокировкаСУБД", "blocked-by-dbms");
    Результат.Вставить("Блокировка", "blocked-by-ls");
    Результат.Вставить("Передано", "bytes-all");
    Результат.Вставить("ПереданоЗа5Минут", "bytes-last-5min");
    Результат.Вставить("СерверныхВызовов", "calls-all");
    Результат.Вставить("СерверныхВызововЗа5Минут", "calls-last-5min");
    Результат.Вставить("ДлительностьСерверныхВызовов", "duration-all");
    Результат.Вставить("ДлительностьТекущегоСерверногоВызова", "duration-current");
    Результат.Вставить("ДлительностьСерверныхВызововЗа5Минут", "duration-last-5min");
    Результат.Вставить("ПереданоСУБД", "dbms-bytes-all");
    Результат.Вставить("ПереданоСУБДЗа5Минут", "dbms-bytes-last-5min");
    Результат.Вставить("ДлительностьВызововСУБД", "duration-all-dbms");
    Результат.Вставить("ДлительностьТекущегоВызоваСУБД", "duration-current-dbms");
    Результат.Вставить("ДлительностьВызововСУБДЗа5Минут", "duration-last-3min-dbms");
    Результат.Вставить("СоединениеСУБД", "db-proc-info");
    Результат.Вставить("ВремяСоединенияСУБД", "db-proc-took");
    Результат.Вставить("МоментЗахватаСоединенияСУБД", "db-proc-took-at");
    
    Возврат Новый ФиксированнаяСтруктура(Результат);
    
КонецФункции
И вот еще :
Функция СвойстваСеансов(Знач ИдентификаторКластера, Знач ПараметрыАдминистрированияКластера, Знач ИдентификаторИнформационнойБазы, Знач Фильтр = Неопределено, Знач ИспользоватьСловарь = Истина) Экспорт
    
    Шаблон = "%rac session --cluster=%cluster% --cluster-user=%?cluster-user% --cluster-pwd=%?cluster-pwd% list --infobase=%infobase%";    
    
    Параметры = Новый Соответствие();
    
    Параметры.Вставить("cluster", ИдентификаторКластера);
    ЗаполнитьПараметрыАутентификацииВКластере(ПараметрыАдминистрированияКластера, Параметры);
    
    Параметры.Вставить("infobase", ИдентификаторИнформационнойБазы);
    
    Если ИспользоватьСловарь Тогда
        Словарь = СловарьСвойствСеансов();
    Иначе
        Словарь = Неопределено;
        Фильтр = ФильтрВНотациюRac(Фильтр, СловарьСвойствСеансов());
    КонецЕсли;
    
    ПотокВывода = ВыполнитьКоманду(Шаблон, ПараметрыАдминистрированияКластера, Параметры);
    Результат = ПарсерВывода(ПотокВывода, Словарь, Фильтр);
    Возврат Результат;
    
КонецФункции
и т.д.
По факту вам нужно не этой функцией воспользоваться а решить какую-то конкретную задачу. Я могу предположить, что вам нужно получить имя пользователя и вы почему-то решили, что данная функция вам поможет... Если я угадал, попробуйте воспользоваться ПараметрыСеанса.ТекущийПользователь.
3 Kassern
 
06.06.20
14:11
(0) Если вам все-таки интересно, как и когда запускается ваша функция, изучите 2 модуля АдминистрированиеКластераCOMКлиентСервер и АдминистрированиеКластераRASКлиентСервер.
4 noise
 
06.06.20
14:58
(2) (3) Благодарю за подробный ответ и за пример, я новичок и попытался сделать глупость. Начну с изучения модулей.
5 Kassern
 
06.06.20
15:04
(4) Если у вас был затык еще на моменте понимания структуры, то лучше начинать не с этих модулей, а с азов 1с, с его синтексиса, клиент-серверного взаимодействия, работы с формами и т.д.