Длительные операции
ВыполнитьФункцию
Описание, пример вызова
// АПК:142-выкл - Необязательных параметров более 3 для поддержки разных прикладных функций.// АПК:134-выкл - Количество параметров более 7 для поддержки разных прикладных функций.
// Запустить выполнение функции в фоновом задании, если это возможно.// Вызываемая функция может быть с произвольным числом параметров, но не более 7.// Значения передаваемых параметров функции, а также возвращаемое значение должны быть сериализуемыми.// Параметры функции не должны быть возвращаемыми.//// Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.// Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение,// если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.//// Параметры:// ПараметрыВыполнения - ФормаКлиентскогоПриложения - форма, из которой выполняется вызов;// - УникальныйИдентификатор - идентификатор формы, из которой выполняется вызов;// - Структура - см. ПараметрыВыполненияФункции// ИмяФункции - Строка - имя экспортной функции общего модуля, модуля менеджера объекта// или модуля обработки, которую необходимо выполнить в фоне.// Например, "МойОбщийМодуль.МояПроцедура", "Отчет.ЗагруженныеДанные.Сформировать"// или "Обработка.ЗагрузкаДанных.МодульОбъекта.Загрузить".//// Параметр1 - Произвольный - произвольные параметры вызова функции. Количество параметров может быть от 0 до 7.// Параметр2 - Произвольный// Параметр3 - Произвольный// Параметр4 - Произвольный// Параметр5 - Произвольный// Параметр6 - Произвольный// Параметр7 - Произвольный//// Возвращаемое значение:// Структура:// * Статус - Строка - "Выполняется", если задание еще не завершилось;// "Выполнено", если задание было успешно выполнено;// "Ошибка", если задание завершено с ошибкой;// "Отменено", если задание отменено пользователем или администратором.// * ИдентификаторЗадания - УникальныйИдентификатор - если Статус = "Выполняется", то содержит// идентификатор запущенного фонового задания.// - Неопределено - если Статус <> "Выполняется" и фоновое задание не запускалось.// * АдресРезультата - Строка - адрес временного хранилища, в которое будет// помещен результат работы функции.// * ИнформацияОбОшибке - ИнформацияОбОшибке - если Статус = "Ошибка".// - Неопределено - если Статус <> "Ошибка".// * Сообщения - ФиксированныйМассив - если Статус <> "Выполняется", то массив объектов СообщениеПользователю,// которые были сформированы в фоновом задании.// * КраткоеПредставлениеОшибки - Строка - устарел.// * ПодробноеПредставлениеОшибки - Строка - устарел.//// Пример:// В общем виде процесс запуска и обработки результата длительной операции в модуле формы выглядит следующим образом://// 1) Функция, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:// Функция РассчитатьЗначение(Знач МойПараметр1, Знач МойПараметр2) Экспорт// ...// Возврат Результат;// КонецФункции//// 2) Запуск операции на сервере и подключение обработчика ожидания:// &НаКлиенте// Процедура РассчитатьЗначение()// ДлительнаяОперация = НачатьВыполнениеНаСервере();// ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);// ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);// ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);// КонецПроцедуры//// &НаСервере// Функция НачатьВыполнениеНаСервере()// ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);// Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Обработка.МояОбработка.РассчитатьЗначение",// МойПараметр1, МойПараметр2);// КонецФункции//// 3) Обработка результата длительной операции:// &НаКлиенте// Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт// Если Результат = Неопределено Тогда// Возврат;// КонецЕсли;// Если Результат.Статус = "Ошибка" Тогда// СтандартныеПодсистемыКлиент.ВывестиИнформациюОбОшибке(Результат.ИнформацияОбОшибке);// Возврат;// КонецЕсли;// ВывестиРезультат(Результат.АдресРезультата);// КонецПроцедуры//Функция ВыполнитьФункцию(Знач ПараметрыВыполнения, ИмяФункции, Знач Параметр1 = Неопределено, Экспорт
Пример вызова
Результат = ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, ИмяФункции, Параметр1, );
ВыполнитьПроцедуру
Описание, пример вызова
// АПК:141-выкл - Первый необязательный параметр перед обязательным выбран// для сохранения порядка параметров как в функции ВыполнитьФункцию.
// Запустить выполнение процедуры в фоновом задании, если это возможно.// Вызываемая процедура может быть с произвольным числом параметров, но не более 7.// Значения передаваемых параметров процедуры, а также возвращаемое значение должны быть сериализуемыми.// Параметры процедуры не должны быть возвращаемыми.//// Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.// Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение,// если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.//// Параметры://// ПараметрыВыполнения - см. ДлительныеОперации.ПараметрыВыполненияПроцедуры//// ИмяПроцедуры - Строка - имя экспортной процедуры общего модуля, модуля менеджера объекта// или модуля обработки, которую необходимо выполнить в фоне.// Например, "МойОбщийМодуль.МояПроцедура", "Отчет.ЗагруженныеДанные.Сформировать"// или "Обработка.ЗагрузкаДанных.МодульОбъекта.Загрузить".//// Параметр1 - Произвольный - произвольные параметры вызова процедуры. Количество параметров может быть от 0 до 7.// Параметр2 - Произвольный// Параметр3 - Произвольный// Параметр4 - Произвольный// Параметр5 - Произвольный// Параметр6 - Произвольный// Параметр7 - Произвольный//// Возвращаемое значение:// Структура - параметры выполнения задания:// * Статус - Строка - "Выполняется", если задание еще не завершилось;// "Выполнено", если задание было успешно выполнено;// "Ошибка", если задание завершено с ошибкой;// "Отменено", если задание отменено пользователем или администратором.// * ИдентификаторЗадания - УникальныйИдентификатор - если Статус = "Выполняется", то содержит// идентификатор запущенного фонового задания.// - Неопределено - если Статус <> "Выполняется" и фоновое задание не запускалось.// * ИнформацияОбОшибке - ИнформацияОбОшибке - если Статус = "Ошибка".// - Неопределено - если Статус <> "Ошибка".// * Сообщения - ФиксированныйМассив - если Статус <> "Выполняется", то массив объектов СообщениеПользователю,// которые были сформированы в фоновом задании.// * КраткоеПредставлениеОшибки - Строка - устарел.// * ПодробноеПредставлениеОшибки - Строка - устарел.//// Пример:// В общем виде процесс запуска и обработки результата длительной операции в модуле формы выглядит следующим образом://// 1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:// Процедура ВыполнитьРасчет(Знач МойПараметр1, Знач МойПараметр2) Экспорт// ...// КонецПроцедуры//// 2) Запуск операции на сервере и подключение обработчика ожидания (при необходимости):// &НаКлиенте// Процедура ВыполнитьРасчет()// ДлительнаяОперация = НачатьВыполнениеНаСервере();// ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);// ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);// ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);// КонецПроцедуры//// &НаСервере// Функция НачатьВыполнениеНаСервере()// Возврат ДлительныеОперации.ВыполнитьПроцедуру(, "Обработка.МояОбработка.ВыполнитьРасчет",// МойПараметр1, МойПараметр2);// КонецФункции//// 3) Обработка результата длительной операции:// &НаКлиенте// Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт// Если Результат = Неопределено Тогда// Возврат;// КонецЕсли;// Если Результат.Статус = "Ошибка" Тогда// СтандартныеПодсистемыКлиент.ВывестиИнформациюОбОшибке(Результат.ИнформацияОбОшибке);// Возврат;// КонецЕсли;// ПриЗавершенииРасчета();// КонецПроцедуры////@skip-check method-optional-parameter-before-required//Функция ВыполнитьПроцедуру(Знач ПараметрыВыполнения = Неопределено, ИмяПроцедуры, Знач Параметр1 = Неопределено, Экспорт
Пример вызова
Результат = ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, ИмяПроцедуры, Параметр1, );
ВыполнитьФункциюВНесколькоПотоков
Описание, пример вызова
// АПК:141-вкл// АПК:134-вкл// АПК:142-вкл
// Запустить выполнение функции в многопоточном фоновом задании, если это возможно.// Вызываемая процедура может быть с произвольным числом параметров, но не более 7.// Значения передаваемых параметров процедуры, а также возвращаемое значение должны быть сериализуемыми.// Параметры процедуры не должны быть возвращаемыми.// Многопоточные длительные операции в неразделенном сеансе не поддерживаются.//// Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.// Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение,// если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.//// Параметры:// ИмяФункции - Строка - имя экспортной функции общего модуля, модуля менеджера объекта// или модуля обработки, которую необходимо выполнить в фоне.// Например, "МойОбщийМодуль.МояПроцедура", "Отчеты.ЗагруженныеДанные.Сформировать"// или "Обработки.ЗагрузкаДанных.МодульОбъекта.Загрузить".// ПараметрыВыполнения - см. ПараметрыВыполненияФункции// НаборПараметровФункции - Соответствие из КлючИЗначение - произвольный набор параметров вызова функции:// * Ключ - Произвольный - ключ набора// * Значение - Массив - параметры вызова функции. Количество параметров может быть от 0 до 7.//// Возвращаемое значение:// Структура:// * Статус - Строка - "Выполняется", если задание еще не завершилось;// "Выполнено", если задание было успешно выполнено;// "Ошибка", если задание завершено с ошибкой;// "Отменено", если задание отменено пользователем или администратором.// * ИдентификаторЗадания - УникальныйИдентификатор - если Статус = "Выполняется", то содержит// идентификатор запущенного фонового задания.// - Неопределено - если Статус <> "Выполняется" и фоновое задание не запускалось.// * АдресРезультата - Строка - адрес временного хранилища, в которое будет помещено Соответствие:// ** Ключ - Произвольный// ** Значение - см. ВыполнитьФункцию// * ИнформацияОбОшибке - ИнформацияОбОшибке - если Статус = "Ошибка".// - Неопределено - если Статус <> "Ошибка".// * Сообщения - ФиксированныйМассив - если Статус <> "Выполняется", то массив объектов СообщениеПользователю,// которые были сформированы в фоновом задании.// * КраткоеПредставлениеОшибки - Строка - устарел.// * ПодробноеПредставлениеОшибки - Строка - устарел.//Функция ВыполнитьФункциюВНесколькоПотоков(ИмяФункции, Знач ПараметрыВыполнения, Знач НаборПараметровФункции = Неопределено) Экспорт
Пример вызова
Результат = ДлительныеОперации.ВыполнитьФункциюВНесколькоПотоков(ИмяФункции, ПараметрыВыполнения, НаборПараметровФункции);
ВыполнитьПроцедуруВНесколькоПотоков
Описание, пример вызова
// Запускает выполнение процедуры в многопоточном фоновом задании, если это возможно.// Вызываемая процедура может быть с произвольным числом параметров, но не более 7.// Значения передаваемых параметров процедуры, а также возвращаемое значение должны быть сериализуемыми.// Параметры процедуры не должны быть возвращаемыми.// Многопоточные длительные операции в неразделенном сеансе не поддерживаются.//// Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.// Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение,// если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.//// Параметры:// ИмяПроцедуры - Строка - имя экспортной процедуры общего модуля, модуля менеджера объекта// или модуля обработки, которую необходимо выполнить в фоне.// ПараметрыВыполнения - см. ПараметрыВыполненияПроцедуры// НаборПараметровПроцедуры - Соответствие из КлючИЗначение - произвольный набор параметров вызова процедуры:// * Ключ - Произвольный - ключ набора// * Значение - Массив - параметры вызова процедуры. Количество параметров может быть от 0 до 7.//// Возвращаемое значение:// Структура:// * Статус - Строка - "Выполняется", если задание еще не завершилось;// "Выполнено", если задание было успешно выполнено;// "Ошибка", если задание завершено с ошибкой;// "Отменено", если задание отменено пользователем или администратором.// * ИдентификаторЗадания - УникальныйИдентификатор - если Статус = "Выполняется", то содержит// идентификатор запущенного фонового задания.// - Неопределено - если Статус <> "Выполняется" и фоновое задание не запускалось.// * АдресРезультата - Строка - адрес временного хранилища, в которое будет помещено Соответствие:// ** Ключ - Произвольный// ** Значение - см. ВыполнитьПроцедуру// * ИнформацияОбОшибке - ИнформацияОбОшибке - если Статус = "Ошибка".// - Неопределено - если Статус <> "Ошибка".// * Сообщения - ФиксированныйМассив - если Статус <> "Выполняется", то массив объектов СообщениеПользователю,// которые были сформированы в фоновом задании.// * КраткоеПредставлениеОшибки - Строка - устарел.// * ПодробноеПредставлениеОшибки - Строка - устарел.//Функция ВыполнитьПроцедуруВНесколькоПотоков(ИмяПроцедуры, Знач ПараметрыВыполнения, Знач НаборПараметровПроцедуры = Неопределено) Экспорт
Пример вызова
Результат = ДлительныеОперации.ВыполнитьПроцедуруВНесколькоПотоков(ИмяПроцедуры, ПараметрыВыполнения, НаборПараметровПроцедуры);
ПараметрыВыполненияФункции
Описание, пример вызова
// Конструктор коллекции ПараметрыВыполненияФункции для функции ВыполнитьФункцию.//// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.//// Параметры:// ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы,// во временное хранилище которой надо поместить результат выполнения процедуры.//// Возвращаемое значение:// Структура - параметры выполнения длительной операции:// * ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы,// во временное хранилище которой надо поместить результат выполнения процедуры.// * ОжидатьЗавершение - Неопределено - ждать до момента завершения фонового задания.// - Число - таймаут в секундах ожидания завершения фонового задания.// Если задано 0, то ждать завершения задания не требуется.// По умолчанию - 0.8 секунды, а для низкой скорости соединения - 4.// * НаименованиеФоновогоЗадания - Строка - описание фонового задания. По умолчанию - имя процедуры.// * КлючФоновогоЗадания - Строка - уникальный ключ активных фоновых заданий с одинаковым именем процедуры,// чтобы в приложении нельзя было запустить более одного задания одновременно.// По умолчанию не задан.// * АдресРезультата - Строка - адрес временного хранилища, в которое должен быть помещен результат// работы процедуры. Если не задан, адрес формируется автоматически.// * ЗапуститьВФоне - Булево - если Истина, то задание будет всегда выполняться в фоне, кроме ситуаций:// а) если вызов выполняется в файловой базе во внешнем соединении// (в этом режиме фоновые задания не поддерживаются);// б) если выполняется функция модуля внешней обработки или внешнего отчета.// Кроме того, в файловом варианте при наличии ранее запущенных фоновых заданий,// новое задание становится в очередь и начинает выполняться после завершения предыдущих.// Если Ложь, то задание будет выполнено в фоне по возможности.// * ЗапуститьНеВФоне - Булево - если Истина, задание всегда будет запускаться непосредственно,// без использования фонового задания.// * БезРасширений - Булево - если Истина, то фоновое задание будет запущено без подключения// расширений конфигурации. Имеет приоритет над параметром ЗапуститьНеВФоне.// * СРасширениямиБазыДанных - Булево - если Истина, то фоновое задание будет запущено с последней версией// расширений конфигурации. Имеет приоритет над параметром ЗапуститьНеВФоне.// * ВнешнийОтчетОбработка - Неопределено - по умолчанию.// - ДвоичныеДанные - когда указано имя метода, которое начинается// с "ВнешнийОтчет." или "ВнешняяОбработка.".// Для вызова такого метода требуется право интерактивного открытия// внешнего отчета или обработки соответственно.// Внешний отчет или обработка подключаются с защитой от опасных действий.// * ПрерватьВыполнениеЕслиОшибка - Булево - если Истина, то при возникновении ошибки в одном из дочерних фоновых// заданий, выполнение многопоточного фонового задания будет прервано.// Выполнение уже запущенных дочерних фоновых задания будет отменно.// Параметр только для функции ВыполнитьФункциюВНесколькоПотоков.// * УточнениеОшибки - Строка - если не пустая строка, тогда для пользователя текст ошибки// будет уточнен указанным начальным текстом. Пример уточнения:// НСтр("ru = 'Не удалось очистить адресный классификатор по причине:'")//Функция ПараметрыВыполненияФункции(Знач ИдентификаторФормы) Экспорт
Пример вызова
Результат = ДлительныеОперации.ПараметрыВыполненияФункции(ИдентификаторФормы)
ПараметрыВыполненияПроцедуры
Описание, пример вызова
// Конструктор коллекции ПараметрыВыполненияПроцедуры для функции ВыполнитьПроцедуру.//// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.//// Возвращаемое значение:// Структура - параметры выполнения длительной операции:// * ОжидатьЗавершение - Неопределено - ждать до момента завершения фонового задания.// - Число - таймаут в секундах ожидания завершения фонового задания.// Если задано 0, то ждать завершения задания не требуется.// По умолчанию - 0.8 секунды, а для низкой скорости соединения - 4.// * НаименованиеФоновогоЗадания - Строка - описание фонового задания. По умолчанию - имя процедуры.// * КлючФоновогоЗадания - Строка - уникальный ключ для активных фоновых заданий, имеющих такое же имя процедуры.// По умолчанию не задан.// * ЗапуститьВФоне - Булево - если Истина, то задание будет всегда выполняться в фоне, кроме ситуаций:// а) если вызов выполняется в файловой базе во внешнем соединении// (в этом режиме фоновые задания не поддерживаются);// б) если выполняется функция модуля внешней обработки или внешнего отчета.// Кроме того, в файловом варианте при наличии ранее запущенных фоновых заданий,// новое задание становится в очередь и начинает выполняться после завершения предыдущих.// Если Ложь, то задание будет выполнено в фоне по возможности.// * ЗапуститьНеВФоне - Булево - если Истина, задание всегда будет запускаться непосредственно,// без использования фонового задания.// * БезРасширений - Булево - если Истина, то фоновое задание будет запущено без подключения// расширений конфигурации. Имеет приоритет над параметром ЗапуститьНеВФоне.// * СРасширениямиБазыДанных - Булево - если Истина, то фоновое задание будет запущено с последней версией// расширений конфигурации. Имеет приоритет над параметром ЗапуститьНеВФоне.// * ВнешнийОтчетОбработка - Неопределено - по умолчанию.// - ДвоичныеДанные - когда указано имя метода, которое начинается// с "ВнешнийОтчет." или "ВнешняяОбработка.".// Для вызова такого метода требуется право интерактивного открытия// внешнего отчета или обработки соответственно.// Внешний отчет или обработка подключаются с защитой от опасных действий.// * ПрерватьВыполнениеЕслиОшибка - Булево - если Истина, то при возникновении ошибки в одном из дочерних фоновых// заданий, выполнение многопоточного фонового задания будет прервано.// Выполнение уже запущенных дочерних фоновых задания будет отменно.// Параметр только для функции ВыполнитьПроцедуруВНесколькоПотоков.// * УточнениеОшибки - Строка - если не пустая строка, тогда для пользователя текст ошибки// будет уточнен указанным начальным текстом. Пример уточнения:// НСтр("ru = 'Не удалось очистить адресный классификатор по причине:'")//Функция ПараметрыВыполненияПроцедуры() Экспорт
Пример вызова
Результат = ДлительныеОперации.ПараметрыВыполненияПроцедуры()
ВыполнитьВФоне
Описание, пример вызова
// Вместо этой функции рекомендуется использовать функции ВыполнитьФункцию и ВыполнитьПроцедуру.//// Запустить выполнение процедуры в фоновом задании, если это возможно.// Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.// Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение,// если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.//// Параметры:// ИмяПроцедуры - Строка - имя экспортной процедуры общего модуля, модуля менеджера объекта// или модуля обработки, которую необходимо выполнить в фоне.// Например, "МойОбщийМодуль.МояПроцедура", "Отчет.ЗагруженныеДанные.Сформировать"// или "Обработка.ЗагрузкаДанных.МодульОбъекта.Загрузить".// У процедуры должно быть два или три формальных параметра:// * Параметры - Структура - произвольные параметры ПараметрыПроцедуры;// * АдресРезультата - Строка - адрес временного хранилища, в которое нужно// поместить результат работы процедуры. Обязательно;// * АдресДополнительногоРезультата - Строка - если в ПараметрыВыполнения установлен// параметр ДополнительныйРезультат, то содержит адрес дополнительного временного// хранилища, в которое нужно поместить результат работы процедуры. Опционально.// При необходимости выполнить в фоне функцию ее следует обернуть в процедуру,// а ее результат возвращать через второй параметр АдресРезультата.// ПараметрыПроцедуры - Структура - произвольные параметры вызова процедуры ИмяПроцедуры.// ПараметрыВыполнения - см. ДлительныеОперации.ПараметрыВыполненияВФоне//// Возвращаемое значение:// Структура:// * Статус - Строка - "Выполняется", если задание еще не завершилось;// "Выполнено", если задание было успешно выполнено;// "Ошибка", если задание завершено с ошибкой;// "Отменено", если задание отменено пользователем или администратором.// * ИдентификаторЗадания - УникальныйИдентификатор - если Статус = "Выполняется", то содержит// идентификатор запущенного фонового задания.// - Неопределено - если Статус <> "Выполняется" и фоновое задание не запускалось.// * АдресРезультата - Строка - адрес временного хранилища, в которое будет помещен результат работы процедуры// (или уже помещен, если Статус = "Выполнено").// * АдресДополнительногоРезультата - Строка - если установлен параметр ДополнительныйРезультат,// содержит адрес дополнительного временного хранилища,// в которое будет помещен результат работы процедуры// (или уже помещен, если Статус = "Выполнено").// * ИнформацияОбОшибке - ИнформацияОбОшибке - если Статус = "Ошибка".// - Неопределено - если Статус <> "Ошибка".// * Сообщения - ФиксированныйМассив - если Статус <> "Выполняется", то массив объектов СообщениеПользователю,// которые были сформированы в фоновом задании.// * КраткоеПредставлениеОшибки - Строка - устарел.// * ПодробноеПредставлениеОшибки - Строка - устарел.//// Пример:// В общем виде процесс запуска и обработки результата длительной операции выглядит следующим образом://// 1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:// Процедура ВыполнитьДействие(Параметры, АдресРезультата) Экспорт// ...// ПоместитьВоВременноеХранилище(Результат, АдресРезультата);// КонецПроцедуры//// 2) Запуск операции на сервере и подключение обработчика ожидания:// &НаКлиенте// Процедура ВыполнитьДействие()// ДлительнаяОперация = НачатьВыполнениеНаСервере();// ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);// ...// ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьДействиеЗавершение", ЭтотОбъект);// ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);// КонецПроцедуры//// &НаСервере// Функция НачатьВыполнениеНаСервере()// ПараметрыПроцедуры = Новый Структура;// ...// ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);// ...// Возврат ДлительныеОперации.ВыполнитьВФоне("Обработка.МояОбработка.ВыполнитьДействие",// ПараметрыПроцедуры, ПараметрыВыполнения);// КонецФункции//// 3) Обработка результата выполнения операции:// &НаКлиенте// Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт// Если Результат = Неопределено Тогда// Возврат;// КонецЕсли;// Если Результат.Статус = "Ошибка" Тогда// СтандартныеПодсистемыКлиент.ВывестиИнформациюОбОшибке(Результат.ИнформацияОбОшибке);// Возврат;// КонецЕсли;// ВывестиРезультат(Результат);// КонецПроцедуры//Функция ВыполнитьВФоне(Знач ИмяПроцедуры, Знач ПараметрыПроцедуры, Знач ПараметрыВыполнения) Экспорт
Пример вызова
Результат = ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения)
ПараметрыВыполненияВФоне
Описание, пример вызова
// Возвращает новую структуру для параметра ПараметрыВыполнения функции ВыполнитьВФоне.//// Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.// Запуск с расширениями сеанса выполняется сразу в основном потоке при выполнении любого из следующих условий:// * если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);// * если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;// * если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя.//// Параметры:// ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы, во временное хранилище которой// необходимо поместить результат выполнения процедуры.// - Неопределено - если временное хранилище не нужно создавать автоматически на время жизни// формы, а его адрес предполагается задавать явно в свойстве АдресРезультата.// В таком случае, временное хранилище нужно очищать явно при обработке результата// длительной операции с помощью метода УдалитьИзВременногоХранилища.// Возвращаемое значение:// Структура:// * ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы,// во временное хранилище которой надо поместить результат выполнения процедуры.// * ДополнительныйРезультат - Булево - признак использования дополнительного временного хранилища для передачи// результата из фонового задания в родительский сеанс. По умолчанию - Ложь.// * ОжидатьЗавершение - Неопределено - ждать до момента завершения фонового задания.// - Число - таймаут в секундах ожидания завершения фонового задания.// Если задано 0, то ждать завершения задания не требуется.// По умолчанию - 0.8 секунды, а для низкой скорости соединения - 4.// * НаименованиеФоновогоЗадания - Строка - описание фонового задания. По умолчанию - имя процедуры.// * КлючФоновогоЗадания - Строка - уникальный ключ для активных фоновых заданий, имеющих такое же имя процедуры.// По умолчанию не задан.// * АдресРезультата - Строка - адрес временного хранилища, в которое должен быть помещен результат// работы процедуры. Если не задан, адрес формируется автоматически// на время жизни формы с помощью идентификатора ИдентификаторФормы.// * ЗапуститьВФоне - Булево - если Истина, то задание будет всегда выполняться в фоне, кроме ситуаций:// а) если вызов выполняется в файловой базе во внешнем соединении// (в этом режиме фоновые задания не поддерживаются);// б) если выполняется функция модуля внешней обработки или внешнего отчета.// Кроме того, в файловом варианте при наличии ранее запущенных фоновых заданий,// новое задание становится в очередь и начинает выполняться после завершения предыдущих.// Если Ложь, то задание будет выполнено в фоне по возможности.// * ЗапуститьНеВФоне - Булево - если Истина, задание всегда будет запускаться непосредственно,// без использования фонового задания.// * БезРасширений - Булево - если Истина, то фоновое задание будет запущено без подключения// расширений конфигурации. Имеет приоритет над параметром ЗапуститьНеВФоне.// * СРасширениямиБазыДанных - Булево - если Истина, то фоновое задание будет запущено с последней версией// расширений конфигурации. Имеет приоритет над параметром ЗапуститьНеВФоне.// * ВнешнийОтчетОбработка - Неопределено - по умолчанию.// - ДвоичныеДанные - когда указано имя метода, которое начинается// с "ВнешнийОтчет." или "ВнешняяОбработка.".// Для вызова такого метода требуется право интерактивного открытия// внешнего отчета или обработки соответственно.// Внешний отчет или обработка подключаются с защитой от опасных действий.// * УточнениеОшибки - Строка - если не пустая строка, тогда для пользователя текст ошибки// будет уточнен указанным начальным текстом. Пример уточнения:// НСтр("ru = 'Не удалось очистить адресный классификатор по причине:'")//Функция ПараметрыВыполненияВФоне(Знач ИдентификаторФормы = Неопределено) Экспорт
Пример вызова
Результат = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы);
СообщитьПрогресс
Описание, пример вызова
// Регистрирует информацию о ходе выполнения длительной операции.// Не следует использовать для передачи результата работы длительной операции по частям.//// Во избежание избыточного потребления памяти и ее утечек при выполнении одной длительной операции// не следует сообщать прогресс более 100 раз.//// Если прогресс сообщается менее чем через 3 сек после предыдущего вызова, то последнее сообщение// удаляется и заменяется на новое (если используется система взаимодействия, то отправка нового// сообщения не выполняется, а будет выполнена спустя некоторое время - не быстрее 3 сек).//// Перед отправкой прогресса отправляются все сообщения, накопленные в очереди сообщений фонового задания.//// Для того чтобы выводить ход выполнения длительной операции для пользователя в стандартной форме ожидания,// следует установить свойство ВыводитьПрогрессВыполнения в Истина (см. ДлительныеОперацииКлиент.ПараметрыОжидания).//// Параметры:// Процент - Число - процент выполнения.// Текст - Строка - информация о текущей операции.// ДополнительныеПараметры - Произвольный - любая дополнительная информация, которую необходимо передать на клиент.// Значение должно быть простым (сериализуемым в XML-строку).// Размер данных не должен превышать размер, указанный для параметра Результат// процедуры СерверныеОповещения.ОтправитьСерверноеОповещение.//Процедура СообщитьПрогресс(Знач Процент = Неопределено, Знач Текст = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт
Пример вызова
ДлительныеОперации.СообщитьПрогресс(Процент, Текст, ДополнительныеПараметры);
ПрочитатьПрогресс
Описание, пример вызова
// Считывает информацию о ходе выполнения длительной операции,// записанную процедурой ДлительныеОперации.СообщитьПрогресс.//// Рекомендуется получать прогресс через обработчик оповещения,// который подключается с помощью ДлительныеОперацииКлиент.ОжидатьЗавершение.//// Параметры:// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания.//// Возвращаемое значение:// Неопределено - нет информации о ходе выполнения.// Структура:// * Процент - Число - необязательный. Процент выполнения.// * Текст - Строка - необязательный. Информация о текущей операции.// * ДополнительныеПараметры - Произвольный - необязательный. Любая дополнительная информация.//Функция ПрочитатьПрогресс(Знач ИдентификаторЗадания) Экспорт
Пример вызова
Результат = ДлительныеОперации.ПрочитатьПрогресс(ИдентификаторЗадания)
ОтменитьВыполнениеЗадания
Описание, пример вызова
// Отменяет выполнение фонового задания по переданному идентификатору.// При этом если в длительной операции открывались транзакции, то будет произведен откат последней открытой транзакции.//// Таким образом, если длительная операция выполняет обработку (запись) данных, то для полной отмены всей операции// следует выполнять запись в одной транзакции (в таком случае, будет отменена вся транзакция целиком).// Если же достаточно, чтобы длительная операция была не отменена целиком, а прервана на достигнутом этапе,// то, напротив, открывать одну длинную транзакцию не требуется.//// Параметры:// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания, полученный при запуске// длительной операции. Смотри ДлительныеОперации.ВыполнитьВФоне.//Процедура ОтменитьВыполнениеЗадания(Знач ИдентификаторЗадания) Экспорт
Пример вызова
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания)
ЗаданиеВыполнено
Описание, пример вызова
// Проверяет состояние фонового задания по переданному идентификатору.// При аварийном завершении задания вызывает исключение с текстом ошибки,// возникшим в нем, и уточнением вида "См. также журнал регистрации".//// Параметры:// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания.// РасширенныйРезультат - Булево - если Истина, вернуть структуру.//// Возвращаемое значение:// Булево - состояние выполнения задания.// Структура:// * Статус - Строка - "Выполняется", если задание еще не завершилось;// "Выполнено", если задание было успешно выполнено;// "Ошибка", если задание завершено с ошибкой;// "Отменено", если задание отменено пользователем или администратором.//// * ИнформацияОбОшибке - ИнформацияОбОшибке - если Статус = "Ошибка" или Статус = "Отменено".// - Неопределено - если Статус <> "Ошибка" и Статус <> "Отменено".//// * ИдентификаторЗадания - УникальныйИдентификатор - последний идентификатор задания,// если были перезапуски (например, при многопоточной длительной операции)// или тот же идентификатор, что передан в функцию, когда перезапусков не было.//// * Задание - Неопределено - задание не найдено.// - ФоновоеЗадание - когда задание найдено.//// * ТекстОшибки - Строка - устарел.// * КраткоеПредставлениеОшибки - Строка - устарел.// * ПодробноеПредставлениеОшибки - Строка - устарел.//Функция ЗаданиеВыполнено(Знач ИдентификаторЗадания, РасширенныйРезультат = Ложь) Экспорт
Пример вызова
Результат = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания, РасширенныйРезультат);
СообщенияПользователю
Описание, пример вызова
// Получает сообщения пользователю из фонового задания длительной операции.//// Рекомендуется получать сообщения через обработчик оповещения,// который подключается с помощью ДлительныеОперацииКлиент.ОжидатьЗавершение.//// Параметры:// УдалятьПолученные - Булево - признак необходимости удаления полученных сообщений.// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания, соответствующего длительной// операции, у которой требуется получить сообщения пользователю.// Если не задан, то сообщения пользователю возвращаются// из сеанса текущего пользователя.//// Возвращаемое значение:// ФиксированныйМассив - объекты СообщениеПользователю, которые были сформированы в фоновом задании.//// Пример:// Операция = ДлительныеОперации.ВыполнитьВФоне(...);// ...// Сообщения = ДлительныеОперации.СообщенияПользователю(Истина, Операция.ИдентификаторЗадания);//Функция СообщенияПользователю(УдалятьПолученные = Ложь, ИдентификаторЗадания = Неопределено) Экспорт
Пример вызова
Результат = ДлительныеОперации.СообщенияПользователю(УдалятьПолученные, ИдентификаторЗадания);
ЗапуститьВыполнениеВФоне
Описание, пример вызова
// Устарела. Следует использовать ВыполнитьВФоне.//// Запускает выполнение процедуры в фоновом задании.// Является менее функциональным аналогом ВыполнитьВФоне, предусмотрена для обратной совместимости.//// Параметры:// ИдентификаторФормы - УникальныйИдентификатор - идентификатор формы,// из которой выполняется запуск длительной операции.// ИмяЭкспортнойПроцедуры - Строка - имя экспортной процедуры,// которую необходимо выполнить в фоне.// Параметры - Структура - все необходимые параметры для// выполнения процедуры ИмяЭкспортнойПроцедуры.// НаименованиеЗадания - Строка - наименование фонового задания.// Если не задано, то будет равно ИмяЭкспортнойПроцедуры.// ИспользоватьДополнительноеВременноеХранилище - Булево - признак использования// дополнительного временного хранилища для передачи данных// в родительский сеанс из фонового задания. По умолчанию - Ложь.//// Возвращаемое значение:// Структура - параметры выполнения задания:// * АдресХранилища - Строка - адрес временного хранилища, в которое будет// помещен результат работы задания;// * АдресХранилищаДополнительный - Строка - адрес дополнительного временного хранилища,// в которое будет помещен результат работы задания (доступно только если// установлен параметр ИспользоватьДополнительноеВременноеХранилище);// * ИдентификаторЗадания - УникальныйИдентификатор - уникальный идентификатор запущенного фонового задания;// - Неопределено - если фоновое задание не запускалось;// * ЗаданиеВыполнено - Булево - Истина если задание было успешно выполнено за время вызова функции.//Функция ЗапуститьВыполнениеВФоне(Знач ИдентификаторФормы, Знач Имя Экспорт
Пример вызова
Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(ИдентификаторФормы, ИмяЭкспортнойПроцедуры, Параметры, );
© 2024, ООО 1С-Софт
Все права защищены. Эта программа и сопроводительные материалы предоставляются
в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0).