Имя: Пароль:
1C
1С v8
Вывод сообщения пользователю типа "Предупреждение" без возможности закрыть окно.
,
0 bplmeddy
 
19.01.17
12:02
Всем доброго утра. Интересует такой вопрос: есть конфигурация, работает в режиме неуправляемого интерфейса, как можно вывести сообщение через "Предупреждение" чтобы его нельзя было закрыть вручную (закрытие планируется по таймауту). Спасибо.
1 shadow_sw
 
19.01.17
12:09
ПоказатьПредупреждение (ShowMessageBox)
Синтаксис:

ПоказатьПредупреждение(<ОписаниеОповещенияОЗавершении>, <ТекстПредупреждения>, <Таймаут>, <Заголовок>)
Параметры:

<ОписаниеОповещенияОЗавершении> (необязательный)

Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после закрытия окна предупреждения со следующими параметрами:
<ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан, то по завершении никакая процедура вызвана не будет.
<ТекстПредупреждения> (обязательный)

Тип: Строка; ФорматированнаяСтрока.
Текст предупреждения.
<Таймаут> (необязательный)

Тип: Число.
Интервал времени в секундах, в течение которого система будет ожидать ответа пользователя. По истечении интервала окно предупреждения будет закрыто. Если параметр не указан, то время ожидания не ограничено.
Значение по умолчанию: 0.
<Заголовок> (необязательный)

Тип: Строка.
Содержит заголовок окна предупреждения.
Описание:

Выводит на экран окно предупреждения, но не ожидает его закрытия.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Примечание:

Если после закрытия пользователем окна предупреждения должен быть выполнен какой-либо код, то его нужно разместить в отдельной процедуре модуля и описать ее в параметре <ОписаниеОповещенияОЗавершении>.
Пример:

ПоказатьПредупреждение(,НСтр("ru = 'Выберите документ!'; en = 'Select a document!'"), 10);
2 shadow_sw
 
19.01.17
12:09
продам СП, дорого :)) по традиции
3 Fish
 
19.01.17
12:11
(2) Не, ему же надо "чтобы его нельзя было закрыть вручную (закрытие планируется по таймауту)" - Т.е. если задано 15 минут, то чтобы пользователь сидел и смотрел все 15 минут, не работая :)
4 bplmeddy
 
19.01.17
12:12
(3) Ты не повериш... =)
Как по таймауту закрыть окно я в курсе, вопрос состоит в том как пользователю не дать возможности закрыть окно самостоятельно. Иными словами окно должно висеть определённое время и чтобы юзер ничего не смог с ним сделать.
5 Вафель
 
19.01.17
12:13
показать свою форму
6 shadow_sw
 
19.01.17
12:13
модальное открытие формы, и обработчикожидания
7 bplmeddy
 
19.01.17
12:14
(3) Именно так.
8 bplmeddy
 
19.01.17
12:15
(6) Форма диалога итак открывается модально. Что мне даст обработка ожидания? Если можно - более детально изложите концепцию. Спасибо.
9 shadow_sw
 
19.01.17
12:16
(8) нарисовать форму, на ней кнопку типа ОК, открывать ее модально, и отсчет времени, потом по нажатию закрывать
10 bplmeddy
 
19.01.17
12:19
(9) В принципе костыль рабочий, хотя в данном случае можно проще, без обработчика ожидания, что-то типа:
Таймаут = 5;
КонДата = ТекущаяДата() + Таймаут;
Пока ТекущаяДата() < КонДата Цикл
    //ждем
КонецЦикла;
11 youalex
 
19.01.17
12:21
+ в ПередЗакрытием() - Отказ = Истина по условию.
12 Вафель
 
19.01.17
12:22
(6) Только не модально, а в режиме "блокировать интерфейс"
13 shadow_sw
 
19.01.17
12:25
как выразился ТС в (10) - "костыль рабочий" :)) суть уловил, надеюсь он
14 bplmeddy
 
19.01.17
12:26
(13) Да, спасибо. Буду так извращаться, если нет встроенных решений =)
15 bplmeddy
 
19.01.17
12:27
(12) Это ещё лучше.
16 Web00001
 
19.01.17
12:45
Я бы открыл Вопрос, с кнопкой ОК и если он закрыт не по таймауту, анализировал бы сколько он висел и открывал бы по новой но уже с откорректированным таймаутом. И так пока не истечет время.
17 Heckfy
 
19.01.17
12:47
(10) Я смотрю, у кого то процессорных мощностей дофига! :)
18 azernot
 
19.01.17
13:12
Запомнить время начала, вычислить требуемое время окончания.

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

В обработчике оповещения сравнить время окончания с текущим временем, по результатам либо снова вызвать процедуру показа предупреждения, либо передать управление на точку окончания таймаута.
19 bplmeddy
 
19.01.17
13:27
(17) Есть маленько )
2 + 2 = 3.9999999999999999999999999999999...