Поддерживет многоканальность, команды, обмен 1С ссылками (с возможностью открытия).
Не зависит от платформы 1С, в одном чате можно сидеть на разных платформах и разных конфигурациях или вообще без 1С.
*** Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, который можно скачать отсюда.
http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5
и зарегистрировать компоненту в Windows — запустить reg.bat
(для удаления информации о компоненте в Windows — запустить unreg.bat)
или использовать совместно с хранилищем внешних компонент: //infostart.ru/projects/2863/
Для запуска сервера нужно запустить RunServer.bat
*** Добавление на форму 1С:
v7: Использовать 1С++:
Перем Чат;
Процедура ПослеОткрытия()
Чат = СоздатьОбъект("АктивИкс");
Чат.УстановитьАтрибут(Форма, "АктХ");
//"АктХ" - идентификатор элемента диалога, на месте которого будет создан элемент ActiveX.
//только для реквизитов диалога типа "Текст".
Чат.СоздатьЭУ("Душелов.Chat1C");
Чат.УстановитьФокус();
КонецПроцедуры
Процедура АктХ_ПриИзмененииТекстаПоляВвода(Текст)
Сообщить(Текст);
КонецПроцедуры
Процедура АктХ_ПриАктивацииГиперссылки(Текст)
Сообщить(Текст);
КонецПроцедуры
Процедура АктХ_ПослеПолученияТекста(Время)
Сообщить(Время);
КонецПроцедуры
Процедура АктХ_ПриВозникновенииОшибки(Текст)
Сообщить(Текст);
КонецПроцедуры
Процедура АктХ_ПриПолученииКоманды(Команда)
Сообщить(Текст);
КонецПроцедуры
Процедура АктХ_ПриВходеВКомнату(ИмяКомнаты)
Сообщить(Текст);
КонецПроцедуры
v8: Меню «Форма» — «Вставить ActiveX…» — Выбрать элемент «Душелов.Chat1C»
*** Методы:
СОЕДИНЕНИЯ:
Чат.Соединиться(Сервер, Порт);
ИДЕНТИФИКАЦИЯ:
Чат.Идентификация(Пользователь, Пароль, Регистрация); //регистрация: 0 — не регистрировать, 1 — регистрировать
ОТПРАВИТЬ ТЕКСТ:
Чат.ОтправитьТекст(Текст);
*** События:
— ПриИзмененииТекстаПоляВвода(Текст)
— ПриАктивацииГиперссылки(Текст)
— ПослеПолученияТекста(Время)
— ПриВозникновенииОшибки(Текст)
— ПриПолученииКоманды(Команда)
— ПриВходеВКомнату(ИмяКомнаты)
Формат ссылки: Представление ссылки. Соответственно, передавать можно все, что угодно.
!!!ВНИМАНИЕ!!!
При закрытии формы с чатом, обязательно отправляйте команду выхода: «Чат.ОтправитьТекст(«:QUIT»);»
ИСТОРИЯ:
20.10.2008:
— полностью переписана работа с комнатами и приватами
14.10.2008:
— пользователям добавлен уровень (от 0 до 100, 100 — Админ)
— добавлена работа с произвольными командами (пример в ini файле сервера)
— добавлены новые команды: «:info:», «:info room::», «:set level::»
— добавлены новые обработчики: «ПриВходеВКомнату» и «ПриПолученииКоманды»
10.10.2009:
— обновлены клиент, сервер, v8, Win
— добавлен конфиг со списком комнат
— добавлено новое событие «ПриВходеВКомнату»
— убран глюк с путанием букв
— и прочее…
UDP чат для обмена сообщениями в локальной сети.
Поддерживет многоканальность, команды, обмен 1С ссылками (с возможностью открытия).
Не зависит от платформы 1С, в одном чате можно сидеть на разных платформах и разных конфигурациях или вообще без 1С.
Перейти к публикации
Соответственно, можно написать код, чтобы, если идентификатор базы в ссылке не соответствует текущей, запускалась эта база и открывалась эта ссылка.
Все в руках программистов. Платформа 1С не важна.
В комплекте пример для 8.1, для 7.7, как обычно, выложу позже.
Так же в скором времени будет обмен картинками, видео… Соответствие каналов — базе, показ имени компьютера и айпишник пользователя и многое другое.
Скорость выкладывания интересных вещей просто потрясает!
А теперь по делу: Чат в терминале работать будет?
(4) Люблю изучать новые вещи и технологии 🙂
По делу: должен работать.
При желании могу выложить простой клиент (exe) для чата, для тех, кто не пользуется 1С.
(0) «возможно падения 1С»
+ однозначно 🙂
(6) 1С-ка коряво сокет закрывает при своей закрытии… Дома более предметно рассмотрю этот вопрос.
Ага, вроде как поправил!
Эээ! Чего плюсы ставим, а еще даже не скачали и не посмотрели??? Такнипайдет!
что надо обязательно: ведение лога!!!!!
ставлю плюсик и буквально сразу буду прикручивать к базе.. а то своя рассылалка нентсендом — бяка…
ну блин ща такую штукенцию забабахаю.. «доступ» и рядом не стоял по ажиотажу…. 😉
(10) Лог вести на сервере не проблема, как и сделать сервер службой виндовса…
Да, забыл еще написать про формат ссылки: <link=моя_произвольная_ссылка>Представление ссылки</link>. Соответственно, передавать можно все, что угодно.
Добавил пример на 7.7
(13) аааа блин я в отпаде….!!!!!!!!!!! +1000000!!!!!!!!!!1
а можно добавить «внутрь» (не на уровне исходного кода) — типа отправить всем из «текущей базы» и получение списка юзверей/коннектов текущей базы…????
И ВОТ ЕЩЕ!!!!
ДОСТАВКА ОТЛОЖЕННЫХ СООБЩЕНИЙ…..????
УВЕДОМЛЕНИЕ О ДОСТАВКЕ….?????
типа в протокол обмена сообщениями чтоб было «зашито»
…??????
(14) посмотри команды: контекстное меня окна чата или «:help» для получения списка команд
На счет отложенных — я думаю, можно организовать.
В 7-ке не стал делать автоформирование ссылки (не помню уже как), грубо говоря, в ссылку пишем идентификатор базы, тип ссылки, код (для справочника) или номер и дата (для документа), но и при активации ссылки, ессно, ищем эту ссылку в базе и открываем ее. Или запускаем другую базу по ее идентификатору… Вот так примерно..
(16) значениевстрокувнтур — там есть все что надо…
единственная проблема — как получить ИДЕНТИФИКАТОР БАЗЫ, однозначно идентифицирующий данную базу?
Одинковая конфига, установленная на разных компах — имеет разные ИДЕНТИФИКАТОРЫ?
А если перенесена копированием?
А существует уникальный ГУИД компа?
А есть возможность, чтобы типа «инициировал» чат — его на экрне нету — пришло сообщение от кого-то — окно всплыло..? (типа ОбработкаВнешнегоСобытия — было бы здорово)
????
типа «инициировал» чат — тогда удалось бы решить (лично мне) задачу автообновления некоторых форм (псевдожурналы) по событию (проведение дока), произошедшем на другом компе…
А есть возможность отправить «широковещательное» сообщение всем тотально? и «узкошироковещательное» сообщение только для текущей базы… — позволило бы решить туеву хучу проблем… а то либо обработкаожидания — что лично мне = бяка, либо netainnet юзать — там можно сделать это, но выморочено приходится изгаляться.. то есть опускаться на более низкий уровень обработки…
???
(17) ну на счет идентификатора базы — тут уже наверное надо завязываться на каталог программы или папку сервера. Наверное так.
И инициировать можно либо по привату (событие напишу позже) или по событию «ПриПолученииТекста»
Точнее «ПослеПолученияТекста»
(18) выбор приватного сообщения пользователю, группе или всем я напишу.
> ну на счет идентификатора базы — тут уже наверное надо завязываться на каталог программы или папку сервера. Наверное так.
гунявое решение! стопудово!
> И инициировать можно либо по привату (событие напишу позже) или по событию «ПриПолученииТекста»
да, что-то типа такого, но!
не «или», а и/или
потому как могу кинуть мессагу — «обновиться» и это будет относится не к конкретному приватному каналу, а всем кто работает в данной базе…
..
И вопрос:
как бы организовать уникальные иды/фото юзеров для всего пространства ( а нен только для текущей базы..?) — суть:
хочется например светить __маленькую__ аватарку для идентификации юзеров.. — аватарку НЕ ХОЧЕТСЯ хранить вне сервера чата — гемора много — надо писать в каждой базе (условно), а хочется типа так: если юзер «регится» на сервере — может «заслать» туда аватарку, аватарка «хранится» на сервере и все сообщения юзера «подписываются» этой аватаркой.. т.е. я типа
Имадж = ОчередноеСообщениеЧатаПришедшееКоМне.ИзвлечьАватарку() (возможны 3 вида аватарок: для текущей(в которую отправляется сообщение) базы, для широковещательных криков и еще забыл что думал…).. типа так.. автарки небольшие пусть будут 40 на 40 допустим — трафика много не сожрут.. опять же кто не «зареген» на сервере — имеет «пустую» аватарку, для «служебных» сообщений (при ПОСЫЛКЕ ОНЫХ) можно задавать режим отключения/включения аватарки в «пакет мессаги»…
ффууу остапа несло…
— могу сделать в любой базе и поиметь что надо без лишних геморров…
Ну еще надо добавить событие «ПриПолученииТекста(Текст, СтандартнаяОбработка), типа для команд таких, когда текст не надо отображать, а производить какие-либо действия
(24) юзеры и так хранятся (регистрация), соответственно, там можно хранить любую инфу, да и аватарки получать — не сложное дело на самом деле…
(25,26) это вам, как разработчику, я, думаю, виднеее — надеюсь ход моей нижеизложенной мысли понятен…
Вообщем, список идей в студию… Буду развивать проект этот… К нему можно еще аську прикрутить (гейт, чтобы с телефона можно быть в чате и команды отсылать…
(27) а вы, как пользователяи, запустили, посмотрели разработку? 😉
(28) пока нет! с вип’ом ругаюсь.. 😉
предлагаю функционал наращивать блоками!
в первую очередь — то что ближе к 1С…
ща домой приду, если не сломает спать — прикручу к своей рабочей конфиге, вместоhttp://www.infostart.ru/profile/174/projects/269/
обязательно должно быть: я отослав сообщение и поставиви «флажоК» ПОДТВЕРЖДЕНИЕ ПРОЧТЕНИЯ — хочу получить НАЗАД такое подтверждение…
в итоге — все непросто.. собщения надо гуидами снабжать.. цепочки строить… но это — зашибись программинг.. а то меня уже от чисто 1Сных задач тошнит…
и лог! обязательно лог сообщений на сервере!!!
(30 Ну к рабочей может еще рано. Стоит еще вылизать работу с сокетами… Лог — это завтра сделаю. На счет уведомления, а подумаю, как это организовать правильнее…
Ждемс!!
Василий, сделай, пжлст, экзешник сиго чуда.
и не ведись на «предлагаю функционал наращивать блоками!
в первую очередь — то что ближе к 1С…»
Лучше/нужнее универсальное, чем зависимость от чего либо, а тем более от 1С.
А идея прикрутить к нему аську — зеер гуд!!
Таким макаром скоро и почту тут же будет принимать/отправлять :))))
В общем я в очередной раз куею с тебя! (хотя ниодной твоей новой обработки ещё не скачал 😉 )
(34) ну от 1С никак не зависит, этот чат можно и в Excele использовать 🙂 Вещь-то и получается универсальная.
(35) так скачай 😉
(28) Попробовал на 7.7
1. Окно контрола создается, каретка в нем мигает, на клавиши не реагирует.
Т.е. контрол создается нормально, но не работает.
2. «Соединиться» выдает «Поле агрегатного объекта не обнаружено (Соединиться)»
3. Порт всегда будет 1300? Или будут настройки?
4. Сервер надо запускать сервисом, а то висит консольное окно.
(37)1. На клавиши контрол и не должен реагировать.
2. Контрол значит не создался как положено, «ПослеОткрытия» работает?
3. Посмотри батник запуска сервера.
4. Сервис организовать — это в планах.
(38) 1. Это как? Тогда не совсем понимаю, как это должно работать. Напиши просто принцип, я пойму.
2. Ну, если окно контрола появилось, значит создался и ПослеОткрытия отработало.
Смущает, что при регистрации выдало очень много текста. Не вчитывался.
3. Увидел. А 10 что, таймаут? Или количество попыток?
4. Решай этот вопрос, а то некрасиво.
(39) 1. А на что ему реагировать? 🙂
2. Ну значит версию 1С++ поставить другую. Какая у меня стоит, я не помню, дома посмотрю
3. Ты просто экзешник запусти и поймешь 😉 Это количество комнат.
4. Службу отлаживать не удобно. Когда с сервером закончу, переведу его в качестве службы.
(40) 1. Я старый и тупой. Правда не понимаю. Может потому, что никогда не чатился. Объясни.
2. Я с активиксами в 1С работаю со дня появления такой возможности и знаю, что и когда там менялось.
Это не то. Повнимательней посмотрю момент регистрации активикса, т.к. с .Net не знаком.
(41) Посмотрел внимательней регистрацию.
Да, вываливает кучу Warning.
Это что-то не то у меня с версией .NET Framework?
(41) Все команды из поля ввода даются, или из меню. Этот контрол только для отображения информации и связи с сервером.
(42) Убери в батнике /tlb. А в целом — ничего страшного. Проверено.
(43) Так, уже гораздо лучше.
При Соединиться() выдает «Данная операция поддерживается только в 2000 SP3 и более поздних версиях».
Это чего? Стоит XP SP2.
(41)>1. Я старый и тупой.
Зачет!!! :)))))))))
(44) Дык это великая сермяжная правда и есть 🙂
И вотку люблю.
(43) Меню хотелось бы редактировать.
А лучше вынести команды меню в методы активикса.
ЗЫ. Глупые вопросы задавал, т.к. сначала не увидел демо-конфу.
(45) Кхм… Нэт фреймворк стоит свежий?
(46) ну на счет меню, как я писал ниже, я сделаю формирование собственного меню в настройках сервера.
(47) ХЗ.
Run Version v2.0.50727 в реестре это не оно?
(47) Про меню.
Можно и так.
А можно добавить и мой вариант. Может я хочу свое меню выкидывать, красоты необычайной :))
Каретка зачем на контроле? Смущает.
Наверно какой-нибудь текстбокс прицепил просто?
(48) Оно. Ща выложи клиента для винды, попробуй на нем.
(49) Да меню можно какое-угодна сделать.
(50) каретка для автопрокручивания вниз, при добавлении текста.
Фокус после получения текста возвращается на поле ввода.
(51) 1. Я выложи или ты выложил? 🙂 Не понял.
2. Да нет, я свое меню хочу цеплять.
А для этого надо команды твоего меню вынести в методы контрола.
ПолуОФФ:
1. Уже не у первого человека вижу код:
Показать полностью
ЗагрузитьВнешнююКомпоненту — не вызывает исключения! Оно либо возвращает 0, либо 1. Поэтому то, что у тебя стоит в Исключении никогда не сработает!
2. 1С++ всё-таки лучше грузить ДО FormEx
(52) я просто выдернул с какого-то примера, я не разбирался с кодом этим 🙂
(53) 1. Я выложу.
2. Да понятно. Надо методы работы с меню в контрол включить.
(52) +1
Попыткой можно проверять создание объекта компоненты.
Василий, а можешь сделать сетуп для клиента? (ну, ес-но, в этом случае нужен уже экзешник, а не АктивИкс)
+(52,56) Нет даже смыла проверять на чему равно ЗагрузитьВнешнююКомпоненту(«1cpp.dll»), т.к. 1С-ина сама ругнется, если компонента не загрузится. Проверять надо только на СоздатьОбъект, ИМХО
(56) Могу. Но эт в дальнейшем, для начала все привести в достойный вид надо.
(57) Не ругнется. Ругнется только при создании объекта.
Добавил Windows-клиент. И обновил компоненты с сервером.
Разбил архив на по направлениям.
(60) Виндовый клиент работает.
В 1С перестал создаваться контрол.
(62) значит проблема в 1С++
А можно комнаты Ассоциативными сделать? Чтоб у комнаты нетолько номер был, но и Наименование?
(64) так и планируется. идентификатор базы к примеру.
(63) Это врядли. Первая версия контрола создавалась нормально.
Удали инфу о контроле и заново его зарегь.
(67) unreg для старого недостаточно?
Руками почистить?
В вин-клиенте (не знаю как в АХ, не пробывал)
1. бывает, что иногда имена юзверей или сервера какие-то странные выдаются. Например:
esrsre>В онт
evr ывкмае1srver> Вы в комнате 1
srver> Вы в комнате 1
ever> Юз2 Выберите номер комнаты: 1 — 10
erver> Добро пожаловать, Юз2, в комнату 2
eesrsЮ2> Привет
зsrver> Юз2 Выберите номер комнаты: 1 — 10
erver> Юз2 Выберите номер комнаты: 1 — 10
erver> Добро пожаловать, Юз2, в комнату 1
з2> привте
essЮЮ2> цу
зЮ> цццц
с чем связано и как добиться — ХЗ
2. Если вышел по «:quit», то обратно входить только перезапуском (
3. В заголовок окна идёт имя пользователя. Хорошо. Но, походу, считывается только один раз при старте, а желательно при входе в чат. А то получается, что я сижу под Евгеном, а в окне — Душелов. Да и имя/номер комнаты туда б не помешало положить.
4. Ну и хотелось бы, чтоб можно было в нескольких комнатах одновременно сидеть (бегать по ним, например, через закладки). Такое возможно?
(68) Ну тогда добавлю новый tlb файл для регистрации. Может поможет.
(69) 1. Как бы повторить эту ситуацию.
2. Не, по команде этой выходить не стоит. Вин-клиент закрывать нада… (адаптировано просто для 1С).
3. Ну заголовок можно какой-угодно сделать. Нарисую события для формирования заголовка.
4. Думаю, что возможно, надо посмотреть…
по внешнему виду клиента:
Менюшка основного окна и нижняя понели окна подключения вроде в стиле Офиса 2003, а остальное — как обычные окошки. Как-то некрасиво…
(68) обновил архив, запусти reg2.bat, на варнинги не обращай внимания.
(57) Еще как ругнется!
7-ка:
Ошибка при создании объекта из компоненты C:V7XLSD7_DLLMiracleV8.dll (отсутствует CLSID)
8-ка
{Форма.ФормаОтчета(3)}: Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты
ЗагрузитьВнешнююКомпоненту(«c:V8_Бухгалтерия1_6_8_3MiracleV8.dll»);
по причине:
Ошибка при загрузке внешней компоненты
(71) я не заморачивался с интерфейсом 🙂 я его нарисовал, в качестве проверки функционала… На сколько он востребован — не знаю.
А «остальное» — это что? Там и нет толком ничего.
(72) Нет. Не создается.
Проверил еще раз первую версию, создается нормально.
За исключением упоминания про 2000 sp3 при соединении.
Надо, чтобы еще кто-нибудь проверил.
Я тоже с сокетами работаю, может чего повредил в свое время.
(74) При отсутствии файла не ругнется. Проверь.
(75) По 7.7 я смогу посмотреть только дома.
(76) Поэтому я просто проверяю ФС.СуществуетФайл 😉
Новый у меня не работал по reg и по reg2.
Потом скопировал в другую папку, сократив полный путь, запустил reg и вроде всё работает
Старый нужно предваритольно удалить. Ибо в системе остается путь со старого. Или просто обновить длл-ки и запустить рег.бат.
Василий, хотелось бы, чтоб из АХа можно было скопировать текст, хотя бы по «Ктрл+С»
(78) Ты эта. Не уподобляйся некоторым.
Я правильно написал, что не будет ругаться при отсутствии файла или нет?
(81) Ок.
+(81) когда вызывается контекстное меню, то значёк мышки остаётся прежним. Т.е. у меня была мышка в виде «редактирование/выделение текста» так она и осталась при сёрфинге по контекстному меню. Мелочь, конечно, но не очень красиво.
(79) Не хочет и с совсем коротким путем.
Василий, а чье это сообщение про 2000 sp3?
(86) Фреймфорка. Я про что говорю, видимо 1С++ не верно активировала у тебя компоненту, раз вин-клиент работает нормально.
(86) Т.к. компили я под вистой, я попробуй вечером дома под ХР скомпилить и обновить тогда…
> This operation is only supported on Windows 2000 SP3 or later operating system
> It’s the system compatibility problem. My colleague ‘s run the application on his windows vista,but set the application compatibility property to run on Windows 2000 without telling me about that. Further more,when I replace the exe file with my newly build one,the compatibility property stay the same. God, the windows system is too clever.
To set the application compatibility property, right click the exe file -> property->compatibility->compatibility mode.
(88) Опа!
Точно галка совместимости с 2000 стояла.
Создался контрол, работаем дальше.
Я ж знал, что чудес не бывает.
Запиши эту фичу, а то забудешь.
(82)>Я правильно написал, что не будет ругаться при отсутствии файла или нет?
Тупые клюшки не ругаются, умная восьмерка — ругается. бе-бе-бе 😉
(90) ну вот 🙂
(91) Не выкручивайся, старый пень.
Мы именно про тупые клюшки и говорили.
(93+) Подожду результата из (88)
(94) Ну не знаю, не знаю… :)))
В описалове есть «Клиент для 1С 8.1 9kb»
(96) Не юли. Начали мы именно с семерки.
Уподобляясь Чебуру, требую признать мою правоту! :))
Василий, (69) п.1 подтверждаю
Пользователь Юзер.
Результат: Юер, зЮер, зер, зЮЮер, зЮер
(100) кхм… в 7.7?
(100) а логи есть?
(101) 7.7
А логи где смотреть?