Знакома ли вам эта неловкая ситуация, когда устанавливаешь обновление конфигурации, и вдруг начинается реструктуризация таблиц. Таблицы оказываются большими, обновление затягивается, и пользователи начинают приставать с вопросами: "Ну, когда же можно будет работать?" Вы отвечаете: "Не знаю...". А они опять: "Ну хотя бы примерно?" Но разработчики платформы "1С:Предприятие", видимо, посчитали, что информировать пользователей о ходе выполнения процесса не обязательно и, соответственно, этого не сделали. И даже более того - разработчики не предусмотрели возможности прервать процесс. Ну, да ладно, оставим это на их совести. Здесь мы всё равно ничем помочь не сможем. Давайте будем делать то, что в наших силах.
В статье "Как прервать выполнение обработки в 1С 8" я рассказывал, как предоставить пользователю возможность прерывать затянувшиеся по времени процессы. Но это лишь полдела. Ведь неизбежно возникает вопрос: как пользователь должен догадаться, что процесс затянется надолго? По факту того, что он уже долго выполняется? А если остаётся совсем немного, а пользователь прервёт процесс? Решение: пользователя нужно информировать о ходе выполнения программы.
Сейчас я вам продемонстрирую три способа информирования пользователя о ходе выполнения цикла обработки:
Создайте обработку. В процедуре обработки события нажатия на кнопку "Выполнить" напишите такой код:
Запустите обработку и посмотрите, как это работает. Вот теперь пользователю все карты в руки.
P. S. Вот примерно такую статью вы можете разместить в этом блоге, а взамен получить до двух ссылок на свои ресурсы. Подробности здесь.
В статье "Как прервать выполнение обработки в 1С 8" я рассказывал, как предоставить пользователю возможность прерывать затянувшиеся по времени процессы. Но это лишь полдела. Ведь неизбежно возникает вопрос: как пользователь должен догадаться, что процесс затянется надолго? По факту того, что он уже долго выполняется? А если остаётся совсем немного, а пользователь прервёт процесс? Решение: пользователя нужно информировать о ходе выполнения программы.
Сейчас я вам продемонстрирую три способа информирования пользователя о ходе выполнения цикла обработки:
- Показываем факт выполнения в абсолютном выражении.
- Показываем факт выполнения в процентах.
- Показываем расчётное время завершения.
Создайте обработку. В процедуре обработки события нажатия на кнопку "Выполнить" напишите такой код:
Процедура КнопкаВыполнитьНажатие(Кнопка) ВремяНачальное = ТекущаяДата(); КоличествоЦиклов = 100000; Для Счетчик = 1 По КоличествоЦиклов Цикл //здесь выполняется полезная работа с данными //... //Информируем пользователя о ходе выполнения обработки ПроцентВыполнения = Окр(Счетчик / КоличествоЦиклов * 100, 0); РасчетноеВремяЗавершения = ВремяНачальное + Окр((ТекущаяДата() - ВремяНачальное) * КоличествоЦиклов / Счетчик, 0); Состояние("Выполнено " + Счетчик + " из " + КоличествоЦиклов + " (" + ПроцентВыполнения + "%). Расчётное время завершения " + РасчетноеВремяЗавершения); //Дадим пользователю возможность прервать обработку ОбработкаПрерыванияПользователя(); КонецЦикла; КонецПроцедуры
Запустите обработку и посмотрите, как это работает. Вот теперь пользователю все карты в руки.
P. S. Вот примерно такую статью вы можете разместить в этом блоге, а взамен получить до двух ссылок на свои ресурсы. Подробности здесь.
Комментариев нет:
Отправить комментарий