Ограничение на количество запущенных сеансов 1с

1. vadim1011985 99 21.12.16 23:15 Сейчас в теме
Здравствуйте , может у кого- то сталкивался с подобным. необходимо ограничить количество запущенных сеансов (баз) 1с для пользователей на сервере терминалов.

Проблема в том что на сервере работают примерно 10-15 человек (из них 9 пользователей которые работаю непосредственно с 1с) некоторые из них запускают по 5- 6 сеансов 1с и из-за этого у других пользователей нереально медленно формируются стандартные отчеты.

Возможно ли какими либо средствами подсчитать количество запущенных сеансов и поставить запрет на запуск новых (например заперт за загрузку 3-го сеанса по счету )
По теме из базы знаний
Найденные решения
6. v3rter 22.12.16 10:57 Сейчас в теме
На уровне батника так:
tasklist /FI "IMAGENAME eq 1cv8.exe" /FI "USERNAME eq %username%"
"*" в tasklist не прокатывают, поэтому возможно придется вызывать 3 раза для 1cv8.exe, 1cv8с.exe и 1cv8s.exe и анализировать результаты.

Есть некоторые шансы переделать запрос через COM-объект из http://infostart.ru/public/142715/

И можно копнуть в сторону скрипта на powershell
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Denis_CFO 48 22.12.16 06:36 Сейчас в теме
(1) получить соединения информационной базы и посчитать. если у пользователя уже есть > 2 тогда сообщить("нельзя так много работать"); завершитьработусистемы(ложь,ложь);
3. vadim1011985 99 22.12.16 09:09 Сейчас в теме
(2) А как получить соединения информационной базы можно пример ? так еще и базы разные
4. Denis_CFO 48 22.12.16 09:32 Сейчас в теме
(3) вот так:
      ТекНомерСоединения = НомерСоединенияИнформационнойБазы();
    УИДПользюка = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
    МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
    Для Каждого ТекСоединение Из МассивСоединений Цикл
        Если (ТекСоединение.ИмяПриложения = "1CV8")
               И (НЕ ТекСоединение.НомерСоединения = ТекНомерСоединения)
               И (НЕ ТекСоединение.Пользователь = Неопределено)
               И (ТекСоединение.Пользователь.УникальныйИдентификатор = УИДПользюка) Тогда
			   Возврат "Вот он уже есть в базе";
        КонецЕсли;
    КонецЦикла;

Показать

А потом считайте
5. vadim1011985 99 22.12.16 10:43 Сейчас в теме
(4) Это не совсем то, так он считает соединение с одной базой , а нужно что бы общее количество соединений с разными базами

Например в списке баз у пользователя
База БП № 1
База БП № 2
Копия Базы БП №1
Копия Базы БП №2

Необходимо что бы пользователь работал только с тремя базами (например он запустил 3 сеанса Базы БП №1 ) и при попытки запустить любой другой сеанс выдавалось бы предупреждение
10. Denis_CFO 48 22.12.16 11:12 Сейчас в теме
(5) Да, позже уже увидел, что базы разные. В (6) ваш вариант.
7. Xershi 1479 22.12.16 11:04 Сейчас в теме
(1) можно просто запретить запуск второго сеанса одной и той же базы и все!
8. vadim1011985 99 22.12.16 11:06 Сейчас в теме
(7) Это не решит проблему , так как пользователь может запустить 6 разных баз - проблема в том что баз много
11. Xershi 1479 22.12.16 11:44 Сейчас в теме
(8) так что пользователю запрещать пользоваться базами?
Ну тогда это уже к админам. Скорее всего можно включить политику на количество запущенных процессов 1С.
Но подход у вас не правильный, просто объясните, чтобы не открывали много баз, раз у вас сервер слабый вот и все!
12. vadim1011985 99 22.12.16 11:52 Сейчас в теме
(11) Да 100500 раз уже объясняли - пару недель держатся а дальше все по старому (а полная Ж в отчетный период ) , а потом звонят и жалуются что 1с не фига не работает. (ОСВ по счету по одному контрагенту формируется более 30 минут !!!!) А поход я думаю корректный вы же не работаете с более 4-мя базами одновременно 3 еще куда не шло , но более 3-х баз которые каждая из которых съедает 200 Мб памяти и при этом простаивает и к тому же мешает работать другим у которых запущен только 1 сеанс более чем корректен
14. Xershi 1479 22.12.16 13:12 Сейчас в теме
(12) ну так вариант с килянием 1С очень плох, улучшайте сервер!
Или сделайте общий монитор и пусть сами регулируют, кто должен сидеть или нет!
15. vadim1011985 99 22.12.16 13:22 Сейчас в теме
(14) Мы фирма франч и просто обслуживаем клиентов, про сервер уже говорили - это вопрос их системных администраторов (которые кстати уволились недавно) но вопросы по 1с ложится на наши плечи. И практически получается Пинг-Понг мы отсылаем к системным админ. типа сервер уже не справляется с нагрузкой , а они к нам типа сервер работает нормально и проблема в 1с. А клиенту важно что бы все работало и не важно чья это проблема. Пока решение "килять процессы 1с" вижу как временное решение проблемы , которое к тому же будет обсуждаться с клиентом , если предложенный способ будет работать
16. Xershi 1479 22.12.16 13:24 Сейчас в теме
(15) как я предложил дайте инструмент, а как им пользоваться пусть сами решают, потому что проблема системная!
18. vadim1011985 99 22.12.16 13:52 Сейчас в теме
(16) Ну вы что клиентов не знаете ? Улучшение сервере - конечно вариант , тут надо дождаться новых системных администраторов. Но вот монитор и что бы сами решали - это перебор , не будут они брать такую ответственность на себя. У них извечный вопрос - "А Вы то тогда нам на что ?"
19. Xershi 1479 22.12.16 14:03 Сейчас в теме
(18) ну раз такие вопросы говорят, значит все понятно=))
6. v3rter 22.12.16 10:57 Сейчас в теме
На уровне батника так:
tasklist /FI "IMAGENAME eq 1cv8.exe" /FI "USERNAME eq %username%"
"*" в tasklist не прокатывают, поэтому возможно придется вызывать 3 раза для 1cv8.exe, 1cv8с.exe и 1cv8s.exe и анализировать результаты.

Есть некоторые шансы переделать запрос через COM-объект из http://infostart.ru/public/142715/

И можно копнуть в сторону скрипта на powershell
9. vadim1011985 99 22.12.16 11:09 Сейчас в теме
(6)
tasklist /FI "IMAGENAME eq 1cv8.exe" /FI "USERNAME eq %username%"


Это хороший вариант , надо попробовать , можно думаю только 2 раза запускать , так как 1cv8s.exe это только вызов списка баз он не сильно грузит систему
13. v3rter 22.12.16 12:09 Сейчас в теме
Подменить ярлык 1С на общем рабочем столе сервера на ярлык к батнику со значком 1С. Для сообщения об ошибке можно использовать
rem chcp 1251
rem команда выше может пригодиться, чтобы не перекодировать сообщение об ошибке в кодировку 866
msg %username% Превышено максимально допустимое количество запущенных баз!
17. v3rter 22.12.16 13:41 Сейчас в теме
Я бы помониторил сервер на предмет в каком месте тормоза и затыки. Может оперативной памяти надо увеличить или диск(овый массив) не справляется с количеством одновременных потоков. Хотя если база файловая - большого эффекта не будет.
20. Dart_Moll 08.05.19 09:04 Сейчас в теме
Актуально для меня. Есть готовое решение?
21. beletskyy 14.06.19 12:05 Сейчас в теме
22. angeliccare 97 26.11.23 13:52 Сейчас в теме
Вязка-то вам зачем?

памяти надо увеличить или диск(овый массив)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот