Имя: Пароль:
1C
1С v8
Блокировка сеансов с информационной базой
0 Joshim
 
01.03.13
11:45
Запускаю обработку, которая должна заблокировать новые сеансы с информационной базой:

Server1CName = "ServName";
   InfoBaseName = "BaseName";
   InfoBaseUserName = "UserName";
   InfoBaseUserPassword = "UserPassword";
   
   COMConnector = Новый COMОбъект("V82.COMConnector");
   AgentConnection = COMConnector.ConnectAgent(Server1CName);

   Для Каждого Cluster Из AgentConnection.GetClusters() Цикл
       AgentConnection.Authenticate(Cluster, "", "");
       Для Каждого WorkingProcess Из AgentConnection.GetWorkingProcesses(Cluster) Цикл
           Если WorkingProcess.Running <> 1 Тогда
               Продолжить;
           КонецЕсли;
           СтрПодкл = "tcp://" +Server1CName + ":" + Формат(WorkingProcess.MainPort, "ЧГ=");
           WorkingProcessConnection = COMConnector.ConnectWorkingProcess(СтрПодкл);        
           
           Для Каждого InfoBaseInfo Из WorkingProcessConnection.GetInfoBases() Цикл
               
               Если InfoBaseInfo.Name <> InfoBaseName Тогда
                   Продолжить;
               КонецЕсли;
               
               WorkingProcessConnection.AddAuthentication(InfoBaseUserName, InfoBaseUserPassword);
               
               InfoBaseInfo.DeniedFrom = ТекущаяДата();
               InfoBaseInfo.DeniedTo = ТекущаяДата() + 3600;
               InfoBaseInfo.DeniedMessage = "Регламентное обсл";
               //InfoBaseInfo.DeniedParameter = ;
               InfoBaseInfo.PermissionCode = "123";
               InfoBaseInfo.SessionsDenied = 1;
               Сообщить("Блокировка сеансов ИБ установлена. UC = " + InfoBaseInfo.PermissionCode);
                                 
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;

Код выполняется успешно, но блокировка не устанавливается!
1 Joshim
 
01.03.13
11:45
Как установить блокировку?
2 Maxus43
 
01.03.13
11:46
а по православному не хочешь? УстановитьБлокировкуСеансов
3 Maxus43
 
01.03.13
11:47
Блокировка = ПолучитьБлокировкуУстановкиСоединений();
   
// Используя код разрешения можно будет подключиться к базе
// при установленной блокировке
Блокировка.КодРазрешения = "КодДоступа";
Блокировка.Начало         = ТекущаяДата() - 1;
Блокировка.Конец         = ТекущаяДата() + 100;
   
// Текст сообщения, который будет отображаться при попытке соединения
Блокировка.Сообщение     = "ТекстСообщения";
Блокировка.Установлена     = Истина;

УстановитьБлокировкуУстановкиСоединений(Блокировка);
4 Joshim
 
01.03.13
11:49
(2) хочу. этот путь мне не подходит, так как этот код потом перенесу в другой язык разработки, а там методы 1С не работают
5 Maxus43
 
01.03.13
11:58
попробуй UpdateInfoBase(InfoBaseInfo)
6 Maxus43
 
01.03.13
11:59
AgentConnection.UpdateInfoBase(InfoBaseInfo)
7 Maxus43
 
01.03.13
11:59
тьфу, WorkingProcessConnection.UpdateInfoBase(InfoBaseInfo)
8 Joshim
 
01.03.13
12:06
(7) да так работает. Ценная информация! Откуда тут все знают?)
9 Maxus43
 
01.03.13
12:09
(9) открою секрет, я не знал до сего момента. Но посмотрев в СП и набрав 1 строку в гугле - я понял.
10 Maxus43
 
01.03.13
12:10
Опыт не в том, чтобы наизусть всё знать, а в том как быстро найти и понять...
11 Maxus43
 
01.03.13
12:27
(7) + это кстати скорее фича, в СП написано что обновлять можно только Descr у базы