Интеграция бесплатной утилиты управления весами UniScalesDriver как драйвер, поставляемый в составе конфигурации

15.03.21

Интеграция - Весы

Данная разработка предназначена для внедренцев и специалистов, которые настраивают весовое оборудование "Промприбор". Несмотря на то, что решение отработано, не предлагается как конечный коммерческий продукт, а демонстрирует технологию встраивания в конфигурацию консольной утилиты получения веса как драйвер оборудования. Однако не только весового оборудования. Данная технология демонстрирует возможность встраивания любой консольной утилиты с чтением результата из файла как драйвера оборудования. Например, вы разрабатываете собственную конфигурацию на управляемых формах с нуля, используя БСП и хотите, чтобы данный "драйвер" весов присутствовал в вашей конфигурации как стандартный встроенный драйвер оборудования. Благодаря этой технологии нет необходимости приобретать платную версию драйвера весов "Промприбор" UniproScalesComServer СОМ-объект (ScalesComSrv).

Скачать исходный код

Наименование Файл Версия Размер
Файл конфигурации содержащий разработку этого решения
.cf 242,26Kb
4
.cf 242,26Kb 4 Скачать
Бесплатная утилита UniScalesDriver
.zip 53,14Kb
130
.zip 53,14Kb 130 Скачать бесплатно
Инструкция к интегрируемой утилите с сайта производителя.
.rtf 65,26Kb
2
.rtf 65,26Kb 2 Скачать

Основная концепция решения заключается в том, чтобы "научить" стандартные подсистемы работать с утилитой командной строки как с драйвером оборудования. Конечно можно применить данный подход не только подключая электронные весы, но и другую функциональность, которая обслуживается подобными утилитами, требующими запуска из командной строки и сохраняющие результат своего взаимодействия с оборудованием в файл.

Программная реализация.

Выполним пошаговую реализацию решения для конфигурации "BAS ERP 2.1.19.3"

В связи с тем, что использовать расширения нет возможности, необходимо включить возможность редактирования в конфигурации  а также редактирования всех объектов, которые будут задействованы.

1. Перечисление

Добавим в перечисление "ОбработчикиДрайверовПодключаемогоОборудования"  новое значение, которое будет определять новый драйвер: "ОбработчикUniScalesЭлектронныеВесы"

2. Драйвер

В справочник "Драйверы оборудования"  добавим новый предопределенный элемент с именем  "ДрайверUniScalesЭлектронныеВесы"  и наименованием "UniScalesDriver"

Далее, мы должны обеспечить правильное заполнение этого предопределенного элемента при создании базы данных. Поэтому в модуле "МенеджерОборудованияВызовСервераПереопределяемый" в процедуре "ОбновитьПоставляемыеДрайвера"   добавим запуск

 

Справочники.ДрайверыОборудования.ЗаполнитьПредопределенныйЭлемент(
   Перечисления.ОбработчикиДрайверовПодключаемогоОборудования.ОбработчикUniScalesЭлектронныеВесы, 
   "WScript.UniScalesDriver", "ДрайверUniScalesЭлектронныеВесы", Ложь);

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

Хочу заметить, что во 2-м параметре "Идентификатор объекта"  вы видите "новый класс оборудования" - WSCRIPT. Это такой маркер, по которому алгоритмы подключения драйвера будут "обмануты" для обеспечения функциональности этого решения. Это как бы "Ключ".   Но об этом позже.

Заполненный элемент "драйвера оборудования" будет выглядеть следующим образом:

   

3. Форма настройки

Необходимо обеспечить настройку драйвера, с помощью которых будет сформирована командная строка для запуска утилиты  UniScalesDriver

Можем взять стандартную форму из другого оборудования, например "ФормаНастройки1ССканерыШтрихкода" и адаптировать.  Таким образом добавим общую форму "ФормаНастройкиUniScalesЭлектронныеВесы".

Эта форма будет вызываться кнопкой "Настройка" из формы элемента подключаемого оборудования.

Оставим на форме такие параметры: Номер порта, Скорость порта, Префикс, Суффикс. Например нам нужно будет сформировать такую строку запуска:

UniScalesDriver.exe 3 COM2 4800 0 1

Соответственно  префикс это "3 COM", номер порта это "2", скорость порта это "4800", суффикс это "0 1"

 

4. Утилита-Драйвер в макете.

По аналогии стандартных драйверов оборудования в комплекте конфигурации, размещаем нашу утилиту в ZIP-архиве как двоичные данные в общем макете "ДрайверUniScalesЭлектронныеВесы"

Ссылка на этот макет будет прописана при заполнении предопределенного элемента драйвера, что описано выше в п.2

5. Модуль обслуживания драйвера

И самое главное. Весь функционал работы драйвера обслуживается общим модулем "ПодключаемоеОборудованиеWScriptКлиент"   который также можно создать на основе существующего модуля другого стандартного оборудования, каких-то других весов.

Ссылка на  этот модуль будет прописана в модуле "МенеджерОборудованияКлиентПереопределяемый" в функции "ПолучитьОбработчикДрайвера".

Если ОбработчикДрайвера = ПредопределенноеЗначение("Перечисление.ОбработчикиДрайверовПодключаемогоОборудования.ОбработчикUniScalesЭлектронныеВесы") Тогда
   Возврат ПодключаемоеОборудованиеWScriptКлиент;
КонецЕсли;

 

Теперь об основной логике в этом модуле ПодключаемоеОборудованиеWScriptКлиент

1) Поддержка асинхронного режима выключена

Функция ПоддержкаАсинхронногоРежима() Экспорт
	Возврат Ложь;
КонецФункции

2) Функционал "Подключить устройство"

В данном решении переменная "ОбъектДрайвера"  будет содержать не ссылку на COM-объект драйвера устройства разработанного по стандартам драйверов 1С, а ссылку на объект  Wscript.Shell

Поэтому вызов стандартных методов нужно отключить и переписать. Например отключить такие как:

ОбъектДрайвера.УстановитьПараметр()
ОбъектДрайвера.ПолучитьРевизиюИнтерфейса()

Этот вызов получения описания подменить на текстовые константы
ОбъектДрайвера.ПолучитьОписание(ОписаниеДрайвера)

Ну и основное - вызов подключения драйвера

Ответ = ОбъектДрайвера.Подключить(

нужно заменить на:
- вытащить драйвер из макета и передать с сервера на клиент
- сохранить этот драйвер во временный каталог с исходным именем и распаковать из архива
 

ИмяФайлаДрайвера = "";
АдресДрайвераВоВременномХранилище = МенеджерОборудованияВызовСервера.ПолучитьДрайверВоВременноеХранилище(Параметры.Идентификатор,ИмяФайлаДрайвера);
ОбщиймакетДрайвера = ПолучитьИЗВременногоХранилища(АдресДрайвераВоВременномХранилище);
УдалитьИзВременногоХранилища(АдресДрайвераВоВременномХранилище);
КаталогВременныхФайловДляАрхива = КаталогВременныхФайлов();
ВременныйКаталог = КаталогВременныхФайловДляАрхива + ИмяФайлаДрайвера;
ОбщиймакетДрайвера.Записать(ВременныйКаталог);
		
Архив = Новый ЧтениеZipФайла(ВременныйКаталог);
Архив.ИзвлечьВсе(КаталогВременныхФайловДляАрхива,РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
		
Ответ = Истина;

В результате функционала "Подключить устройство"  имеем нашу утилиту командной строки сохраненную на диск. Это и будем считать подключением устройства.

3) Функционал "Отключить устройство"  - просто ничего не делаем.

4) Основной функционал - "Получить вес"

Эта процедура отрабатывает когда на форме документа нажимается соответствующая кнопка

Вместо вызова   ОбъектДрайвера.ПолучитьВес

Делаем следующее:  запускаем утилиту объектом  Wscript.Shell  с подавлением окна консоли и в синхронном режиме. Потом читаем результирующий файл который формирует утилита в том же временном каталоге

ОбъектДрайвера.Run(ВременныйКаталог + " " + СокрП(ДанныеДрайвера.Параметры.Префикс) + СокрЛП(ДанныеДрайвера.Параметры.Порт) + " " + 
   СокрЛП(СтрЗаменить(ДанныеДрайвера.Параметры.Скорость," ","")) + " " + СокрЛП(ДанныеДрайвера.Параметры.Суффикс), 0, 1);
		
// теперь прочитаем результат из файла
ФайлРезультат = новый ТекстовыйДокумент;
ФайлРезультат.ТолькоПросмотр = Истина;
ФайлРезультат.Прочитать(ИмяФайлаРезультата);
СтрокаРезультата = ФайлРезультат.ПолучитьСтроку(2);
Если ВРЕГ(СокрЛП(СтрокаРезультата)) = "OK" Тогда  // вес успешно получен
   Вес = Число(ФайлРезультат.ПолучитьСтроку(4));
   Ответ = Истина;
Иначе
   Ответ = Ложь;
КонецЕсли;	

6. Адаптация типового кода под новый класс драйвера "WSCRIPT"

Теперь изюминка

В общем модуле "МенеджерОборудованияКлиент"  в функции "ПолучитьОбъектДрайвера"  подменяем инициализацию драйвера. Ориентируемся по нашему ключу  WScript

// ---  замена строки					
//	Если ДанныеДрайвера.ВСоставеКонфигурации Тогда

        Если Префикс = "WScript." Тогда
	      Результат = Истина;
	ИначеЕсли ДанныеДрайвера.ВСоставеКонфигурации Тогда					
// ---					

и еще

// --- замена строки
//   ОбъектДрайвера = Новый (ProgID2);

      Если Префикс = "WScript." Тогда
         ОбъектДрайвера   = Новый COMОбъект("WScript.Shell");
      Иначе
         ОбъектДрайвера = Новый (ProgID2);
      Конецесли;
// ---	            	

 

7. Эксплуатация решения.

Тут все стандартно, собственно ради чего и затевалось.

Создаем оборудование "Электронные весы", выбрав наш драйвер и выполняем его настройку.



Перезаходим в 1С и можно нажимать кнопку "Получить вес"  в документах которые работают с весами.

 

На этом все. Идеи приветствуются.
Удачных вам проектов.

Источник: http://scriptcoding.ru/2013/06/25/wscript-shell-run/ Внимание! Права на публикацию материалов сайта находятся под охраной © http://matrixblog

UniScalesDriver Бесплатный драйвер для весов Промприбор ВТА-60 ВН весовой UniproScalesComServer

См. также

Обработка обслуживания весов с печатью этикеток ШТРИХ-М серии PC-200 для УТ 10.х

Весы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием Платные (руб)

Данная обработка позволяет настроить обмен с весами с печатью этикеток ШТРИХ-М серии PC-200 и 1С:Управление торговлей редакция 10. Может быть использована в 1С: Управление производственным предприятием 1.3 ,1С: Комплексная автоматизация 1.1, 1С: Розница 1.х. Универсальная обработка выгрузки номенклатуры для 1С:Розница редакция 2.3 использует типовой функционал "Правила обмена с подключаемым оборудованием offline" Обработка обслуживания весов с печатью этикеток ШТРИХ-М серии PC-200  для ДАЛИОН: Управление магазином 1.2.х Обработка выгрузки данных в весы с печатью этикеток ШТРИХ-М серии PC-200  для Штрих-М: Торговое предприятие 5.2.х Универсальная обработка выгрузки номенклатуры для 1С:Управление торговлей редакция 11 использует типовой функционал "Правила обмена с подключаемым оборудованием offline" Обработка обслуживания весов с печатью этикеток ШТРИХ-М серии PC-200  для ДАЛИОН: ТРЕНД, редакция 3.0

7800 руб.

04.12.2019    20970    71    35    

67

Драйвер для подключения электронных весов CAS и АТОЛ MARTA к 1Сv8.3

Весы Оптовая торговля Розничная торговля Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Драйвер электронных весов предназначен для подключения торговых весов фирмы CAS всех моделей, а также весов АТОЛ MARTA к различным конфигурациям 32-разрядной или 64-разрядной платформы 1С v.8.3. Драйвер разработан по стандарту "1С: Совместимо". Уникальность драйвера заключается в том, что он прост в подключении, надежен в работе и оптимален по цене.

2400 руб.

19.12.2017    67533    376    124    

133

Подключение старых весов ШТРИХ-ПРИНТ 4.5 к 1С: Розница 2.3+

Весы Платформа 1С v8.3 1С:Розница 2 Россия Бесплатно (free)

Подключение старых весов ШТРИХ-ПРИНТ 4.5 к 1С: Розница 2.3+ без внешних обработок и доработок.

17.04.2024    207    Archidemon    0    

2

Вариант интеграции с весами по com-порту через http-сервис

Весы Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Демонстрируется вариант интеграции 1С с весами по com-порту через реализацию отдельного http-сервиса.

1 стартмани

21.03.2024    427    2    gzharkoj    0    

5

Драйвер электронных весов Физтех Т11. Внешняя компонента Native API 1С (x86-64)

Весы Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Драйвер электронных весов Физтех Т11 (x86-64). Внешняя компонента Native API 1С. 1С Совместимо. Версия требований к разработке драйверов 3.9 Компонента предназначена для подключения к конфигурациям с БПО. Тестировалась на конфигурациях ERP, Управление нашей фирмой с БПО 3.2.2.25

3600 руб.

07.03.2024    469    0    0    

0

Работа с весами CAS через бесплатный драйвер

Весы Управляемые формы 1С:Розница 2 Розничная и сетевая торговля (FMCG) Абонемент ($m)

Расширение для работы с весами CAS (AD, AP, CS, ER, ER jr) через бесплатный драйвер.

1 стартмани

28.02.2024    434    10    vet25    0    

5

Выгрузка товаров в весы Масса-К (УНФ 3.0)

Весы Платформа 1С v8.3 1С:Розница 3.0 Россия Абонемент ($m)

Альтернативная выгрузка товаров в весы Масса-К для конфигураций Розница 3.0 и УНФ 3.0.

3 стартмани

05.02.2024    284    1    a_kudaev    1    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 29.04.21 13:34
Сообщение было скрыто модератором.
...
2. пользователь 29.04.21 13:35
Сообщение было скрыто модератором.
...
3. user998987 29.04.21 13:37 Сейчас в теме
А можно как то получить этот драйвер на почту (например)? Буду очень благодарен!
Оставьте свое сообщение