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

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

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

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

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

Posted on 31 июля 23 г.28 августа 26 г. By Алексей Комментариев к записи Шаблон «Длительной операции» с процентами нет

Содержание:

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

Все серверные вызовы, которые могут длиться больше 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
18
19
20
21
22
23
24
#Область ОбработчикиКомандФормы
 
&НаКлиенте
Процедура ВыполнитьСПроцентами(Команда)
// 1. Запуск фонового задания на сервере.
ДлительнаяОперация = НачатьВыполнениеДолгойФункции(
УникальныйИдентификатор,
Объект.НомерДокумента,
Объект.ДатаДокумента);
 
// 2. Подключение обработчика завершения фонового задания.
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
ПараметрыОжидания.Интервал = 1;
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДлительнаяОперация,
Новый ОписаниеОповещения("ВыполнениеДолгойПроцедурыЗавершение", ЭтотОбъект),
ПараметрыОжидания);
КонецПроцедуры
 
#КонецОбласти

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

Модуль формы
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
&НаСервереБезКонтекста
Функция НачатьВыполнениеДолгойФункции(Знач ИдентификаторФормы, Знач НомерДокумента, Знач ДатаДокумента)
// Обработка может находится в модуль менеджере или в серверном общем модуле
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(ИдентификаторФормы);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("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
Функция ПолучениеСложныхДанных(НомерДокумента, ДатаДокумента) Экспорт
Результат = 0;
Всего = 100;
Для Сч = 1 По Всего Цикл
// Сложная операция
ДокументСсылка = Документы.ЛистокСообщенияДляВоенкомата.НайтиПоНомеру(НомерДокумента, ДатаДокумента);
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.Записать();
Результат = Результат + 1;
// Пример передачи прогресса выполнения фонового задания
// Не рекомендуется сообщать прогресс больше 100 раз за операцию
ТекущийПроцент = Сч;
ДлительныеОперации.СообщитьПрогресс(ТекущийПроцент, "Текст");
КонецЦикла;
Возврат Результат;
КонецФункции

В теле функции выводится информация о прогрессе выполнения (ДлительныеОперации.СообщитьПрогресс — не рекомендовано вызывать больше 100 раз за операцию).

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
26
27
28
29
30
&НаКлиенте
Процедура ВыполнениеДолгойПроцедурыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Ошибка" Тогда
СтандартныеПодсистемыКлиент.ВывестиИнформациюОбОшибке(Результат.ИнформацияОбОшибке);
Возврат;
КонецЕсли;
ДлительныеОперацииЗавершениеНаСервере(Результат.АдресРезультата);
УдалитьИзВременногоХранилища(Результат.АдресРезультата);
КонецПроцедуры
 
&НаСервереБезКонтекста
Процедура ДлительныеОперацииЗавершениеНаСервере(Знач АдресХранилища)
Результат = ПолучитьИзВременногоХранилища(АдресХранилища);
// Здесь должен быть код обработки полученного результата
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Сложная операция выполнена. Всего записано документов: %1'"),
Результат);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецПроцедуры
Отладка

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

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

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

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

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

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

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

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

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

ДзенTelegram

Разработки

  • Печатная форма "Расходный кассовый ордер" для ЗУП 3.1 Печатная форма "Расходный кассовый ордер" ЗУП 3.1 650,00 ₽
  • Отчет "План-факт отпусков сотрудников в виде диаграммы Ганта Отчет "План-факт по отпускам сотрудников" ЗУП 3.1 650,00 ₽
  • Приказ об отмене трудового договора (рис 1) Печатная форма "Отмена приема на работу" ЗУП 3.1 650,00 ₽
  • Обработка “Выплата сотруднику через банк” ЗУП 3.1 Обработка “Выплата сотруднику через банк” ЗУП 3.1 0,00 ₽
  • Тестирование API Яндекс GPT Обработка "Работа с API YandexGPT" 650,00 ₽

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

Яндекс.Метрика

© 2022-2026 myblog-1c.ru

Пользовательское соглашение

Контакты