Таймер отсчета в 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 не будет опубликован. Обязательные поля помечены *