gifts2017

Завершение работы пользователей

Опубликовал Иван (SinglCOOLer) в раздел Администрирование - Защита, права, пароли

!Обновление от 12.03.2012!. Следующая версия обработки завершения работы пользователей. Обработка находится в alpha тестировании. На данный момент работает обычная форма. Управляемая форма создана, но на ней нет функционала. Обработку так же можно запускать как внешнюю, с ограниченным функционалом (описание см ниже). Решил выложить обработку, дабы не забросить проект, т.к. текущая работа забирает фактически все время, а определенные наработки по 2 версии уже есть. Буду рад тесту, любым комментариям и помощи. По мере выявления ошибок буду стараться их исправлять.

Версия 12.03.2012

В новой версии учтены пожелания, указанные в предыдущей версии, переработан интерфейс. 

 

Основные возможности обработки:

  1. просматривать список активных пользователей (список отключенных пользователей);
  2. устанавливать действия не активным пользователям (к примеру сообщение при входе)
  3. быстрое отключением пользователей в два нажатия
  4. выбор шаблонов сообщений (если справочник есть в конфигурации)
  5. создание гибких шаблонов завершения работы
  6. сохранение настроек
  7. возможность использования как внешней обработки (с ограниченными возможностями)
  8. задавать кто не будет отключен для сервисной работы;
  9. установка монопольного режима (автоматическая установка монопольного режима при выходе всех пользователей)
  10. выдержка времени не подключения;
  11. запрет подключения к базе в течении определенного времени;
  12. отправка сообщений пользователям (3 вида отправки)
  13. гибкое оповещение о необходимости выхода
  14. запрет работы пользователей пока конфигурация не совпадает с конфигурацией БД
  15. не ограниченное количество режим заврешения работы с возможностью написания вставок кода
  16. отображение информации о пользователях, которые ограничены в подключении к ИБ, а так же оставшееся время ограничения
  17. гибкая система разрешения входа в ИБ
  18. возможность быстрого продления ограничения доступа на 5 или 10 - 15 минут

Если конфигурацию не хочется дорабатывать то данную обработку можно запускать как внешнюю. При внешнем запуске обработка использует стандартный механизм блокировки пользователей. Для удобства использования на форму добавлена галочка "Дописать новый код разрешения в параметры запуска". Если данныя галочка установлена, то при установке  блокировки код доступа будет дописан в параметры запуска текущей ИБ с сохранением уже установленных параметров запуска.

 

В случае доработки конфигурации

1. необходимы объекты есть в cf файле, который сделан на базе пустой конфигурации

список необхоимых объектов:

  1.1 Справочники   

    - ШаблоныСообщенийЗавершения    
    - ШаблоныЗавершенияРаботы    
    - ВариантыЗавершенияРаботы    

  1.2 Обработка    

    - ЗавершениеРаботыПользователейEX2    

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

    - ОтключениеПользователейEX    

  1.4 Перечисление  

    - ДействияСПользователямиEX

  1.5 Модуль обычного приложения

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


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

 1.6 Общий модуль

   - ОтключениеПользователейEX2

 

2. необходимо заполнить справочник "Варианты завершения работы"

При необходимости можно добавить свои варианты завершения, с необходимым кодом. 

Справочник пользователей заменять не нужно, он был добавлен чтобы были правильные ссылки в пустой конфигурации!

 

Версия 06.09.2011 

Пояснения по начальному встраиванию в конфигурацию можно так же смотреть тут http://store-1c.blogspot.com/2011/03/1_27.html (если что то не получается Smile)

Основные возможности обработки:

  1. просматривать список активных пользователей;
  2. задавать кто не будет отключен для сервисной работы;
  3. возможность быстрого отключения;
  4. установка монопольного режима;
  5. выдержка времени не подключения;
  6. запрет подключения к базе в течении определенного времени;
  7. отключение не всех пользователей.
  8. отправка сообщений пользователям
  9. гибкое оповещение о необходимости выхода
  10. 4 режима завершения
    1. Запрет дальнейшего подключения по установленному времени и отключение пользователей от ИБ
    2. Завершение работы пользователей, с возможностью дальнейшего подключения к ИБ
    3. Перезапуск сессии пользователя(ей) ИБ
    4. Завершение работы ИБ с подтверждением пользователя(ей)
  11. отображение информации о пользователях, которые ограничены в подключении к ИБ, а так же оставшееся время ограничения
  12. гибкая система разрешения входа в ИБ
  13. возможность быстрого продления ограничения доступа на 5 или 10 мину

 

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

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

Обращаю внимание на то что:

Для УПП, КА, УТ, БП необходимо изменить следующий код во всех модулях обработки 
ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя(); 
на следующий: 
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");

 

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

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

Измерения:

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

Ресурсы:

  • Отключить - Булево;
  • ЗапретПодключения - Булево;
  • БыстроеОтключение - Булево;
  • СостояниеОтключения - Строка, 30 символов, переменная;
  • Сообщение - Строка, 300 символов, переменная;
  • ДатаВремяПуска - Дата, Дата и время;
  • ОтключениеМинут - Число, 2 разряда; 
  • ПаузаДоОтключения - Число, 3 разряда, точность 2. 
  • ДействиеОтключения - Строка, 30 символов, переменная; 
  • ОбменСообщений - Строка, 255 символов

Общий модуль "доОтключениеПользователей"

Функция ИзСекундВчасы(Секунд = 0)

    Часов = Цел(Секунд/3600);
   
СекОстМин = Секунд%3600;
   
