Имя: Пароль:
1C
 
Отключение пользователей 1С с помощью отчета(обработки)
0 vikamvl
 
07.02.07
11:55
Можно ли сделать через отчет 1с Отключение пользователей 1С (закрытие програмы 1С конкретного пользователя). Если можно то как? Может есть такие отчеты. Срочно надо!
1 ТелепатБот
 
гуру
07.02.07
11:55
2 noven
 
07.02.07
11:56
(0) Делал такое через обработку ожидания...
3 mergan
 
07.02.07
11:57
дбф или скуль?
4 noven
 
07.02.07
11:58
(+2) Правда было не через обработку, а в глМодуле,
5 mergan
 
07.02.07
11:58
(4)упыревый путь искаешь товарищ...
6 КапЛей
 
07.02.07
12:01
в ГМ вот такая процедурка

Процедура Чат() Экспорт
   Перем КонтекстФормы;
   
   //ЧАТ
   Текст = СоздатьОбъект("Текст");
   Каталог=КаталогИБ()+"Chat\";
   User=ИмяПользователя();
   
   Если ФС.СуществуетФайл(Каталог+User+".ch")=1 Тогда
       Текст.Открыть(Каталог+User+".ch");
       Если Текст.КоличествоСтрок()>0 Тогда
           Для Стр=1 По Текст.КоличествоСтрок() Цикл
               с = СокрЛП(Текст.ПолучитьСтроку(Стр));
               маркер = ".";
               Если с<>"" Тогда
                   Если Найти(с,"(i)")<>0 ТОгда
                       маркер = "i";
                   КонецЕсли;
                   Если Найти(с,"(!)")<>0 ТОгда
                       маркер = "!";
                   КонецЕсли;
                   Если Найти(с,"(!!)")<>0 ТОгда
                       маркер = "!!";
                   КонецЕсли;
                   Если Найти(с,"(!!!)")<>0 ТОгда
                       маркер = "!!!";
                   КонецЕсли;
                   Сообщить(с,маркер);
                   Сигнал();
                   Если Найти(с,"ЗавершитьРаботуСистемы")<>0 Тогда
                       предупреждение("Выполняется принудительный выход из системы",5);
                       пар = сред(с,найти(с,"(")+1,найти(с,")")-найти(с,"(")-1);
                       ЗавершитьРаботуСистемы(число(пар));
                   ИначеЕсли Найти(с,"ЗапуститьПриложение")<>0 Тогда
                       пар = сред(с,найти(с,"(")+1,найти(с,")")-найти(с,"(")-1);
                       ЗапуститьПриложение(пар);
                   ИначеЕсли Найти(с,"ОчиститьОкноСообщений")<>0 Тогда
                       пар = сред(с,найти(с,"(")+1,найти(с,")")-найти(с,"(")-1);
                       ОчиститьОкноСообщений();
                   КонецЕсли;
               КонецЕсли;
           КонецЦикла;
           Текст.Очистить();
           Текст.Записать(Каталог+User+".ch");
       КонецЕсли;
   Иначе
       ФС.КопироватьФайл(КаталогПользователя()+"1Cv7.LCK", Каталог+User+".ch", 1);
   КонецЕсли;
   
   Если БлокнотРедактируется=1  Тогда
       Возврат;
   КонецЕсли;
   
   Блокнот=СоздатьОбъект("Справочник.Блокнот");
   Надо=0;
   
   Блокнот.НайтиПоКоду(ИмяПользователя());
   Если (Блокнот.Выбран()=0) ИЛИ (Блокнот.ЭтоГруппа()=0) Тогда
       Возврат;
   КонецЕсли;
   Блокнот.ИспользоватьРодителя(Блокнот.ТекущийЭлемент());
   Блокнот.ВыбратьЭлементы();
   ТД = ТекущаяДата();
   Пока Блокнот.ПолучитьЭлемент()=1 Цикл
       Если (Блокнот.Повторить=1) И (ТекущееВремя()>=Блокнот.ВремяПовтора) Тогда
           Надо=1;
           Прервать;
       КонецЕсли;
       Если ТД > Блокнот.__ДатаПоказа Тогда
           ДатаОчередногоПоказа = ДатаОчередногоПоказа(Блокнот.ТекущийЭлемент());
           Если (ДатаОчередногоПоказа=ТД)И(ТекущееВремя()>=Блокнот.Время) Тогда
               Надо = 1;
               Прервать;
           ИначеЕсли (ТД>ДатаОчередногоПоказа)И((Блокнот.Периодичность<>0)ИЛИ(Число(Блокнот.__ДатаПоказа)=0)) Тогда
               Надо = 1;
               Прервать;
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   
   Если Надо=1 Тогда
       Блокнот.__ДатаПоказа = ТекущаяДата();
       Блокнот.Повторить=0;
       Блокнот.Записать();
       ОткрытьФорму(Блокнот.ТекущийЭлемент(),КонтекстФормы);
       КонтекстФормы.Форма.ИспользоватьСлой("Просмотр",1);
   КонецЕсли;
КонецПроцедуры

и все дружно покидают 1С
7 Мулька
 
07.02.07
12:03
(6) а с модальными окнами или остановившиеся на окне входа в 1С ?
8 КапЛей
 
07.02.07
12:03
(7) это уже не наша война. там клиенты пусть сами разбираются.
9 andrewalexk
 
07.02.07
12:20
(8)
:тогда можно и проще, через константу и обработку ожидания..поищи в сети
10 VasilyKushnir
 
07.02.07
12:56
Поспрошай у ромикса - по-моему у него есть прикольная вещица. А еще сейчас ссылок накопаю
11 mergan
 
07.02.07
13:00

--гоним зверье из базы
--только для скулятины
alter database market
set SINGLE_USER
with ROLLBACK IMMEDIATE
go
alter database market
set MULTI_USER
with NO_WAIT
go
12 VasilyKushnir
 
07.02.07
13:04
13 у лю 427
 
07.02.07
13:08
(9) юзер открыл модальное окно ..... и ты в пролете....
14 andrewalexk
 
07.02.07
13:24
(13)
:)
эт не я, это (6)...
на модальные окна нужно ставить тайм-аут - 95% из всех возможно
ну а по хорошему нет абсолютно корректной процедуры
ни tskill ни v7backup не помогут на 100%..
Ошибка? Это не ошибка, это системная функция.