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 сек. пользователь будет знать, что у него в п/я есть новая почта.


Ну и само сообщение

 
 
Hosted by uCoz