Минут = Цел(СекОстМин/60);
   
Сек = СекОстМин%60;
    Если
Часов < 10 Тогда
       
Часов = "0" + СокрЛП(Часов);
    Иначе
       
Часов = СокрЛП(Часов);
    КонецЕсли;
    Если
Минут < 10 Тогда
       
Минут = "0" + СокрЛП(Минут);
    Иначе
       
Минут = СокрЛП(Минут);
    КонецЕсли;
    Если
Сек < 10 Тогда
       
Сек = "0" + СокрЛП(Сек);
    Иначе
       
Сек = СокрЛП(Сек);
    КонецЕсли;
    Возврат
Часов + ":" + Минут + ":" + Сек;

КонецФункции

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

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

       
//---------------------------------------
       
Если СостояниеОткл = "Запрет подключения" Тогда
           
ДействиеЗавершения = "Запрет подключения";
           
СостОткл = "Ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = ВремяОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение");
           
#КонецЕсли
       
ИначеЕсли СостояниеОткл = "Запрет подключения +" Тогда
           
ДействиеЗавершения = "Запрет подключения";
           
СостОткл = "Мини ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = ВремяОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение");
           
#КонецЕсли

       
ИначеЕсли СостояниеОткл = "Завершение работы" Тогда
           
ДействиеЗавершения = "Завершение работы";
           
СостОткл = "Ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = ВремяОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение");
           
#КонецЕсли
       
ИначеЕсли СостояниеОткл = "Завершение работы +" Тогда
           
ДействиеЗавершения = "Завершение работы";
           
СостОткл = "Мини ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = ВремяОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение");
           
#КонецЕсли


       
ИначеЕсли СостояниеОткл = "Перезапуск ИБ" Тогда
           
ДействиеЗавершения = "Перезапуск ИБ";
           
СостОткл = "Ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = ВремяОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение");
           
#КонецЕсли
       
ИначеЕсли СостояниеОткл = "Перезапуск ИБ +" Тогда
           
ДействиеЗавершения = "Перезапуск ИБ";
           
СостОткл = "Мини ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = ВремяОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение");
           
#КонецЕсли

       
ИначеЕсли СостояниеОткл = "Завершение с подтверждением" Тогда
           
ДействиеЗавершения = "Завершение с подтверждением";
           
СостОткл = "Ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = ВремяОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение");
           
#КонецЕсли
       
ИначеЕсли СостояниеОткл = "Завершение с подтверждением +" Тогда
           
ДействиеЗавершения = "Завершение с подтверждением";
           
СостОткл = "Мини ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = ВремяОткл;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение");
           
#КонецЕсли


       
ИначеЕсли СостояниеОткл = "Ожидание" Тогда
           
Время = ВремяОткл;
           
Время = Время - 0.25;
           
//Состояние ("Ожидание выхода из системы через" + ИзСекундВчасы(Время * 60), 100,"Ожидание выхода из системы через" + ИзСекундВчасы(Время * 60), БиблиотекаКартинок.ДлительнаяОперация48);
           
Если Время = 0 Тогда
               
СостОткл = "Предупреждение +";
            Иначе
               
СостОткл = "Ожидание";
            КонецЕсли;
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = Время;
           
Запись.Записать();
        ИначеЕсли
СостояниеОткл = "Предупреждение +" Тогда
           
СостОткл = "Мини ожидание";
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = 2;
           
Запись.Записать();
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
Предупреждение(Запись.Сообщение,15,"Предупреждение!");
           
#КонецЕсли
       
ИначеЕсли СостояниеОткл = "Мини ожидание" Тогда
           
Время = ВремяОткл;
           
Время = Время - 0.25;
            Если
Время * 60 < 60 Тогда
                Если
Время * 60 = 0 Тогда
                   
ПоказатьОповещениеПользователя("Внимание! Завершение работы!", ,"Система завершает работу...");
                Иначе
                   
ПоказатьОповещениеПользователя("Внимание! Завершение работы!", ,"Работа в системе будет завершена менее чем через " + Строка(Время * 60) + " секунд");
                КонецЕсли;
            КонецЕсли;
           
//Состояние ("Ожидание выхода из системы через" + ИзСекундВчасы(Время * 60), 100,"Ожидание выхода из системы через" + ИзСекундВчасы(Время * 60), БиблиотекаКартинок.ДлительнаяОперация48);
           
Если Время = 0 Тогда
               
СостОткл = "Отключение";
            Иначе
               
СостОткл = "Мини ожидание";
            КонецЕсли;
           
Запись.СостояниеОтключения = СостОткл;
           
Запись.ПаузаДоОтключения = Время;
           
Запись.Записать();
        ИначеЕсли
СостояниеОткл = "Отключение" Тогда
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
               
СостОткл = "Сеанс выключен";
               
Запись.СостояниеОтключения = СостОткл;
               
Запись.Записать();
                Если
ДействиеОткл = "Запрет подключения" Тогда
                   
Сообщить("1С Предприятие завершает работу через 15 секунд...", СтатусСообщения.ОченьВажное);
                   
Сообщить("Сохраните все данные!", СтатусСообщения.ОченьВажное);
                ИначеЕсли  
ДействиеОткл = "Завершение работы" Тогда
                   
Сообщить("1С Предприятие завершает работу через 15 секунд...", СтатусСообщения.ОченьВажное);
                   
Сообщить("Сохраните все данные!", СтатусСообщения.ОченьВажное);
                ИначеЕсли  
ДействиеОткл = "Перезапуск ИБ" Тогда
                   
