//Вызывается на сервере (в серверной процедуре формы). Первый параметр -
//идентификатор формы: в её временное хранилище попадёт результат функции.
//Функция РасчетыСКонтрагентами.ДолгКонтрагента - своя, экспортная,
//в серверном общем модуле; параметры и результат должны быть сериализуемыми
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка");
Операция = ДлительныеОперации.ВыполнитьФункцию(УникальныйИдентификатор,
"РасчетыСКонтрагентами.ДолгКонтрагента", Контрагент, ТекущаяДатаСеанса());
//Операция.Статус - "Выполнено", если расчёт успел завершиться за время ожидания
//(по умолчанию меньше секунды), иначе "Выполняется" - тогда операцию ждут на
//клиенте
Сообщить("Статус = " + Операция.Статус);
Если Операция.Статус = "Выполнено" Тогда
Долг = ПолучитьИзВременногоХранилища(Операция.АдресРезультата);
//Долг - число, которое вернула функция ДолгКонтрагента
Сообщить("Долг = " + Долг);
КонецЕсли;
//Без БСП - платформенное фоновое задание. Значение функция заданию вернуть
//не может: результат кладётся во временное хранилище отдельной процедурой
//РасчетыСКонтрагентами.ДолгКонтрагентаВФоне(Контрагент, НаДату,
//АдресРезультата)
АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено,
УникальныйИдентификатор);
ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(Контрагент);
ПараметрыЗадания.Добавить(ТекущаяДатаСеанса());
ПараметрыЗадания.Добавить(АдресРезультата);
Задание = ФоновыеЗадания.Выполнить("РасчетыСКонтрагентами.ДолгКонтрагентаВФоне",
ПараметрыЗадания, , "Расчёт долга контрагента");
Задание.ОжидатьЗавершенияВыполнения(1);
//Если задание за секунду не завершилось, состояние остаётся «Активно»,
//и его проверяют позже (на клиенте - обработчиком ожидания)
Если Задание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
Долг = ПолучитьИзВременногоХранилища(АдресРезультата);
КонецЕсли;