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

17.12.18

Интеграция - Мессенджеры и боты

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
СМС2 - эрзац-мессенджер для вашей конфигурации 1С:
.cf 157,40Kb
12
12 Скачать (1 SM) Купить за 1 850 руб.
Внимание! Никакого отношения к технологии сотовой связи 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!

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

См. также

Мессенджеры и боты Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Интеграция мессенджера WhatsApp и 1С: УНФ, УТ, КА, ERP - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi.

15600 руб.

23.06.2023    9482    58    12    

34

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38195    108    161    

201

SALE! 25%

Мессенджеры и боты Системный администратор Программист Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С - конструктор чат-ботов в Телеграм.

15000 11250 руб.

18.06.2021    65558    312    272    

369

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    30269    35    49    

71

Мессенджеры и боты Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Данное расширение представляет собой интерфейс взаимодействия 1С с сервисом Wazzup. Данный сервис позволяет вести беседу с использованием номера телефона, привязанного к Whatsapp. Почитать о сервисе и его условиях использования можно по ссылке https://wazzup24.com/. На данный момент расширение поддерживает почти все доступные через API функции. Обновление от 19.05.2023, версия 2.1!

14400 руб.

30.11.2020    13594    8    13    

15

Мессенджеры и боты SMS рассылки Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.

7800 руб.

15.05.2024    1544    3    6    

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

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

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

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

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

Да не за что, обращайтесь, был рад помочь!
15. semagin@gmail.com 47 19.12.18 09:49 Сейчас в теме
Может быть затем, что 90% конфигураций уже работают на управляемом приложении и человек, посмотрев на скрины обычного приложения, даже читать это не захочет, не то, что скачивать?
Значит, это ему и не нужно. Всегда можно выбрать варианты по душе - со скринами из управляемого приложения. ))))
16. palamars 02.09.21 01:27 Сейчас в теме
Скажите, а ссылки на объекты базы поддерживаются?
17. semagin@gmail.com 47 02.09.21 11:51 Сейчас в теме
(16) Да, хотя здесь в статье уже устаревшая версия движка. Сейчас использую изрядно дописанную и улучшенную. Если интересует, то после скачивания, могу скинуть файлы.
Прикрепленные файлы:
18. NGPhoenix 8 25.12.21 14:17 Сейчас в теме
Скачал для БГУ еще 1.0. Самое главное - работает. Автор - благодарю. А то кругом эти боты для мессенджеров, а обычной корпоративной болталки нет. До этого использовал https://infostart.ru/public/415859/ с перепилом по получению списка пользователей и приспособил под систему оповещения. Теперь она к сожалению не работает ввиду перехода 1с на WebKit. Достойная замена. Вот еще бы поле ввода было бы тоже в html, чтобы можно было сразу писать сообщения с оформлением или просто таблички отправлять. Тут что-то подобное тоже есть в виде отправки вложений, но пока еще не пробовал. На файловой базе почему-то не видит пользователей в активных. Посмотрим, как будут дела обстоять в серверной.
semagin@gmail.com; +1 Ответить
19. NGPhoenix 8 25.12.21 22:49 Сейчас в теме
Переписал процедуру получения активности пользователя, т.к. в исходном виде сравнивались разные идентификаторы. В моих базах во всех, уникальный идентификатор пользователя информационной базы, не совпадает с идентификатором справочника пользователи.

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

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

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


Можно было сразу поставить отбор запросом, но в предыдущем варианте чата, нужно было получать именно список пользователей одновременно с их состоянием.
semagin@gmail.com; +1 Ответить
Оставьте свое сообщение