Создание внешней обработки в фоне на БСП - проще простого, для ленивых или начинающих

04.12.20

Разработка - БСП (Библиотека стандартных подсистем)

Представлен шаблон обработки для выполнения в фоновом режиме. По сути в Команде нужно прописать Параметры и путь к Модулю, все остальное универсально.

Данная публикация основана на теории из Асинхронная концепция программирования

Работает на Платформе 3.14+ и на версии БСП: 3.0+.

Расположение выполняемой Процедуры - зависит от ситуации.

Данный пример демонстрирует, что Процедуру можно вызывать как из Общего модуля так и из Модуля менеджера - обработки расположенной в Конфигурации или в Расширении.

1. В общем модуле или Модуле менеджера Обработки нужно создать Экспортную Процедуру:

Процедура НашаДлительнаяОперация(Параметры, Заглушка) Экспорт
    // Имитация продолжительного действия (Длительность сек.).
    ДатаНачалаОперации    = ТекущаяДата();

    Пока ТекущаяДата()-ДатаНачалаОперации<Параметры.Длительность Цикл
    КонецЦикла;
КонецПроцедуры


2. Нужно создать внешнюю обработку и добавить форму, на форме создать:

2.1. Реквизит - Длительность и ФоновоеЗадание

2.2. Команды - ТестОМ и ТестОбработка

2.3. Обработчик события - ПриСозданииНаСервере

 

3. В модуль формы вставить следующий код:

&НаКлиенте
Перем ПараметрыОбработчикаОжидания;

&НаКлиенте
Перем ФормаДлительнойОперации;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ФоновоеЗадание = Новый Структура("
        |ИмяЗадания,
        |ИдентификаторЗадания,
        |АдресХранилища");
КонецПроцедуры

&НаКлиенте
Процедура ТестОМ(Команда)
    ПараметрыЗадания = Новый Структура;
    ПараметрыЗадания.Вставить("Длительность", Длительность);
    
    ЗапуститьФоновоеЗадание("Фоновое задание", ПараметрыЗадания, "ОбщийМодульСервер.НашаДлительнаяОперация");
КонецПроцедуры

&НаКлиенте
Процедура ТестОбработка(Команда)
    ПараметрыЗадания = Новый Структура;
    ПараметрыЗадания.Вставить("Длительность", Длительность);
    
    ЗапуститьФоновоеЗадание("Фоновое задание", ПараметрыЗадания, "Обработки.Обработка.НашаДлительнаяОперация");
КонецПроцедуры

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

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

&НаСервере
Функция ЗапуститьФоновоеЗаданиеНаСервере(ИмяЗадания, ПараметрыЗадания, Модуль)
    
    РезультатЗапускаЗадания = ЗапуститьЗаданиеНаСервере(ИмяЗадания, ПараметрыЗадания, Модуль);
    
    ФоновоеЗадание.ИмяЗадания           = ИмяЗадания;
    ФоновоеЗадание.ИдентификаторЗадания = РезультатЗапускаЗадания.ИдентификаторЗадания;
    ФоновоеЗадание.АдресХранилища       = РезультатЗапускаЗадания.АдресХранилища;
    
    Возврат РезультатЗапускаЗадания.ЗаданиеВыполнено;

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

&НаСервере
Функция ЗапуститьЗаданиеНаСервере(НаименованиеЗадания, ПараметрыЗадания, Модуль)
    
    РезультатЗапускаЗадания = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
                                    УникальныйИдентификатор,
                                    Модуль,
                                    ПараметрыЗадания,
                                    НаименованиеЗадания);
            
    Возврат РезультатЗапускаЗадания;
        
КонецФункции

&НаКлиенте
Процедура ОбработатьЗавершениеЗаданияНаКлиенте(ОбновитьДанные = Истина)

    ЗавершениеФоновогоЗадания(ФоновоеЗадание.АдресХранилища, ОбновитьДанные);

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

&НаКлиенте
Процедура ОткрытьФормуДлительнойОперации()
    
    ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания);
    
    ПараметрыОбработчикаОжидания.КоэффициентУвеличенияИнтервала = 1.2;
    ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 1, Истина);
    
    ФормаДлительнойОперации = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(
        ЭтаФорма, ФоновоеЗадание.ИдентификаторЗадания);
    
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеФоновогоЗадания(АдресХранилища, ОбновитьДанные)
    
    Результат = ЗавершениеЗаданияНаСервере(АдресХранилища);
    
