Клиент событий в «бесконечном» HTTP-соединении для 1С: Предприятие 8

21.10.20

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

Native Компонента в отдельном потоке обрабатывает пакеты событий, в "бесконечном" http соединении и передаёт данные в очередь внешних событий.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Клиент событий в «бесконечном» HTTP-соединении:
.zip 357,18Kb
5
5 Скачать (1 SM) Купить за 1 850 руб.

Пригодится для прослушивания событий серверов видеонаблюдения, СКУД и др. которые предоставляют доступ к событиям по http протоколу, в "бесконечном" соединении.

Для подключения к серверу, компоненте передаём строку запроса типа

МояКомпонента.Connect("http://192.168.60.11:8080/event?login=misha&password=383D802A4C84AF5AC3719276218CC918&filter=c9d6d086-c965-4cf8-aef6-85b3894e3a4a&responsetype=json"), компонента передаёт её на сервер событий и ожидает собственно события от него, получив его в 1С обработке генерирует ВнешнееСобытие куда передаёт данные принятые от сервера.

1. Подключаем внешнюю компоненту к обработке:

АдресВоВременномХранилище = неопределено;
    МояКомпонента = Неопределено;
    ПодключениеВыполнено = Ложь;
    МакетОбработки = ПолучитьМакет("ВнешняяКомпонента");
    АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(МакетОбработки, Новый УникальныйИдентификатор);
    ПодключениеВыполнено = ПодключитьВнешнююКомпоненту(АдресВоВременномХранилище,"VIDEO" ,ТипВнешнейКомпоненты.Native);
    
    Если   ПодключениеВыполнено Тогда
        МояКомпонента = Новый ("AddIn.VIDEO.AddInNativeEvents");
    Иначе
    КонецЕсли;

2. Передаём строку адреса сервера с параметрами (HTTP API сервера к которому подключаемся):

МояКомпонента.Connect("http://192.168.60.11:8080/event?login=misha&password=383D802A4C84AF5AC3719276218BB918&filter=c9d6d086-c965-4cf8-aef6-85b3894e3a4a&responsetype=json");


3. Описываем обработку внешнего события:

Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если Источник = "AddInNativeEvents" Тогда
        Попытка
            
            ЧтениеJSON = Новый ЧтениеJSON;
            ЧтениеJSON.УстановитьСтроку(Данные);
            Событие = ПрочитатьJSON(ЧтениеJSON);
            ЧтениеJSON.Закрыть();
            
            Если Событие.EventId <> "e9e7a69c-7ee2-3fee-a530-9f8a88124fcc" Тогда
            
                    Сообщить(Событие.Timestamp+" "+Событие.ChannelId+" "+Событие.ChannelName+" "+Событие.Numberplate+" "+Событие.direction[0]);       
            КонецЕсли;
        Исключение
             Сообщить("Ошибка чтения JSON");
        КонецПопытки;         
   
    КонецЕсли;
КонецПроцедуры

4. При закрытии завершаем работу компоненты:

МояКомпонента.Disable();

Протестировано на:

1С Предприятие 8.3.10

HTTP клиент Macroscop события http

См. также

Разработка внешних компонент 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    54289    9    69    

46

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

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

2400 руб.

25.06.2024    1269    3    4    

3

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

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

3600 руб.

02.09.2010    77716    73    257    

191

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

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

4600 руб.

27.06.2023    3742    3    0    

5

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

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

2400 руб.

04.05.2018    47546    124    66    

67

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

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

1500 руб.

17.09.2018    36959    114    127    

115

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

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

14.01.2025    2522    bayselonarrend    14    

48

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

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

04.12.2024    5239    kovalevdmv    26    

