|
DM_Chat_Client ...............................................................................................................
На хосте с установленным MySQL расшариваем папку и разархивируем
файл DM_Chat_Client.rar. Смотрим в ini :
//
[Host]
Host=192.168.1.2
[Port]
Port=3306
[User_Name]
User_Name=DM_Chat_User
[Password]
Password=nu_mlin
[Host_Admin]
Host_Admin=parshkov
//
Соотвественно, для MySQL : ip и номер порта , имя пользователя и
пароль - под которым пользователь входит в MySQL , а также хост
администратора - туда будет послано сообщение, если пользователь
не залогинился (net send).
Если это первый запуск DM_Chat_Client на хосте пользователя , то
клиент прописывает себя в реестр, в автозапуск , создает группу
программ и грузится в трей.
Меню в трее.
Определяется текущий хост. Если такой не найден в таблице зарегистрированных
пользователей , то разрешается добавить нового пользователя и включить
в имеющиеся группы (если таковые имеются).
Пароль администратора - в таблице servic_table , поле - Password_Admina.
Если есть совпадение , то будет добавлен новый пользователь и прописан
в соответствующие группы.
Если соединения по каким то причинам не произошло , то администратор
получит сообщение .
Рабочее окно клиента:
При клике на пользователе создается новое сообщение.
В сообщение можно вставить смайлик или изменить иконку приходящего
сообщения. Смайлик вставлять можно только 1 и не в текст сообщения,
а в строго отведенное место. Делать вставку множества смайликов
в текст сообщения, мне, показалось не целесообразным и тродоемким
Или вставить url.
Ну, и, собственно, само , полученное, сообщение.
Соответственно, все сообщения показываются на панеле задач со своей
иконкой.
Полученное сообщение можно импортировать в Outlook и сформируется
новая задача. Писать некий свой планировщик, мне, показалось излишним,
по крайней мере - не сейчас.
Можно просмотреть историю сообщений, есть история для конкретного
сообщения.
Из истории можно просмотреть каждое сообщение в таком виде, в котором
оно пришло , но без возможности ответить. Сорри, но, это - уже история
;).
Широковещательные сообщения с возможностью выбора по группам и инверсией.
Ведется простенький лог текущего сеанса работы.
1С ....... Как много в этом звуке.......
Изо дня в день, занимаясь внедрением/перелопачиванием баз 1С, приходиться
сталкиваться с весьма специфичными задачами.Возникали некоторые
идеи , которые были оформленны в проекты . Что я решился вынести
в DM_Chat.
MOE (MonitorOpenElemets , МониторОткрытыхЭлементов)
В базах, где присутствует большое количество пользователей (хотя
бы больше 25-30 , одновременно работающих), имеют место быть блокировки
документов. Т.е. они, конечно, имеются и при меньшем количестве
, но когда пользователи 1С начинают расползаться по комнатам/этажам/зданиям/районам
, то наступает БЕДА. Открыл некто счет и пошел кофе пить . И в счет
не зайти, и у кого открыт непонятно. Дергать админа по каждому такому
поводу неразумно, посему возникла идея подобного монитора .
Ввод пароля
Ну, и, собственно, результат .
В базе 1С, соотв-но, пишем при открытии документа (по которым нужен
мониторинг).
Процедура ПриОткрытии() //Предопределенная процедура
Если (Константа.РазрешитьМониторОткрДок = Перечисление.Булево.Да)
И (Выбран() = 1) И ((СокрЛП(Константа.МониторОткрытыхДокументовПуть1)
= КаталогИБ()) ИЛИ (СокрЛП(Константа.МониторОткрытыхДокументовПуть2)
= КаталогИБ())) Тогда
Соединение = CreateObject("ADODB.Connection");
Соединение_param = "driver={MySQL ODBC 3.51 Driver};server="+СокрЛП(Константа.ИП_Скуль)+";uid=root;pwd=123;database=MOE;port=3306";
Try
Соединение.open(Соединение_param);
Запрос = "Insert into openobject (Dokument,Data,Time,Kto) values
('"+Строка(ТекущийДокумент())+"','"+Строка(ТекущаяДата())+"','"+Строка(ТекущееВремя())
+"','"+Строка(глПользователь)+"')";
Соединение.Execute(Запрос);
Except
DoMessageBox("Bad connect!");
return;
EndTry;
КонецЕсли;
КонецПроцедуры //При открытии
И при закрытии.
Процедура ПриЗакрытии()
Если (Константа.РазрешитьМониторОткрДок = Перечисление.Булево.Да)
И (Выбран() = 1) И ((СокрЛП(Константа.МониторОткрытыхДокументовПуть1)
= КаталогИБ()) ИЛИ (СокрЛП(Константа.МониторОткрытыхДокументовПуть2)
= КаталогИБ())) Тогда
Соединение = CreateObject("ADODB.Connection");
Соединение_param = "driver={MySQL ODBC 3.51 Driver};server="+СокрЛП(Константа.ИП_Скуль)+";uid=root;pwd=123;database=MOE;port=3306";
Try
Соединение.open(Соединение_param);
Запрос = "DELETE FROM openobject WHERE (Dokument = '"+Строка(ТекущийДокумент())+"')"
;
Соединение.Execute(Запрос);
Except
DoMessageBox("Bad connect!");
return;
EndTry;
КонецЕсли;
КонецПроцедуры
В глобальном модуле.
Процедура ПриНачалеРаботыСистемы()
Если МонопольныйРежим()>0 Тогда
Сигнал();
Сигнал();
Сигнал();
Предупреждение ("Вы в мoнопольном режиме !!!");
//******************************************Монитор откр эл-ов
// т.е. если заходит монопольно, то обнулим монитор .... ну нету
открытых документов; а если что и есть, то делитим бяку
Если (Константа.РазрешитьМониторОткрДок = Перечисление.Булево.Да)
И ((СокрЛП(Константа.МониторОткрытыхДокументовПуть1) = КаталогИБ())
ИЛИ (СокрЛП(Константа.МониторОткрытыхДокументовПуть2) = КаталогИБ()))
Тогда
Соединение = CreateObject("ADODB.Connection");
Соединение_param = "driver={MySQL ODBC 3.51 Driver};server="+СокрЛП(Константа.ИП_Скуль)+";uid=root;pwd=123;database=MOE;port=3306";
Try
Соединение.open(Соединение_param);
Запрос = "DELETE FROM openobject " ;
Соединение.Execute(Запрос);
Except
DoMessageBox("Bad connect!");
return;
EndTry;
КонецЕсли;
КонецПроцедуры // ПриНачалеРаботыСистемы()
И при инициализации пользователя (глПользователь).
//******************************************Монитор октр док-ов
Если (Константа.РазрешитьМониторОткрДок = Перечисление.Булево.Да)
И ((СокрЛП(Константа.МониторОткрытыхДокументовПуть1) = КаталогИБ())
ИЛИ (СокрЛП(Константа.МониторОткрытыхДокументовПуть2) = КаталогИБ()))
Тогда
Соединение = CreateObject("ADODB.Connection");
Соединение_param = "driver={MySQL ODBC 3.51 Driver};server="+СокрЛП(Константа.ИП_Скуль)+";uid=root;pwd=123;database=MOE;port=3306";
Try
Соединение.open(Соединение_param);
Запрос = "DELETE FROM openobject WHERE (Kto = '"+Строка(глПользователь)+"')"
; // т.е. если, вдруг, остались от юзера записи (аварийно отвалился),
то делитим
Соединение.Execute(Запрос);
Except
DoMessageBox("Bad connect!");
return;
EndTry;
КонецЕсли;
В базе специально заведены Константа.МониторОткрытыхДокументовПуть1
и Константа.МониторОткрытыхДокументовПуть2, в которых прописаны
пути к базам для терминального и обычного режим запуска dbf-ой базы,
что бы не создавать записи из тестовых баз. Но существует проблема
аварийно отвалившихся пользователей.
Работаем, соответственно, через ODBC . Компонента прямого доступа
из 1С в MySQL - в разработке.
Monitor1C
Собственно, обычный мониторинг подключенных и зарегистрированных
пользователей
Ну, собственно, сам монитор
DM_Chat_Bat
По существу это действующий пример как из др. информационных систем
можно передавать сообщния в DM_Chat.
Пользователи, которые просят завести 'какой-нибудь маааааленький
почтовый яСЧЩичек' соотв-но, забывают просматривать новые сообщения.
Да и о существовании оного,- тоже имеют свойство забывать. В настоящее
время для меня актуален The Bat.
Будем напоминать ...... В сортировщике (The Bat), при срабатывании
фильтра, запускаем внешнее приложение (есть там на вкладочках фильтра)
и прописываем путь к файлу DM_Chat_Bat , предварительно добавив
к имени файла ..эээээ.... ну, я, добавляю фамилию.Через 10 сек сообщение
уйдет пользователю и приложение (DM_Chat_Bat) автоматически закроется.
Возможная смена тем (Themes) смысловой нагрузки не несет и является
красивым бантиком. Поля 'имя машины' ,'Тело сообщения' и схемы являются
сохраняемыми между сеансами работы. Таким образом через 10 сек.
пользователь будет знать, что у него в п/я есть новая почта.
Ну и само сообщение
|