gifts2017

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
18
.zip 1.0 410,96Kb 18 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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

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

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