76
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sergvagner2018 02.12.19 14:03 Сейчас в теме
(0) а где такое на практике у себя применяли?
Очень интересно было бы про опыт услышать.
2. starovton 11 02.12.19 14:38 Сейчас в теме
(1)Есть сервер видеонаблюдения Macroscop, у него есть HTTP API, он клиенту отсылает chanked пакеты в которых описывает события которые произошли ( распознание номера, распознание лица и т.д.) по этим событиям обработка 1С формирует картинку для охранников.
sergvagner2018; +1 Ответить
3. sergvagner2018 04.12.19 07:53 Сейчас в теме
4. Matematik 09.12.19 06:24 Сейчас в теме
Судя по параметрам вы конкретно событие распознавание автомобильного номера запрашиваете. Изображение с данной камеры в виде стоп-кадра за этот момент времени получали?
5. starovton 11 09.12.19 09:12 Сейчас в теме
Нет не получал, но по событию, можно запросить у сервера архив распознанных номеров
6. TariK 13.11.20 16:50 Сейчас в теме
Привет коллегам!
Есть задача, через форму документа при нажатии кнопки, распознать в Macroscop и получить номер авто и записать его в реквизит документа.
Как я понял, эта обработка работает в режиме онлайн и с потоком самостоятельно "прилетающих" данных?
7. starovton 11 17.11.20 09:08 Сейчас в теме
(6)Да обработка пишет события в базу "прилетающие" от сервера видеонаблюдения. В вашем случае можно отправлять HTTPЗапрос со строкой из API Macroscop для получения нужного события.
8. TariK 17.11.20 09:50 Сейчас в теме
(7)примерно напишите какой код, еще ни разу с этим не сталкивался.
9. starovton 11 17.11.20 10:32 Сейчас в теме
//autovprs_export - параметр из API Macroscop, после знака = установить свои значения

СтрокаЗапроса = "192.168.1.1:6060/autovprs_export?login=&password=&channelid=&startTime=&finishTime="

HTTPЗапрос = Новый HTTPЗапрос();

HTTPСоединение = Новый HTTPСоединение(СтрокаЗапроса);
	
Попытка
	Ответ = HTTPСоединение.Получить(HTTPЗапрос);
Исключение
	Возврат Ложь;
КонецПопытки;

стрОтвет = Ответ.ПолучитьТелоКакСтроку("UTF-8");


Если Ответ.КодСостояния = 200 Тогда
	Если Не ПустаяСтрока(стрОтвет ) Тогда
		Попытка	
			ЧтениеJSON = Новый ЧтениеJSON;
			ЧтениеJSON.УстановитьСтроку(стрОтвет);
			Событие = ПрочитатьJSON(ЧтениеJSON);
			ЧтениеJSON.Закрыть();
		Исключение
		КонецПопытки;

                Если Событие.EventId <> "e9e7a69c-7ee2-3fee-a530-9f8a88124fcc" 
                КонецЕсли;
КонецЕсли;
КонецЕсли;

Показать
10. viki_glebova 25.12.20 07:43 Сейчас в теме
А ваша компонента Server-sent events обработает?
11. starovton 11 02.01.21 08:26 Сейчас в теме
(10)
Server-sent events

Тут нужно разобраться, если это соединение по HTTP, то обработает...
12. Pawlick 10 14.05.21 22:53 Сейчас в теме
Подскажите, вы пишите про некий сервер видео наблюдения.
А если произвольный сервер?

Я к тому, что это же http...
По протоколу он и так response вернет.

А если я хочу поднять свой собственный серер?
Что я должен сделать что бы он работал с Вашей компонентой?

Т.е на сервере должна быть реализована какая то логика типа:
АдресПодпискиНаСобытие = входящийЗапрос.АдресСКоторогоПришелЗапрос;
Если Случилось Событие  Тогда
Http =новый httpЗапрос().
Http.Get(АдресПодпискиНаСобытие, Имя События,ПараметрыСоьытия)

?
,
13. starovton 11 25.05.21 11:59 Сейчас в теме
По серверной части, точно не подскажу, сервер получает запрос на соединение и устанавливает протокол обмена данными, полагаю что так.
Оставьте свое сообщение