Таймер отсчета в 1С

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

Обработка позволяет использовать ее код для вставки в любом месте модулей объектов конфигурации. 

1. Для начала создадим переменную:

Перем КоличествоСекунд;

2. Далее, создаем процедуру, которая выполняется при нажатии на кнопку "Выполнить" (в вашем случае это может быть не кнопка, а обычный участок кода), и подключаем в нем обработчик ожидания. Задаем в этой же процедуре значение для переменной "Количество секунд" — в моем случае 20 секунд:

Процедура КнопкаВыполнитьНажатие(Кнопка)

ПодключитьОбработчикОжидания("Ждем",1); // Подключаем обработчик ожидания в интервал 1 секунда
КоличествоСекунд = 20; // Количество секунд до отсчета

КонецПроцедуры

3. И соответственно, добавляем процедуру Ждем() интервал которой будет являться одна секунда (указано выше в подключении обработчика). Когда количество секунд дойдет до 0, отключаем обработчик ожидания и показываем сообщение пользователю (если это актуально в Вашем случае):

Процедура Ждем()

Если КоличествоСекунд = 0 Тогда
ОтключитьОбработчикОжидания("Ждем"); // когда количество секунд дойдет до 0, отключаем обработчик ожидания (виртуальный таймер)
Предупреждение("Отчет выполнен");
Иначе
КоличествоСекунд = КоличествоСекунд - 1; // отнимаем каждый раз по 1 секунде
Сообщить(КоличествоСекунд); // сообщаем для информации
КонецЕсли;

КонецПроцедуры;

Общий код обработки:

Перем КоличествоСекунд;

Процедура КнопкаВыполнитьНажатие(Кнопка)

ПодключитьОбработчикОжидания("Ждем",1); // Подключаем обработчик ожидания в интервал 1 секунда
КоличествоСекунд = 20; // Количество секунд до отсчета

КонецПроцедуры

Процедура Ждем()

Если КоличествоСекунд = 0 Тогда
ОтключитьОбработчикОжидания("Ждем"); // когда количество секунд дойдет до 0, отключаем обработчик ожидания (виртуальный таймер)
Предупреждение("Отчет выполнен");
Иначе
КоличествоСекунд = КоличествоСекунд - 1; // отнимаем каждый раз по 1 секунде
Сообщить(КоличествоСекунд); // сообщаем для информации
КонецЕсли;

КонецПроцедуры;

 

Тестирование обработки происходило на платформах: 8.0 — 8.2

7 Comments

  1. VmvLer

    лет на 10 устарела — это два

    такой код лучше не писать и не распостранять — это два

    Reply
  2. VmvLer

    это раз не помню, вероятно цензоред какой-то

    Reply
  3. danjer74

    (2)Раз — это настоятельная рекомендация 1С не использовать обработчик ожидания как таймер 🙂

    Reply
  4. Fril

    А если очень хочется иметь в 1с секундомертаймер как быть?

    1С не использовать обработчик ожидания как таймер 🙂

    Что тогда использовать?

    Reply
  5. VmvLer

    (4) поискать решения на этом сайте, в сети, просто выйти на улицу и спросить в толпе: «Народ, а как вы делали таймер в 1С?»

    Очень сомневаюсь, что вы не получите ответов.

    Reply
  6. rusmil

    (3) Можете прокомментировать более подробно, почему фирма 1С не рекомендует использовать обработчик ожидания как таймер?

    Reply
  7. markers

    (6) По тому-что выполнение происходит не в отдельном потоке, а в основном и в момент обновления счетчика, форма подвисает и не дает ничего сделать и так каждую секунду. Её даже бывает сложно остановить/закрыть. Это разумеется моё мнение, а не фирмы 1С

    Reply

Leave a Comment

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