Выгонялка пользователей.


Данная разработка это первое что я решил выложить на этот дивный сайт. Она позволяет отключать пользователей штатными средствами. А так же их информирования о процессе отключения.

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

Обработка позволяет:

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

Доработка конфигурации:

  • Обработка настройки отключения (в приложении);
  • Регистр сведений;
  • Модуль приложения.

Регистр сведений

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

Измерения:

Пользователь — справочник пользователи, ведущее или основной отбор

Ресурсы:

  • Отключить — Булево;
  • ЗапретПодключения — Булево;
  • БыстроеОтключение — Булево;
  • СостояниеОтключения — Строка, 3 символа, фиксированная;
  • Сообщение — Строка, 300 символов, переменная;
  • ДатаВремяПуска — Дата, Дата и время;
  • ОтключениеМинут — Число, 2 разряда;  // до 99 минут
  • ПаузаДоОтключения — Число, 1 разряд. // от 3  до 5 минут

Модуль приложения

 

// Процедура контроля возможности подключения.
//
Процедура СтартПроверкиОтключения(Отказ) Экспорт
   
Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
   
Зп = Новый Запрос;
   
Зп.УстановитьПараметр(«Пользователь»,Пользователь);
   
Зп.Текст = «ВЫБРАТЬ
    | ргОтключениеПользователей.Пользователь,
    | ргОтключениеПользователей.ЗапретПодключения,
    | ргОтключениеПользователей.ДатаВремяПуска,
    | ргОтключениеПользователей.ОтключениеМинут,
    | ргОтключениеПользователей.ПаузаДоОтключения
    |ИЗ
    | РегистрСведений.ргОтключениеПользователей КАК ргОтключениеПользователей
    |ГДЕ
    | ргОтключениеПользователей.Пользователь = &Пользователь»
;
   
РезультатЗп = Зп.Выполнить().Выбрать();
    Если
РезультатЗп.Следующий() Тогда
        Если
РезультатЗп.ЗапретПодключения Тогда
           
НеПодключать = Ложь;
           
// Расчет времени не подключения
           
ТекДата = ТекущаяДата();
           
СтартДата = РезультатЗп.ДатаВремяПуска;
           
ВремяПаузы = (РезультатЗп.ОтключениеМинут + РезультатЗп.ПаузаДоОтключения) * 60;
           
ДельтаПаузы = ТекДата СтартДата;
            Если
ВремяПаузы > ДельтаПаузы Тогда
               
НеПодключать = Истина;
            КонецЕсли;
           
// Конец Расчета времени не подключения
           
Если НеПодключать Тогда
               
#Если Клиент Тогда
                   
Предупреждение(«Подключение запрещено. Ведутся сервисные работы.», 5, «Подключение…»);
               
#КонецЕсли
               
//Отказ = Истина;
           
КонецЕсли;
        КонецЕсли;
    КонецЕсли;
   
// Проверка и опрос состояния отключения
   
ПодключитьОбработчикОжидания(«ЦиклическийВызов»,15);
КонецПроцедуры
// СтартПроверкиОтключения()


// Процедура контроля отключения. Конечный автомат состояний отключения.
//
Процедура ЦиклическийВызов() Экспорт
   
ОтклПользователей = РегистрыСведений.ргОтключениеПользователей;
   
Отбор = Новый Структура(«Пользователь»);
   
Отбор.Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
   
ВыборкаРегистра = ОтклПользователей.Выбрать(Отбор);
    Пока
ВыборкаРегистра.Следующий() Цикл
       
Запись = ВыборкаРегистра.ПолучитьМенеджерЗаписи();
       
Запись.Прочитать();
       
СостОткл = Запись.СостояниеОтключения;
       
ВремяОткл = Запись.ПаузаДоОтключения;
       
Пр = Лев(СостОткл,1);
        Если
Пр = «А» Тогда
           
СостОткл = «Б» + Строка(ВремяОткл*4);
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,«Предупреждение»);
           
#КонецЕсли
       
ИначеЕсли Пр = «Б» Тогда
           
Время = Число(Прав(СостОткл,2));
           
Время = Время 1;
            Если
Время = 0 Тогда
               
СостОткл = «В»;
            Иначе
               
СостОткл = «Б» + Строка(Время);
            КонецЕсли;
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.Записать();
        ИначеЕсли
Пр = «В» Тогда
           
СостОткл = «Г» + Строка(ВремяОткл1);
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,«Предупреждение!»);
           
#КонецЕсли
       
ИначеЕсли Пр = «Г» Тогда
           
Время = Число(Прав(СостОткл,2));
           
Время = Время 1;
            Если
Время = 0 Тогда
               
СостОткл = «Д»;
            Иначе
               
СостОткл = «Г» + Строка(Время);
            КонецЕсли;
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.Записать();
        ИначеЕсли
Пр = «Д» Тогда
           
СостОткл = «Ш»;
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(«Извините но вы не предприняли никаких действий.»,5,«Отключение.»);
               
ЗавершитьРаботуСистемы();
           
#КонецЕсли
       
ИначеЕсли Пр = «Ш» Тогда
           
СтопПроверкиОтключения();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(«Тушим…»,5,«Отключение.»);
               
ПрекратитьРаботуСистемы();
           
#КонецЕсли
       
КонецЕсли;
    КонецЦикла;
КонецПроцедуры
// ЦиклическийВызов()


// Процедура контроля отключения.
//
Процедура СтопПроверкиОтключения() Экспорт
   
ОтклПользователей = РегистрыСведений.ргОтключениеПользователей;
   
Отбор = Новый Структура(«Пользователь»);
   
Отбор.Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
   
ВыборкаРегистра = ОтклПользователей.Выбрать(Отбор);
    Пока
ВыборкаРегистра.Следующий() Цикл
       
Запись = ВыборкаРегистра.ПолучитьМенеджерЗаписи();
       
Запись.Отключить = Ложь;
       
Запись.СостояниеОтключения = «К»;
       
Запись.Записать();
    КонецЦикла;
КонецПроцедуры
// СтопПроверкиОтключения()


Процедура ПередНачаломРаботыСистемы(Отказ)
   
// Типовый вызовы
   
СтартПроверкиОтключения(Отказ);
КонецПроцедуры


Процедура
ПриЗавершенииРаботыСистемы()
   
// Типовый вызовы
   
СтопПроверкиОтключения();
КонецПроцедуры

PS Первая проба пера. Если что не так пишите откорректирую.

UPD: Спасибо за рейтинг. Скачал Разукрашку. Обновил код.

UPD2: Поправил обязательную настройку регистра.

UPD3: Откорректировал процедуру кнопки отключить, заполнение регистра значений. Заполняется все отмеченные пользователи а не только последний.

Ребята читаем комментарии! Все вопросы по ошибкам там уже обсуждались! Следуя всем замечаниям перенес обработку из УТП в УПП (без дополнительного модуля) все заработало с первого раза.

