|
Обработчик ожидания в 8.2 | ☑ | ||
---|---|---|---|---|
0
FuriKuri
26.06.13
✎
13:01
|
Недавно начала разбираться с 8.2. И нужно сделать такую задачу. При запуске системы на тонком клиенте проверяло есть ли просроченные задачи у пользователя.
В модуле управляемого приложения написал такой код: Процедура ПриНачалеРаботыСистемы() ПроверитьПодключениеОбработчикаОжиданияУпр(); КонецПроцедуры Процедура ПроверитьПодключениеОбработчикаОжиданияУпр() Экспорт ИнтервалПроверкиНапоминанийВСекундах = ПолучитьИнтервалНапоминания(); Если ИнтервалПроверкиНапоминанийВСекундах > 0 Тогда ПодключитьОбработчикОжидания("ПроверитьНапоминанияПользователяУпр", ИнтервалПроверкиНапоминанийВСекундах); Иначе ОтключитьОбработчикОжидания("ПроверитьНапоминанияПользователяУпр"); КонецЕсли; КонецПроцедуры И создал Общий модуль с галками "Глобальный" и "сервер" и "вызовсервера" с кодом Процедура ПроверитьНапоминанияПользователяУпр(ВыбПользователь) Экспорт ФормаОповещенияЗадачОткрыта = Ложь; ФормаОповещения = ПолучитьФорму("Задача.ЗадачиПользователя.Форма.ФормаОповещенияУпр"); РезультатЗапроса = ВыбратьЗадачиПользователя(ВыбПользователь); Если НЕ РезультатЗапроса.Пустой() Тогда Если НЕ ФормаОповещенияЗадачОткрыта=Истина Тогда ОткрытьФорму(ФормаОповещения); ФормаОповещенияЗадачОткрыта = Истина; КонецЕсли; ВыгрузкаДляСверки = РезультатЗапроса.Выгрузить(); ФормаОповещения.АктивизироватьФорму(ВыгрузкаДляСверки); Иначе Если ФормаОповещенияЗадачОткрыта=Истина Тогда ФормаОповещения.Закрыть(); КонецЕсли; КонецЕсли; КонецПроцедуры Функция ПолучитьИнтервалНапоминания() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Константы.ИнтервалПроверкиНапоминанийВСекундах |ИЗ | Константы КАК Константы"; Результат = запрос.Выполнить().Выгрузить(); Для каждого стр из Результат цикл ИнтервалПроверкиНапоминанийВСекундах = стр; КонецЦикла; возврат ИнтервалПроверкиНапоминанийВСекундах; КонецФункции Функция ВыбратьЗадачиПользователя(ВыбПользователь) экспорт Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ РАЗРЕШЕННЫЕ | * |ИЗ | Задача.ЗадачиПользователя.ЗадачиПоИсполнителю(&ТекПользователь, | Выполнена = ЛОЖЬ И Оповещение = ИСТИНА И СрокОповещения < &ДатаСреза) |"; Запрос.УстановитьПараметр("ТекПользователь", ВыбПользователь); Запрос.УстановитьПараметр("ДатаСреза" , ТекущаяДата()); РезультатЗапроса = Запрос.Выполнить(); Возврат РезультатЗапроса; КонецФункции Но при запуске вылазят разные ошибки, например что процеура ПолучитьФорму не определена. В чем мои косяки? |
|||
1
Mitriy
26.06.13
✎
13:02
|
сервер понятия не имеет, что такое есть форма...
|
|||
2
FuriKuri
26.06.13
✎
13:05
|
(1) тогда нужно эту процедуру поместить в другой клиентский общий модуль?
|
|||
3
kosts
26.06.13
✎
13:08
|
(2) Может и не всю процедуру, но какую-то ее часть (разделить на несколько).
|
|||
4
FuriKuri
26.06.13
✎
13:17
|
(3) не могу понять куда ее поместить, какие галки должны стоять у модуля, чтоб процедура выполнялась на клиенте и была видна из глобального модуля?
|
|||
5
kosts
26.06.13
✎
13:22
|
(4) Клиент может вызвать сервер. Сервер вызывать клиента не может.
Прочитав что-то с помощью сервера, можно затем что-то отобразить на клиенте. Как-то так. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |