gifts2017

Чат для 1С8.2 УФ (реализован в HTML интерфейсе)

Опубликовал Сергей Марченко (MarSeN) в раздел Программирование - Практика программирования

Очередной чат для 1С. Реализован полностью в HTML поле. Форма чата висит "в фоне", но самой формы вы не найдете среди списков окон. Чат контролирует новые сообщения и, в случае их наличия, выдает оповещение.

Видео на Youtube.ru

Цель публикации

1. Определить потребность в полновункциональном чате в 1С с предлагаемым интерфейсом.

2. В качестве примера работы с HTML, переопределением событий, возникающих в объекте HTML (в том числе генерируемых java скриптами), динамичексое изменение HTML, реализафия "фоновых" форм с возможностью обращения к ним.

 

PS: подсистема публикуется в качестве ПРИМЕРА. Вы можете дорабатывать ее по своему усмотрению для СВОИХ нужд и нужд СВОЕЙ компании, при этом не удаляя копирайты автора. Подсистему или ее части ЗАПРЕЩЕНО передавать третьим лицам на возмездной основе (ЗАПРЕЩЕНО ПРОДАВАТЬ!), даже если Вы ее дорабатывали.

Для реализации  подсистемы, кроме прочих, были применены следующие технологии, опубликованные в статьях:

v8.2 Управляемые формы: Пример реализации подключения глобального обработчика ожидания без изменения конфигурации

v82 управляемые формы: способ вывода excel листа на управляемую форму с перехватом некоторых событий экселя.

 

Планы по доработке:

  1. "Отсекать" и хранить в локальной SQLite3 БД Старую историю
  2. Передавать в сообщениях ссылки на объекты БД
  3. Организовать "цепочки" переписки, связанные с объектом БД
  4. Показывать переписку по объекту БД по команде.

Установка

Архив содержит Инсталляционный пакет для Инсталлятора пакетов 1С 8.2. и выгрузка из БД, видео по которой опубликовано на Youtube. Чат может быть установлен на любую конфигурацию на УФ, в которой есть справочник Пользователи и ПараметрСеанса.ТекущийПользователь


 

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

Наименование Файл Версия Размер
Чат1С 225
.zip 96,02Kb
06.10.13
225
.zip 96,02Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Марченко (MarSeN) 06.10.13 22:58
Забыл написать. Отправка сообщения по Ctrl+Enter
2. Ловыгин Антон (wunderland) 07.10.13 10:38
(+) однозначно. Забрал смотреть. В работе очень часто приходится использовать локальные чаты (icq и skype обычно запрещены в больших компаниях по линии безопасности) типа NetWriter или похожих... Но всегда есть моменты, которые хочется поправить :) А тут родная 1С - руки развяжет.
3. Сергей (seermak) 07.10.13 12:40
интересно, а что во втором файле Файл "1C8PKG" (.1c8pkg)?
4. Анаит Бадалян (LaNaite) 07.10.13 12:48
Класс!
Делала нечто очень похожее. Как-нибудь тоже выложу во free.
http://pixs.ru/showimage/Bezimeni1j_3974885_9295155.jpg
Still325; MarSeN; +2 Ответить 3
5. Сергей Марченко (MarSeN) 07.10.13 12:49
(3) seermak
Хороший вопрос ))
в статье в самом низу... "Архив содержит Инсталляционный пакет для Инсталлятора пакетов 1С 8.2. и выгрузка из БД...."
Это инсталляционный пакет для Инсталлятора паветов 1С 8.2 (http://infostart.ru/public/194576/). Автоматически установить подсистему. В частность надо открывать 1С (режим предприятия) УФ
6. Сергей Марченко (MarSeN) 07.10.13 12:51
(4) LaNaite,
Спасибо.
Ваша ссылка не открывается (
7. Сергей Марченко (MarSeN) 07.10.13 12:52
8. Анаит Бадалян (LaNaite) 07.10.13 12:59
(7) MarSeN, еще бы группировать старые сообщения. По принципу facebook - типа "загрузка более ранних сообщений"))
9. Сергей Марченко (MarSeN) 07.10.13 13:08
(8) LaNaite,
ага, это в планах. Старые сообщения будут храниться локально у пользователя на компе (sqlite3)
10. Яков Коган (Yashazz) 07.10.13 13:52
Баян. Делали такое ещё на 8.0
11. Сергей Марченко (MarSeN) 07.10.13 13:59
(10) Yashazz,
никто не говорит что сам чат в 1С - что-то новое.
но попробуйте то-же самое реализовать на 8.2 УФ, особенно перехватите контрол+энтер и передайте текст в 1С. На обычных формах все просто. На УФ таких штатных возможностей нет.
И ссылочку плиз....
12. Яков Коган (Yashazz) 07.10.13 16:11
(11) Уже мучился. Правда, не для чата - мне для своей "Базы знаний" понадобилось, когда в УФ переводить стал. Авось к Новому Году допилю, выложу ))
13. Сергей Марченко (MarSeN) 07.10.13 16:17
(12) Yashazz,
качни - посмотри как сделано.. все вроде просто ))
14. Яков Коган (Yashazz) 07.10.13 17:19
(13) Давай так - если сам красиво не соображу, через месяц качну. Тоже, знаешь, сам хочу решить! )))
15. Сергей Марченко (MarSeN) 07.10.13 17:27
(14) Yashazz,
думаю, проблем для красивых решений на всех хватит, но, как знаешь
вообще, конечно, лучше чтоб еще какао-то решение было )
16. Максим Кузнецов (Makushimo) 08.10.13 06:23
а можно выложить выгрузку базы без необходимости качать "инсталятор". Это скрытая реклама?
17. Сергей Марченко (MarSeN) 08.10.13 08:56
(16) Makushimo,
а можно выложить выгрузку базы без необходимости качать "инсталятор". Это скрытая реклама?

Исталлятор качать не обязательно.
Выгрузка и инсталляционный пакет находятся в одном архиве к статье.
Конечно можно посчитать что это скрытая реклама, но я предпочитаю создать инсталляционный пакет и выложить его, а не писать инструкции по установке подсистемы.
18. Rom Shpakoff (Lancelot-2M) 09.10.13 03:11
ХТМЛ-документ,конечно, дает возможности по отрисовке интерфейса, но ИМХО довольно тяжеловесен. Думается мне, что для работы с базой через инет я бы использовал ТаблицуФормы.
В любом случае очень приятная разработка.
19. Сергей Марченко (MarSeN) 09.10.13 09:39
(18) Lancelot-2M,
При этом потеряется возможность форматировать текст сообщения
20. Rom Shpakoff (Lancelot-2M) 09.10.13 10:01
Я понимаю. Точнее потеряется возможность форматировать отдельные фрагменты текста сообщения. Но производительность в браузере может оказаться критичнее.
21. Сергей Марченко (MarSeN) 09.10.13 10:12
(20) Lancelot-2M,
и все-таки я бы не стал делать такие выводы. Сам по себе объект создается 1 раз при открытии обработки. потом если собеседник активен и вы с ним общаетесь, то сообщения добавляются. Только если вы меняете собеседника переписка перечитывается

конечно, если использовать чат в том виде, в котором он представлен в публикации - будут тормоза.
Нужно отсекать старые сообщения, как сделано, к примеру, в скайпе (что и будет сделано)
22. Николай Бардин (sput74) 09.10.13 10:39
Принимается на уровне красивой идеи.
Для реальной жизни подходит ИМХО слабо, по сравнению со stand-alone мессенджерами.
Например, пользователю нужно написать сообщение следующего вида:
"Дорогой админ, помоги скорее, у меня не запускается 1С-восьмерка".
Наши действия?
23. Сергей Марченко (MarSeN) 09.10.13 10:49
(22) sput74,
принимается на уровне красивого вопроса )
ответный вопрос: у пользователя не запускается компьютер или stand-alone мессенджер

пользователю нужно написать сообщение следующего вида:
"Дорогой админ, помоги скорее, у меня не запускается 1С-восьмерка".
Наши действия? )))

скорее всего он возьмет телефон и позвонит.
24. Rom Shpakoff (Lancelot-2M) 09.10.13 10:58
а мне вот неймется рискнуть внедрить, но у меня 40 юзеров через инет в пике активности почти одновременно пишут в 2 регистра... вот борюсь с соблазном)
25. Сергей Марченко (MarSeN) 09.10.13 11:16
(24) Lancelot-2M,
не забудь тогда написать регл. процедуру по удалению старых сообщений. или переноси их куда-нибудь.
Старые сообщения определяются по закладке. смотри запрос по получению сообщений
26. Rom Shpakoff (Lancelot-2M) 09.10.13 11:22
(25) MarSeN, я думаю модифицировать запрос на получение последних 5-10 сообщений, а не всех. и добавить возможность вывода указанного количества последних сообщений.
27. Сергей Марченко (MarSeN) 09.10.13 11:27
(26) Lancelot-2M,
как вариант. тогда настройку сделай по примеру периода проверки новых сообщений
28. Rom Shpakoff (Lancelot-2M) 09.10.13 11:46
И еще бы добавитьвозможность отображения статуса собеседника - онлайн он или нет.
29. Сергей Марченко (MarSeN) 09.10.13 12:04
(28) Lancelot-2M,
тогда придется добавлять еще 1 регистр... чего не охота делать.
я планирую сделать визуальное отображение прочитал собеседник сообщение или нет.
т.е. пока собеседник не прочитал твое сообщение, сообщение в чате у тебя будет, к примеру, сереньким. как только оно будет выведено в окно собеседника, стиль становится обычным (как сейчас)
30. Сергей Марченко (MarSeN) 09.10.13 12:05
(28) Lancelot-2M,
но статус, тоже желателен. согласен )
31. Николай Бардин (sput74) 09.10.13 12:14
(23) MarSeN,
Не удержусь, задам еще "красивый вопрос", точнее дополнение.

Чат внутри 1С бесполезен, в случаях, когда
1. У пользователя не включается 1С
2. Пользователь вышел из 1С (по просьбе админа, как в примере)
3. Не все пользователи, которым нужен чат, работают с 1С (по лицензионным, техническим, организационным соображениям)
4. Пользователи работают более чем с одной базой 1С.
5. Пользователи работают удаленно, например на планшетах (разновидность п. 3)
6. У пользователя запущена громоздкая обработка чего-нибудь
7. У пользователя [ИЛИ|И] админа [занят|разрядился|сломался|неоплачен]телефон/охрип/глухонемой/сидит удаленно с ребенком/etc, в сочетании с пп 1,2,3,5,6

Добавлю для очистки совести:
-Все предусмотренное, напомню, мое личное ИМХО;
-Контр-аргументы сохранились с тех времен когда У МЕНЯ в организации стоял вопрос про вариант корпоративного чата
-Сказано только для организаций ПОХОЖИХ на мою - они есть, и поэтому в этой ветке такие аргументы уместны.
-Осознаю, что ЕСТЬ и другие организации - для них эта программа может подойти.
-Топикстартеру в любом случае респект и уважуха за энтузиазм и красиво сделанную работу.
32. Сергей Марченко (MarSeN) 09.10.13 12:52
(31) sput74,
я согласен со всеми аргументами, но.. это именно внутренний чат. т.е. только для внутреннего пользования..
Пользователи работают более чем с одной базой 1С.

данный функционал скорее всего будет добавлен.
33. Программулькин (Программулькин) 18.10.13 11:40
лень читать все коменты, в толстом клиенте не пашет?
34. Сергей Марченко (MarSeN) 18.10.13 11:47
(33) Программулькин,
))). Я для толстого не проверял, но, теоретически, должно запахать, если режим соотвестсвующий поставить.
35. ддд ддд (friday1) 18.10.13 23:17
очень интересная задумка, будем тестировать)
36. Аркадий Кучер (Abadonna) 19.10.13 10:35
(31) sput74,
1. У пользователя не включается 1С

А еще важнее: пользователю вообще по барабану 1С, он, к примеру, конструктор.
Имхейшее имхо: корпоративный чат надо строить по другому (UDP, IMAP и т.п.). А для полного счастья можно предусмотреть и отправку в 1С/ из 1С (как у нас и сделано ;))
P.S. По вышеприведенным соображениям и все "поздравлялки" 1С ущербны, ибо подразумевают наличие у пользователя 1С
P.P.S. А автор - всё равно молодец! ;)
37. Сергей Марченко (MarSeN) 19.10.13 11:49
38. Александр Ширипов (shira84) 22.10.13 11:12
Отличная доработка, но для РИБ что можно подобное придумать? Не синхронизировать же каждую секунду.
39. Сергей Марченко (MarSeN) 22.10.13 11:22
(38) shira84,
Да, каждую секунду конечно не вариант синхронизировать. м/б как вариант сделать доп. обмен только сообщениями...
да, тут надо крепко думать, особенно в направлении стоит ли по рибу синхронизировать сообщения. Мне кажется, что сообщения должны приходить в месте с остальными данными.
40. Александр Ширипов (shira84) 22.10.13 11:36
(39) MarSeN,
Не очень оперативно получается, а как раз таки в таких базах не помешал бы чат, у нас это насущьная тема, куча удаленных розничных точек, постоянные изменения, акции... пользуемся майлом агентом. Вот сделал бы кто нить чат для 1с через чейнить сервер, тот че майл к примеру.
41. Сергей Марченко (MarSeN) 22.10.13 12:13
(40) shira84,
Веб сервисы можете поднять?
можно воспользоваться веб сервисами для отправки и получения сообщений.
как вариант прикрутить почту...
42. Александр Ширипов (shira84) 22.10.13 13:43
Да кстати это идея слышал про такие. Увы пока не пробовал.
43. Сергей Марченко (MarSeN) 22.10.13 13:47
(42) shira84,
На инфостарте есть статья по этому поводу (обмен ч/з веб сервисы, кажись). Только для этого придется поднимать веб сервер
Теософ; +1 Ответить
44. Максим Александрович (sadam_max) 14.02.14 12:11
(4) LaNaite, Привет. можно поковырять твой чат он поинтересней кажется чем этот))
45. Павел Романов (Pawlick) 08.09.14 04:22
Есть очень существенная проблема:
если сообщений между пользователями кот наплакал, то все просто идеально... А вот есть сообщений поднакопилось "поболе", то начинают возникать трудности с выводом на экран:
эксперименты показали, что
- переписка до 300 сообщений грузится вполне себе сносно;
- при загрузке переписки от 300 до 1000 сообщений загрузка "переваривается" так долго, что проще через скайп продублировать;
- при попытке загрузить от 1000 сообщений - сеанс "валится" без возможности восстановления...

Очевидно, что решением проблемы было бы загрузка сообщений порциями: скажем по 100 сообщений, а при прокрутке страницы вверх, происходила бы подгрузка сообщений скажем по 30 - 50 шт...
В этом случае цены бы не было работе, т.к. пока это единственное решение которое я видел, у которого при добавлении нового сообщения в конец таблицы, вся таблица сдвигается вверх (нижняя строка как бы выдавливает остальные строки выше), как в скайпе например. Из за этой особенности использование 1С-ных табличных полей неудобно, т.к. добавляемые программно строки (в случае когда строк в таблице уже на весь экран), попадают "ниже видимой части монитора", и для их просмотра необходима "ручная" прокрутка таблицы вниз...
46. Helgi Sokolov (olegov) 17.09.14 20:48
Доброго времени суток. Спасибо за разработку, очень полезная штука. Могу ли я предложить Вам доработать сей чат по следующим пунктам.
1) Можно ли сделать общую комнату, где все собеседники могут общаться одновременно.
2) Сделать возможность Вставить в форме вопрос на голосование, с возможностью варинатов ответов, типа опроса. С перечнем, кто как проголосовал. и общий результат опроса.
Это можно применить при конференц-общении, если пользователи не могут собраться вместе на собрании, территориально далеко друг от друга, а нужно принять решение по какому-то важному вопросу. На мой взгляд очень полезное дополнение.
Как Вы думаете?
47. Сергей Марченко (MarSeN) 18.09.14 13:11
(45) Pawlick,
Согласен.
У меня есть версия, в которой есть, как в скайпе, вывод за неделю, месяц и т.п.
Я сейчас занят проектом магазина типа AppStore - Магазин решений "PrimaStore". Временный сайт проекта primastore.top-choice ру
Как только запущу проект - выложу туда обновленную версию чата.
48. Сергей Марченко (MarSeN) 18.09.14 13:13
(46) olegov,
Конечно, Вы можете дорабатывать чат для своих нужд.
49. Михаил Афанасьев (mikmike) 09.10.14 11:19
(36) Abadonna, не подскажете как у вас сделано? корпоративный час да еще и с обменом с 1С
50. Andrey (kentavr27) 03.01.15 20:16
Выглядит, конечно же, красиво. Вот только с доработкой -- полный затык получается. Точнее, доработать HTML морду не знаю как. Может чо подскажите? Пока хочу добавить три основные ф-ции:
1. Изначально не понравилось действие "Добавить контакт". Вывел в список всех пользователей системы. Теперь бы их хотелось сгруппировать по филиалам, но как организовать управление группами -- это большой вопрос.
Типа группа "Филиал №1" и под ней список пользователей этого филиала. Нажал на группу -- список развернулся. Нажал еще раз -- свернулся.
Вариации темы группировок -- управляющие кнопки управления списком пользователей типа "отобразить всех", "только on-line", "отобразить по переписке" (только тех, с кем был контакт), "очистить историю" и т.п.
2. Так же нужна ф-ция отправки сообщения нескольким выбранным пользователям (типа флажка напротив пользователя, что ли, но как его нарисовать в HTML и отловить событие пометки?).
3. Ну и отрисовка on-line пользователей цветом совсем не помешала бы.
Или может быть подскажете где нарыть доходчивый мануал по управлению HTML?
51. Andrey (kentavr27) 04.01.15 18:19
(50) kentavr27, проблему иерархического отображения пользователей решил с помощью запроса, который выдает нужную структуру в зависимости от выбора пользователя. Группы теперь разворачиваются/сворачиваются. Как изменить цвет текста/шрифт групп, элементов и он-лайн пользователей -- тоже нашел.
Остался вопрос организации флагов в HTML форме.
Да и с редактированием макета (даже добавление простого текста) как-то не алё получается. Редакторы показывают одну картинку, а 1С рисует несколько по-другому...
52. Сергей Марченко (MarSeN) 05.01.15 21:45
(51) к сожалению сейчас не могу заняться этим вопросом. Вернусь к не?У после 12 января
53. Андрей Вовк (wowkai) 06.01.15 10:49
подскажите на каких конфигурациях тестировали работу? на УТ11 взлетит?
54. Andrey (kentavr27) 07.01.15 18:34
(52) MarSeN, в общем получилось что-то типа этого:

Основное, чего бы хотелось -- сделал.
С флагами напротив каждого пользователя пока не стал заморачиваться -- тяжело для понимания, с учетом того, что дело с HTML, javascript и CSS имею первый раз в жизни.
Даже, с простыми, на первый взгляд, доработками, пришлось немного повозиться.
Да и с самым элементарным -- разметкой морды формы, ну совсем не все хорошо.
Например, попытался взять радиокнопки в рамку (что бы визуально выделить группу переключателей и подписать сверху), но при этом созданная рамка (вместе с радиокнопками) переехала на следующую строку и больше никак не хотела возвращаться на строку с кнопками форматирования. Пришлось от рамки отказаться.
" для отправки сообщения....." тоже выглядит почему-то коряво