Добрый день!
Компонента подключилась, но при выполнении подключения к серверу тестовой командой из вашей обоработки:
&НаКлиенте
Процедура Подключиться(Команда)
Если ВК.Подключиться(Сервер, Порт) Тогда
Сообщить("Выполнено подключение к серверу");
Иначе
Сообщить("Не удалось подключиться к серверу по причине: " + ВК.ПоследняяОшибка);
КонецЕсли;
КонецПроцедур
платформа отрабатывает ошибку: Использование асинхронных методов на клиенте запрещено!
Как быть?
Для асинхронной работы с внешней компонентой нужно:
Для установки свойства вызвать метод НачатьУстановкуИмяСвойства, где ИмяСвойства = реальному имени свойства.
Для получения свойства вызвать метод НачатьПолучениеИмяСвойства, где ИмяСвойства = реальному имени свойства.
Для вызова метода использовать НачатьВызовИмяМетода, где ИмяМетода = реальному имени метода.
Например:
ОписаниеОповещения = Новый ОписаниеОповещения("ПодключитьсяЗавершение", ЭтотОбъект);
ВК.НачатьВызовПодключиться(ОписаниеОповещения );
&НаКлиенте
Процедура ПодключитьсяЗавершение(Результат, Параметры, ДопПараметры) Экспорт
Если Результат Тогда
Сообщить("Выполнено подключение к серверу");
Иначе
Сообщить("Не удалось подключиться к серверу");
КонецЕсли;
КонецПроцедуры
Аналогично с другими методами.
https://its.1c.ru/db/v8321doc#bookmark:dev:TI000001509
получится ли с помощью этой компоненты (TCPclient) отправлять сообщения в Трассир ?
по сути нужна только отправка
предполагалось использовать вашу разработку https://1lancer.ru/catalog/4336
но в комментах пишут что для отправки в трассир она не подходит
&НаКлиенте
Процедура Подключиться(Команда)
Если ВК.Подключиться(Сервер, Порт) Тогда
Сообщить("Выполнено подключение к серверу");
ВК.Send("Привет, сервер!");
Иначе
Сообщить("Не удалось подключиться к серверу по причине: " + ВК.ПоследняяОшибка);
КонецЕсли;
КонецПроцедуры
Метод объекта не обнаружен (Send)
как эта исправить если не трудна помогите пожалуйста
При записи данных - да. У меня выходит ошибка "Не удалось записать данные по причине: Сделана попытка выполнить операцию на объекте, не являющемся сокетом."
При чтении нет, потому что как только данные поступают в сокет, компонента считывает их и сохраняет в буфере. А потом 1С читает их из буфера.
При разрыве соединения никакого сообщения от компоненты не будет.
Здравствуйте! А компонента может несколько соединений поддерживать?
Даже, например, если я подключу несколько экземпляров компонент. Но Внешнее Событие (в 1с) всегда придет с источником = TCPClient ?
т.е. я не пойму какое соединение вернуло событие?
Плохо конечно, что не могу по внешнему событию 1с от какого оборудованию это событие прилетело понять.
Думаю какие варианты есть. например, оборудование может вернуть какой-то префикс свой постоянный,
Но мне нужно прочитать данные "Компонента.Прочитать(байт)". Если у меня подключено два оборудования Компонента и Компонента2, например. Как мне понять, какой вызвать метод "прочитать"? Может по "байт" ? У компоненты есть "Размер буфера" Компонента.РазмерБуфера.
т.е. Если Компонента.РазмерБуфера = Данные (из внешнего события 1С) Тогда Компонента.Прочитать(байт) Иначе Компонента2.Прочитать(байт)
Так получится или не обязательно ?