|
MsgBox Timeout из 1С | ☑ | ||
---|---|---|---|---|
0
Nuuq
21.09.12
✎
23:25
|
Всем добрый.
Не могу ограничить время жизни окна МсгБокса созданного в 1С82 [code1c] WScript = Новый COMОбъект("MSScriptControl.ScriptControl"); WScript.Language="vbscript"; Стр="Доступ ограничен"; Заг="1С:Предприятие"; WScript.ExecuteStatement("text="""+Стр+""""); WScript.ExecuteStatement("head="""+Заг+""""); WScript.ExecuteStatement("timeout="""+Формат(5,"ЧЦ=1")+""""); WScript.ExecuteStatement("prop=cint("""+(0+48+0+0)+""")"); Сообщить(WScript.Eval("msgbox(text,timeout,prop,head)")); [/code1c] Без параметра timeout работает и конешно не отваливается... Сеанс занимает... |
|||
1
France
21.09.12
✎
23:32
|
а использовать мессашабок 1Совский религия не позволяет?
|
|||
2
Nuuq
21.09.12
✎
23:40
|
>1
Политика партии сложилась, что надо запретить пользователю зайти в ИБ т.к. ограничено количество лицензий (не платформы, а спец.решения с ключом Katran). Количество лицензий Katran = 4 шт. Прописанных ИБ у пользователей = 7 шт. Требуется резерв для Администратора 1С = 1 шт. Таким образом = максимально подключенных пользователей к ИБ = 3 шт. ...можно отвалиться без предупреждения конечно, но все же хочется сообщить пользователю, что есть ограничения. |
|||
3
ILM
гуру
22.09.12
✎
19:24
|
(2) Вы ответ в (1) читали? У 1С-кого msgBox есть период таймаута...
|
|||
4
Nuuq
22.09.12
✎
21:53
|
Да, спасибо. Перемудрил с vbs :)
[code1c] Процедура ПередНачаломРаботыСистемы(Отказ) //... doMessageBox("Достигнуто максимальное количество лицензий",5,); //... Отказ = Истина; КонецПроцедуры [/code1c] |
|||
5
Nuuq
23.09.12
✎
16:25
|
Раз зашла речь об ограничении доступа - вот реализация:
Процедура ПередНачаломРаботыСистемы(Отказ) //Безусловное завершение работы программы Если НЕ(РольДоступна("Программист1С")) Тогда СчСеансов = 0; ТекСеансыИБ = ПолучитьСеансыИнформационнойБазы(); //v.1 //WScript = New COMObject("MSScriptControl.ScriptControl"); //WScript.Language="vbscript"; //Str="Доступ ограничен"; //Ttl="1С:Предприятие"; //WScript.ExecuteStatement("text="""+Str+""""); //WScript.ExecuteStatement("head="""+Ttl+""""); //WScript.ExecuteStatement("prop=cint("""+(0+48+0+0)+""")"); //Сообщить(WScript.Eval("msgbox(text,prop,head)")); //v.2 Timeout = 5; //doMessageBox("Достигнуто максимальное количество лицензий",Timeout,"1С:Предприятие"); //v.3 Кнопка1 = Новый СписокЗначений; Кнопка1.Вставить(0,"", "Выход",,); //DoQueryBox("Достигнуто максимальное количество лицензий", Кнопка1, 5, Кнопка1[0].Значение,"1С:Предприятие", Кнопка1[0].Значение); Для Каждого ТекСеанс Из ТекСеансыИБ Цикл Если ТекСеанс.ИмяПриложения = "1CV8" Тогда СчСеансов = СчСеансов +1; КонецЕсли; КонецЦикла; Если СчСеансов>3 Тогда //Число "3" это количество лицензий на конфигурацию за вычетом одной лицензии для Администратора из общего расчета = 4 лицензии //v.3 DoQueryBox("Достигнуто максимальное количество лицензий", Кнопка1, 5, Кнопка1[0].Значение,"1С:Предприятие", Кнопка1[0].Значение); Отказ = True; КонецЕсли; КонецЕсли; //...последующий обработчик КонецПроцедуры Процедура ПриНачалеРаботыСистемы() //Андрей Если (РольДоступна("Программист1С")) Тогда СчСеансов = 0; ТекСеансыИБ = ПолучитьСеансыИнформационнойБазы(); Сообщить("??[Монитор сеансов]"); Для Каждого ТекСеанс Из ТекСеансыИБ Цикл Если ТекСеанс.ИмяПриложения = "1CV8" Тогда СчСеансов = СчСеансов +1; Если СчСеансов <> Число(ТекСеансыИБ.ВГраница()) Тогда Сообщить("????["+Строка(СчСеансов)+"]"+" Компьтер: "+ТекСеанс.ИмяКомпьютера+", Пользователь: "+ТекСеанс.Пользователь+", Сеанс #"+Строка(ТекСеанс.НомерСеанса)+ ", Начало работы: "+?((Строка(Формат(ТекущаяДата(),"ДФ=ddMMyyyy"))=Строка(Формат(ТекСеанс.НачалоСеанса,"ДФ=ddMMyyyy"))),("Сегодня в "+(Формат(ТекСеанс.НачалоСеанса,"ДЛФ=T"))), (Строка(Формат(ТекСеанс.НачалоСеанса,"ДЛФ=DD"))+" в "+(Формат(ТекСеанс.НачалоСеанса,"ДЛФ=T"))))); Иначе Сообщить("????["+Строка(СчСеансов)+"]"+" Компьтер: "+ТекСеанс.ИмяКомпьютера+", Пользователь: "+ТекСеанс.Пользователь+", Сеанс #"+Строка(ТекСеанс.НомерСеанса)+ ", Начало работы: "+?((Строка(Формат(ТекущаяДата(),"ДФ=ddMMyyyy"))=Строка(Формат(ТекСеанс.НачалоСеанса,"ДФ=ddMMyyyy"))),("Сегодня в "+(Формат(ТекСеанс.НачалоСеанса,"ДЛФ=T"))), (Строка(Формат(ТекСеанс.НачалоСеанса,"ДЛФ=DD"))+" в "+(Формат(ТекСеанс.НачалоСеанса,"ДЛФ=T"))))); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; //...последующий обработчик КонецПроцедуры З.Ы.: И если я не сам с собой разговариваю - если кто знает - подскажите как все-таки вывести VBS MsgBox из 1С с таймаутом окна на основе кода как в шапке. |
|||
6
smaharbA
23.09.12
✎
16:46
|
у месаджбокса нет таймаута
|
|||
7
Nuuq
23.09.12
✎
17:47
|
Не согласен!
У VBS MsgBox есть таймаут http://avisop.tripod.com/vbscript/msgbox.htm, но в 1С не получается |
|||
8
Dethmont
23.09.12
✎
22:07
|
что то я не нашел таймаут у Msgbox
Msgbox(prompt,buttons,title) prompt - выводимая строка buttons - целое число определяющее следующее:(см.описание ниже в таблице) тип показываемой кнопки тип показываемой иконки кнопка по умолчанию (выбирается при нажатии ENTER) модальность окна title - текст показывемый в заголовке !!! !!! функция возвращает целочисленное значение зависящее от выбора пользователя !!!!!! |
|||
9
Dethmont
23.09.12
✎
22:11
|
||||
10
Aleksey
23.09.12
✎
22:11
|
Так я не понял почему (1) нельзя?
|
|||
11
vmv
23.09.12
✎
22:18
|
(10) тс поклоняется белому единорогу - низя!
|
|||
12
oleg_km
23.09.12
✎
22:21
|
(11) И в приведенном описании (7) как уже указали в (8) параметр таймаут отсутствует. ТС похоже вообще наших ответов ему не читает или по какому-то алгоритму фильтрует.
|
|||
13
smaharbA
24.09.12
✎
16:02
|
(7) месаджбоксу пофигу Ваше несогласие
|
|||
14
Reset
24.09.12
✎
16:24
|
(7) "У VBS MsgBox есть таймаут http://avisop.tripod.com/vbscript/msgbox.htm,"
Курил то чего? По твоей же ссылке MsgBox(prompt,buttons,title) - где таймаут? |
|||
15
Reset
24.09.12
✎
16:25
|
(12) А, я тоже ваши ответы не прочитал :)
|
|||
16
oleg_km
24.09.12
✎
17:33
|
(15) Да все нормально, скоро пятница
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |