Всех горячо приветствую!
Подскажите, пожалуйста, кто пользовался асинхронными операциями, что я делаю не так? Гипотетическая ситуация такая: есть тз, на которую надо добавить строку с некоторыми данными, но эти данные получаются очень долго, поэтому на время загрузки нужно добавить строку с оповещением о том, что идет загрузка. В данной ситуации, как мне показалось, идеальным решением станут асинхронные функции. Но, видимо, чего-то я о них не до конца понял. Потому что мое решение не сработало:
&НаКлиенте
Асинх Процедура Команда1(Команда)
НовыеДанныеОбещание = ПолучитьНовыеДанныеАсинх();
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номер = ТЗ.Количество();
НоваяСтрока.Данные = "Загрузка...";
Если ТЗ.Количество() > 0 тогда
Сообщить( ТЗ[ТЗ.Количество() - 1].Данные );
КонецЕсли;
НовыеДанные = Ждать НовыеДанныеОбещание;
НоваяСтрока.Данные = НовыеДанные;
КонецПроцедуры
&НаКлиенте
Асинх Функция ПолучитьНовыеДанныеАсинх()
Ждать 1;
Для Ин = 0 по 2000000 цикл
КонецЦикла;
Возврат "Новые данные";
КонецФункции
Причем, интересно, что работа кода не останавливается. В сообщить действительно выводится "Загрузка...", но вот на форме происходит долгое зависание (при котором она ни на что не реагирует), а только потом появляется строчка с данными "Новые данные". Почему так? Есть ли способ не блокировать форму при асинхронной операции?