Вариант 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 Платформа 1C v8.2 Платные (руб)

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

4600 руб.

27.06.2023    3783    3    0    

5

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

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

3600 руб.

02.09.2010    77754    73    257    

191

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

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

1500 руб.

17.09.2018    37110    115    128    

116

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

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

2400 руб.

25.06.2024    1295    3    4    

3

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

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

14.01.2025    2589    bayselonarrend    14    

48

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

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

04.12.2024    5337    kovalevdmv    26    

77

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

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

26.01.2024    7738    starik-2005    40    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Nicholas 913 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 5123 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 877 03.10.11 13:05 Сейчас в теме
А какими методами/событиями отлавливать получение сообщений?
12. Abadonna 3970 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 1754 28.03.12 12:38 Сейчас в теме
(0), (3) да... исходнички бы... можно было бы в новом стиле NativeAPI написать...
21. Wladymyr 18.06.12 18:46 Сейчас в теме
спасибо автору, полезная вещь
22. umka2008 23 01.07.14 17:14 Сейчас в теме
А как бы узнать методы типа слушать порт? У тебя на картинке есть кнопки Старт/Стоп.
Что в них?
Оставьте свое сообщение