Имя: Пароль:
1C
1С v8
УФ Сообщить() выводится только после окончания выполнения всех операторов
0 TeMochkiN
 
07.08.15
10:21
Здравствуйте!
Подскажите, пожалуйста, в УФ не особо силен, но вот чего я не могу понять. Насколько я понимаю, при выполнении процедуры Сообщить() сообщение должно сразу выводиться, если процедура выполнена &НаКлиенте, а если выполнена &НаСервере, то вывод должен произойти по-идее при возврате на клиент.

Что у меня. Кнопка на командной панели табличной части внешней обработки, к которой привязано выполнение команды ниже:

&НаКлиенте
Процедура ВыгрузкаВExcel(Команда)
    
    Сч = 10;
    Дата = ТекущаяДата();
    
    Сообщить(Строка(ТекущаяДата()) + " Начало обработки");
    
    Пока ТекущаяДата() < Дата + Сч Цикл
        
    КонецЦикла;

    Сообщить(Строка(ТекущаяДата()) + " Обработка успешно выполнена");
    
КонецПроцедуры

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

07.08.2015 10:04:35 Начало обработки
07.08.2015 10:04:45 Обработка успешно выполнена

ЧЯДНТ?

Платформа 8.3.6.2152
Конфа БП 3.0.41.48
1 Славен
 
07.08.15
10:23
А теперь на русском, чего хочешь то?
2 TeMochkiN
 
07.08.15
10:25
Чтобы сообщить выводились вовремя, а не по окончанию все обработки
3 olegves
 
07.08.15
10:25
(0) форму обнови после сообщения
4 VikingKosmo
 
07.08.15
10:27
А вообще за Сообщить() в УФ нужно руки по локоть оторвать
5 TeMochkiN
 
07.08.15
10:29
(4) почему? так уже не модно?
6 TeMochkiN
 
07.08.15
10:35
(3) если вы про ОбновитьОтображениеДанных(), то не срабатывает.
ставил после первого сообщить()
7 Euguln
 
07.08.15
10:37
(0) С какого перепуга система тебе должна что-то выводить, если она в это время твоим циклом занята?
8 TeMochkiN
 
07.08.15
10:38
(7) первое Сообщить() до цикла написано
9 TeMochkiN
 
07.08.15
10:39
(7) объясните мне просто логику работы программы. на обычных формах оно показывает всё вовремя, а на УФ в конце, в СП нет никаких примечаний по этому поводу
10 Славен
 
07.08.15
12:59
Попробуй через сообщение  =новое сообщениепользователю()
11 Славен
 
07.08.15
12:59
*новый
12 xXeNoNx
 
07.08.15
13:18
(0) не будет ничего выводится, это же УФ. Если только гонять данные не будешь с клиента на сервер постоянно...
13 xXeNoNx
 
07.08.15
13:18
Забудь мульки от 7.7
14 Mifka
 
07.08.15
13:19
(9) логика проста тебе сообщают о начале выгрузки потом заходиш в цикл и бегаеш по нему, ваыходиш и сообщаеш о окончании. хочеш чтоб вовремя выводил закинь внутрь цикла
15 xXeNoNx
 
07.08.15
13:23
(9) Логика в том, что сообщения выводятся только на клиенте, когда ты передаешь все на сервер, пока там не отработает - на клиент ничего не вернет...
16 Господин ПЖ
 
07.08.15
13:24
(15) у него все на клиенте
17 Славен
 
07.08.15
13:26
+(16) 1000,  половина какую-то траву курит и не  делятся ведь каки
18 Господин ПЖ
 
07.08.15
13:27
возможно приблизили поведение к вэб-клинту

рефреш формы только после отработки кода
19 Господин ПЖ
 
07.08.15
13:29
по аналогии с:

ОбновитьОтображениеДанных (RefreshDataRepresentation)
Синтаксис:

ОбновитьОтображениеДанных()
Описание:

В принудительном порядке обновляет содержание элементов управления.
Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.

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

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

В веб-клиенте обновление элементов управления происходит не сразу, а после окончания выполнения кода на встроенном языке.
20 Кукурикин
 
07.08.15
13:47
(0) Окно сообщений не закрывай и попробуй еще раз.
21 Господин ПЖ
 
07.08.15
13:54
(20) ыыы


если ничего не помогает - поверните монитор на восток (с) хабр
22 Кукурикин
 
07.08.15
16:54
(21) А что ыы? Окно собщений выодит все как надо. Просто это окно не отображается пока сама форма не обновится.
Поэтому для решения проблемы ТС нужно сначала открыть (руками или программно) окно сообщений и потом в него выводить.
23 Бубка Гоп
 
07.08.15
17:01
Странно. Код из сабжа добавил в обработку, запустил. Окна появились как надо, сначала одно, через время другое. Причем окно сообщений было закрыто. ЧЯДНТ? PS платформа 8.2.19
24 Славен
 
07.08.15
17:02
(23) поставь 8.3
25 Славен
 
07.08.15
17:02
(23) у тебя УФ?
26 Бубка Гоп
 
07.08.15
17:02
(25) да, уф
27 Бубка Гоп
 
07.08.15
17:05
Ага. А в 8.3 не появляются оба, пока не закончится цикл.
28 Бубка Гоп
 
07.08.15
17:07
(27) + Вру. Вернее, выводяися тоже по очереди, просто как говорит товарищ в (22) окно не появится пока не закончится процедура
29 jsmith82
 
07.08.15
17:16
это фича УФ
30 jsmith82
 
07.08.15
17:18
По-моему, даже этим ограничение не оканчивается. Если вместо Сообщить() делать что-то типа ЭтаФорма.НадписьСостояние = ТекКоличество, то тоже не будет показывать в прогрессе. В общем статус-бары тоже не работают как надо
31 jsmith82
 
07.08.15
17:18
Короче, всё, что связано с динамическим отображением данных, в УФ не работает как хотелось бы