Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Некорректная работа метода Popup()? (http://forums.kuban.ru/f1040/nekorrektnaya_rabota_metoda_popup-6868792.html)

US1C 28.05.2015 13:14

Некорректная работа метода Popup()?
 
Использую следующий код в процедуре &НаСервере:
Для Каждого СтрокаТЗ из ТЗ Цикл
WshShell = Новый COMОбъект("WScript.Shell");
WshShell.Popup(ТекстСообщения2,3,"Загрузка оборотов",64);
КонецЦикла;
Окно не закрывается по таймауту через 3 секунды (2-й параметр метода), висит до интерактивного нажатия. Причем, если окно 1С свернуть, то popup отрабатывает нормально - появится и пропадет само.
Где собака порылась? Как заставить срабатывать таймаут? Самое интересное, что и послать команду нажатия клавиши SendKey() не могу - она ждет завершения предыдущего метода (popup).

VZ 28.05.2015 14:34

[em][b]Для Каждого[/b] СтрокаТЗ из ТЗ [b]Цикл[/b]
WshShell = [b]Новый[/b] COMОбъект("WScript.Shell");[/em]
...
Ой.

US1C 28.05.2015 14:39

(1) Пока в отладке обработка, потом отлакирую. Мне бы побороть хрень с сабж.

VZ 28.05.2015 14:45

2-US1C > Не надо [em]ЭТО[/em] отлакировывать.

US1C 28.05.2015 14:48

(3) Хорошо. Не буду.

VZ 28.05.2015 15:22

4-US1C > Уффф...
Во-первых, в VSH можно использовать подпрограммы, выводя всяческие создания объектов из-под циклов.
Во-вторых, вообще неча что-то выводить таким варваским способом на монитор. Это ты явно злоупотребляешь терминалом: а если у нас сеть? Просто сеть, а?
В третьих, есть наработанные методики вывода сообщений на экран пользователю.
Есть метод сообщения через всплывающее окно.
Есть простейший метод, когда сообщения, выданные в серверном режиме, проявляются после возврата в клиентский (ты его не хочешь, понятно из сабжа).
Наконец, есть метод, когды ты в серверном режиме организуешь сам независимое всплывающее окно, и выводишь инфу туда.
Вариант прогресса при обновлении, например: на форме зарезервирован для этого реквизит, и обработка (в серверном режиме) этот реквизит постоянно изменяет.

US1C 28.05.2015 15:31

(5) Спасибо за развернутый ответ.
Насчет создания объектов в цикле уже понял.
Обработка будет крутиться у меня на локальном компе - никому проблем не создам. Сообщения стандартные не устраивают. Через реквизит формы попробовал использовать метод Состояние() - не взлетело. Т.е. сначала показал мне прогрессбар 1% и окно пропало, все остальное осталось за кадром до окончания обработки. Как заставить его висеть на протяжении всей обработки?

VZ 28.05.2015 15:42

6-US1C > Щаз, поищу.

VZ 28.05.2015 16:06

6-US1C > Посмотри на инфостарте у Душелова (баллов не требует). У него есть примерчик вывода сообщений в процессе обработки запроса.
Через Состояние(<ТекстСообщения>, <Прогресс>, <Пояснение>, <Картинка>)
Там всего ничего: форма с кнопкой, и вся музыка в модуле формы: Запускается в сервере Запрос, потом результат просматривается, одновременно генерируя сообщение в правом нижнем углу.
Там вообщено, иллюстрация прогресса, но ничто не мешает таким способом и сообщать что-то внятное.

US1C 28.05.2015 16:13

(8) По абонементу.

VZ 28.05.2015 16:21

9-US1C > Смотри личку.

US1C 28.05.2015 16:28

(10) Спасибо! Щас буду внедрять в свою.

US1C 28.05.2015 17:10

(10) Засада. Там цикл в процедуре &наКлиенте обращается к серверной процедуре, затем в процедуре &НаКлиенте генерит Состояние(). У меня весь цикл в серверной процедуре.

VZ 28.05.2015 17:40

12-US1C > Ну, снабди свою обработку формой. Её ведь можно и не открывать ;)
А вот модулем формы снабдить вполне.

Как-то разделить придется. С сервера выдачи нет без клиента.


Текущее время: 20:01. Часовой пояс GMT +3.