Автор: DrLivsi 19.10.15, 13:34
Всем привет!
Пишу внутренний чат в управляемом приложении, не могу понять как работает обработчик ожидания. (Платфлома 8.3.5)
Вот код:
&НаКлиенте
Процедура ПриОткрытии()
ПодключитьОбработчикОжидания("ОбновитьСообщения", 5);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСообщения() Экспорт
// Получаем новые сообщения
СписокСообщений = ОбновитьСообщенияНаСервере(Объект.ТекущийПользователь, ТолькоНовые, Объект.ДатаПоследнегоСообщения);
// Выполняем действия с сообщениями
//...
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОбновитьСообщенияНаСервере(ТекПользователь, Новые, ДатаПоследнего = Неопределено) Экспорт
//Находим сообщения
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
|...
";
Возврат МассивСтрок; //Возвращаем найденные сообщения
КонецФункции
В чем проблема.
На форме есть поле ввода "Сообщение" куда пользователь вводит текст для отправки, вводим в него какой-нибудь текст и он почему-то "запоминается".
Пример:
1. Вводим "111"
2. Срабатывает обработчик ожидания (сообщения загружаются все ок)
3. Вводим "222"
4. Срабатывает обработчик ожидания, попадаем в процедуру "ОбновитьСообщения" и видим что значение поля ввода уже = "111". Что я делаю не так?
П.с. может у кого есть обработка Чат на УФ, поделитесь, буду очень благодарен.
Автор: DartRomanius 19.10.15, 13:40
А где сообщение(-я) хранится?
Автор: DrLivsi 19.10.15, 13:53
В регистре сведений.
Если ту же процедуру привязать к кнопке и вызывать вручную, то все работает...
Автор: DartRomanius 19.10.15, 13:57
Цитата(DrLivsi @ 19.10.15, 14:53)
В регистре сведений.
Если ту же процедуру привязать к кнопке и вызывать вручную, то все работает...
Есть временные метки у сообщения?
Если есть, тогда тянуть в обратном порядке, с конца.
Посмотреть, в сам регистр сообщение "222" пишется, или другое. Тогда понятно будет где трабла, в записи сообщения или в запросе выборки сообщений.
Автор: DrLivsi 19.10.15, 14:06
Цитата(DartRomanius @ 19.10.15, 14:57)
Есть временные метки у сообщения?
Если есть, тогда тянуть в обратном порядке, с конца.
Посмотреть, в сам регистр сообщение "222" пишется, или другое. Тогда понятно будет где трабла, в записи сообщения или в запросе выборки сообщений.
Регистр периодический.
В регистр сообщение не успеваю записать. Пока набираю сообщение в форме, срабатывает обработчик и то что я набрал в поле вода затирает и вставляет самое первое сообщение что я набирал до срабатывания обработчика.
Незнаю понятно ли объяснил))
Дело не в записи сообщения в регистр, а в том что когда проверяем есть ли новые сообщения, поле ввода очищается.
Автор: DartRomanius 19.10.15, 14:17
Так не трогать его!
ЗЫ: Я некоторое время назад делал так:
- Поле ввода сообщения (отдельно);
- Поле вывода сообщений;
- Поле вывода приватных (целевых) сообщений;
- Обработчик ожидания выводил "балоны" с новыми сообщениями;
- Вывод сообщений динамическим списком, плюс внутренняя система обмена сообщениями между формами, плюс сообщение о изменении регистра команда списку на обновление;
Как-то так.....
Автор: DrLivsi 19.10.15, 16:39
Цитата(DartRomanius @ 19.10.15, 15:17)
Так не трогать его!
ЗЫ: Я некоторое время назад делал так:
- Поле ввода сообщения (отдельно);
- Поле вывода сообщений;
- Поле вывода приватных (целевых) сообщений;
- Обработчик ожидания выводил "балоны" с новыми сообщениями;
- Вывод сообщений динамическим списком, плюс внутренняя система обмена сообщениями между формами, плюс сообщение о изменении регистра команда списку на обновление;
Как-то так.....
Что-то я ничего не понял...
Поле ввода удалил, добавил вместо него поле текстового документа, теперь все нормально, не очищает.
Но хотелось бы понять причину такого поведения
Автор: DartRomanius 19.10.15, 18:59
Ну тут, я не подскажу. В коде что-то наверное.