99 Comments

  1. MRAK

    И где сама обработка?

    Reply
  2. pencroff

    To 1. Подправил. Обработку прекрепил

    Reply
  3. SiAl

    Приятно сделана.

    Reply
  4. artbear

    (0) 1. Код в публикации оформи нормально, нечитаемо — значит, нельзя проверить 🙁

    Например, можешь найти на сайте «Разукрашка» и с ее помощью раскрасить код 1С.

    2. Состояния отключения — Ш, К, Г и т.д — ну совершенно нечитаемо, неузнаваемо и т.д.

    3. Что будешь делать, если пользователь заблокировал свою 1С ?

    твой код отработает?

    Проверял на случай, если у пользователя открыта измененная форма какого-нибудь документа?

    Reply
  5. mbreaker

    хм… не совсем понял, в чём принципиальное отличие от Установки блокировки пользователей кроме «отключение не всех пользователей»?

    могу предположить, конечно, что это лично для работы любимого главбуха… но для него можно просто вывести отдельный ярлык для запуска 1cv8.exe с указанием ключа блокировки (/UC)… а для себя любимого и подавно…

    с монопольным режимом тоже лишний раз лучше не играться… это шаг назад к 7-ке… там где нужно он сам и установится, и снимется…

    не говорю, что это бесполезная вещь, кому-то наверняка понравится… но, честно сказать, ради такого я бы не стал менять конфу, чтобы потом из релиза в релиз заморачиваться каждый раз на перенос этого функционала…

    Reply
  6. pencroff

    To (4)

    Например, можешь найти на сайте «Разукрашка»/QUOTE]Если можно киньте на почту «Разукрашка», а то не могу скачать. Все поправлю.

    [IS-QUOTE]Состояния отключения — Ш, К, Г и т.д — ну совершенно нечитаемо, неузнаваемо

    Приму к сведению. Я тоже задумался над этим когда писал. Думаю что завтра откорректирую и выложу снова.

    Что будешь делать, если пользователь заблокировал свою 1С ?

    твой код отработает?

    Пользователь не может заблокировать сам себя. Возникает предупреждение.

    Проверял на случай, если у пользователя открыта измененная форма какого-нибудь документа?

    Не проверял и проверять не планирую. Для этого и дается пользователю от 3-х до 5-ти минут что бы все сохранить и выйти. Иначе просто выходим ничего не сохраняя. ПрекратитьРаботуСистемы();

    Reply
  7. pencroff

    to (5) для того что бы объеденять было очень просто все расположенно во внешней обработке и всего в трех процедурах в модуле приложения. Поэтому не вижу сложностей с объединением.

    Reply
  8. Yashazz

    Ещё бы режимы обозвать поприятнее, а то «Designer»… Впрочем, не ново. Coder1cv8 уже выкладывал такую, сугубо недурственную.

    Reply
  9. Psylocibine

    В файловом режиме работает?

    Reply
  10. pencroff

    (9) работает с любым вариантом системы. Для отключения пользователей используются вызовы:

    • ЗавершитьРаботуСистемы()
    • ПрекратитьРаботуСистемы()
    Reply
  11. Zexes

    А как насчет 8.2? =)

    Reply
  12. SergeyT2006

    А чем не устраивает КонсольКластеровСерверов — стандартная обработка от 1С?

    Reply
  13. Re:аниматор

    лучше сделать систему оповещения пользователям, чего кстати нет в стандарте

    Reply
  14. pencroff

    (13) Хорошая идея. Расширить функционал для системы оповещения.

    Reply
  15. davlen

    {Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)

    Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда

    Что это за ДополнительныйМодуль

    Reply
  16. pencroff

    (15) Сори. Не заметил. Это я написал аналог функции 7.7 ПустоеЗначение().

    Вот ее текст:

    // Аналог ПустоеЗначение из 7.7
    Функция ПустоеЗначение (Элемент = Неопределено) Экспорт
    Если Элемент = Неопределено Тогда
    Возврат Истина;
    КонецЕсли;
    ТипЭл = ТипЗнч(Элемент);
    Если ТипЭл = Тип («Строка») Тогда
    Возврат ПустаяСтрока(Элемент);
    ИначеЕсли ТипЭл = Тип («Дата») Тогда
    Возврат (Элемент = Дата(‘00010101000000’));
    ИначеЕсли ТипЭл = Тип («Число») Тогда
    Возврат (Элемент = 0);
    ИначеЕсли ТипЭл = Тип («Структура») Тогда
    Возврат Ложь;
    Иначе
    // Продолжить для всех типов
    Возврат ПустаяСтрока(Строка(Элемент)); // Пока так
    КонецЕсли;
    КонецФункции

    Показать

    Reply
  17. MRAK

    (12) она в файловом варианте работает? 🙂

    Reply
  18. Yashazz

    (16) А что, «ЗначениеЗаполнено» уже отменили?

    Reply
  19. pencroff

    (18) 🙂 Не знал. Посмотрю. Спасибо за подсказку.

    Reply
  20. sound

    Видимо, человек недавно с 8-кой, но чувствуется, что потенциал есть. С почином 🙂

    Reply
  21. pencroff

    (20) Спасибо

    Reply
  22. davlen

    {Форма.СервисФорма(114)}: Поле объекта не обнаружено (ргОтключениеПользователей)

    ОтклПользователей = РегистрыСведений.ргОтключениеПользователей;

    Reply
  23. pencroff

    (22) А вы читали текст статьи?

    Reply
  24. davlen

    (22)сори не внимательно читал 😀

    Reply
  25. markers

    Мой вариант: http://infostart.ru/public/21475/

    Reply
  26. pencroff

    Доброго дня. Ребята кто может скачать Разукрашку и выслать на почту. А то не могу. Не красивый какой то пост. А своего рейтинга не хватает. Спасибо всем кто поставил плюсик. Всем удачи.

    Reply
  27. SerG_121

    (25) markers твоя обработ норм но ета лучше, тем что она культурно выгоняет пользователей 🙂

    Reply
  28. pencroff

    💡 Ребята сделайте +1 пожалуйста хочу скачать «Разукрашку» и переоформить пост.

    Reply
  29. levank

    где взять ДополнительныйМодуль ?

    Reply
  30. pencroff

    (29) По подробнее пожалуйста про доп модуль. И прочтите все комментарии.

    Reply
  31. Andry.Boris

    Поставил… ошибок много… исправил…

    не работает… автор проверь и откорректируй…

    + только за старание

    Reply
  32. pencroff

    (31) Спасибо за +

    А если можно поконкретнее что за ошибки? А то у меня все работает 🙂

    Reply
  33. euphoria12

    Обработка в режиме 1с Предприятия не открывается, возникает ошибка:

    (Недопустимое значение параметра (параметр номер ‘1’) ВыборкаРегистра = ОтклПользователей.Выбрать(Отбор)).

    Регистр, обработку добавили, модуль приложения дополнили… Как быть, подскажите, пожалуйста.

    Reply
  34. pencroff

    (33)А что за конфигурация? Ошибка отбора из-за того что у вас не совпадают выборки из справочника пользователи измерение регистра? И есть ли вообще измерение Пользователь?

    Reply
  35. euphoria12

    (34) Измерение регистра — добавлено как написано, СправочникСсылка.Пользователи, Конфигурация — УПП 1.2(1.2.26.1) немного дописанная. Файловый вариант базы для проверки.

    При запуске 1С Предприятие происходит циклический вызов Процедуры контроля отключения (из модуля приложения) — и выдается подобное сообщение…хм (а также при запуске обработки)

    Reply
  36. euphoria12

    (35) УРАА, работает! нашла неувязку — обязательным должно быть свойство «Ведущее» для измерения РС. Спасибо.

    з.ы. единственное — при попытке изменения времени до отключения (<3,>5) ошибка:Метод объекта не обнаружен (Сообщение)

    ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    Reply
  37. pencroff

    (36) Спасибо за заметку. Вот Функция Сообщить.

    // Выводит ТекстСообщения в окне сообщений
    // ======================================
    // Детальность — число, определяет, к какому уровню детальности относится сообщение,
    // добавляются отступы соответственно уровню детализации.
    // Маркер — статус сообщения. Принимает значения: Инфо, Внимание, Важно, ОченьВажно, Обычное.
    // Другой маркер выводит сообщение без статуса.
    // Объект о котором формируется информация.
    //  Для документа выводится Название, номер, дата.
    //  Для справочника выводится Наименование, код.
    // Возможные значения для Детальность — 0/1/2/3
    Процедура Сообщение(ТекстСообщения, Детальность=0, Маркер=»», Объект = «») Экспорт
    Отступ = «»;
    ТекстОбъект = «»;
    ДопТекст = «»;
    ГлбинаОтступов = 3; //  MAX Колличество уровней детализации
    Если (Детальность <= ГлбинаОтступов) Тогда
    Для К=1 по Детальность Цикл
    Отступ = Отступ + »  «;
    КонецЦикла;
    Если НЕ ДополнительныйМодуль.ПустоеЗначение(Объект) Тогда
    // Обработка объекта
    СтрОбъект = Строка(ТипЗнч(Объект));
    Если Найти (СтрОбъект, «Документ») <> 0 Тогда
    ДлСтрОбъект = СтрДлина (СтрОбъект);
    НаименованиеОбъект = Найти (СтрОбъект, «:»);
    ТекстОбъект = Прав(СтрОбъект,ДлСтрОбъект — НаименованиеОбъект-1) + » № » + Объект.Номер + » от » + Формат(Объект.Дата,»ДФ=dd.MM.yy»)+ «: «;
    ДопТекст = Символы.Таб + Символы.Таб + Символы.Таб + Символы.Таб + «:Д»;
    ИначеЕсли Найти (СтрОбъект, «Справочник») <> 0 Тогда
    ТекстОбъект = Объект.Наименование + » № » + Объект.Код + «: «;
    ДопТекст = Символы.Таб + Символы.Таб + Символы.Таб + «:С»;
    КонецЕсли;
    КонецЕсли;
    Если Маркер = «Инфо» Тогда
    Маркер = СтатусСообщения.Информация;
    ИначеЕсли Маркер = «Внимание» Тогда
    Маркер = СтатусСообщения.Внимание;
    ИначеЕсли Маркер = «Важно» Тогда
    Маркер = СтатусСообщения.Важное;
    ИначеЕсли Маркер = «ОченьВажно» Тогда
    Маркер = СтатусСообщения.ОченьВажное;
    ИначеЕсли Маркер = «Обычное» Тогда
    Маркер = СтатусСообщения.Обычное;
    Иначе
    Маркер = СтатусСообщения.БезСтатуса;
    КонецЕсли;
    Сообщить(Отступ + ТекстОбъект + ТекстСообщения + ДопТекст, Маркер);
    КонецЕсли;
    КонецПроцедуры
    

    Показать

    Reply
  38. Supert1

    Вот такая ошибка:

    {Форма.СервисФорма(123)}: Метод объекта не обнаружен (ПустоеЗначение)
    Если ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда
    Reply
  39. pencroff

    (38) Читай комментарии. Этот вопрос уже подымали.

    Reply
  40. WKBAPKA

    правда ЗначениеЗаполнено не работает с мутабельными, тобишь составными, как я понял, значениями (слово же ругательное придумали, мутабельное)….

    Reply
  41. masson

    пожалуйста, подскажите, что сделал я неверно. При запуске обработки всплывает окно «Выбранный файл не является внешней обработкой. Либо данная обработка не предназначена для запуска в данной конфигурации.» конфигурация УПП 8.1.2.28.1 платформа 8.1.15.14 регистр сведений «ргОтключениеПользователей» в конфигураторе создал. Может быть не верно присоединил дополнительную обработку? Пожалуйста, подскажите.

    Reply
  42. pencroff

    (41) Обработку можно открывать и просто файлом. Через меню файл-открыть.

    Попробуйте еще раз скачать ее с сайта.

    Reply
  43. masson

    спасибо за рекомендации. вновь скачал epf-шник. снова после открытия сообщение : «…

    {Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)

    Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда

    {Форма.СервисФорма(193,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(198,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(207,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(212,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(288,5)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»);

    …»

    скорее всего что-то я упустил.

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

    Спасибо.

    Reply
  44. vbazaroff

    masson — а у тебя платформа какая ?

    Reply
  45. masson

    8.1.15.14 а необходима какая?

    Reply
  46. pencroff

    to (45) ваш ответ в (36) и в (16) Посмотрите эти комментарии и будет вам счастье 🙂

    Reply
  47. ZNW

    Проблема та же, что и у masson —

    при запуске ругается:

    {Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)

    Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда

    {Форма.СервисФорма(193,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(198,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(207,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(212,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(288,5)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»);

    🙁

    Платформа — 8.1 (8.1.14.72)

    Конфигурация — УПП 1.2 (1.2.28.1)

    Reply
  48. pencroff

    To (45) и (47) уважаемые. Ошибка возникает из-за того что когда я писал обработку то использовал уже написанные мной процедуры и функции приведенные в комментариях (36) и (16). Поэтому нужно либо создать модуль «ДополнительныйМодуль» и в него поместить эти функции. Или добавить их в обработку и покончить с ошибками.

    Reply
  49. ZergKRSK

    Эта штука на Бухгалтерии Предприятия попрет?

    Reply
  50. pencroff

    to (49) Да. Вся выгонялка построена на регистре сведение и 3-х процедурах в модуле приложения. Обработка которае здесь позволяет просто редактировать записи в регистре.

    Reply
  51. ZergKRSK

    Спасибо, скачаем и затестим!

    Reply
  52. lex872

    Прикольноя обработочка, жаль что она не работает с БП… Может их можно подружить?

    {Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)

    Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда

    {Форма.СервисФорма(193,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(198,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(207,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(212,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма(288,5)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»);

    Reply
  53. IfYouWant_YouCan

    откуда взялся дополнительныймодуль? ))

    Reply
  54. PRoman
     Следуя всем замечаниям перенес обработку из УТП в УПП (без дополнительного модуля) все заработало с первого раза.

    не заработало с первого раза 🙂

    Reply
  55. pencroff

    (54) А с какого?

    Reply
  56. ZZnOB

    Да… Очень жаль что не дружит с БП 😥

    Reply
  57. pencroff

    (56) Что такое БП и почему не дружит?

    Reply
  58. ZZnOB

    БП — Бухгалтерия Предприятия. А не дружит, потому что:

    {Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)
    Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда
    {Форма.СервисФорма(193,3)}: Переменная не определена (ДополнительныйМодуль)
    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
    {Форма.СервисФорма(198,3)}: Переменная не определена (ДополнительныйМодуль)
    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
    {Форма.СервисФорма(207,3)}: Переменная не определена (ДополнительныйМодуль)
    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
    {Форма.СервисФорма(212,3)}: Переменная не определена (ДополнительныйМодуль)
    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
    {Форма.СервисФорма(288,5)}: Переменная не определена (ДополнительныйМодуль)
    <<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»); 

    Показать

    Вот так ругается

    Reply
  59. itar59

    В файловом варианте все класс!!!!

    но в серверном увы…… и ах………

    Reply
  60. pencroff

    (59) Извините но какая разница какой вариант? Работа обработки не зависит от варианта. И что пишет в серверном варианте?

    Reply
  61. lookindenis

    на 1с: 7 аналог есть?

    Reply
  62. dmitn

    Выдает ошибки:

    {МодульПриложения(50,20)}: Переменная не определена (УправлениеПользователями)

    Пользователь = <<?>>УправлениеПользователями.ОпределитьТекущегоПользователя();

    {МодульПриложения(94,26)}: Переменная не определена (УправлениеПользователями)

    Отбор.Пользователь = <<?>>УправлениеПользователями.ОпределитьТекущегоПользователя();

    {МодульПриложения(172,26)}: Переменная не определена (УправлениеПользователями)

    Отбор.Пользователь = <<?>>УправлениеПользователями.ОпределитьТекущегоПользователя();

    Reply
  63. dmitn

    В общем, удалось адаптировать под свою конфигурацию. В целом понравилось 🙂 Ставлю плюс

    Reply
  64. kojinandrej

    Супер работает бомба!!! 😀 ❗

    Reply
  65. AndrChem

    Бухгалтерия предприятия 2.0

    получаю вот такое сообщение:

    {Форма.СервисФорма.Форма(14)}: Недостаточно фактических параметров

    Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();

    Reply
  66. Pro-tone

    Хорошая вещь, допиливать конечно под себя ее нужно еще, но я поставил +

    Автор:

    Предупреждение(«Извините но вы не предприняли никаких действий.»,5,»Отключение.»);

    ЗавершитьРаботуСистемы(); — сюда очень рекомендую поставить

    ЗавершитьРаботуСистемы(Ложь); либо ПрекратитьработуСистемы();

    потому что при Истина после вопроса о завершении работы юзеры жмут -«Нет», и их фиг выгонишь тогда,

    а вот потом когда они начнут заходить у них будет «Тушим» и отрубаться сразу.

    Автор, расшифруй, пожалуйста, префиксы состояний отключения в РС. А,Б,Ш,К и пр.

    Также я бы не стал оставлять флаг «Быстрое отключение» в положении Истина после отключения надо бы юзеру ставить Ложь туда,

    а если делаешь так, то добавить надо колонку в тч обработки твоей что-то типа «разрешено быстрое отключение».

    Reply
  67. Abadonna

    Начали баловаться в 8х тем, чем народ в 7.7 переболел? Курочить конфу… Абсолютно всё можно решить как стандартными методами самой 1С (8х), и так и сетевым администрированием.

    Reply
  68. Pro-tone

    (67) ну да, можно еще проблему решить силой звукового давления своих голосовых связок

    Reply
  69. Abadonna

    (68) Проблема решается спокойно программно теми, кто не только в 1С наловчился кодить

    Reply
  70. groundv

    {Форма.СервисФорма.Форма(123,9)}: Переменная не определена (ДополнительныйМодуль)

    Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда

    {Форма.СервисФорма.Форма(193,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма.Форма(198,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма.Форма(207,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма.Форма(212,3)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);

    {Форма.СервисФорма.Форма(288,5)}: Переменная не определена (ДополнительныйМодуль)

    <<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»);

    КА 8.2

    И где тут без Доп.модуля?

    Reply
  71. groundv

    После дописки «Дополнительного модуля» в конфе.

    получаем

    {ВнешняяОбработка.доОбработкаОтключения.МодульОбъекта(35)}: Метод объекта не обнаружен (ОпределитьТекущегоПользователя)

    ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();

    Reply
  72. Sas001

    плюс за идею кулюторного отключения, ну и за труды конечно же 😀

    Reply
  73. vetalm

    обработка отличная — но есть баг — какимто образом пользователям всеже удается «невыганятся» из 1с

    Reply
  74. fwa

    К сожалению не работает на платформе 8.2

    Reply
  75. ivn75

    жаль, что не работает на 8.2. Очень нужно

    Reply
  76. malina-da

    Спасибо за обработку, полезная вещь.

    Reply
  77. opolyakova

    не работает…

    Reply
  78. accnt

    хорошая,только по ходу конфу менять придется…

    Reply
  79. Foxux

    Жалко, что не пригодилась 🙁 Толи описание не соответствует, толи я что то неверно делал. В общем нашел альтернативный этой обработке путь. Но автору все равно спасибо за старание.

    Reply
  80. mhst

    спасибо автору, обработка понравилась

    Reply
  81. vovkakursk

    Спасибо автору

    Reply
  82. pencroff

    (73) vetalm,

    К сожалению я так и не разобрался почему не происходит отключения.

    Но это происходит когда уже запущена какая либо долго работающая операция.

    Reply
  83. Umka18

    Хорошая, только в конфу модуль вкорячивать неудобно..

    Reply
  84. Reticent

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

    Reply
  85. Drizer2000

    А что выгонялка только для УПП? Для БП 2.0 подойдет, по-идее такие вещи должны быть универсальны

    Reply
  86. sanja

    не закрывает базы. Где само отключение

    Reply
  87. kvandr

    Все хорошо работает, правда долго разбирался с настройкой

    Reply
  88. anna30

    прикольно!

    Reply
  89. Scukosan

    задумка хорошая, но реализация явно «сырая»

    чем то напомнило «тут читать, тут не читать, а тут я рыбу заворачивал..»

    Reply
  90. a_a

    обработка пригодилась, удобна в использовании

    Reply
  91. jiggli

    Большое спасибо! Очень пригодилась

    Reply
  92. OscarTT

    «Foxux»

    Жалко, что не пригодилась 🙁 Толи описание не соответствует, толи я что то неверно делал. В общем нашел альтернативный этой обработке путь. Но автору все равно спасибо за старание.»

    А что за альтернатива?

    Reply
  93. Fruit83

    Хорошая весчь. Спасибо.

    Reply
  94. luchyk007

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

    Reply
  95. pencroff

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

    Reply
  96. elizarovs

    Респект. Нужная программа!

    Пришлось немного подточить. В идеале, к публикации хорошо бы было приложить конфу, которую можно было бы встроить в мою. Самописанная конфигурация, пришлось добавить, само собой, описанные выше объекты. Проблема вышла с Измерением Пользователь в регистре (автор написал «ИЛИ», а нужно «И». Хорошо, что в комментариях добрые люди описали проблему). А по-настоящему пришлось помучиться с функцией «ОпределитьТекущегоПользователя()». Имеющаяся в УПП не подошла. Взял из ЗУП, подточил, всё заработало. В любом случае благодарен автору.

    Reply
  97. ZergKRSK

    (96) elizarovs, в УПП воспользовался глЗначениеПеременной(«глТекущийПользователь») для определния текущего пользователя и всё, допфункцию не городил

    Reply
  98. elizarovs

    (97) ZergKRSK, В УПП может быть. У меня-то самописанная. Думал из УПП готовую функцию к себе скопировать, о результатах написал, чтобы другим проще было.

    Reply
  99. Nata

    Спасибо пригодилось

    Reply

Leave a Comment

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