Блокування роботи користувачів.
При підключенні компонента починає моніторити каталог ІБ на присутністю або відсутність сигнального файлу stop.work. При запуску з шедулера завдання для виконання автообміну спочатку запускається батник створення сигнального файлу в каталозі ІБ. При появі цього файлу, DLL через зовнішнє подія запускає в 1с обробку в модальному режимі, чим блокує роботу користувача. При спробі закриття обробка перевіряє наявність сигнального файлу. Після закінчення автообміну сигнальний файл видаляється іншим сорочки з короткими рукавами, DLL відправляє в 1с команду на закриття форми обробки.
В силу особливостей відлову зовнішнього події програмою 1с, може не завжди спрацьовувати.
В архіві: база для тестування обробки; зовнішня обробка; DLL з сорочки з короткими рукавами для реєстрації та видалення реєстрації; три батника, як приклад запуску автообміну.
Якщо ви більше не мають наміру використовувати цей приклад, то для скасування реєстрації DLL запустити UnRegAddIn.bat.
завантажити файли
1. Іван Іванов (Famza) 80 08.12.14 15:07 Зараз в темі
А навіщо блокувати роботу користувача - практичний приклад є? Чи не простіше виганяти?
Хоч би так:
Процедура ПроцессОбработкіОжіданія ()
Якщо Константа.РазрешітьЗапуск = Перечісленіе.Булево.Нет Тоді
Сигнал (); Сигнал (); Сигнал ();
Попередження ( "Збережіть роботу та закрийте програму!", 3);
Повідомити ( "Необхідно закрити програму!", ".");
ЗавершітьРаботуСістеми ();
КонецЕсли;
ОбработкаОжіданія ( "ПроцессОбработкіОжіданія", 120);
КонецПроцедури
// ************************************************ ******************************
// Зумовлена процедура
//
Процедура ПріНачалеРаботиСістеми ()
ОбработкаОжіданія ( "ПроцессОбработкіОжіданія", 120);
Якщо Константа.РазрешітьЗапуск = Перечісленіе.Булево.Нет Тоді
Попередження ( "Запуск програми заборонений адміністратором!", 3);
Якщо НазваніеНабораПрав () <> "Адміністратор" Тоді
ЗавершітьРаботуСістеми (0);
СтатусВозврата (0);
повернення;
КонецЕсли;
КонецЕсли;
.
А тих хто не побажає закритися - добити віддаленим доступом. ІМХО, все вірніше вигнати з програми, ніж блокувати роботу та ще й чекати спрацює чи ні -
В силу особливостей відлову зовнішнього події програмою 1с, може не завжди спрацьовувати.
Адже у користувача може ще висіти док на редагуванні, та модальне вікно вибору відкрито.
2. assa Петренко (assa) 55 08.12.14 17:16 Зараз в темі
(1) Наводжу практичний приклад. У базі близько 20 користувачів в різних будівлях по території заводу. Щогодини робиться обмінках. І постійно пачками вантажаться документи з різних зовнішніх додатків. Якщо ви вважаєте правильним щогодини виганяти користувачів, а тих хто не вийшов
А тих хто не побажає закритися - добити віддаленим доступом.
і після цього індексувати базу, то я вас переконувати не буду. Мені моє рішення підходить. ця фраза
В силу особливостей відлову зовнішнього події програмою 1с, може не завжди спрацьовувати.
3. Олександр Зубців (iov) 363 15.12.14 20:40 Зараз в темі
розгляньте варіант.
1) глобальна константа
2) отримати список процесів або наприклад наявність файлу можна і без ВК
3) обробка відкривається модально при виконанні умов і не закривається при наявності прапора константи
4) в загальному модулі процедура перевіряє умови виконання за часом кожні там 10 сек
5) в обробці процедура перевіряє прапор можливості закриття і закриває форму при закінченні обміну.
4. assa Петренко (assa) 55 16.12.14 9:03 Зараз в темі
(3) Можна зробити і так, але не хочу весь час крутиться ОбработкаОжіданія. Був варіант: відкриття форми і старт ОбработкаОжіданія в ГМ за подією з ВК, закриття форми з ОбработкаОжіданія в ГМ і там же зупинка самої ОбработкаОжіданія.
І так всіх влаштовує.
Созданіе08.12.14 13:42
Обновленіе08.12.14 13:42
Код откритНе вказано