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

 

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54043    9    69    

46

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

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1127    3    4    

3

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

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

2400 руб.

04.05.2018    47298    124    66    

67

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

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

4600 руб.

27.06.2023    3598    3    0    

5

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

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77517    72    257    

191

Разработка внешних компонент Программист Платформа 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    28659    138    100    

91

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    1887    bayselonarrend    10    

44

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

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4728    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Nicholas 910 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 5110 30.05.10 15:04 Сейчас в теме
А исходники можешь прислать? Хочется чуть модифицировать. Модифицированное могу прислать, получится прямо GPL. Действительно нужная штука, но с 0 не осилил бы писать, не силён в особенностях ВК 1С.
4. Душелов 4021 30.05.10 16:18 Сейчас в теме
5. SodaWater 35 31.05.10 10:56 Сейчас в теме
Это вариант для нелюбителей дот.нет )
И мне нужно было приимать\отправлять независимо от открытых\закрытых форм.
6. Душелов 4021 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 876 03.10.11 13:05 Сейчас в теме
А какими методами/событиями отлавливать получение сообщений?
12. Abadonna 3969 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 12 14.11.11 17:18 Сейчас в теме
Что то она у меня не хочет работать на 64-разрядном сервере. Вызываю так:

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

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