СМС2 - эрзац-мессенджер в вашей конфигурации 1С

Публикация № 960481

Программирование - Практика программирования

обработка чат мессенджер IM сообщения мгновенные сообщения

18
Обработка предоставит вам некоторый функционал мессенджера внутри используемой конфигурации. Вложения с файлами и ссылками, аватары у пользователей, всё это можно и в 1С.
Внимание! Никакого отношения к технологии сотовой связи SMS эта подсистема не имеет!

Немного предыстории

Несколько лет назад, работая на заводе администратором БД, я неимоверно страдал от общения с пользователями УПП по телефону (ха-ха), которые постоянно просили посмотреть какой-то документ, исправить какую-нибудь ссылку. На предприятии никаких мессенджеров официально не поддерживалось; то, что было полуофициально (spark и т.п.) - работало кое-как, а поддерживалось ещё хуже. Пришло озарение и в итоге была написана небольшая подсистема отправки-получения сообщений прямо внутри 1С: УПП. Уж этого добра было достаточно у каждого пользователя!

В итоге на текущий момент с марта 2017 года (когда в первый и последний раз чистился регистр с данными) через подсистему прошло более 170 тысяч пользовательских сообщений, т.е. можно уверенно говорить об успехе и востребованности разработки. Её функционал используется для автоматических рассылок и генерации целевых оповещений об определенных событиях в базе.

Недавно была полностью переделана визуальная составляющая подсистемы, приближена к современным стандартам. В таком виде её и представляю вашему вниманию.

 

Что-то про свой Лунапарк с блекджеком и шлюхами

"Если нельзя в Телеграм, то давайте напишем свой."

 

Применимость

Подсистема реализована на управляемых формах, при интеграции обработки в конфигурацию доступна и в обычном приложении. СМС2 разрабатывалась для использования внутри конфигурации 1С: УПП версии 1.3.113, тем не менее перенос в любую другую конфигурацию не должен вызвать каких-то трудностей. Использованная платформа - 1С:Предприятие 8.3.13.1513.

Тестировалось на клиентах Windows XP и 7. Работает даже с установленным Internet Explorer 6, но лучшее впечатление - начиная с 9-й версии. На клиентах Linux-систем не запускал, тут ничего сказать не могу.

Режим совместимости конфигурации был выставлен в 8.2.16, интерфейс - 8.2, в более прогрессивных режимах тоже всё функционирует и вроде бы не расползается.

 

Как это работает

В подсистеме используется два собственных регистра сведений. Первый, у_СМС, содержит непосредственно сообщения пользователей. Есть некоторая избыточность в ресурсах регистра, это оставлено на Новый Год для развития уже запланированного, но пока нереализованного функционала. Во втором регистре у_СМС_Профили хранятся настройки пользователя СМС и их аватары. Доступно как предварительное, так и кэширование "на лету" в аватары, если у пользователей базы привязаны физические лица с фотографиями - актуально для УПП.

Обработка СМС2 предоставляет пользователю интерфейс отправки и получения сообщений. В левой панели окна содержится список всех диалогов, отсортированный по времени создания последнего сообщения, справа выводится непосредственно сами сообщения, сформатированные для вывода в поле HTML-документа в виде диалога.

Для оперативного уведомления о поступающих сообщениях в модуле обычного (можно адаптировать и для управляемого) приложения запускается обработчик ожидания. Образец кода будет приложен.

N.B.: Почему же эрзац-мессенджер? Пользователь не увидит новых сообщений в самой обработке, пока не нажмет кнопку "Обновить". Пока лишь тестирую другое поведение, при положительных результатах выложу обновлённую версию обработки.

 

Порядок установки

  1. Запустите "Сравнить и объединить..." своей конфигурации со скачанным файлом смс2.cf
  2. В окне сравнения/объединения конфигураций снимите отметку с корневого элемента конфигурации
  3.  Отметьте для объединения
  • Регистры сведения у_СМС и у_СМС_Профили
  • Обработка СМС2
  • Общий модуль укбп_Общий
  1. Выполните объединение конфигураций
  2. Добавьте в модуль обычного приложения следующий код (содержится в приложенной конфигурации):
Процедура ПриНачалеРаботыСистемы()
	
	// НачалоВставки СМС2
	ПодключитьОбработчикОжидания("у_СМС2_СлушатьСообщения", 60);
	// КонецВставки СМС2
КонецПроцедуры

// НачалоВставки СМС2
Процедура у_СМС2_СлушатьСообщения() Экспорт
	ТекстЗапроса =
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	у_СМС.Отправитель,
	|	у_СМС.Текст,
	|	у_СМС.Время
	|ИЗ
	|	РегистрСведений.у_СМС КАК у_СМС
	|ГДЕ
	|	у_СМС.Адресат = &Адресат
	|	И НЕ у_СМС.Прочитано
	|	И (у_СМС.Срок = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	|			ИЛИ у_СМС.Срок >= &ТекущаяДата)
	|	И у_СМС.Отправитель <> &Адресат";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("Адресат", ПараметрыСеанса.ТекущийПользователь);
	Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Если Выборка.Следующий() Тогда
		Адрес = укбп_Общий.ПолучитьАватарССервера(Выборка.Отправитель);
		
		Портрет = ?(ЗначениеЗаполнено(Адрес), Новый Картинка(ПолучитьИзВременногоХранилища(Адрес)), БиблиотекаКартинок.Сотрудники48);
		
		Если НЕ Выборка.Отправитель.Пустая() Тогда
			ОткрытьТаблоСМС2 = Новый ОписаниеОповещения("ОткрытьСМС2", укбп_Общий, Новый Структура ("Абонент", Выборка.Отправитель));
			ПоказатьОповещениеПользователя("Новое сообщение!", ОткрытьТаблоСМС2, "Автор: " + Выборка.Отправитель, Портрет);
		Иначе
			ПараметрыЗапуска = Новый Структура("Отправитель", Выборка.Отправитель);
			ПараметрыЗапуска.Вставить("Адресат", ПараметрыСеанса.ТекущийПользователь);
			ПараметрыЗапуска.Вставить("Время", Выборка.Время);
			
			ОткрытьТаблоРассылки = Новый ОписаниеОповещения("ОткрытьТаблоРассылкиСМС2", укбп_Общий, ПараметрыЗапуска);
			ПоказатьОповещениеПользователя("Внимание!", ОткрытьТаблоРассылки, Выборка.Текст, Портрет);
		КонецЕсли;	
	КонецЕсли;
КонецПроцедуры
// КонецВставки СМС2
  1. PROFIT

Для кэширования аватар из фотографий применяется Imagemagick. Его можно бесплатно скачать с сайта разработчика. Установка программы на сервере приложений 1С не требует никаких комментариев.

 

Заключение

Подсистема СМС2 остаётся в процессе доработки, периодически буду публиковать версии с обновлённым функционалом.

STAY TUNED!

18

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

Наименование Файл Версия Размер
СМС2 - эрзац-мессенджер для вашей конфигурации 1С:
.cf 157,40Kb
17.12.18
4
.cf 157,40Kb 4 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. TODD22 17 17.12.18 23:23 Сейчас в теме
Зачем выборку из результата запроса заворачивать в попытку?
for_sale; +1 Ответить
2. semagin@gmail.com 35 18.12.18 07:02 Сейчас в теме
(1) Ну, положим, не выборку, а ряд сомнительных функций типа получения аватара и т.п. Теоретически можно убрать, но для отладки удобно.
3. TODD22 17 18.12.18 09:12 Сейчас в теме
(2)на ИТС есть раздел "соглашение по написанию кода" там есть рекомендации как правильно использовать "попытку". Смысл рекомендации в том что не нужно весь код помещать в попытку. А только те строки которые могут вызвать ошибку.
for_sale; +1 Ответить
4. semagin@gmail.com 35 18.12.18 09:38 Сейчас в теме
5. shard 253 18.12.18 10:47 Сейчас в теме
поддерживаются ли конференции?
6. semagin@gmail.com 35 18.12.18 11:45 Сейчас в теме
(5) В этой версии нет. В следующей итерации уже запланированы.
7. kembrik 2 18.12.18 15:45 Сейчас в теме
Пишут люди "Систему взаимодействия", встраивают в типовые, а пользователи "Вигвамы рисуют"
tmn72.1C; +1 Ответить
8. shard 253 18.12.18 15:53 Сейчас в теме
(7) мнение программистов может отличаться от мнения (и самое главное - потребностей) пользователей
semagin@gmail.com; +1 Ответить
9. semagin@gmail.com 35 18.12.18 16:28 Сейчас в теме
(7) "Система взаимодействия" появилась вместе с 8.3.10.2168 - это вроде бы 2017 год. Моя подсистема крутится на предприятии с 2014 года. Про разную "стоимость" развертывания вроде бы нет даже смысла распространяться.

В конце концов, как насчёт "Пусть расцветают сто цветов, пусть соперничают сто школ"?
10. for_sale 720 18.12.18 17:17 Сейчас в теме
Обычные формы?? Серьёзно???
11. semagin@gmail.com 35 19.12.18 06:57 Сейчас в теме
(10) Не читали, но осуждаете? Это несерьёзно.
SITR-utyos; +1 Ответить
12. for_sale 720 19.12.18 09:16 Сейчас в теме
(11)
Если написано на управляемых, то что мешает и скрины сделать на управляемых?
А уж куча действий, всунутых в попытку - вот это действительно несерьёзно.
13. semagin@gmail.com 35 19.12.18 09:25 Сейчас в теме
(12) Вы всё ещё не прочитали, но упорно продолжаете задавать вопросы, на которые уже есть ответы в тексте. Ладно, повторюсь: "... было разработано как подсистема для использования внутри УПП 1.3". И зачем мне делать скрины в управляемом приложении?
SITR-utyos; +1 Ответить
14. for_sale 720 19.12.18 09:31 Сейчас в теме
(13)
Я видел это в тексте, спасибо.

И зачем мне делать скрины в управляемом приложении?

Ну не знаю. Может быть затем, что 90% конфигураций уже работают на управляемом приложении и человек, посмотрев на скрины обычного приложения, даже читать это не захочет, не то, что скачивать?

Огромное вас спасибо за совет, я-то думал, что сейчас все бросятся качать эту штуку за 5 стартмани со скринами на устаревших системах и с без стеснения выложенным примером Г-кода из неё, но только теперь понял, почему не качают!

Да не за что, обращайтесь, был рад помочь!
15. semagin@gmail.com 35 19.12.18 09:49 Сейчас в теме
Может быть затем, что 90% конфигураций уже работают на управляемом приложении и человек, посмотрев на скрины обычного приложения, даже читать это не захочет, не то, что скачивать?
Значит, это ему и не нужно. Всегда можно выбрать варианты по душе - со скринами из управляемого приложения. ))))
Оставьте свое сообщение