Привет всем! В данной статье предлагаю алгоритм по-шагового разбора примера создания "Длительной операции" на базе библиотеки стандартных подсистем (БСП). Всем кому интересно, что такое БСП - можете почитать в других моих статьях. В публикации я постараюсь придерживаться стандартов разработки, основанных на системе БСП. В качестве примера будет разрабатываться внешняя обработка (я бы даже  сказал шаблон), которая будет обращаться к созданному мной серверному  общему модулю с функциями или процедурами длительных операций. Не буду использовать расширения - не считаю нужным в этом примере. Так же посмотрим некоторые новые функции БСП для работы с "длительными операциями". Свою разработку я начну с написания общего серверного модуля, в  котором размещу процедуру для длительной операции. Добавляем вот такой  текст процедуры: Данная процедура очень простенькая, но для того, чтобы она работала и  "отдавала" состояние пользователю нам нужно - во-первых правильно  передать ей структуру параметров, чтобы она "запустилась" вообще и во-вторых - использовать функционал БСП сообщать прогресс "Процентом", "Текстом" - ДлительныеОперации.СообщитьПрогресс. На этом разработка общего модуля так быстро завершена и я перейду к  программированию внешней обработки, в которой напишем всю "обвязку" к  длительной операции процедурыПровестиДокументы222. Для начала нарисуем форму обработки:  Добавим в форму вот такие реквизиты:   Пройдемся по реквизитам : ДатаНачала, ДатаОкончания и Организация - это необходимые реквизиты для запуска процедуры "на удаленке - в фоне". Индикатор и СтрокаСостояния - вспомогательные реквизиты отображения на форме обработки ИдЗадания - один из важных реквизитов (он не  выводится на форму) - это уникальный идентификатор создаваемого фонового  задания, по которому это задание можно будет "отловить" в дальнейшем. Начнем с написания кода кнопки "Запустить операцию"  на форме обработки. Он выглядит вот так - можно его просто скопировать и  привязать действие к кнопке (как и все далее - будет сразу работать,  кстати): В этой процедуре мы заполняем ПараметрыЗапуска  для структуры фонового задания, задаем вывод ПрогрессаВыполнения с интервалом на форму длительной операции. Также, мы "активируем" фоновое задание и "отслеживаем его" с помощью ДлительныеОперацииКлиент.ОжидатьЗавершение().  Опишем оповещение "ОбработатьДанные". Это оповещение вызывается при завершении фонового задания. Выглядит вот так:  Теперь, опишем основную функцию внешней обработки ВыполнитьФоновоеЗаданиеНаСервере(). Выглядит она вот так: В принципе, все - можно уже работать и получать информацию о статусе фонового задания.  Отмечу сразу, что функция БСП "ВыполнитьВФоне" уже немного устарела. Взамен ее рекомендуют использовать функции - ВыполнитьФункцию и ВыполнитьПроцедуру. Но, о них я напишу чуть позже.   Процесс выполнения фонового задания в "стандартном режиме" будет выглядеть вот так: Так, тут все просто и понятно - достаточно запомнить один раз и  использовать многократно. Теперь, перейдем к разработке функционала для  отображения статуса и состояния на форме внешней обработки. Для этого изначально доработаем нашу исходную процедуру - повесим в  нее "обработчик ожидания" на отслеживание нашего состояния по заданному  уникальному идентификатору Так же, заблокируем Интервал и ВыводитьПрогрессВыполнения. И добавим ПараметрыОжидания.ВыводитьОкноОжидания = Ложь (запрет вывода типовой формы длительной операции). Опишем процедуру ПодключитьОбработкиОжидания - ОбработчикОжиданияИндикатор. Выглядит она вот так:  Серверная функция ПрочитатьПрогресс на базе БСП библиотеки - выглядит вот так:  Итог работы данных изменений и добавлений в обработку будет такой: В данной статье я сделал выжимку из своего опыта, отсек лишнее и  показал как можно быстро и понятно использовать стандартные методы БСП  для реализации, так сказать, асинхронности в базах данных 1с (т.е.  запуска обработок) без блокирования интерфейса пользователя. Всем спасибо за прочтение данной статьи. Вы так же можете ознакомиться с рядом других моих статей, посвященным стандартам и методам программирования в 1с с помощью библиотеки стандартных подсистем.  программист 1С