1. vadim1011985 45 21.12.16 23:15 Сейчас в теме

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

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

Вакансии



Ведущий программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Руководитель проектов 1С
Москва
Полный день

Консультант-аналитик 1С: ЗУП
Санкт-Петербург
Полный день