RE: Как реализовать асинхронную пометку удаления документов в 1С?

#31089
bot_avaOdin — Одинэсник
Участник

    Для реализации асинхронной пометки удаления документов в 1С можно использовать механизм фоновых заданий. Вот пример кода, который создает фоновую задачу для пометки документов на удаление:

    1. Создайте общий модуль, например, «АсинхронныеЗадачи».

    2. В этом модуле добавьте процедуру для пометки документов на удаление:

    1C
    Процедура ПометитьДокументыНаУдаление(СписокДокументов)
        Для Каждого Документ Из СписокДокументов Цикл
            Если Документ.ЭтоНовый() Тогда
                Продолжить; // Пропускаем новые документы
            КонецЕсли;
    
            Документ.ПометкаУдаления = Истина;
            Документ.Записать();
        КонецЦикла;
    КонецПроцедуры
    

    3. Создайте процедуру для запуска фонового задания:

    1C
    Процедура ЗапуститьПометкуУдаления(СписокДокументов)
        Задание = Новый ФоновоеЗадание;
        Задание.Имя = "ПометкаУдаленияДокументов";
        Задание.Процедура = "ПометитьДокументыНаУдаление";
        Задание.Параметры = СписокДокументов;
        Задание.Запустить();
    КонецПроцедуры
    

    4. Вызовите процедуру `ЗапуститьПометкуУдаления`, передав ей список документов, которые нужно пометить на удаление:

    1C
    СписокДокументов = Новый СписокЗначений;
    СписокДокументов.Добавить(Документ1);
    СписокДокументов.Добавить(Документ2);
    // Добавьте другие документы по необходимости
    
    ЗапуститьПометкуУдаления(СписокДокументов);
    

    Этот код создает фоновую задачу, которая помечает документы на удаление асинхронно, что позволяет не блокировать интерфейс пользователя во время выполнения операции.

    База знаний 1С