Skip to content

ЗавершитьРаботуПользователей #5

@mefalcongit

Description

@mefalcongit

Здравствуйте.

Сообщаю, что метод ЗавершитьРаботуПользователей работает некорректо.
Посмотрел исходный код и увидел причину: завершаются соединения. Но не завершаются сеансы. Таким образом метод бесполезен.

прикладываю протестированный неоднократно код, необходимый для выполнения ДО отключения соединений скриптом Вашего метода "ЗавершитьРаботуПользователей".

То есть логика такая: сначала рубим сеансы и только затем соединения. Иначе смысла никакого нет в действии, например при необходимости потом выгрузить- загрузить файл dt.

&НаСервере
Процедура ЗавершитьВсеСеансы() Экспорт

COMСоединитель = Новый COMОбъект("V83.COMConnector");
СоединениеСАгентомСервера = COMСоединитель.ConnectAgent(ПолучитьИмяСервера());
Clusters = СоединениеСАгентомСервера.GetClusters();
Cluster = Clusters.GetValue(0);
СоединениеСАгентомСервера.Authenticate(Cluster,"","");
InfoBases = СоединениеСАгентомСервера.GetInfoBases(Cluster);
For each InfoBase in InfoBases do
	if InfoBase.name = ПолучитьИмяИнформационнойБазы() then break; EndIf;		
EndDo;
Sessions = СоединениеСАгентомСервера.GetInfoBaseSessions(Cluster,InfoBase);
For each Session IN Sessions Do
	СоединениеСАгентомСервера.TerminateSession(Cluster,Session);
EndDo;

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

&НаСервере
функция ПолучитьИмяСервера() Экспорт
СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы();
//Вставка Сокол 16.07.2018 13:15:26
Если Найти(СтрокаСоединенияИнформационнойБазы,"File") > 0 Тогда
ВызватьИсключение "Данная обработка предназначена для контроля сеансов работы пользователей в клиент-серверном варианте работы."
+ Символы.ПС + "Текущая база является файловой";
КонецЕсли;
//Вставка Сокол КОНЕЦ 16.07.2018 13:15:26
СтрокаСервер = Лев(СтрокаСоединенияИнформационнойБазы,Найти(СтрокаСоединенияИнформационнойБазы,";"));
ИмяСервера = Сред(СтрокаСервер,Найти(СтрокаСервер,"=")+2);
ИмяСервера = Лев(ИмяСервера,СтрДлина(ИмяСервера)-2);
Если Найти(ИмяСервера,":")<>0 Тогда
НомерПорта = Сред(ИмяСервера,Найти(ИмяСервера,":")+1);
НомерПорта = формат(Число(НомерПорта) - 1,"ЧГ=0");
СтрокаПорта = ":" + НомерПорта;
ИмяСервера = Лев(ИмяСервера,Найти(ИмяСервера,":")-1);
Иначе СтрокаПорта = "";
КонецЕсли;
ИмяСервера = ИмяСервера + СтрокаПорта;
Возврат ИмяСервера;
КонецФункции

&НаСервере
Функция ПолучитьИмяИнформационнойБазы() Экспорт
СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы();
СтрокаБаза = Сред(СтрокаСоединенияИнформационнойБазы,Найти(СтрокаСоединенияИнформационнойБазы,";")+1);
СтрокаБаза = лев(СтрокаБаза,СтрДлина(СтрокаБаза)-1);
ИмяБазы = Сред(СтрокаБаза,Найти(СтрокаБаза,"=")+2);
ИмяБазы = Лев(ИмяБазы,СтрДлина(ИмяБазы)-1);
Возврат ИмяБазы;
КонецФункции

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions