Вариант UDP Чата для 1С
Разработка - Разработка внешних компонент
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Основные свойства компоненты:
isEnable - возвращает 1, если открыты сокеты и можно отправлять/принимать данные
Методы:
Enable(ПортНомер) - открывает выбранный порт для входящих сообщений и устанавливает свойство isEnable=1
Sendto(Адрес,Порт,Сообщение) - посылает данные на удаленный сокет
Disable - прекращает прием/отправку и закрывает порты
Ограничения:
1. Не поддерживается(пока) рестарт чата "на лету", если использовали метод Disable, то Enable работать не будет до закрытия 1С.
2. Ограничение на длину сообщения - 512 символов
3. В "хвосте" каждого сообщения есть служебная информация вида:
500:port:27015 recvfrom->192.168.0.77::37420
500 - количество символов в пришедшем пакете (без учета "хвоста")
:port:27015 - на этом порту удаленный комп. ждет ответных сообщений
recvfrom->192.168.0.77::37420 - адрес и порт, с которого пришли данные(на этот порт не надо ничего отправлять, он для информации)
Пример использования под 7.7:
// файлик лежит в КаталогеИБ
ЗагрузитьВнешнююКомпоненту("Udptor.dll");
Чат = СоздатьОбъект("Addin.Chat");
// Открываем порт для приема сообщений
Чат.Enable("27015");
// Проверяем результат
Если Чат.isEnabled=0 Тогда
Сообщить("Ошибка при открытии порта!");
КонецЕсли;
// Отправка сообщений
Процедура ОтправитьСообщение(Адрес,Порт,Сообщение)
Если Чат.isEnabled = 0 Тогда
Сообщить("Сервер не запущен!");
Возврат;
КонецЕсли;
Чат.Sendto(Адрес,Порт,Сообщение);
КонецПроцедуры
// Например
ОтправитьСообщение("192.168.0.77","27015","Это тестовое сообщение");
// Обработку входящих сообщений производим в процедуре
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
Если Источник = "UdptorChat" И Событие = "Server" Тогда
Сообщить(Данные);
ИначеЕсли Источник = "UdptorChat" И Событие = "Error" Тогда
Сообщить("Ошибка !"+Данные);
КонецЕсли;
КонецПроцедуры
Использование в 1С 8:
1. Копируем компоненту на локальный диск
2. Регистрируем командой regsvr32 "путь к компоненте"\udptor.dll
В процессе регистрации возможно появление ошибки " не найдена точка входа..." при этом компонента будет работать. С ошибкой еще не разобрался, появляется и на Win2k и на XP, но редко.
Запуск в 8-ке
Результат = "";
ИмяВК="AddIn.Udptor";
Попытка
ПодключитьВнешнююКомпоненту(ИмяВК);
Результат = 1;
Исключение
Сообщить("Не удалось загрузить внешнюю компоненту по причине: "+ОписаниеОшибки());
КонецПопытки;
Сообщить(Результат);
Чат = Новый ("AddIn.Chat");
// Далее работаем как в 7.7 ч.з. обработку событий
Вступайте в нашу телеграмм-группу Инфостарт