Netcat обмен с 1с

Обновлено: 05.07.2024

Клиента пока нет. В WCF пока только клиент под Web сервис. ServiceHost нет. Есть стороннее решение Тормозит печать чека на фискальный регистратор через RDP.

Также были проблемы при считывании двумерного штрихкода. Медленная печать с терминального сервера. Для решения этих проблем на машине клиента устанавливалась локальная 1С, которая работала как клиент и сервер. Данные со сканеров отправлялись на терминальный сервер и там обрабатывались. Для печати на фискальный регистратор отправлялись данные с сервера по TCP/IP, и с локальной 1С печатался чек. При печати этикеток с сервера оправлялись данные, на основании которых на локальной 1С формировался документ и отправлялся на печать.

Кроме того, под многое оборудование для Linux нет драйверов. Можно, используя виртуализацию, держать Linux и Windows на одной машине, на Windows считывать данные и обмениваться с Linux по TCP/IP.

Сейчас много у кого есть ТСД под WinCe, WinMo (недавно предлагали работу по настройке обмена на них). Кроме того, можно использовать ТСД на других осях, используя UWP и Xamarin.

Чистые 1С-ники могут пропустить вражеский код и перейти к родному в конце статьи, как использовать данную компоненту.

На стороне 1С принимается такой класс

На сервере создается класс для прослушивания

Все достаточно просто. При соединении считываем данные, создаем объект для отправки в 1С. Запускаем нового слушателя.

Отправка сделана на голых сокетах, можно посмотреть в исходниках.

Упрощенно это выглядит так


Вот как это обрабатывается в 1С

Ответ передаем через полученный объект


По умолчанию очередь событий в 1С равна 1. Поэтому 1 задача может выполняться, а еще одна дожидаться в очереди.

Так как можно работать с несколькими устройствами, то нужно установить нужный размер очереди через


Который возвращает текущий размер очереди.

Конечно, можно запустить несколько приложений 1С и запустить TCP/IP сервер под разными портами, но на практике операторы путаются. Чем проще для них, тем лучше.

Для установки нужных делегатов используются методы


В зависимости от типа делегата устанавливается нужный делегат

Но раз пишем под 1С, то проще объявить делегаты нужного типа, и установить из 1С.

Для теста нужно использовать 3 клиентов 1С и вызвать ТестОбменПоTCPIP.epf для проверки очереди событий в 1С.

Исходники можно скачать

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

1c-ка падает намертво при выполнении Врап.СоздатьОбертку(CoreClrDir,ДиректорияNetObjectToNative,"");
что я делаю не так?

Да и пока сделана только под Windows

(3) Говорим о кросплатформенности, но работает только по windows, в чём прикол?
В NativeAPI как раз интересна работа на Linux, на MacOS и ещё Mobile 1C: Android, iOS, Windows RT (5) Как оказалось, просто "перекомпилить" не работает. Код написан с использованием чисто виндовых библиотек, таких как SDKDDKVer.h, или tchar.h.
Падает платформа 1С:Предприятие 8.3 (8.3.10.2650) файловый вариант, вин7 64-бита.
Так же не работает установка, если делать из макета:
Нашел почему не работало через установку компоненты:

Подготовка внешних компонент для загрузки в конфигурацию

Внешние компоненты могут быть упакованы в ZIP-архив. Для работы с Веб-клиентом и тонким клиентом – это обязательное условие. В него должны войти собственно компоненты для ОС Windows (x86, x86_64), GNU/Linux (x86, x86_64), созданные расширения для Internet Explorer (x86, x86_64) и Firefox (Windows x86, GNU/Linux x86 и x86_64). В составе архива включается файл MANIFEST.XML с описанием содержимого:

<?xml version="1.0" encoding="UTF-8" ?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle">
<component os="Windows" path="AddIn_FF6Windows_x86.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="i386" client="Firefox" clientVersion="6.*" />
<component os="Linux" path="AddIn_FF6Linux_x86.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="i386" client="Firefox" clientVersion="6.*" />
<component os="Linux" path="AddIn_FF6Linux_x86_64.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="x86_64" client="Firefox" clientVersion="6.*" />
<component os="Windows" path="AddIn_FF19Windows_x86.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="i386" client="Firefox" clientVersion="19.*" />
<component os="Linux" path="AddIn_FF19Linux_x86.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="i386" client="Firefox" clientVersion="19.*" />
<component os="Linux" path="AddIn_FF19Linux_x86_64.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="x86_64" client="Firefox" clientVersion="19.*" />
<component os="Windows" path="AddIn_FF22Windows_x86.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="i386" client="Firefox" clientVersion="22.*" />
<component os="Linux" path="AddIn_FF22Linux_x86.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="i386" client="Firefox" clientVersion="22.*" />
<component os="Linux" path="AddIn_FF22Linux_x86_64.xpi" type="plugin" object="@vendor.ru/ClassService;1" arch="x86_64" client="Firefox" clientVersion="22.*" />
<component os="Windows" path="Addin_IEWindows_x86.cab" type="plugin" object="MyComponenIE.AddInServiceEx" arch="i386" client="MSIE" />
<component os="Windows" path="AddIn_IEWindows_x86_64.cab" type="plugin" object=" MyComponenIE.AddInServiceEx" arch="x86_64" client="MSIE" />
<component os="Windows" path="AddIn_NPAPIWindows_x86.msi" type="plugin" object=" application/component-example-1" arch="i386" client="Chrome" />
<component os="Linux" path="AddIn_ChrLinux_x86.crx" type="plugin" object=" application/component-example-1" arch="i386" client="Chrome" />
<component os="Linux" path="AddIn_ChrLinux_x86_64.crx" type="plugin" object=" application/component-example-1" arch="x86_64" client="Chrome" />
<component os="Windows" path="AddIn_NPAPIWindows_x86.msi" type="plugin" object=" application/component-example-1" arch="i386" client="Safari" />
<component os="MacOS" path="AddIn_SafMacOS_x86.pkg" type="plugin" object=" application/component-example-1" arch="i386" client="Safari" />
<component os="Windows" path="AddInNative.dll" type="native" arch="i386" />
<component os="Windows" path="AddInNative64.dll" type="native" arch="x86_64" />
<component os="Linux" path="AddInNative.so" type="native" arch="i386" />
<component os="Linux" path="AddInNative64.so" type="native" arch="x86_64" />
</bundle>,
Где:

os – операционная система:
Windows;
Linux;
path – название файла в архиве;
type – тип компоненты:
plugin – расширение для браузера;
native – Native-компонента;
com – COM-компонента.
object – название объекта, который будет создаваться браузером;
arch – для какой архитектуры процессора должна использоваться компонента:
i386 – 32-х разрядный процессор;
x86_64 – 64-х разрядный процессор;
Client – используется для указания используемого веб-клиентом браузера:
MSIE – Microsoft Internet Explorer;
Firefox – Mozilla Firefox;
clientVersion – версия браузера.
Соответствие версий clientVersion, указанных в манифесте и версий браузера Firefox:

При изменении внешних компонент (новый релиз, исправление ошибок и т. д.) новую версию нужно добавлять к имени файла. Например: AddInNative_1_1.so. Это правило не распространяется на расширения для браузеров. Для них должно быть изменено название object.

Обратите внимание, что записи для Google Chrome и Safari под Windows ссылаются на один и тот же установочный пакет.

Читайте также: