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


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

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

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

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

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

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

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

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

Измерения:

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

Ресурсы:

  • Отключить — Булево;
  • ЗапретПодключения — Булево;
  • БыстроеОтключение — Булево;
  • СостояниеОтключения — Строка, 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 не будет опубликован. Обязательные поля помечены *