В УТ 10.3 есть управляемая форма. Её расчет выполняется в фоновой процедуре. Только на время выполнения фонового задания управляемая форма блокируется и обработчик ожидания (хотя бы время выводить) не отрабатывает. Сама профедура в фоне. Но пока не выполнится - песочные часы
---
```1c
    &НаКлиенте
    Процедура Построить6(Команда)
    // Вставить содержимое обработчика.
    объект.СчетчикЧ=0;
    объект.ДГанта.Очистить();
    ПодключитьОбработчикОжидания("Ожидалка",2);
    УИД = Построить6НаСервере(); ///УИД - реквизит формы например, (произвольный\уникальный идентификатор)

    КонецПроцедуры

    &НаКлиенте
    Процедура Ожидалка() Экспорт
    //Элементы.Декорация1.Заголовок=Строка(ТекущаяДата());
    //состояние(ТекущаяДата());
    // некие действия

    РезультатФЗ = ПроверитьФоновыеЗаданияНаСервере(УИД);
    Если РезультатФЗ.Выполнено Тогда
    Сообщить("Выполнено успешно");

    ЗначениеВреквизитФормы(массивПараметров[2],"Объект");
    объект.ДГанта=ЗначениеИзФайла("\\srv-250.grp.local\1csrv250obmen\dgant.dg");
    //дг=массивПараметров[1];
    ОтключитьОбработчикОжидания("Ожидалка");
    ИначеЕсли РезультатФЗ.Выполняется Тогда
    // вывести состояние
    ИначеЕсли ЗначениеЗаполнено(РезультатФЗ.ТекстОшибки) Тогда
    Сообщить("Возникла ошибка: " + РезультатФЗ.ТекстОшибки);
    КонецЕсли;

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПроверитьФоновыеЗаданияНаСервере(ИДЗадания)

    /// Проверка статуса фонового задания
    РезультатПроверкиФЗ = новый Структура;
    РезультатПроверкиФЗ.Вставить("Выполнено",Ложь);
    РезультатПроверкиФЗ.Вставить("Выполняется",Истина);
    РезультатПроверкиФЗ.Вставить("ТекстОшибки",");

    ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИДЗадания);
    Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
    РезультатПроверкиФЗ.Выполнено = Истина;
    РезультатПроверкиФЗ.Выполняется = Ложь;
    ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
    РезультатПроверкиФЗ.Выполняется = Ложь;
    РезультатПроверкиФЗ.ТекстОшибки = КраткоеПредставлениеОшибки(ФоновоеЗадание.ИнформацияОбОшибке);
    ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
    РезультатПроверкиФЗ.Выполняется = Ложь;
    КонецЕсли;

    Возврат РезультатПроверкиФЗ;

    КонецФункции

    &НаСервере
    Функция Построить6НаСервере()
    об= РеквизитФормыВЗначение("Объект");

    //об.ПостроениеДГ();
    //дг2=реквизитФормыВзначение("Объект.Дганта");

    АдресХранилища = ПоместитьВоВременноеХранилище(
    Новый Структура("Инд,КоличествоОбходов",0,1),ЭтаФорма.УникальныйИдентификатор);

    ДГ1=новый ДиаграммаГанта;
    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(об.Проект);
    МассивПараметров.Добавить(об.ДГанта);
    МассивПараметров.Добавить(об);
    ключ="ПостроениеДиаграммыГанта";

    ФЗ = ФоновыеЗадания.Выполнить("Диаграмма.ПостроениеДГ",МассивПараметров,ключ);
    Возврат ФЗ.УникальныйИдентификатор;

    КонецФункции
```
---
мб все-таки покажите как запускаете расчет в фоне?)
---
&НаКлиенте
Процедура Построить6(Команда)
 // Вставить содержимое обработчика.
 объект.СчетчикЧ=0;
 объект.ДГанта.Очистить();
 ПодключитьОбработчикОжидания("Ожидалка",2);
 Построить6НаСервере();

КонецПроцедуры

 &НаКлиенте
Процедура Ожидалка() Экспорт
 Элементы.Декорация1.Заголовок=Строка(ТекущаяДата());
 состояние(ТекущаяДата());
 // некие действия
КонецПроцедуры

&НаСервере
Процедура Построить6НаСервере()
  об= РеквизитФормыВЗначение("Объект");

 //об.ПостроениеДГ();
 //дг2=реквизитФормыВзначение("Объект.Дганта");

 АдресХранилища = ПоместитьВоВременноеХранилище(
 Новый Структура("Инд,КоличествоОбходов",0,1),ЭтаФорма.УникальныйИдентификатор);

 ДГ1=новый ДиаграммаГанта;
 МассивПараметров = Новый Массив;
 МассивПараметров.Добавить(об.Проект);
 МассивПараметров.Добавить(об.ДГанта);
 МассивПараметров.Добавить(об);
    ключ="ПостроениеДиаграммыГанта";

    ФЗ = ФоновыеЗадания.Выполнить("Диаграмма.ПостроениеДГ",МассивПараметров,ключ);
  //Диаграмма.ПостроениеДГ(об.Проект,об.ДГанта,об);
     //

     ФЗ = ФЗ.ОжидатьЗавершенияВыполнения();
