Skip to content
лого - блог 1с программиста

Блог 1С программиста

Наработки, заметки и другая информация по 1С

  • Главная
  • ЗУП 3.1
    • Разработка
      • Обработки
      • Отчеты
      • Печатные формы
      • Расширения
    • Инструкции
    • Ответы техподдержки 1С
    • Общие вопросы
  • УХ 3.2
  • ДО 2.1
  • Интеграции и обмены
  • Шаблоны и заготовки
    • Типовые приемы
    • Отчеты
    • Печатные формы
    • Расширения
  • Платформа 1С
  • Контакты
  • Toggle search form

Шаблон “Длительной операции” с процентами

Posted on 31 июля 23 г.31 июля 23 г. By admin Комментариев к записи Шаблон “Длительной операции” с процентами нет

Содержание:

  • Файлы материала
  • Описание
  • Отладка
Файлы материала
Расширение “Образец длительной операции”Скачать
Пример расширение с длительной операцией

Все серверные вызовы, которые могут длиться больше 8 секунд 1С рекомендует реализовывать через длительные операции, более подробно из официальных источников можно почитать тут.

В данной статье приведен пример расширения с демонстрацией работы длительной операции с выводом процентов (протестировано на ЗУП 3.1 с БСП 3.1.7.343)

Описание

Расширение состоит из обработки, в форме которой добавлена команда ВыполнитьСПроцентами().

Модуль формы
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
&НаКлиенте
Процедура ВыполнитьСПроцентами(Команда)
// 1. Запуск фонового задания на сервере.  
ДлительнаяОперация = НачатьВыполнениеДолгойФункции();
 
// 2. Подключение обработчика завершения фонового задания.
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
ПараметрыОжидания.Интервал  = 1;  
ДлительныеОперацииКлиент.ОжидатьЗавершение(
        ДлительнаяОперация,
        Новый ОписаниеОповещения("ВыполнениеДолгойПроцедурыЗавершение", ЭтотОбъект),
        ПараметрыОжидания);
КонецПроцедуры

1. С помощью функции НачатьВыполнениеДолгойФункции() инициализируем длительную операцию

Модуль формы
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаСервере
Функция НачатьВыполнениеДолгойФункции()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Получение сложных данных'");
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
// обработка может находится в модуле менеджера любого объекта или в общем модуле
Возврат ДлительныеОперации.ВыполнитьФункцию(УникальныйИдентификатор, "Обработки.АВ_ОбработкаДлительнаяОперация.ПолучениеСложныхДанных", Объект.ДатаАктуальности);
 
// Есть аналог с процедурой вместо функции, соответственно в модуль менеджере должна быть процедура
//ДлительныеОперации.ПараметрыВыполненияПроцедуры();
//ДлительныеОперации.ВыполнитьПроцедуру();
КонецФункции
 

В которой и вызывается “тяжелая” экспортная функция из модуля менеджера обработки

Модуль менеджера
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Функция ПолучениеСложныхДанных(Параметры) Экспорт
//Здесь должен находиться код, определяющий выполнение длительной процедуры
Всего = 500;
Для Сч = 1 по Всего Цикл
// Сложная операция      
ДокументСсылка = Документы.ЛистокСообщенияДляВоенкомата.НайтиПоНомеру("0000-000001", ТекущаяДата());
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.Записать();
//Пример передачи прогресса выполнения фонового задания
Процент = Окр(Сч/Всего*100,0);
Если НЕ (Сч) % 10 Тогда
ДлительныеОперации.СообщитьПрогресс(Окр(Процент,0), "Текст");
КонецЕсли;
КонецЦикла;
Результат = Всего;
Возврат Результат;
КонецФункции

2. Вторым шагом в команде ВыполнитьСПроцентами() был подключен обработчик завершения с вызовом экспортной функции ВыполнениеДолгойПроцедурыЗавершение().

Модуль формы
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
&НаКлиенте
Процедура ВыполнениеДолгойПроцедурыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда     
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
   ПоказатьПредупреждение(,Результат.КраткоеПредставлениеОшибки);
Иначе
ДлительныеОперацииЗавершениеНаСервере(Результат.АдресРезультата);
УдалитьИзВременногоХранилища(Результат.АдресРезультата);
КонецЕсли;
КонецПроцедуры
 
&НаСервере
Процедура ДлительныеОперацииЗавершениеНаСервере(АдресХранилища)
Результат = ПолучитьИзВременногоХранилища(АдресХранилища);
//Здесь должен быть код обработки полученного результата
Сообщить("Сложная операция выполнена! Всего записано документов:" +Строка(Результат));
КонецПроцедуры
Отладка

Для того, что бы поймать в отладчике выполнении “тяжелой” функции модуль менеджера, необходимо в меню Сервис -> Параметры написать в параметрах запуска РежимОтладки, но тогда соответственно процентов вы не увидите.

Отладка длительной операции

Образец расширения можно скачать в начале статьи.

Рекомендации

  • Шаблон отчета СКД с получением данных из ТаблицыЗначений
Расширения, Шаблоны и заготовки Tags:длительная операция

Навигация по записям

Previous Post: Как добавить новую колонку в форму списка
Next Post: Ошибка ERR_166, ERR_171 при ответе на запрос ФСС

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

ДзенTelegram

MDM web-сервис БИД Бухучет КД 2.0 Командировки НДФЛ П-4 ПВХ Подбор персонала Резервы отпусков СЗВ-ТД СКД СТД-Р СЭДО ФСС ФСС НС ЭЛН больничные листы взносы выплаты вычеты диалог длительная операция интерфейс кадровая история кадровые данные кадровые переводы контактная информация легкий труд макет мастер-данных менеджер расчета зарплаты обмен данными оповещения отпуска представление прием на работу связь параметров связь по типу синхронизация ЗУП и БП средний заработок табель таблица периодов фотография

Рубрики

  • Без категории (1)
  • ДО 2.1 (1)
  • ЗУП 3.1 (41)
    • Инструкции (4)
    • Общие вопросы (14)
    • Ответы техподдержки 1С (10)
    • Разработка (8)
      • Обработки (3)
      • Отчеты (1)
      • Печатные формы (1)
      • Расширения (3)
  • Интеграции и обмены (7)
  • Платформа 1С (1)
  • УХ 3.2 (3)
  • Шаблоны и заготовки (23)
    • Отчеты (12)
    • Печатные формы (6)
    • Расширения (2)
    • Типовые приемы (7)
Top.Mail.Ru

© 2022-2023 myblog-1c.ru