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

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

Показать

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

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

Необходимо что бы пользователь работал только с тремя базами (например он запустил 3 сеанса Базы БП №1 ) и при попытки запустить любой другой сеанс выдавалось бы предупреждение
10. Денис Ан (Denis_CFO) 8 22.12.16 11:12 Сейчас в теме
(5) Да, позже уже увидел, что базы разные. В (6) ваш вариант.
7. Максим Б (Xershi) 330 22.12.16 11:04 Сейчас в теме
(1) можно просто запретить запуск второго сеанса одной и той же базы и все!
8. Вадим Мориков (vadim1011985) 45 22.12.16 11:06 Сейчас в теме
(7) Это не решит проблему , так как пользователь может запустить 6 разных баз - проблема в том что баз много
11. Максим Б (Xershi) 330 22.12.16 11:44 Сейчас в теме
(8) так что пользователю запрещать пользоваться базами?
Ну тогда это уже к админам. Скорее всего можно включить политику на количество запущенных процессов 1С.
Но подход у вас не правильный, просто объясните, чтобы не открывали много баз, раз у вас сервер слабый вот и все!
12. Вадим Мориков (vadim1011985) 45 22.12.16 11:52 Сейчас в теме
(11) Да 100500 раз уже объясняли - пару недель держатся а дальше все по старому (а полная Ж в отчетный период ) , а потом звонят и жалуются что 1с не фига не работает. (ОСВ по счету по одному контрагенту формируется более 30 минут !!!!) А поход я думаю корректный вы же не работаете с более 4-мя базами одновременно 3 еще куда не шло , но более 3-х баз которые каждая из которых съедает 200 Мб памяти и при этом простаивает и к тому же мешает работать другим у которых запущен только 1 сеанс более чем корректен
14. Максим Б (Xershi) 330 22.12.16 13:12 Сейчас в теме
(12) ну так вариант с килянием 1С очень плох, улучшайте сервер!
Или сделайте общий монитор и пусть сами регулируют, кто должен сидеть или нет!
15. Вадим Мориков (vadim1011985) 45 22.12.16 13:22 Сейчас в теме
(14) Мы фирма франч и просто обслуживаем клиентов, про сервер уже говорили - это вопрос их системных администраторов (которые кстати уволились недавно) но вопросы по 1с ложится на наши плечи. И практически получается Пинг-Понг мы отсылаем к системным админ. типа сервер уже не справляется с нагрузкой , а они к нам типа сервер работает нормально и проблема в 1с. А клиенту важно что бы все работало и не важно чья это проблема. Пока решение "килять процессы 1с" вижу как временное решение проблемы , которое к тому же будет обсуждаться с клиентом , если предложенный способ будет работать
16. Максим Б (Xershi) 330 22.12.16 13:24 Сейчас в теме
(15) как я предложил дайте инструмент, а как им пользоваться пусть сами решают, потому что проблема системная!
18. Вадим Мориков (vadim1011985) 45 22.12.16 13:52 Сейчас в теме
(16) Ну вы что клиентов не знаете ? Улучшение сервере - конечно вариант , тут надо дождаться новых системных администраторов. Но вот монитор и что бы сами решали - это перебор , не будут они брать такую ответственность на себя. У них извечный вопрос - "А Вы то тогда нам на что ?"
19. Максим Б (Xershi) 330 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) 45 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 Сейчас в теме
Я бы помониторил сервер на предмет в каком месте тормоза и затыки. Может оперативной памяти надо увеличить или диск(овый массив) не справляется с количеством одновременных потоков. Хотя если база файловая - большого эффекта не будет.
Оставьте свое сообщение