//анализируем состояние фонового задания
Если ФЗ.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
 Сообщить("Выполнено успешно");

 ЗначениеВреквизитФормы(массивПараметров[2],"Объект");
 объект.ДГанта=ЗначениеИзФайла("\\srv-250.grp.local\1csrv250obmen\dgant.dg");
 //дг=массивПараметров[1];
иначеесли
 ФЗ.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
 Сообщить("Ошибка при выполнении " + ФЗ.ИнформацияОбОшибке.Описание);
ИначеЕсли ФЗ.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
 Сообщить("Задание отменено");
КонецЕсли;

 //
конецПроцедуры

Собственно, всё работает, кроме того, что песочные часы висят, пока не завершится фоновая процедура. А обработчик ожидания, который в данном случае дату-время, хотя бы, должен выводить во время работы фоновой процедуры. Но обработчик на форме работает ТОЛЬКО после завершения фоновой процедуры
---
ФЗ = ФЗ.ОжидатьЗавершенияВыполнения();
Проверять надо на клиенте через обработчик ожидания. Запускаем ФЗ, запоминаем ИД. Затем в обработчике ожидания получаем статус ФЗ и обрабатываем. Примеров в интернете полно
---
а, в ветке уже и код написали :)
---
ФЗ = ФЗ.ОжидатьЗавершенияВыполнения();
Так он послушно ожидает завершения фонового задания и не передает управление обратно на клиент. Вот клиент и "зависает".
---
не понятно, что конкретно требуется - пользователю информацию выводить или для себя понимать что там происходит ?
---
состояние выполнения: чтобы пользователь знал, что прога не зависла, а думает
---
```1c
    &НаКлиенте
    Процедура Построить6(Команда)
    // Вставить содержимое обработчика.
    объект.СчетчикЧ=0;
    объект.ДГанта.Очистить();
    ПодключитьОбработчикОжидания("Ожидалка",2);
    УИД = Построить6НаСервере(); ///УИД - реквизит формы например, (произвольный\уникальный идентификатор)

    КонецПроцедуры

    &НаКлиенте
    Процедура Ожидалка() Экспорт
    //Элементы.Декорация1.Заголовок=Строка(ТекущаяДата());
    //состояние(ТекущаяДата());
    // некие действия

    РезультатФЗ = ПроверитьФоновыеЗаданияНаСервере(УИД);
    Если РезультатФЗ.Выполнено Тогда
    Сообщить("Выполнено успешно");

    ЗначениеВреквизитФормы(массивПараметров[2],"Объект");
    объект.ДГанта=ЗначениеИзФайла("\\srv-250.grp.local\1csrv250obmen\dgant.dg");
    //дг=массивПараметров[1];
    ОтключитьОбработчикОжидания("Ожидалка");
    ИначеЕсли РезультатФЗ.Выполняется Тогда
    // вывести состояние
    ИначеЕсли ЗначениеЗаполнено(РезультатФЗ.ТекстОшибки) Тогда
    Сообщить("Возникла ошибка: " + РезультатФЗ.ТекстОшибки);
    КонецЕсли;

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПроверитьФоновыеЗаданияНаСервере(ИДЗадания)

    /// Проверка статуса фонового задания
    РезультатПроверкиФЗ = новый Структура;
    РезультатПроверкиФЗ.Вставить("Выполнено",Ложь);
    РезультатПроверкиФЗ.Вставить("Выполняется",Истина);
    РезультатПроверкиФЗ.Вставить("ТекстОшибки",");

    ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИДЗадания);
    Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
    РезультатПроверкиФЗ.Выполнено = Истина;
    РезультатПроверкиФЗ.Выполняется = Ложь;
    ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
    РезультатПроверкиФЗ.Выполняется = Ложь;
    РезультатПроверкиФЗ.ТекстОшибки = КраткоеПредставлениеОшибки(ФоновоеЗадание.ИнформацияОбОшибке);
    ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
    РезультатПроверкиФЗ.Выполняется = Ложь;
    КонецЕсли;

    Возврат РезультатПроверкиФЗ;

    КонецФункции

    &НаСервере
    Функция Построить6НаСервере()
    об= РеквизитФормыВЗначение("Объект");

    //об.ПостроениеДГ();
    //дг2=реквизитФормыВзначение("Объект.Дганта");

    АдресХранилища = ПоместитьВоВременноеХранилище(
    Новый Структура("Инд,КоличествоОбходов",0,1),ЭтаФорма.УникальныйИдентификатор);

    ДГ1=новый ДиаграммаГанта;
    МассивПараметров = Новый Массив;
    МассивПараметров.Добавить(об.Проект);
    МассивПараметров.Добавить(об.ДГанта);
    МассивПараметров.Добавить(об);
    ключ="ПостроениеДиаграммыГанта";

    ФЗ = ФоновыеЗадания.Выполнить("Диаграмма.ПостроениеДГ",МассивПараметров,ключ);
    Возврат ФЗ.УникальныйИдентификатор;

    КонецФункции
```