да я там просто объяснил попобдробнее.
в общем
в sql в EM сделал дополнительную табличку для конкретной базы. (можно просто в отдельной базе) с полями
User as Char, PID as int, intime as datetime
в 1с добавлены 2 процедуры
Процедура глДобавитьИнфуОПользователе() Экспорт
Запрос=СоздатьОбъект("ODBCRecordSet");
ТЗ_пид = "
|Select convert(varchar(10), @@SPID) PID
|";
Запрос.Открыть(ТЗ_пид);
Запрос.ВНачало();
ПИД = Сокрлп(Запрос.ПолучитьЗначение(1));
//-----------Сначала удаляем------------------------------------
ТЗ = "Delete from Users Where (Users.User_1c='"+Сокрлп(глПользователь.Код)+"') or ([Users.PID = "+ПИД+")";
Запрос.Выполнить(ТЗ);
//-----------------А теперь добавляем-------------------------------------
т(ДатаЧисло(ТекущаяДата()),"Ч(0)2");
ДатаТек = ДатаТек+" "+ТекущееВремя()+".000";
ТЗ = "insert into Users values("+ПИД+", '"+Сокрлп(глПользователь.Код)+"', Convert(datetime, '"+Сокрлп(ДатаТек)+"', 102))";
Если Запрос.Выполнить(ТЗ)=0 Тогда
Сообщить(Запрос.ПолучитьОписаниеОшибки());
Конецесли;
//------------------------------------------------------------------
КонецПроцедуры
Процедура глУдалитьИнфуОПользователе() Экспорт
Запрос=СоздатьОбъект("ODBCRecordSet");
ТЗ_пид = "
|Select convert(varchar(10), @@SPID) PID
|";
Запрос.Открыть(ТЗ_пид);
Запрос.ВНачало();
ПИД = Сокрлп(Запрос.ПолучитьЗначение(1));
//-----------Сначала удаляем------------------------------------
ТЗ = "Delete from Users Where (Users.User_1c='"+Сокрлп(глПользователь.Код)+"') or (Users.PID = "+ПИД+")";
Запрос.Выполнить(ТЗ);
КонецПроцедуры
которые вызываются из ПриНачалеРаботы и ПриЗавершенииРаботы
данные процедуры добавляют (и удаляют из таблицы при выходе) в табличку Users соответствия PID и имени пользователя в 1С
в общем просто добавляются и удаляются записи текущего пользователя и его PID
далее из этой таблицы можно выявлять кто из пользователей.
мне это понадобилось для того что бы знать кто из пользователей 1С инициировал запуск триггера...
код процедур любезно предоставил Mikaware (
www.mista.ru) за что ему большое спасибо