Спасибо Steban.
MSMQ пока еще щупаю, а с обработкой ожидания я решил обойтись без применения других ВК. Получилось, даже замечательно. Смотрю интерес (маленький такой) есть, поэтому привожу код для DBF, здесь только сообщалка, каждый сделает себе то, что ему надо.
Глобальный модуль:
Перем Записи Экспорт;
Перем Юзер Экспорт;
//_____________________________________________________________________________
Процедура ПриНачалеРаботыСистемы()
СМС = КаталогИБ() + "_1SMS.dbf";
Если ФС.СуществуетФайл(СМС) = 0
Тогда
ДБ = СоздатьОбъект("xBase");
ДБ.ДобавитьПоле("USER",2,24,0);
ДБ.ДобавитьПоле("MESS",2,50,0);
ДБ.СоздатьФайл(СМС);
ДБ.ЗакрытьФайл();
КонецЕсли;
Юзер = Лев(ИмяПользователя()+" ",24);
БазаДанных = СоздатьОбъект("ODBCDatabase");
Рез = БазаДанных.Соединение("DRIVER=Microsoft Visual FoxPro Driver;
|Deleted=Yes;
|Null=Yes;
|Collate=RUSSIAN;
|BackgroundFetch=Yes;
|Exclusive=No;
|SourceType=DBF;
|SourceDB=" + КаталогИБ());
Если Рез <> 0 Тогда
Записи = СоздатьОбъект("ODBCRecordSet");
Записи.УстБД(БазаДанных);
Если МонопольныйРежим() = 1
Тогда
Записи.Выполнить("DELETE FROM _1SMS");
Иначе
Записи.УстановитьТекстовыйПараметр("Юзер",Юзер);
Записи.Выполнить("INSERT INTO _1SMS VALUES (:Юзер,'')");
ОбработкаОжидания("Опрос",5);
КонецЕсли;
КонецЕсли;
КонецПроцедуры //ПриНачалеРаботыСистемы
//_____________________________________________________________________________
Процедура Опрос() Экспорт
Записи.УстановитьТекстовыйПараметр("Юзер",Юзер);
ТЗ = Записи.ВыполнитьИнструкцию("SELECT MESS FROM _1SMS WHERE _1SMS.USER = :Юзер AND _1SMS.MESS <> ''");
Если ТЗ.КоличествоСтрок() <> 0
Тогда
Стр = ТЗ.ПолучитьЗначение(1,"MESS");
Записи.УстановитьТекстовыйПараметр("Юзер",Юзер);
Записи.УстановитьТекстовыйПараметр("Сообщение","Это послание всем");
Записи.Выполнить("UPDATE _1SMS SET _1SMS.MESS = '' WHERE _1SMS.USER = :Юзер");
Сообщить(Стр);
КонецЕсли;
КонецПроцедуры //Опрос
//_____________________________________________________________________________
Процедура ПриЗавершенииРаботыСистемы()
Если ПустоеЗначение(Записи) = 0
Тогда
Записи.УстановитьТекстовыйПараметр("Юзер",Юзер);
Записи.Выполнить("DELETE FROM _1SMS WHERE _1SMS.USER = :Юзер");
КонецЕсли;
КонецПроцедуры //ПриЗавершенииРаботыСистемы
И есть обработка:
//_____________________________________________________________________________
Процедура ПередатьСообщение()
Записи.УстановитьТекстовыйПараметр("Сообщение",Сообщение);
Если КонкретномуАдресату = 1
Тогда
Записи.УстановитьТекстовыйПараметр("Юзер",Адресат);
Записи.Выполнить("UPDATE _1SMS SET _1SMS.MESS = :Сообщение WHERE _1SMS.USER = :Юзер");
Иначе //если всем, кроме меня
Записи.УстановитьТекстовыйПараметр("Юзер",Юзер);
Записи.Выполнить("UPDATE _1SMS SET _1SMS.MESS = :Сообщение WHERE _1SMS.USER <> :Юзер");
КонецЕсли;
КонецПроцедуры //ПередатьСообщение
Мне нравится (сам себя не похвалишь...)