Вариант UDP Чата для 1С

07.05.10

Разработка - Разработка внешних компонент

Внешняя компонента для обмена сообщениями в сети по udp-протоколу.
Также может быть использована в качестве log-сервера для сбора и обработки логов с оборудования(напр. cisco).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Udptor.dll
.dll 84,00Kb
134
134 Скачать (1 SM) Купить за 1 850 руб.

Основные свойства компоненты:

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 ч.з. обработку событий

 

См. также

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента в виде библиотеки (.dll файл), позволяющая посылать команды и получать ответы по протоколу WebSocket из 1С. Компонента работает только на стороне "клиента".

4440 руб.

22.06.2020    18126    18    33    

22

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    46786    122    66    

66

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    28220    138    100    

90

Разработка внешних компонент Программист Платформа 1С v8.3 Платформа 1C v8.2 Платные (руб)

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3394    2    0    

4

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    36476    113    127    

114

Разработка внешних компонент Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    6767    starik-2005    32    

44

Инструментарий разработчика Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример взаимодействия 1С с Apach Kafka посредством внешней компоненты, разработанной на основе официальной библиотеки librdkafka (the Apache Kafka C/C++ client library).

22.11.2023    4356    86    ivan1703    26    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Nicholas 902 11.05.10 10:20 Сейчас в теме
Пока не понял зачем это нужно, но реализация понравилась.
2. SodaWater 35 11.05.10 21:52 Сейчас в теме
Мне пригодилось для решения след.задач:
1. Обмен сообщениями м\у польз. 1С, независимо от платформы 7.7 или 8 (теоретически должно работать и в терминале, если открыть на каждого юзера терм.сервера отдельный порт, проверю в ближ. время)

2. Как дополнение к 1. - обмен управляющими сообщениями типа "ЗакрытьПрограмму" и т.д.

3. Регистрация различных событий на центральном лог-сервере( syslog на bsd), вход/выход/изменение данных и т.д. При наших 350+ 1С юзерах в 25 распределенных базах очень неудобно отвечать на вопросы - "а кто исправил этот документ?"

4. Решение задач типа:
Покупатель спрашивает "В этом магазине нет нужного товара, а в каком он еще есть в наличии?", при этом не тянуть к себе все базы всех 25 филиалов.

5. Лог сервер на базе 1С 7.7(понятно, что это не лучшее решение), обрабатывает ежедневно 2млн. сообщений от других систем, включая коммутаторы и маршрутизаторы cisco.
Свой; +1 Ответить
3. comol 5107 30.05.10 15:04 Сейчас в теме
А исходники можешь прислать? Хочется чуть модифицировать. Модифицированное могу прислать, получится прямо GPL. Действительно нужная штука, но с 0 не осилил бы писать, не силён в особенностях ВК 1С.
4. Душелов 4018 30.05.10 16:18 Сейчас в теме
5. SodaWater 35 31.05.10 10:56 Сейчас в теме
Это вариант для нелюбителей дот.нет )
И мне нужно было приимать\отправлять независимо от открытых\закрытых форм.
6. Душелов 4018 31.05.10 12:25 Сейчас в теме
(5) Так использовать глобальные переменные с объектом и все :)
7. SodaWater 35 31.05.10 13:45 Сейчас в теме
Не догнал как использовать глобальные переменные с объектом. Если нужно принимать данные без открытия каких-либо форм. ((
Ну раз можно, значит - можно )
8. Serj1C 483 06.09.11 15:55 Сейчас в теме
1) Нет примера внешней обработки
2) Роняет 1С (8.2.13, win7) не методе Чат.Enable(СлушатьПорт);
9. Serj1C 483 06.09.11 15:58 Сейчас в теме
3) Роняет 1С при неоднократном повторном вызове Disable с ошибкой "Ошибка сетевого доступа к серверу, или приложение не вызвало WSAStartup, или ошибка произошла в WSAStartup"
10. SodaWater 35 26.09.11 11:58 Сейчас в теме
(9) Serj1C,
Ответил в личку, нужны уточнения.
11. CyberCerber 872 03.10.11 13:05 Сейчас в теме
А какими методами/событиями отлавливать получение сообщений?
12. Abadonna 3968 03.10.11 14:00 Сейчас в теме
(0)
теоретически должно работать и в терминале, если открыть на каждого юзера терм.сервера отдельный порт

Не советую. Проще поставить UDP-сервер, я так в Miracle сделал.
Сервер слушает на один порт, а потом пересылает на другие порты, которые открываются для каждого юзверя при старте в терминале из незанятых
13. SGordon1 03.10.11 15:48 Сейчас в теме
А Порты TCP Можно так слушать?
14. SodaWater 35 06.10.11 22:42 Сейчас в теме
Теоретически можно слушать и TCP, но не этой компонентой
15. SodaWater 35 06.10.11 22:45 Сейчас в теме
Abadonna пишет:
...а потом пересылает на другие порты, которые открываются для каждого юзверя при старте в терминале из незанятых

(0)

Если в итоге на каждого юзера выделять отдельный порт, то думаю сервер лишнее звено.
16. SodaWater 35 06.10.11 22:50 Сейчас в теме
Проект устарел, нет нормальных тестов под 7-ку(Win7), но сейчас есть куча времени(уволился) и добавлю новые функции по просьбам трудящихся )
17. SodaWater 35 06.10.11 22:54 Сейчас в теме
Вопрос, на которы й не смог найти ответ - как отправлять UDP пакеты с определенного порта? Может кто решал такие задачи. Откликнитесь.
18. berserg 11 14.11.11 17:18 Сейчас в теме
Что то она у меня не хочет работать на 64-разрядном сервере. Вызываю так:

Попытка
ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаUDPTor", "UDPTor", ТипВнешнейКомпоненты.Native);
Чат = Новый ("AddIn.Chat");
Исключение
Возврат;
КонецПопытки;

и после строчки Чат = Новый ("AddIn.Chat"); вываливается в исключение изменение типа внешней компоненты ничего не меняет. Не подскажите в чем дело?
19. SodaWater 35 14.11.11 22:22 Сейчас в теме
20. DrAku1a 1745 28.03.12 12:38 Сейчас в теме
(0), (3) да... исходнички бы... можно было бы в новом стиле NativeAPI написать...
21. Wladymyr 18.06.12 18:46 Сейчас в теме
спасибо автору, полезная вещь
22. umka2008 23 01.07.14 17:14 Сейчас в теме
А как бы узнать методы типа слушать порт? У тебя на картинке есть кнопки Старт/Стоп.
Что в них?
Оставьте свое сообщение