Имя: Пароль:
1C
 
Обмен 1С-TPC IP - внешнее приложение
0 Def
 
22.11.09
12:03
Казалось бы простейшая задача - организовать обмен 1С 8.1 - стороннее приложение,  посредством посылки тестовых строка через TCP IP, вылилась в неожиданную головную боль. Внешнее приложение может работать как TCP IP сервер, так и  TCP IP клиент. Меня интересует как сервер - т.е. задача простейшая - соединится с TCP IP сервером, кинуть на IP и порт запрос и получить ответ. Стандартных механизмов в платформе нет (почему ?- вопрос к разработчикам). Использовать доступные внешние компоненты, написанные еще на 7.7 невозможно, так как они заточены под обмен 1С - 1С, а в данном случае мы полностью должны подстроится под внешнее приложение. Остается два варианта, которые я нашел - WinSock и написание внешней компоненты. Второе делать очень не хочется. А с первым ничего не получается.  Вот код (дял простоты и сервер и клиент на одном компьютере):

   // это клиент
   ВинСок = Новый ComОбъект("MSWinsock.Winsock");

   // это сервер  
   ВинСокSrv = Новый ComОбъект("MSWinsock.Winsock");
   ВинСокSrv.LocalPort = 55900;
   ВинСокSrv.Bind( 55900, "192.168.0.107" );
   ВинСокSrv.listen();

   // пытаемся соединится с сервером
   ВинСок.Connect("192.168.0.107"", 55900);

   
   Пока ВинСок.State = 6 Цикл
       // ждем соединения        
   КонецЦикла;    

   // статус = 7 - соединились


Соединение упорно "зависает" на статусе 6 - "соединяюсь" и не выходит на статус 7 - "соединено"... Очень подозреваю, что со стороны сервера нужно
дать команду Accept(). Но обработать предопределенные функции объекта "ActiveX" в 1С невозможно. Может кто-нибудь посоветует каким путем дальше идти ?