новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Яндекс-директ

TCP/UDP клиент/сервер. Native API внешняя компонента.

  • Добавить свою разработку
 
Дмитрий
Связаться с автором
21.12.2020 09:49:03
0
Внешняя компонента для 1С, разработанная по технологии Native API. Позволяет отправлять сообщения по протоколам TCP и UDP, в том числе вызывать клиента с сервера.
Описание

ДАННАЯ ВНЕШНЯЯ КОМПОНЕНТА МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНА ТОЛЬКО ДЛЯ ПЕРЕДАЧИ СООБЩЕНИЙ МЕЖДУ СЕРВЕРОМ И КЛИЕНТОМ 1С ЧЕРЕЗ TCP ПРОТОКОЛ.

ЕСЛИ НУЖНО ВЗАИМОДЕЙСТВИЕ ПО TCP ПРОТОКОЛУ С ВНЕШНИМИ УСТРОЙСТВАМИ, ТО ЛУЧШЕ ИСПОЛЬЗОВАТЬ ДРУГУЮ ВНЕШНЮЮ КОМПОНЕНТУ TCP-КЛИЕНТ, КОТОРУЮ МОЖНО НАЙТИ В МОЕМ ПРОФИЛЕ.

 

Внешняя компонента разработана на С++ по технологии Native API. Позволяет отправлять сообщения по протоколам TCP и UDP, в том числе с сервера вызывать клиента. На клиенте будет вызвано внешнее событие. Работает в тонком клиенте, в толстом клиенте, на сервере. Подходит для 32-х разрядных и для 64-х разрядных приложений. Только для Windows.

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

  1. IP - тип Строка, IP адрес, на который будет отправлено сообщение.
  2. Порт/Port - тип Число, порт на котором будет открыт сокет или на который будет отправлено сообщение (в зависимости от вызванного метода).
  3. ЭтоTCP/IsTCP - тип Булево, если Истина, то используется TCP, иначе UDP.

Методы внешней компоненты:

  1. ОткрытьПорт/OpenPort - без параметров, открывает TCP/UDP порт, указанный в свойстве Порт/Port на локальном IP адресе.
  2. ЗакрытьПорт/ClosePortбез параметров, закрывает TCP/UDP порт, который предварительно был открыт методом ОткрытьПорт/OpenPort.
  3. Отправить/Send - 1 параметр Сообщение, тип Строка. Отправляет сообщение, указанное в параметре Сообщение на IP адрес и порт, указанные в свойствах IP и Порт/Port. В зависимости от свойства ЭтоTCP/IsTCP используется или TCP или UDP. На клиенте будет вызвано внешнее событие с параметрами: Источник: "TCP" или "UDP", в зависимости от свойства ЭтоTCP/IsTCP. Событие: "Send". Данные: параметр Сообщение .

Пример использования:

Предположим, что архив внешней компоненты загружен в макет с именем "TCP_UDP" обработки ВК.

Нужно запустить фоновое задание на клиенте и через поле индикатора отображать прогресс выполнения фонового задания.

Предварительно внешняя компонента была установлена на клиента методом УстановитьВнешнююКомпоненту:

УстановитьВнешнююКомпоненту("Обработка.ВК.Макет.TCP_UDP");

 

Пример запуска фонового задания из формы обработки:

//ОбъектКомпоненты должен быть объявлен как переменная формы
&НаКлиенте
Перем ОбъектКомпоненты;

Процедура Тест(Команда)
	//открытие TCP порта на клиенте:
	ПодключитьВнешнююКомпоненту("Обработка.ВК.Макет.TCP_UDP", "ВК");
	ОбъектКомпоненты = Новый ("AddIn.ВК.TCP_UDP");
	ОбъектКомпоненты.ЭтоTCP = Истина;
	ОбъектКомпоненты.Порт = 1111;
	ОбъектКомпоненты.ОткрытьПорт();
	ВыполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ВыполнитьНаСервере()
	//запуск фонового задания
	ФоновыеЗадания.Выпoлнить("Сервер.Тест"); 
КонецПроцедуры

 

//общий модуль Сервер
Функция Тест() Экспорт
	//создание объекта внешней компоненты
	ПодключитьВнешнююКомпоненту("Обработка.ВК.Макет.TCP_UDP", "ВК");
	ОбъектКомпонентыКлиент = Новый ("AddIn.ВК.TCP_UDP");
	ОбъектКомпонентыКлиент.ЭтоTCP = Истина;
	ОбъектКомпонентыКлиент.IP = "127.0.0.1";
	ОбъектКомпонентыКлиент.Порт = 1111;

	//получаем какую-то большую таблицу значений
	БольшаяТЗ = ПолучитьБольшуюТаблицуЗначений();

	Для Каждого Стр Из БольшаяТЗ  Цикл
		...
		//с какой-то периодичностью отправляем прогресс обработки таблицы значений на клиента
		Если КакоеТоУсловие Тогда
			Прогресс = ПолучитьПрогресс();  //Прогресс - % обработки таблицы значений
			//отправляем прогресс выполнения на клиента
			ОбъектКомпонентыКлиент.Отправить("" + Прогресс); //тип должен быть Строка
		КонецЕсли;
		...
	КонецЦикла;
КонецФункции

 

//обработка внешнего события на клиенте, на форме обработки
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
	Если Источник = "TCP" И Событие = "Send" Тогда
		//преобразуем в число
		Прогресс = Число(Формат(Данные, "ЧГ=0"));
		//обновляем поле индикатора
		ПолеИндикатора = Прогресс; //ПолеИндикатора это реквизит формы, связанный с элементом формы Поле индикатора
		Если ПолеИндикатора = 100 Тогда
			//закрываем порт, после выполнения обработки. 
			//ВАЖНО: ОбъектКомпоненты - это тот же самый объект, который был создан на клиенте
			//до запуска фонового задания. 
			ОбъектКомпоненты.ЗакрытьПорт();
			Сообщить("Обработка завершена");
		КонецЕсли; 
	КонецЕсли; 
КонецПроцедуры

 

Может быть Вас заинтересуют другие мои разработки:

1. Перенос номенклатуры вместе с характеристиками из УТ 11.4 в БП 3.0 http://1clancer.ru/catalog/3830

2. Обработка обмена Управление торговлей 11.4 - Бухгалтерия предприятия 3.0 http://1clancer.ru/catalog/4177

3. Автоматический взаимозачет в УТ 11.4, КА 2.4, ERP 2.4 http://1clancer.ru/catalog/4220

4. Шаблоны внешних отчетов и обработок для обычных и управляемых форм http://1clancer.ru/catalog/4069

5. Отчет Номенклатура без цен http://1clancer.ru/catalog/4132

6. Накладная на отпуск материалов на сторону (М-15) для требовании-накладной в БП 3.0 http://1clancer.ru/catalog/3602

7. Универсальный корректировочный документ без сворачивания строк с разными ценами для ERP 2.4, КА 2.4, УТ 11.4 http://1clancer.ru/catalog/3873

Ключевые слова:   TCP UDP Внешняя компонента С++ Native API Вызов кл
Файлы для скачивания
  • 1500р
    • TCP_UDP.zip (238Kb)
    • Архив с внешними компонентами для 32-х и 64-х разрядной 1С
    • Данный архив нужно загрузить в макет с типом ДвоичныеДанные или ВнешняяКомпонента.
    • дата загрузки: 21.12.2020 10:33:46
  • 5000р
    • дата загрузки: 21.12.2020 10:35:13
Скачать все файлы одним архивом (14.85Mb)
0
    Еще от автора
    ≡ к списку разработок
    Яндекс-директ