Содержание:
1. Вариант 1 – управляемые блокировки 1С
2. Вариант 2 – цикл с проверкой даты и времени
3. Вариант 3 – диалог Предупреждение в 1С
Как организовать паузу в 1С? Иногда это бывает нужно в процессе работы с данными.. Платформа 1С не предоставляет нам решение на уровне глобального контекста. Однако есть несколько вариантов решения этой задачи.
1. Вариант 1 – управляемые блокировки 1С
Вариант, который мы рассмотрим, основан на использовании механизма управляемых блокировок 1С, вместе с механизмом фоновых заданий, а точнее выполнения фонового задания "ОжидатьЗавершенияВыполнения".
Использовать будем объект "Общий модуль" и регистр сведений. Регистр сведений нужен для реализации управляемой блокировки по определенному условию, а именно: по номеру сеанса. В одну единицу времени у базы не может быть два сеанса с одинаковыми номерами, то есть одна пауза не помешает другому сеансу создать свою паузу.
Мы напишем несколько процедур, которые должны находиться в общем модуле регистра сведений:
Регистр сведений назовем "НашаПауза".
Измерения – НомерСеанса;
Ресурсы – ДатаНачалаПаузы;
ДатаОкончанияПаузы;
Причина;
ИмяИнициатора;
Первая процедура Выполнить паузу в секундах.
Параметры процедуры
· Время паузы сек – количество секунд, на которое необходимо установить паузу;
· Причина и произвольный текст, будут записаны наш регистр сведений.
Находим сеанс пользователя и устанавливаем управляемую блокировку на его сеанс, затем запускаем фоновое задание и устанавливаем метод "ОжиданиеЗавершенияВыполнения" с временем ожидания равным нашей паузе. По завершению ожидания блокировка сеанса снимается.
Рис. 1 Управляемая блокировка сеанса
Процедура Пауза
"Собственно_Пауза (НомерСеанса,ВремяОкончанияПаузы)"
Параметры
· Номер Сеанса сеанс, который ставится на паузу;
· Время окончания паузы – значение, когда должна закончится пауза.
При попытки прочитать значение заблокированной записи регистра сведений в 1С и возникает наша пауза.
Рис. 2 Заблокированная запись регистра сведений в 1С и появление паузы
Процедура "ЗависшиеПаузы"
Процедура выполняется регламентным заданием и удаляет неактуальные записи, которые могли остаться в регистре сведений.
Рис. 3 ЗависшиеПаузы для паузы в 1С
Теперь в любом месте конфигурации можно написать
НашаПауза.ВыполнитьПаузу_ВСекундах(5);
2. Вариант 2 – цикл с проверкой даты и времени
Можно на встроенном языке написать цикл с проверкой даты и времени. Вариан часто используется, но имеет недостаток –это загрузка процессора.
Рис. 4 Цикл с проверкой даты и времени
3. Вариант 3 – диалог Предупреждение в 1С
Также можно использовать диалог "Предупреждение" в коде, в качестве параметра задаем необходимый таймаут:
Рис. 5 Диалог Предупреждение в 1С
4. Вариант 4 – запуск пинга
Вариант с использование ping и запуска внешнего приложения из скрипта VBScript с применением объекта WshShell и его метода Run(). Запуск пинга нужно производить с определенным временем задержки.
Рис. 6 Запуск пинга
Специалист компании «Кодерлайн»
Ольга Волкова