0
andrewch60
19.03.19
✎
12:46
|
1С 8.3 УФ
Ситуация такова:
Реализовал на предприятии рассылку SMS уведомлений заказчиков
опишу примерно как работает
ПриЗаписи объекта SMS пользователем создается запись в регистре сведений SMSвОбработке с реквизитом Отправлено = Ложь
Есть ОбщийМодуль РаботаСSMSAssistent с функциями ОтправитьSMS и ОбновитьСтатусыSMS
ОтправитьSMS выбирает все записи SMSвОбработке с реквизитом Отправлено = Ложь и отправляет уведомления
Если SMS ушла без проблем, то Отправлено устанавливаем в Истину, иначе уведомление оставляем в текущем состоянии и нужно пробовать отправить позже
ОбновитьСтатусыSMS выбирает все записи SMSвОбработке с реквизитом Отправлено = Истина и обновляет Статусы SMS уведомлений
Если получен конечный статус(доставлено/не доставлено/время жизни истекло), то данные по SMS уведомлению обновляются и запись из SMSвОбработке удаляется, иначе только обновляются данные по SMS
Обновление статусов нужно делать периодически через пару минут после отправки, пока не получим конечные статусы по всем уведомлениям
Создание и отправка будет производиться как из обработки, так и пользователями вручную
Не хотелось бы ситуаций,когда вызванная моей обработкой отправка еще не отработала и в этот же момент другой пользователь пытается отправить свое уведомление (а в пакет отправки пойдут еще и все SMS отправляемые обработкой)
То же самое с обновлением статусов, если нажмут кнопки "ОбновитьСтатус" почти одновременно, то и функции одни и те же данные будут обрабатывать.
Хочу чтобы примерно так :
пока ОтправитьSMS не отработала, остальные вызовы ожидают завершения и стартуют сразу после в порядке очереди
причем, если не все удалось отправить, то необходимо еще и запланировать запуск через какой то промежуток времени(например 10 мин)
чтобы пока есть sms к отправке 1С периодически вызывала ОтправитьSMS
то же самое с ОбновитьСтатусыSMS с той лишь разницей, что первый запуск должен инициироваться из Отрпавки, а далее по расписанию или пользовательскому вызову, пока есть данные к обработке, а когда пусто, то не стоит впустую работать, будем ждать следующего вызова из Отрпавки
Смотрю в сторону Фоновых Задач,как понимаю, если с ключом одним запускать , то второй вызов не пройдет(или будет ожидать), да и создавать и завершать их вроде можно программно...
не приходилось самому работать с Регламентными и фоновыми задачами, поэтому прошу совета и помощи
подскажите задумку можно реализовать
|
|