Прост TCP сървър с обработка на събития от страна на 1С
Малко текстове. В един момент получих задача да свържа 1С и определена машина за етикетиране. Тъй като не е известно. Изглежда, че някъде има хора, които знаят нещо, но къде са тези хора - никой не знае. И сега, измъчвайки доставчика, успях да изтръгна ръководството на английски, което описва формата на взаимодействие през TCP порта. И в тази връзка трябваше да напиша такова щастие.
Е, от думи към дела. За комуникация през TCP реших да използвам скъпата технология WinSock (http://ru.wikipedia.org/wiki/Winsock). Въз основа на него можете да напишете както сървърната част, така и клиента. Всички действия са разделени на няколко етапа:
обща част
1) Отидете в скъпи Google и потърсете winsock.ocx
2) Ние го регистрираме в системата (regsvr32)
3) Регистрираме клоновете за регистрация в регистъра (в противен случай ActiveX не е лицензиран). Без това няма да разполагаме с необходимите методи.
Мисля, че никой няма да има проблеми с тези стъпки. Ако има някакви затруднения, има много статии в Google по тези въпроси.
4) Създаваме обработка в 1С
- Добавете ActiveX към формуляра
Предпочитам да го правя програмно:
Елементи на формуляр.AddActiveX ("MSWinsock.Winsock", "WinSock", False); - Формуляр - Вмъкване на ActiveX - Microsoft WinSock Control, версия 6.0
само с тази опция е необходимо да се премахне видимостта на елемента, тъй като няма графичен дисплей.
5) Дефинирайте необходимите обектни методи
- Грешка–Ако е възникнала грешка.
WinSocketError (Елемент, Номер, Описание, Scode, Source, HelpFile, HelpContext, CancelDisplay)
Където:
i. Номер - код за грешка,
ii. Описание - Описание на грешката,
iii. Scode - Още веднъж кодът за грешка, но в различен тип (LONG)
iv. Източник - източник на грешка,
vi. HelpContext - Помощен контекст
vii. CancelDisplay - флаг за отмяна на показването на стандартния прозорец за грешка. По подразбиране е True. Прозорецът не се показва.
- DataArrival - пристигане на данни
WinSocketDataArrival (Element, bytesTotal)
Където:
i. bytesTotal - количество получена информация в байтове
- Connect - успешна връзка със сървъра (възниква само на клиента!)
WinSocketConnect (артикул) - ConnectionRequest - заявка за връзка с клиент (възниква от страна на сървъра)
WinSocketConnectionRequest (Item, requestID)
Където:
i. requestID - идентификатор на клиента
- Затваряне - затваряне на сесията
WinsockClose (Елемент) - SendProgress - Възниква, когато прехвърлянето на данни напредва
WinsockSendProgress (Елемент, bytesSent, bytesRemaining)
Където:
i. bytesSent - изпратени байтове
ii. bytesRemaining - оставени байтове
- SendComplete - завършване на изпращането на данни
Сървърна част
1) Стартирайте самия сървър:
WinSock = Елементи на формуляра.WinSock; // Нашият ActiveX
WinSock.LocalPort = Порт; // Порт, на който ще работи
WinSock.Bind (Порт, "127.0.0.1"); // IP, на който ще слушаме
WinSock.listen (); // Всъщност стартиране на сървъра за слушане
2) В процедурата ConnectionRequest посочваме:
Ако WinSocket.State <> 0 Тогава // Ако имаме активен сокет, преди да приемем нов, текущият трябва да бъде затворен
WinSocket.Close (); // затваряме гнездото
EndIf;
WinSocket.Accept (requestID); // Приемане на нова заявка
3) В процедурата DataArrival:
MessageText = ";
WinSocket.GetData (MessageText); // Получаване на съобщение от сървъра
WinSocket.SendData ("Otvet сървър"); // Определен отговор от сървъра за получаване на информация
Това е всичко. Най-простият сървър е готов. Можете да го телнете и да го тествате. Веднага ще направя резервация, че настройките на кодовата страница (показване на кирилица) зависят от използвания клиент. 1C изпраща всичко на Cp1251.
Клиентска част
1) Инициализираме връзката:
WinSocket.RemoteHost = SokrLP (IP); // Адрес за свързване
WinSocket.RemotePort = SokrLP (порт); // Порт, на който да се свържете
WinSocket.Connect (); // Команда за свързване
Внимание! Състоянието в същата процедура няма да промени WinSocket! Следователно:
- Развъждане на пилета във ферма - бизнес план, домашна ферма
- Oriflame Success Plan Бизнес, работа
- Прогнози за развитие на автомобилния бизнес през 2017 г., Бизнес новини
- Собствен бизнес производство на алуминиево фолио - Идеи за малък бизнес
- Психолозите разказаха как да преодолеят навика да отлагат нещата за по-късно - РИА Новости