Сообщить("1С Предприятие будет перезапущено через 15 секунд...", СтатусСообщения.ОченьВажное);
                   
Сообщить("Сохраните все данные!", СтатусСообщения.ОченьВажное);
                ИначеЕсли  
ДействиеОткл = "Завершение с подтверждением" Тогда
                   
Сообщить("Установлено завершение работы пользователей, пожалуйста, завершите работу!", СтатусСообщения.ОченьВажное);
                КонецЕсли;
           
#КонецЕсли
       
ИначеЕсли СостояниеОткл = "Сеанс выключен" Тогда
           
#Если Клиент Тогда
               
Сигнал();
               
Сигнал();
               
Сигнал();
                Если
ДействиеОткл = "Запрет подключения" Тогда
                   
СтопПроверкиОтключения();
                   
Предупреждение("Система завершила работу!. Нажмите ""ОК"" для выхода", 5,"Внимание!");
                   
ПрекратитьРаботуСистемы();
                ИначеЕсли  
ДействиеОткл = "Завершение работы" Тогда
                   
СтопПроверкиОтключения();
                   
Предупреждение("Система завершила работу!. Нажмите ""ОК"" для выхода", 5,"Внимание!");
                   
ПрекратитьРаботуСистемы();
                ИначеЕсли  
ДействиеОткл = "Перезапуск ИБ" Тогда
                   
СтопПроверкиОтключения();
                   
Предупреждение("Система завершила работу!. Нажмите ""ОК"" для выхода", 5,"Внимание!");
                   
ПрекратитьРаботуСистемы(Истина);
                ИначеЕсли  
ДействиеОткл = "Завершение с подтверждением" Тогда
                   
ЗавершитьРаботуСистемы(Истина);
                   
СостояниеОткл = "Мини ожидание";
                   
СостОткл = "Мини ожидание";
                   
Запись.СостояниеОтключения = "Мини ожидание";
                   
Запись.БыстроеОтключение = Истина;
                   
Запись.ПаузаДоОтключения = 2;
                   
Запись.Отключить = Истина;
                   
Запись.Записать();
                КонецЕсли;
           
#КонецЕсли

       
ИначеЕсли СостояниеОткл = "Работа разрешена" Тогда
                   
Запись.СостояниеОтключения = "Ложь";
                   
Запись.БыстроеОтключение = Ложь;
                   
Запись.Отключить = Ложь;
                   
Запись.ЗапретПодключения = Ложь;
                   
Запись.ДействиеОтключения = "Ложь";
                   
Запись.Записать();
                   
Предупреждение("Работа в системе разрешена, можно продолжать работу!",15,"Предупреждение!");
   
//  КонецЕсли;
   
КонецЕсли;
       
//-----------------------------------------
       
Если Запись.ОбменСообщений <> "" Тогда
           
//ПоказатьОповещениеПользователя("Новое сообщение", ,Запись.ОбменСообщений);
           
Если Найти(Запись.ОбменСообщений, "#sys") = 0 Тогда
               
Сообщить(Запись.ОбменСообщений, СтатусСообщения.Информация);
               
Запись.ОбменСообщений = "";
               
Запись.Записать();
            Иначе
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
// ЦиклическийВызов()

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


Модуль обычного приложения (модуль управляемого приложения)

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

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

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Завершение работы пользователей EX 2 (версия 12.03.2012)
.epf 75,76Kb
12.03.12
719
.epf 75,76Kb 719 Скачать
Конфигурация с объектами (версия 12.03.2012)
.cf 157,25Kb
12.03.12
132
.cf 157,25Kb 132 Скачать
Обработка заполнения справочника "Варианты завершения работы" (версия 12.03.2012)
.epf 6,23Kb
24.05.12
89
.epf 6,23Kb 89 Скачать
Завершение работы пользователей EX (версия 06.09.2011)
.epf 22,61Kb
15.03.12
378
.epf 22,61Kb 378 Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Дмитрий Бухалов (Re:аниматор) 06.09.11 17:54
2. Иван (SinglCOOLer) 06.09.11 19:33
ахха )) видимо был уставший )) поправлю )
3. Яков Коган (Yashazz) 07.09.11 00:44
Это не обработка. Это подсистема. И в данном случае это минус, т.к. многое из предложенного запросто реализуемо без вмешательства в конфигурацию.
4. Иван (SinglCOOLer) 07.09.11 06:02
никто и не спорит, просто как вариант, в будущем все это будет дорабатываться, перерабатываться :)
5. Сергей Данилов (pencroff) 07.09.11 13:19
Yashazz пишет:

Это не обработка. Это подсистема. И в данном случае это минус, т.к. многое из предложенного запросто реализуемо без вмешательства в конфигурацию.

Не совсем понятно как можно реализовать отключение пользователей без изменения конфигурации? Объясните концепцию.
wadlos; SinglCOOLer; +2 Ответить 1
6. Иван (SinglCOOLer) 07.09.11 14:10
pencroff пишет:
Не совсем понятно как можно реализовать отключение пользователей без изменения конфигурации? Объясните концепцию.


тут видимо подразумеваются совсем минимальные изменения конфигурации ну или использование каких то сторонних средств, хотя и самому интересно услышать на будущее для новой версии )
7. Дмитрий Леонов (Psylocibine) 08.09.11 09:35
Мне тоже интересно) Как без вмешательства то?
И это... может стоит в виде cf это всё оформить?
8. ИН Север (i-sever) 08.09.11 15:54
9. Игорь Фрунзэ (gorodok11) 08.09.11 16:23
Для УПП, КА, УТ придется изменить следующий код во всех модулях обработки
ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
на следующий:
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");
SinglCOOLer; +1 Ответить
10. Иван (SinglCOOLer) 08.09.11 20:44
Спасибо за информацию, добавлю на главную страницу
11. FFFF FFF (Gasdrubal) 12.09.11 05:44
жаль. что не во все типовые конфигурации подобное внедряется, иногда приходится дописывать самому((

Код действительно некомпактный. Неплохо бы ужать.
12. Иван (SinglCOOLer) 12.09.11 08:07
Gasdrubal пишет: жаль. что не во все типовые конфигурации подобное внедряется, иногда приходится дописывать самому((
Код действительно некомпактный. Неплохо бы ужать.

Будет обязательно новая версия, переработанная, сейчас просто времени немного не хватает
13. Иванов Иван (slauter77) 12.09.11 09:28
Интегрировал в БП 2.20.1 платформа 8.2
Не работает!
Не выгоняет пользователей! Даже сообщения не выдает!
В чем может быть причина?
14. Иван (SinglCOOLer) 12.09.11 13:12
slauter77 пишет:

Интегрировал в БП 2.20.1 платформа 8.2

Не работает!

Не выгоняет пользователей! Даже сообщения не выдает!

В чем может быть причина?


посмотреть отладчиком идет ли вызов из модуля Общий модуль "доОтключениеПользователей" процедуры ЦиклическийВызов. Проверьте добавлен ли код в процедуру ПередНачаломРаботыСистемы (СтартПроверкиОтключения(Отказ)) и в тот ли модуль он добавлен (управляемое или обычное приложение)
15. Иванов Иван (slauter77) 12.09.11 20:57
Проверил под отладчиком. Вызов идет. Проблема видимо в том что функция ОпределитьТекущегоПользователя() в БП возвращает либо "истину" либо "ложь" а не самого пользователя. привожу саму функцию из БП (сорри за оверквотинг если че ;) ):

// Процедура создания пользователя.
// Параметры:
// Нет.
//
Функция ОпределитьТекущегоПользователя(ОписаниеОшибкиОпределенияПользователя) Экспорт

Перем ТекущийПользователь;

ИмяПользователя = ИмяПользователя();
ПолноеИмяПользователя = ПолноеИмяПользователя();

Если ПустаяСтрока(ИмяПользователя) Тогда
// пользователь не авторизовался
ИмяПользователя = "НеАвторизован";
ПолноеИмяПользователя = "Не авторизован";
КонецЕсли;

// Если для пользователя не указано полное имя -
// устанавливаем его равным имени пользователя
Если ПустаяСтрока(ПолноеИмяПользователя) Тогда
ПолноеИмяПользователя = ИмяПользователя;
КонецЕсли;

ОбъектПользователь = Справочники.Пользователи.СоздатьЭлемент();

ОбъектПользователь.Код = ИмяПользователя;
ОбъектПользователь.Наименование = ПолноеИмяПользователя;

Попытка

ОбъектПользователь.Записать();

Исключение

ОписаниеОшибкиОпределенияПользователя = "Пользователь : " + ИмяПользователя + " не был найден в справочнике пользователей. Возникла ошибка при добавлении пользователя в справочник.
|" + ОписаниеОшибки();
Возврат Ложь;

КонецПопытки;

ТекущийПользователь = ОбъектПользователь.Ссылка;
ПолныеПрава.УстановитьПараметрСеансаТекущийПользователь();


Набор = РегистрыСведений.НастройкиПользователей.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Использование = Истина;
Набор.Отбор.Пользователь.Значение = ТекущийПользователь;

// установим пользователю основную организацию
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Организации.Наименование,
| Организации.Ссылка
|ИЗ
| Справочник.Организации КАК Организации";
Выборка = Запрос.Выполнить().Выбрать();

КоличествоЗаписейВВыборке = Выборка.Количество();

Если КоличествоЗаписейВВыборке = 1 Тогда

// выбирать не из чего - запишем значения без лишних вопросов
Выборка.Следующий();
ОсновнаяОрганизация = Выборка.Ссылка;

ИначеЕсли КоличествоЗаписейВВыборке > 0 Тогда

#Если Клиент Тогда
ФормаВыбора = ПолучитьОбщуюФорму("ФормаВыбораОсновнойОрганизации");
ФормаВыбора.ТекущаяОрганизация = Справочники.Организации.ПустаяСсылка();
ФормаВыбора.ОткрытьМодально();
ОсновнаяОрганизация = ФормаВыбора.ТекущаяОрганизация;
#КонецЕсли

КонецЕсли;

Запись = Набор.Добавить();

Запись.Пользователь = ТекущийПользователь;
Запись.Настройка = ПланыВидовХарактеристик.НастройкиПользователей.ОсновнаяОрганизация;
Запись.Значение = ОсновнаяОрганизация;

Запись = Набор.Добавить();

Запись.Пользователь = ТекущийПользователь;
Запись.Настройка = ПланыВидовХарактеристик.НастройкиПользователей.ЗапрашиватьПодтверждениеПриЗакрытии;
Запись.Значение = Истина;

Запись = Набор.Добавить();

Запись.Пользователь = ТекущийПользователь;
Запись.Настройка = ПланыВидовХарактеристик.НастройкиПользователей.ПоказыватьВДокументахСчетаУчета;
Запись.Значение = Истина;

Запись = Набор.Добавить();

Запись.Пользователь = ТекущийПользователь;
Запись.Настройка = ПланыВидовХарактеристик.НастройкиПользователей.ОсновнойОтветственный;
Запись.Значение = ТекущийПользователь;

Запись = Набор.Добавить();

Запись.Пользователь = ТекущийПользователь;
Запись.Настройка = ПланыВидовХарактеристик.НастройкиПользователей.ЗапрашиватьВидОперацииПриВводеНового;
Запись.Значение = Истина;

Попытка

Набор.Записать();

Исключение

ОписаниеОшибкиОпределенияПользователя = "Ошибка при записи настроек нового пользователя.
|" + ОписаниеОшибки();
Возврат Ложь;

КонецПопытки;

#Если Клиент Тогда
Если НЕ Константы.НомерВерсииКонфигурации.Получить() = "" Тогда
Сообщить("Пользователь зарегистрирован в справочнике пользователей.");
КонецЕсли;
#КонецЕсли

Возврат Истина;

КонецФункции
16. Иван (SinglCOOLer) 13.09.11 07:22
Тогда нужно руководствоваться вот этим:

Обращаю внимание на то что:
Для УПП, КА, УТ, БП необходимо изменить следующий код во всех модулях обработки
ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
на следующий:
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");
17. Артур Аюханов (artbear) 13.09.11 15:40
SinglCOOLer пишет: Тогда нужно руководствоваться вот этим:
Обращаю внимание на то что:
Для УПП, КА, УТ, БП необходимо изменить следующий код во всех модулях обработки
ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
на следующий:
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");


ИМХО нужно этот код закинуть в Попытку Исключение
тогда обработка станет рабоочей в разных типовых конфах 1С
vanpip; Sas001; SinglCOOLer; +3 Ответить
18. Иван (SinglCOOLer) 14.09.11 13:47
19. Артур Аюханов (artbear) 14.09.11 17:46
(18) ОФФ. Напишу В плане обучения как Модератор пользователю:
понравилась чья-то фраза или предложение, поощри человека плюсом, не ленись :)
ЗЫ сам на плюс не напрашиваюсь :)
20. Sas001 (Sas001) 15.09.11 10:51
всё-таки хотелось бы без интеграции, а просто внешним отчётом. ИМХО, полезнее так будет. хотя для 8 ничего страшного в интеграции нет.
21. Sas001 (Sas001) 15.09.11 10:51
в любом случае спасибо за идеи и за код.
RexxS; SinglCOOLer; +2 Ответить
22. Иван (SinglCOOLer) 15.09.11 12:33
Sas001 пишет:

в любом случае спасибо за идеи и за код.


Всегда рад помочь. Сейчас как раз собираю мнения людей что как лучше сделать и какие то варианты. Планирую сделать чтобы обработку можно было использовать и как только внешнею с ограниченными возможностями так и встраивать ее :)
23. fasdf fds (zog) 16.09.11 11:21
Большое спасибо, понравилось
SinglCOOLer; +1 Ответить
24. Serg Kondrasgov (SergDi) 19.09.11 19:19
вкусная штука, вот только еще бы тонкий клиент прикрутить
SinglCOOLer; +1 Ответить
25. Иван (SinglCOOLer) 19.09.11 19:21
SergDi пишет:

вкусная штука, вот только еще бы тонкий клиент прикрутить


сейчас разрабатывается 2 версия, там будут более расширенные возможности + тонкий клиент
26. Сергей Рожков (Gribo) 21.09.11 12:11
27. vladimir vladimir (ozar) 23.09.11 00:01
Вещь нужная, жду выхода нового релиза, в этом слишком много кода менять надо...
SinglCOOLer; +1 Ответить
28. Иван (SinglCOOLer) 26.09.11 07:56
(26) Gribo, планирую закончить к 10 октября, сильно не тороплюсь стараюсь качественно писать
29. Pavel Y (Pashikuss) 26.09.11 11:43
30. Илья (i132) 27.09.11 10:54
Стоит добавить запрет на вход пока конфигурация не совпадает с конфигурацией базы данных: подгтовили обновление МД поросили всех выйти => внесли изменнеия => (можно входить) => запустили всех кого закрывали (если рабочее время)
SinglCOOLer; +1 Ответить 1
31. Иван (SinglCOOLer) 27.09.11 10:59
(30) i132, спасибо за идею, буду реализовывать. Если есть у кого то еще идеи и предложения буду рад услышать.
32. Vetal Mmmm (vetalm) 27.09.11 14:57
в первоначальной обработке присутствовала ошибка которая позволяла коимтообразом не "выганятся" пользователям. В данной разработке пофиксен баг?
SinglCOOLer; +1 Ответить
33. Vetal Mmmm (vetalm) 27.09.11 16:26
Еще предложение заменить полосу регулировки с вариантами отключения на переключатели - аргумент: не видно что скрывается за положениями полосы, пока не переключишь не узнаеш.
34. Vetal Mmmm (vetalm) 27.09.11 19:57
еще просьба - установить привязки элементов формы - невозможно развернуть форму на весь экран а в оригинальном виде видны только 2,5 строки с пользователями
35. Иван (SinglCOOLer) 27.09.11 20:00
vetalm пишет:

в первоначальной обработке присутствовала ошибка которая позволяла коимтообразом не "выганятся" пользователям. В данной разработке пофиксен баг?


поищу сей баг, тестеры поищут, думаю отловим
36. Иван (SinglCOOLer) 27.09.11 20:01
vetalm пишет:

Еще предложение заменить полосу регулировки с вариантами отключения на переключатели - аргумент: не видно что скрывается за положениями полосы, пока не переключишь не узнаеш.


согласен, в новой версии сей механизм проработан по новому, все будет более наглядно и гибко
37. Иван (SinglCOOLer) 27.09.11 20:02
vetalm пишет:

еще просьба - установить привязки элементов формы - невозможно развернуть форму на весь экран а в оригинальном виде видны только 2,5 строки с пользователями


эта недоработка уже устранена в новой версии, все растягиваемо во всех видах приложений
38. Иван (SinglCOOLer) 27.09.11 20:03
Всем спасибо за предложения!
39. Vetal Mmmm (vetalm) 27.09.11 20:13
также не работает быстрое (30 сек) отключение
SinglCOOLer; +1 Ответить
40. Иван (SinglCOOLer) 27.09.11 20:17
vetalm пишет:

также не работает быстрое (30 сек) отключение


спасибо, учту при разработке
41. Igor Александрович (igor_1c) 03.10.11 11:54
я аналогичную систему делал на 7.7. Очень устал выгонять пользователей по телефону, особенно когда они уходят на обед. Единственное -открытые документы не сохранялись. Другая проблема возникла: пока выгоняю одних - другие уже заходят. Поэтому пришлось - ставить блокировку на вход
42. Alex Tim (Qseft) 05.10.11 16:17
Интерфейс понравился, удобно.
43. Иван (SinglCOOLer) 09.10.11 21:16
Всем привет. Для тех кто ждет новый релиз: к сожалению он задерживается, работы ведутся но не так быстро как рассчитывал, очень много повседневной работы наволилось навалилось :(
44. Vetal Mmmm (vetalm) 10.10.11 15:37
:( хех ждемс.

Еще мысль "вслух": Добавить сюда возможность, как один из вариантов, использование штатной блокировки (через БлокировкаСеанса).
SinglCOOLer; +1 Ответить
45. Иван (SinglCOOLer) 13.10.11 11:56
vetalm пишет:

:( хех ждемс.



Еще мысль "вслух": Добавить сюда возможность, как один из вариантов, использование штатной блокировки (через БлокировкаСеанса).


Спасибо за идею, такая возможность уже реализована.
46. Виктор Шеверов (dawnds8) 13.10.11 12:00
+++++ Спасибо!!! месяц бегал по конторе, как ошарашенный вырубал всех.. а тут нажал и все.. спасибки удружил))) ну все.. бойся бухгалтер)))) всех поотрублю...............................)))))))))))))))))))))))
SinglCOOLer; +1 Ответить
47. leo ks (KS_LEO) 14.10.11 13:41
вот спасибо, давно искал что то этакое, и наконец то нашел. автору респект и +
SinglCOOLer; +1 Ответить
48. Иван (SinglCOOLer) 14.10.11 13:47
dawnds8 пишет:

+++++ Спасибо!!! месяц бегал по конторе, как ошарашенный вырубал всех.. а тут нажал и все.. спасибки удружил))) ну все.. бойся бухгалтер)))) всех поотрублю...............................)))))))))))))))))))))))


ахаха )) скоро выйдет новая версия, еще более беспощадная :)
49. Vetal Mmmm (vetalm) 28.10.11 16:47
:-) видимо автор готовит целый арсенал репресивных методов убиения нерадивых бухгалтеров
50. Иван (SinglCOOLer) 31.10.11 07:26
(49) vetalm, это да )) хочу охватить все возможные методы, так сказать, в одном месте, на данный момент готово где-то 60%
51. see1c ru (see1c.ru) 31.10.11 20:31
Немного протестил:

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

2. Ставлю время отключения через 3 минуты, включение через 5 мин. по прошествии 10 минут захожу под отключенным пользователем , его состояние отключения "Не активно".

Общие пожелания:

Подразумевается, что список пользователей в базе не маленький, предлагаю расширить табличное поле "СписокАктивныхПользователей", а то больше 2-х пользователей не помещается.

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

Поле "Сообщение" узкое.

Кнопки со скрытыми пунктами тоже не очень удобны.

Желательно добавить Управляемую форму.
SinglCOOLer; +1 Ответить 1
52. Иван (SinglCOOLer) 01.11.11 07:27
(51) see1c.ru, спасибо за тест, теперь по пунктам

1) Хорошее замечание, обязательно учту это
2) Сейчас механизм отключения перерабатывается, надеюсь подобных проблем удастся избежать

По пожеланиям. Сейчас все формы полностью растягиваемые, механизм выбора варианта завершения переработан. Над полями сообщений тоже поработал, теперь они гораздо больше, в т.ч. переработаны и кнопки. Управляемая форма будет, собственно сейчас в основном из за нее и замедляется процесс разработки, т.к. приходится отлаживать работу и для обычной формы и для управляемой + в управляемых формах есть определенные сложности.
sergson1; +1 Ответить
53. Svetlana Ivanova (che444) 15.11.11 10:19
+ автору за классный инструмент в моем арсенале
SinglCOOLer; +1 Ответить
54. haris haris1 (sergson1) 15.11.11 10:34
Порой даже мелкие нюансы работы очень важны, обработка классная. Давно искал большое спасибо!!!
55. Иван (SinglCOOLer) 17.11.11 12:58
спасибо за добрые слова, тем кто ждет 2 версию, обычное приложение полностью готово, остается до насадить все на управляемую форму :)
56. Антон Котов (Attest) 21.11.11 14:47
Спасибо долго искал, судя по описанию наиболее адекватный продукт. Скачаю протестирую. Заранее благодарен!
57. Alex Berc (bercut0077) 26.12.11 12:26
Спасибо, автору + , жаль не работает в управляемом интерфейсе (Тип не определен Запрос) планируется ли расширить функционал для управляемого интерфейса и когда ждать обновлений?
58. Vetal Mmmm (vetalm) 04.01.12 19:27
Автор в этом то году порадуешь нас обновлением?
59. Андрей (andru_dv) 06.01.12 21:57
Полезная вещь, тоже хочу спросить.
Когда будет обновление для управляемого интерфейса?
60. Олег Тымко (olegtymko) 06.01.12 22:11
(59) andru_dv, поддерживаю) скорее бы)
61. Maksim (Massimo) 10.01.12 12:27
спасибо за обработку...
помогите с решением проблемы, при открытии обработки выдает эту ошибку:
{ВнешняяОбработка.доОбработкаОтключения.МодульОбъекта(133)}: Поле объекта не обнаружено (доОтключениеПользователей)
	ОтклПользователей = РегистрыСведений.доОтключениеПользователей;

типовая конфа УПП 1.3.20.1
как бороться?
62. Maksim (Massimo) 10.01.12 12:41
паходу без правки УПП'шной конфигурации эту обработку не запустить((, жаль. не хотелось бы сниматься с поддержки 1с.
63. Иван (SinglCOOLer) 11.01.12 08:34
День добрый, не было никак времени посмотреть, сегодня думаю посмотрю вечером что это такое. Времени свободного совсем нет. Самое главное избежать в новой версии подобного.
67. aaa aaa (a_a) 16.02.12 08:31
По большому счету такой функционал редко нужен, да и допиливать конфигурацию ради корректного выхода пользователей тоже лишнее, использую намного более простые вещи и доволен как слон.
69. Иван (SinglCOOLer) 12.03.12 12:34
Версия обновилась. Учел комментарии по предыдущей, переработал интерфейс.
71. Алексей Ко (Жолтокнижниг) 13.03.12 17:20
зачем такие извращения /CЗавершитьРаботуПользователей (поддерживается всеми станд конфигами) и все робит
72. Алексей Ко (Жолтокнижниг) 13.03.12 17:22
зачем такие извращения /CЗавершитьРаботуПользователей (поддерживается всеми станд конфигами) и все робит, более подробно тут http://infostart.ru/public/63716/ и тут http://infostart.ru/public/104654/
73. Иван (SinglCOOLer) 13.03.12 20:54
(72) Жолтокнижниг, ну не спорю что все робит, только в чем извращения? разные методы.
74. Алексей Ко (Жолтокнижниг) 13.03.12 21:59
Извращения, на мой взгляд, в правке конфиги и дальнейшей ее поддержке ( когда обслуживаешь не одну базу а неколько десятков организаций с разными конф), хотя я еще не смотрел твое творение
75. Алексей Ко (Жолтокнижниг) 13.03.12 22:00
первое замечание. как уже писалось почему в код не засунуть обработку конфиги или же попытка-исключение, также предусмотреть поддержку конф других поставщиков, надо создавать универсальные, легкие инструменты
76. Алексей Ко (Жолтокнижниг) 13.03.12 22:32
и еще обрати внимание на такой код в
Процедура КонтрольРежимаЗавершенияРаботыПользователей() Экспорт
...
Если НЕ ЗначениеЗаполнено(ВремяНачалаБлокировки)
ИЛИ ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалПрекратить Тогда

ПрекратитьРаботуСистемы(Истина);
...

те почти мгновенное отключение пользователей.

Еще одним пожеланием было бы, возможность выполнения какой либо операции после блокировки(обработка, скрипт и т.д) тогдаб цены ей не было ;)
77. Иван (SinglCOOLer) 14.03.12 07:52
(74) Жолтокнижниг, по поводу правки конфигурации - каждому своё, хочешь правишь - хочешь нет. Для этого она умеет запускаться как внешняя обработка. Некоторые места действительно могут быть написаны не совсем оптимально, как говорится нет предела совершенству, да и я указал что это достаточно сырая alpha (не причесанная)версия. По поводу пожеланий буду делать список, по возможности добавлять.
...
Если НЕ ЗначениеЗаполнено(ВремяНачалаБлокировки)
ИЛИ ВремяНачалаБлокировки - ТекущийМомент <= ИнтервалПрекратить Тогда

ПрекратитьРаботуСистемы(Истина);
...

Не совсем про это понял, там есть возможность в настройках поставить выдерживание дополнительной паузы перед отключением.
78. Гость 14.03.12 11:05
Для конфигураций Управление торговлей, комплексная автоматизация и управление производственным предприятием необходимо будет изменить следующий код во всех-всех модулях обработки
ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
на следующий код:
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");
SinglCOOLer; +1 Ответить 1
79. Иван (SinglCOOLer) 14.03.12 13:56
(78) Гость, спасибо за комментарий, добавлю в список исправлений
80. Dimon (klel) 14.03.12 19:40
Спасибо друзья за такую разработку :) будем смотреть и пробовать в будущем понадобится =)
81. Программулькин (Программулькин) 15.03.12 06:25
коменты не читал, сильно в нюансы не вникал. Скачал *.cf объединил со своей конфигурацией (добавил всё кроме свойств и справочника пользователей). и НЕ работает.Я в расстройстве. Не работают ни блокировки, ни сообщения.
Минус ставить не охота. Что не не так? моя конфа: Зарплата и Управление Персоналом, редакция 2.5 (2.5.47.1) клиент-серверная версия. SQL 2005
82. Иван (SinglCOOLer) 15.03.12 07:30
(81) Программулькин, справочник заполнили? обычно так не работает когда нет кода


Модуль обычного приложения

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


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


или не заполнен справочник "Варианты завершения работы" (см описание)

Сейчас специально скачал свой CF накатил его на нетиповую 1С:Предприятие 8.2 (8.2.13.205) Зарплата и Управление Персоналом, редакция 2.5 (2.5.31.4), все сработало.

Проверьте пожалуйста. За то, что не стали минус ставить сходу, спасибо :)
83. Программулькин (Программулькин) 15.03.12 08:33
да, справочник пустой. Вот рекомендация: либо в справке, либо ещё как добавить стандартное заполнение справочника, главное что бы было очевидно, как его заполнять,и можно было "на лету" (без разбора кода) разобраться (тупо нету времени, а вечером не охота...лень, лучше жене время уделить...). Есть шаблон заполнения справочника?
Идея, и функционал хорошие, (я бы по другому переделал, но лень, может потом на досуге), подобные видел, щупал, не устраивали, а это ничего так, нормально.
SinglCOOLer; +1 Ответить 1
84. Иван (SinglCOOLer) 15.03.12 08:42
(83) Программулькин, шаблон есть в виде картинки в описании, а вообще идея хорошая, сделаю мехинзм, который будет проверять заполненность предопределенных элементов автоматически :)
85. Иван (SinglCOOLer) 15.03.12 10:15
Добавил обработку заполнения справочника "Варианты завершения работы"
86. Яков Коган (Yashazz) 15.03.12 13:48
(5) А вы посмотрите http://infostart.ru/public/75853/ и узнаете, что все эти операции можно делать, нисколько не меняя конфигурацию.
87. Иван (SinglCOOLer) 15.03.12 13:53
(86) Yashazz, там есть одно НО, только для клиент серверного варианта. Глубоко сомневаюсь что все кто качают обработки подобные моей, работают именно с клиент - сервером.
90. Александр Крынецкий (echo77) 18.03.12 21:27
(87) Если используется файл-серверный вариант, то выход пользователя из базы реализуется путем убийства процесса 1С на стороне клиента - это аварийный вариант, он не очень хороший, но не требует вмешательства в конфигурацию
91. sumixam (sumixam) 29.06.12 09:22
вещь очень полезная жду под управляемое приложение
92. Иван (SinglCOOLer) 03.10.12 15:17
(91) sumixam, пока времени совсем нет
93. Евгений Рачковский (eugen91) 06.12.12 15:49
На первый взгляд позволяет решать многие задачи. Будем знакомится более подробно.
94. Серж Иванов (adminfo2002) 26.02.13 09:10
В бухгалтерии выскакивает ошибка, не работает

{ВнешняяОбработка.ЗавершениеРаботыПользователейEX2.МодульОбъекта(122)}: Недостаточно фактических параметров
ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
95. Константин Щукин (sotona13) 17.07.13 10:20
ЗКБУ 8.2 отказывается
почему- сам не знаю
файловый вариант
96. Людмила Горбунова (buhkaz) 05.08.13 21:55
Добрый день!
В публикации Вы написали:
Обращаю внимание на то что:
Для УПП, КА, УТ, БП необходимо изменить следующий код во всех модулях обработки
ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
на следующий:
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");


Дело в том, что я просто бухгалтер и мне сложно самой это сделать. Но мне очень нужна данная обработка, так как часто приходится перепроводить и удалять документы в монопольном режиме. У меня Комплексная автоматизация...
97. Иван (SinglCOOLer) 06.08.13 04:35
(96) buhkaz, попробую поправить
98. Тим К (nbv8608) 29.10.13 07:01
99. Наталья Афанасьева (natic18) 03.12.13 14:20
В УПП 1.3 объединил конфигурации, заполнил обработкой шаблоны. В результате работает половина функций, а самая главная - выгонять пользователей НЕ РАБОТАЕТ!!!.
100. Александр Лыткин (TrinitronOTV) 16.12.13 17:44
(92) SinglCOOLer, когда всё-таки появится данная обработка под управляемые формы?
101. Иван (SinglCOOLer) 16.12.13 18:18
(100) TrinitronOTV, очень сложный вопрос, времени свободного нет
102. Александр Дятченко (Alexander.Dyatchenko) 11.01.14 00:44
Отчего это у меня?

{МодульОбычногоПриложения(181,3)}: Процедура или функция с указанным именем не определена (СтартПроверкиОтключения)
<<?>>СтартПроверкиОтключения(Отказ);
{МодульОбычногоПриложения(496,4)}: Процедура или функция с указанным именем не определена (СтопПроверкиОтключения)
<<?>>СтопПроверкиОтключения();
103. Александр Дятченко (Alexander.Dyatchenko) 11.01.14 01:25
Полный провал с клиент-серверными взаимодействиями.
УПП 1.3 - НЕ РАБОТАЕТ - ЧАС потратил в пустую.
Автор! Обидно!
104. Nicholas Mikuslas (Nicholas) 11.02.15 12:25
Отличная разработка. Спасибо автору!
Для КА пришлось сделать замену на глТекущийПользователь как описано в описании установки, а также сделал общий модуль привелигированным, т.к. были проблемы с правами на не стандартных интерфейсах.
105. Андрей Андрей (Andru83) 13.07.15 15:28
106. Виктор Моисеев (movis08) 23.06.16 12:34
Любопытно опробовать))
Хотел сам написать, а тут такое
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа