You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Сообщаю, что метод ЗавершитьРаботуПользователей работает некорректо.
Посмотрел исходный код и увидел причину: завершаются соединения. Но не завершаются сеансы. Таким образом метод бесполезен.
прикладываю протестированный неоднократно код, необходимый для выполнения ДО отключения соединений скриптом Вашего метода "ЗавершитьРаботуПользователей".
То есть логика такая: сначала рубим сеансы и только затем соединения. Иначе смысла никакого нет в действии, например при необходимости потом выгрузить- загрузить файл 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);
Иначе СтрокаПорта = "";
КонецЕсли;
ИмяСервера = ИмяСервера + СтрокаПорта;
Возврат ИмяСервера;
КонецФункции
Здравствуйте.
Сообщаю, что метод ЗавершитьРаботуПользователей работает некорректо.
Посмотрел исходный код и увидел причину: завершаются соединения. Но не завершаются сеансы. Таким образом метод бесполезен.
прикладываю протестированный неоднократно код, необходимый для выполнения ДО отключения соединений скриптом Вашего метода "ЗавершитьРаботуПользователей".
То есть логика такая: сначала рубим сеансы и только затем соединения. Иначе смысла никакого нет в действии, например при необходимости потом выгрузить- загрузить файл dt.
&НаСервере
Процедура ЗавершитьВсеСеансы() Экспорт
КонецПроцедуры
&НаСервере
функция ПолучитьИмяСервера() Экспорт
СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы();
//Вставка Сокол 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);
Возврат ИмяБазы;
КонецФункции
The text was updated successfully, but these errors were encountered: