Простенький чат на управляемых формах. Есть общая комната чата, где общаются все сотрудники, и приватные чаты с каждым сотрудником. На форме чата размещены два html макета: 1-й отображает переписку пользователя, 2-й список пользователей чата (список сортируется по активности пользователей). Обновление сообщений происходит через обработчик ожидания.
Для интеграции чата в конфигурацию необходим справочник Пользователи (реквизит ИдентификаторПользователяИБ). Для определения текущего пользователя используем соответствующую функцию глобального контекста ПользователиИнформационнойБазы.
Создадим справочник для сообщени:
ДатаСообщени - Дата(дата и время);
ОтправительСообщения - СправочникСсылка.Пользователи;
СообщениеДляВсех - Булево;
ТекстСообщения - Строка;
Получатели.Получатель- СправочникСсылка.Пользователи;
Получатели.Прочитано - Булево;
Добавляем нашу обработку в конфигурацию. Чтобы обеспечить приватность сообщений, воспользуемся RLS. Создадим отдельную роль или отредактируем существующую, и выставим права на Справочники.Чат(Чтение, Добавление, Изменение, Просмотр) и Обработки.Чат (Использование, Просмотр). Добавим ограничение доступа к данным на Справочники.Чат.
Чат ГДЕ (Чат.ОтправительСообщения = &ТекущийПользователь
ИЛИ Чат.Получатели.Получатель = &ТекущийПользователь
ИЛИ Чат.СообщениеДляВсех = ИСТИНА)
Пользователь сможет видеть все сообщения общего чата, а также отправленные им и адресованные ему сообщения в приватных чатах.
Отправка сообщения по Ctrl+Enter либо по кнопке отправить. Если есть непрочитанные сообщения в общем чате либо от пользователя, то соответствующая строка подсвечивается красным и становится вверху списка Пользователи на форме. Сообщения помечаются прочитанными, если перейти в просмотр переписки или ответить отправителю.
http://www.youtube.com/watch?v=mEED-hUGVbo