Первый набор функций - флаги начала / окончания процессов:
Функция НачалоПроцесса(НаименованиеПроцесса = "", ОбработчикПрерывания = "", ПараметрыОбработчика = Неопределено) Процедура ОкончаниеПроцесса()
Как следует из названия - первая функция предназначена для обозначения начала процесса. При этом, при вызове из формы возможно передать либо код, который должен выполниться после прерывания процесса пользователем (по ctrl+break) - стоку кода, либо наименование функции и массив параметров. Вторая функция - обозначает конец процесса. Эти функции используют стек процессов, т.е. на каждое начало процесса необходимо обозначить его окончание. При прерыванни процесса вызываются обработчики прерывания для всего стека процессов.
Второй набор - процедуры для визуализации процесса выполнения операций:
Функция мСоздатьПрогрессор(Описание="", ВсегоШагов=0, НеВычислятьВремя=Ложь, ЭлементФормы=Неопределено, Кратность = 1) Процедура мОбновитьПрогрессор(прогрессор, ДопИнформация="")
Предназначены для вывода информации (%, счетчик, оставшееся время) в строку состояния, либо в указанный элемент формы.
Третий набор - служебные функции, среди которых следует отметить:
Процедура мСообщить(Сообщение, Знач Важность = Неопределено)
Процедура повторяет по назначению встроенную "Сообщить", с тем отличием, что учитывает уровень процесса.
Также используется переменная:
Перем мИмяФайлаЛога;
При указании имени файла, функция мСообщить() будет дублировать сообщения в указанный файл
Пример использования процедур (результаты - на скриншотах):
Процедура ОсновныеДействияФормыТест(Кнопка)
Процесс = НачалоПроцесса("Вход в процедуру", "ЭлементыФормы.СтрокаПрогрессора.Заголовок = """"");
ОбщийПрогрессор = мСоздатьПрогрессор(Процесс.Наименование, 3, , ЭлементыФормы.СтрокаПрогрессора);
Для н = 0 по 3 Цикл
мОбновитьПрогрессор(ОбщийПрогрессор, "Шаг №: " + н);
мСообщить(" Шаг внешнего цикла №: " + н);
Процесс = НачалоПроцесса("Вложенный цикл");
Прогрессор = мСоздатьПрогрессор("Тест прогрессора", 5);
Для к = 0 по 5 Цикл
мОбновитьПрогрессор(Прогрессор);
мСообщить(" Шаг внутреннего цикла №: " + к);
Пауза(2);
КонецЦикла;
ОкончаниеПроцесса();
КонецЦикла;
ОкончаниеПроцесса();
ЭлементыФормы.СтрокаПрогрессора.Заголовок = "";
КонецПроцедуры
Тексты функций и пример использования: //infostart.ru/profile/18122/projects/2824/
Далее результаты использования:
Пример вложеных сообщений и двух прогрессоров
Пример реакции на прерывание пользователем (элемент формы выделен, т.к. очищен автоматически после прерывания)
Вступайте в нашу телеграмм-группу Инфостарт
