Принудительное завершение работы пользователей информационной базы (файловый вариант)

Данная доработка позволяет программисту принудительно завершать работу пользователей ИБ в файловом режиме работы 1С

   Часто в работе программиста когда база работает в файловом варианте ( клиент-серверный вариант не берем там это возможно стандартными механизмами) возникает необходимость завершить работу некоторых пользователей которые например забыли выйти из программы.

 Доработка дает возможность принудительно выгонять выбранных нами пользователей в указанную дату и время.

описание доработки:

1. Добавляем в План видов характеристик «ПраваПользователей» в предопределенные данные новый элемент «ЗавершатьРаботуПользователя» тип Булево. Эта настройка появится по каждому пользователю в «настройке дополнительных прав» с помощью этой настройки будем указывать необходимость завершения работы.

2. Добавляем константу «ДатаЗавершенияРаботы» тип Дата состав: Дата + время. В эту константу будем записывать когда необходимо завершить работу.

3. В модуль «Модуль обычного приложения» в процедуру «ПриНачалеРаботыСистемы» добавляем текст

  //Проверяем необходимо ли завершать работу этого пользователя

   ЗавершатьРаботу = УправлениеПользователями.ПолучитьЗначениеПраваДляТекущегоПользователя      (ПланыВидовХарактеристик.ПраваПользователей.ЗавершатьРаботуПользователя,Неопределено);

   Если ЗавершатьРаботу.Количество() = 0 Тогда
          ВариантЗавершения = ложь; 
   Иначе
          ВариантЗавершения = ЗавершатьРаботу[0].Значение;
   КонецЕсли;

   Если ВариантЗавершения Тогда
          ПодключитьОбработчикОжидания(«ЗавершениеРаботыПользователей»,30); 
   КонецЕсли;

 

 4. Добавляем процедуру

   Процедура ЗавершениеРаботыПользователей() Экспорт

          ДатаЗавершения = Константы.ДатаЗавершенияРаботы.Получить();
          Если ЗначениеЗаполнено(ДатаЗавершения) Тогда
                  Если НачалоДня(ДатаЗавершения) = НачалоДня(ТекущаяДата()) Тогда 
                         Если (Час(ТекущаяДата()))=(Час(ДатаЗавершения)) Тогда 
                                 ПрекратитьРаботуСистемы();
                         КонецЕсли;
                  КонецЕсли;
          КонецЕсли;

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

 

5. Качаем прикрепленную внешнюю обработку для установки даты и времени завершения работы.

21 Comments

  1. kapustinag

    А имеющаяся в типовой УТ функция «Блокировка установки соединений с информационной базой» разве не делает уже именно то, что Вы написали? С единственным отличием: она выгоняет всех.

    Reply
  2. borrman

    (1) kapustinag, А она работает для файлового варианта?

    Reply
  3. SiAl

    (2) borrman, да.

    Reply
  4. GoodWinSpr

    типовой вариант лучше

    Reply
  5. tolyan_ekb

    Очередной велосипед. Поздравляю.

    Reply
  6. dmitrii665

    (2) borrman, Да она как раз для файлового варианта

    Reply
  7. ryabov_d

    Ну собственно такой вариант отключения от базы использовался и на 7.7

    В типовой обработке блокировки соединений в 8.2 видимо есть недоработки, поскольку не всех пользователей удается отключить (по крайней мере у нас), и все равно приходится обрывать соединение пользователей с тем компьютером, на котором лежит файловая база. А с приведеной выше обработкой завершение работы происходит на самом компьютере, который пользуется базой.

    Reply
  8. dmitrii665

    (1) kapustinag, Да, благодарю! Действительно не видел функционала «Блокировка установки соединений с информационной базой» поэтому было очень неудобно и пришлось допиливать самому. Действительно стандартный функционал лучше, но и этот вариант имеет место быть.

    Reply
  9. KonstB

    (8) Учите типовой функционал, дабы не изобретать велосипедов 🙂

    Reply
  10. Helleae

    В описании обработки указано, что она для УТ, а для БП или ЗУП её тоже можно использовать?

    Reply
  11. dmitrii665

    (10) Helleae, Идея останется та же, только необходимо будет использовать другой план видов характеристик (п.1 описания) и другую функцию получения значения из ПВХ (п.3) все остальное то же самое.

    Reply
  12. Helleae

    Спасибо.

    Reply
  13. friday1

    спасибо! давно искал для файлового варианта, везде были только клиент серверные

    Reply
  14. yalo

    Отключение пользователей в файловой варианте очень нужно. Спасибо

    Reply
  15. Tarlich

    1) Доработка дает возможность принудительно выгонять — не выгонять а не дает зайти (если я правильно все понял)

    2) Если у меня пользователей много мне тогда надо дописать что бы указать значение булево

    3) если у пользователей на компах дата неправильная то работать небудет

    4) по любому должен быть пользователь для которого данная переменная будет ложЬ и не дай бог случайно установить ее (а ну да можно обмануть датой)

    5) а не проще тогда использовать в связке не при начале работы системы а обрадотке ожидания?

    Reply
  16. Tarlich

    на сколько я понимаю ВЫГНАТЬ это значит вот мне сейчас надо что бы все прям сейчас вышли — а тут проверка только при входе в программу , много пользователей неделями не закрывают программу

    Reply
  17. dmitrii665

    (15) Tarlich, По пунктам:

    п.1 — Вы от части правы: вы неправильно поняли. Доработка дает возможность ВЫГОНЯТЬ! пользователей, а не «не дает зайти».

    п.2 — Если сложно руками проставить галочку по пользователям можете сделать обработку.

    п.3 — Согласен. Но у такого пользователя мало что будет корректно работать.

    п.4 — Желательно.

    п.5 — При начале работы системы подключается обработка ожидания, если со мной не согласны объясните.

    Вы правильно понимаете слово ВЫГНАТЬ и доработка как раз делает то, что вы описали: выключает пользователей тогда когда вам нужно.

    Пожалуйста, читайте информацию внимательно и осмысленно если собираетесь писать комментарии.

    Reply
  18. mr.Kot

    Жалко, что типовыми средставми выгонять нельзя. Типовая обработка не работает, если у пользователя открыто модальное окно. Хорошо хоть восьмёрка позволяет делать динамическое обноление, если просто поменял форму или код, а иначе бы такой обработкой приходилось бы по чаще пользоваться.

    Reply
  19. galexo

    А как войти в «Блокировку установки соединений с информационной базой»? Где она находится в УТ и в БП?

    Reply
  20. Vextel

    Интересное и простое решение.

    Но я сейчас думаю над тем, что бы сначала вежливо попросить пользователя выйти, потом уже закрывать. Но тут нужно подумать над цикличностью запуска обработчика ожидания.

    Плюс ещё нужно подумать над тем, что если вдруг пользователь действительно делает важные дела, перепроводит документы и т.д. Т.е. нужно как то может сначала мониторить активность, а не рубить сразу.

    Reply
  21. dmitrii665

    Спасибо за комментарий. Вы абсолютно правы, с плеча рубить при таком раскладе нельзя.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *