Skype для 1С. Обмен сообщениями (корпоративный чат)

Опубликовал Ден Вар (vardo) в раздел Программирование - Практика программирования

Конфигурация обмена сообщениями, пригодная для встраивания в любую конфигурацию 1С 8.2 на обычных формах.

Конфигурация была написана как надстройка для 1С 8.2 "Комплексная автоматизация" в целях упрощения обмена информацией между пользователями внутри корпоративной сети (около 100 пользователей).

Главное окно обмена сообщениями создано на основе полеHTMLДокумента, с помощью Html, javascript и jquery и помещено в обработку

main window

В модуле обычного приложения в событии ПриНачалеРаботыСистемы вызывается главная форма обработки обмена сообщениями.

Если у пользователя нет непрочитанных сообщений, то выводится просто список пользователей системы. Список контактов - это перечень пользователей информационной базы данной конфигурации. Активные пользователи подсвечиваются флажком и соответствующим комментарием. При входе в систему нового пользователя остальные пользователи получают оповещение всплывающим окном:

user online

Для отправки сообщения необходимо выбрать пользователя в списке контактов. Появится окно чата с пользователем:

chat window

Доступна отправка форматированного текста из буфера обмена, смайликов:

message exampleemoji

По ссылке "----------Показать более ранние сообщения--------" можно посмотреть историю переписки с пользователем, причем открываются по 5 предыдущих.

При поступлении новых сообщений от пользователей, окно обработки активизируется и переключается на окно чата с пользователем, отправившим сообщение. Если окно приложения 1С не на переднем плане или свернуто, то поможет всплывающее окно, напоминающее о непрочитанных сообщениях и их количестве:


ureaded message

Скачать файлы

Наименование Файл Версия Размер
Конфигурация "Обмен сообщениями" (skype для 1С)
.zip 410,96Kb
13.11.15
26
.zip 1.0 410,96Kb 26 Скачать

См. также

Комментарии
1. С К (kraynev-navi) 182 06.11.15 16:00 Сейчас в теме
Управляемые формы поддерживаются?
2. Ден Вар (vardo) 38 07.11.15 13:10 Сейчас в теме
3. Константин Рыбаков (pyrkin_vanya) 264 20.01.16 15:21 Сейчас в теме
Можно сделать рассылку всем пользователям?
4. Ден Вар (vardo) 38 21.01.16 06:55 Сейчас в теме
(3) pyrkin_vanya, на данный момент- нет
5. AlexsisIT (Alexsisit) 198 21.01.16 08:04 Сейчас в теме
Афтар! за 10 монет продаешь свою публикацию и при этом блокируешь модуль обработки? Не дело! Верни монетки, либо кусок модуля. Мне твоя конфа в чистом виде не нужна, я встраиваю её к себе в систему!
6. Константин Рыбаков (pyrkin_vanya) 264 21.01.16 09:11 Сейчас в теме
(4) vardo, это плохо.
(5) Alexsisit, соглашусь.
7. Ден Вар (vardo) 38 21.01.16 12:49 Сейчас в теме
(6) pyrkin_vanya, (5) Alexsisit,
Модуль закрыт случайно, никто бы не сказал я и не заметил бы. Чтобы не качать снова текст модуля вот:
    Перем СписокКонтактов Экспорт;
	Функция ПолучитьСписокКонтактов() Экспорт
		
		УстановитьПривилегированныйРежим(Истина);

    	КС = Новый КвалификаторыСтроки(200);
		Массив = Новый Массив;
		Массив.Добавить(Тип("Строка"));
		ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
		СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы();
		АктивныеПользователиТЗ = Новый ТаблицаЗначений;

		АктивныеПользователиТЗ.Колонки.Добавить("ИмяПользователя",ОписаниеТиповС);
		Для каждого Соединение Из СоединенияИнформационнойБазы Цикл
			Если НЕ Соединение.ИмяПриложения="1CV8" Тогда
				Продолжить;
			КонецЕсли; 
			АктивныйПользователь=АктивныеПользователиТЗ.Добавить();                               		
			АктивныйПользователь.ИмяПользователя=Соединение.Пользователь.Имя;                      		
		КонецЦикла; 
		АктивныеПользователиТЗ.Свернуть("ИмяПользователя");
		МассивПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
		ТЗПользователи = Новый ТаблицаЗначений;
	    ТЗПользователи.Колонки.Добавить("Имя",ОписаниеТиповС);
	    ТЗПользователи.Колонки.Добавить("Наименование",ОписаниеТиповС);
	    ТЗПользователи.Колонки.Добавить("ИдентификаторПользователяИБ",ОписаниеТиповС);
		Для каждого СтрокаМассива Из МассивПользователей Цикл
		    СтрокаПользователь = ТЗПользователи.Добавить();
			СтрокаПользователь.Имя = СтрокаМассива.Имя;
			СтрокаПользователь.Наименование = СтрокаМассива.ПолноеИмя;
			СтрокаПользователь.ИдентификаторПользователяИБ = СтрокаМассива.УникальныйИдентификатор;
		КонецЦикла;  

	 	Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ
			|	АктивныеПользователи.ИмяПользователя,
			|	""Активный"" КАК Статус
			|ПОМЕСТИТЬ ВТАктивныеПользователи
			|ИЗ
			|	&ТЗАктивныеПользователи КАК АктивныеПользователи
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ
			|	Пользователи.Имя,
			|	Пользователи.Наименование,
			|	Пользователи.ИдентификаторПользователяИБ
			|ПОМЕСТИТЬ ВТПользователи
			|ИЗ
			|	&МассивПользователи КАК Пользователи
			|;
			|
			|////////////////////////////////////////////////////////////­////////////////////
			|ВЫБРАТЬ
			|	Пользователи.Имя КАК Наименование,
			|	Пользователи.Наименование КАК ПолноеНаименование,
			|	ЕСТЬNULL(АктивныеПользователи.Статус, ""Неактивный"") КАК Статус,
			|	Пользователи.ИдентификаторПользователяИБ КАК id
			|ИЗ
			|	ВТПользователи КАК Пользователи
			|		ЛЕВОЕ СОЕДИНЕНИЕ ВТАктивныеПользователи КАК АктивныеПользователи
			|		ПО Пользователи.Имя = АктивныеПользователи.ИмяПользователя
			|ГДЕ
			|	НЕ Пользователи.Имя = &ТекущийПользователь
			|
			|СГРУППИРОВАТЬ ПО
			|	Пользователи.Имя,
			|	Пользователи.Наименование,
			|	Пользователи.ИдентификаторПользователяИБ,
			|	ЕСТЬNULL(АктивныеПользователи.Статус, ""Неактивный"")
			|
			|УПОРЯДОЧИТЬ ПО
			|	Статус,
			|	Наименование";
			Запрос.УстановитьПараметр("ТЗАктивныеПользователи",АктивныеПользователиТЗ);
			Запрос.УстановитьПараметр("МассивПользователи",ТЗПользователи);
            Запрос.УстановитьПараметр("ТекущийПользователь",ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
		СписокКонтактов = Запрос.Выполнить().Выгрузить();

		Возврат СписокКонтактов;	
	КонецФункции
	УстановитьПривилегированныйРежим(Истина);
	КВФ = КаталогВременныхФайлов();
	ИмяАрхива = ПолучитьИмяВременногоФайла();
	ПолучитьМакет("messenger").Записать(ИмяАрхива);
	Zip_file = Новый ЧтениеZipФайла(ИмяАрхива);
	Zip_file.ИзвлечьВсе(КВФ); 
    СписокКонтактов = ПолучитьСписокКонтактов();
...Показать Скрыть
8. Константин Рыбаков (pyrkin_vanya) 264 22.01.16 14:15 Сейчас в теме
(7) vardo, планируется доработать для массовой рассылки?
9. AlexsisIT (Alexsisit) 198 15.03.16 19:42 Сейчас в теме
10. Владимир Конырев (Vladimir_Konyrev) 198 06.09.16 11:49 Сейчас в теме
Штука классная. Сделайте пожалуйста групповой чат + открытие ссылок (для УФ)
11. Ден Вар (vardo) 38 07.09.16 17:54 Сейчас в теме
(10) Vladimir_Konyrev, планировал.. но пока руки не доходят
12. Andrei (baza1978) 23.01.17 17:17 Сейчас в теме
в серверном варианте без допиливания не работает, функции работы со списком пользователей ИБ надо выносить в привилегированный общий модуль.

13. Евгений Мадонов (madonov) 142 17.02.17 06:09 Сейчас в теме
Почему текст переносится посимвольно разрывая слова?

Это усложняет восприятие, перенос по словам был бы более читаем.
14. Reset Atreides (ResetAtreides) 17.02.17 17:21 Сейчас в теме
Может не стоило это Skype'ом называть? Я, так понял, это к нему никакого отношения не имеет. А при поиске интеграции Skype и 1С вылазит
15. ulugbek kirgizbaew (kirulbek) 17.02.17 19:15 Сейчас в теме