КонецПроцедуры

&НаСервере
Функция ЗавершениеЗаданияНаСервере(АдресХранилища)
    
    Результат = ПолучитьИзВременногоХранилища(АдресХранилища);
    
    Возврат Результат;
    
КонецФункции

&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗадания()
    
    Попытка
        
        Если ФормаДлительнойОперации.Открыта() Тогда
            
            Если ЗаданиеВыполнено(ФоновоеЗадание.ИдентификаторЗадания) Тогда
                ОбработатьЗавершениеЗаданияНаКлиенте();
                ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации);
            Иначе
                ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания);
                ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания",
                    ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина);
            КонецЕсли;
                
        КонецЕсли;
        
    Исключение
        
        ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДлительнойОперации);
        ВызватьИсключение;
        
    КонецПопытки;
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗаданиеВыполнено(ИдентификаторЗадания)
    
    Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
    
КонецФункции

 

Вступайте в нашу телеграмм-группу Инфостарт

Внешняя обработка БСП фоновые задания

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)

Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С

25000 руб.

06.03.2026    1786    4    0    

3

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

3254 руб.

21.11.2024    13965    49    28    

57

БСП (Библиотека стандартных подсистем) Программист 1С 8.3 1С:Библиотека стандартных подсистем Россия Абонемент ($m)

Все мы когда-то писали свои функции для получения реквизита через точку или парсинга строк. В этой статье собрана выжимка самых полезных и ежедневно необходимых процедур и функций БСП. Никакой сухой документации ИТС — только жизненные кейсы, чистый код и разбор ситуаций, когда стандартные подсистемы делают работу за нас.

1 стартмани

30.07.2026    5949    Elya_Elya    14    

19

БСП (Библиотека стандартных подсистем) Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Каждый раз, когда разработчик 1С пишет очередной цикл для свертки массива или использует конструкцию Попытка / Исключение для проверки наличия реквизита, где-то грустит один архитектор фирмы «1С». Мы привыкли изобретать велосипеды там, где в Библиотеке стандартных подсистем (БСП) уже давно лежат готовые, оптимизированные и протестированные на тысячах баз решения. Ниже — практическая подборка из 8 методов актуальных релизов БСП (3.X), которые сделают ваш код чище, быстрее и профессиональнее. Разберем на примерах «Было / Стало».

04.06.2026    11313    Kaliostr0    21    

36

БСП (Библиотека стандартных подсистем) Универсальные функции Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Когда появляется необходимость сделать подключаемую внешнюю обработку, будь это печатная форма или отчет - нам всегда приходится прописывать сведения о внешней обработке для подключения их в соответствующий справочник. И это занимает некоторое время, что не очень удобно. Как для себя, так и для вас - я подготовил ряд примеров использования этой функции, можете выбрать один из них, чтобы в дальнейшем использовать их в шаблонах текста. Комментарии по дополнению и исправлению статьи - приветствуются.

06.02.2026    19022    manul1c    7    

27

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Использование Библиотеки стандартных подсистем позволяет разработчикам 1С значительно ускорить процесс создания решений за счет готового универсального кода, поддерживаемого и обновляемого официальным вендором. В статье рассказывается про роль и применение «Библиотеки стандартных подсистем» (БСП), примеры интеграции и подключения подсистем.

23.09.2025    16945    AlexeyPROSTO_1C    2    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TMV 1 06.12.20 19:01 Сейчас в теме
Этот вариант же уже обсосан сто раз.
Куда интереснее вариант запуска процедура из модуля самой внешней обработки - хотя и для него здесь есть решения.
ubnkfl; Summer_13; quazare; +3 Ответить
2. Olenevod 36 12.12.20 20:22 Сейчас в теме
Было бы интересней посмотреть на реализацию в которой нет завязки на БСП.
А также вариант с прогрессбаром. Причем интересно было бы если несколько прогресс баров на разные команды отображались.
Такой универсальный шаблон был бы интересным.
CrystalEyeNN; Рамзес; +2 Ответить
Для отправки сообщения требуется регистрация/авторизация