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

Публикация № 1402479

Администрирование - Торговое оборудование - Весы

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

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

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

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

Выполним пошаговую реализацию решения для конфигурации "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

Скачать файлы

Наименование Файл Версия Размер
Файл конфигурации содержащий разработку этого решения

.cf 242,26Kb
0
.cf 242,26Kb Скачать
Бесплатная утилита UniScalesDriver

.zip 53,14Kb
6
.zip 53,14Kb 6 Скачать бесплатно
Инструкция к интегрируемой утилите с сайта производителя.

.rtf 65,26Kb
0
.rtf 65,26Kb Скачать

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

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

См. также

Выгрузка товаров в весы Штрих-ПРИНТ 4.5 из 1С:Общепит 3.0 (Расширение) Промо

Весы v8 1cv8.cf Рестораны, кафе и фаст-фуд Абонемент ($m)

Расширение предназначено для выгрузки товаров в весы Штрих-ПРИНТ с последующим использованием этикеток в 1С:Ресторан.

2 стартмани

23.11.2018    20807    17    RocKeR_13    8    

Интеграция торгового оборудования: сканер-весы Zebra MP7000

Разработка внешних компонент Сканер штрих-кода Весы v8 Розница Абонемент ($m)

Подключение торгового оборудования Zebra MP7000 сканер-весы к 1С "Розничная торговля".

1 стартмани

10.03.2021    868    0    Goody    0    

Формирование файла выгрузки весовых товаров в весы CAS CL-5000 с печатью этикеток

Весы Ценники v8 УНФ Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

Данная обработка позволяет автоматически формировать файл выгрузки весовых товаров в весы с печатью этикеток CAS CL-5000 из УНФ 1.6.

5 стартмани

09.02.2021    982    0    aximo    0    

РМК - Кнопка для выгрузки данных в весы с печатью этикеток

Рабочее место Весы v8 Розница Абонемент ($m)

Расширение добавляет кнопку в РМК для выгрузки в весы.

2 стартмани

21.10.2020    1680    2    user635667    2    

Обработка для весов ИКС-Техно: ICS 6 NT, ICS 15 NT, ICS 30 NT и подобных

Весы v8 Розница Абонемент ($m)

Обработка обслуживания для весов ИКС-Техно: ICS-6 NT, ICS-15 NT, ICS-30 NT и подобных. Разработано и протестировано на 1С:Розница, но подойдет и для других конфигураций.

1 стартмани

29.09.2020    1743    3    pasha_triniti    0    

Выгрузка товаров в весы Штрих принт Ф1 TOUCH

Весы v8 1cv8.cf Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

Данная обработка написана в силу того, что нет встроенной для работы с весами Штрих принт с сенсорным экраном.

1 стартмани

12.06.2020    2251    1    Igor981    0    

Трактиръ: Nano. Обработка загрузки меню в весы Штрих-Принт

Весы v8 1cv8.cf Рестораны, кафе и фаст-фуд Россия УУ Абонемент ($m)

Трактир Нано не умеет загружать весы с печатью этикеток Штрих-принт, зато умеет разбирать весовые штрихкоды в режиме продажи. Обработка позволяет загружать в весы справочник Меню по заданному типу цен.

1 стартмани

05.03.2020    2863    0    vasilievil    0    

Подключение электронных весов cas без покупки драйвера

Весы v8 Розница Розничная и сетевая торговля (FMCG) УУ Абонемент ($m)

Подключение электронных весов cas, при помощи бесплатного драйвера ap.dll.

5 стартмани

27.09.2019    27380    33    tigrandis    16    

Драйвер для электронных весов Атол MARTA (МАРТА)

Разработка внешних компонент Весы Розничная торговля Розничная торговля v8 1cv8.cf Розничная и сетевая торговля (FMCG) Абонемент ($m)

Драйвер для электронных весов Атол MARTA(МАРТА). Com-объект. С одним единственным методом для возврата веса с весов. Писался для себя, успешно используется на нескольких магазинах.

1 стартмани

01.08.2019    6715    18    MORT32Ram    3    

Решение проблемы с оборудованием "Штрих-М:Весы с печатью этикеток" в конфигурации Розница, редакция 2.2 (2.2.12.30)

Весы v8 Розница Абонемент ($m)

В новой конфигурации Розница, редакция 2.2 (2.2.12.30), перестали совсем работать драйверы весов "Штрих-М:Весы с печатью этикеток", которые до этого использовали, убирая галочку в справочнике "Драйверы оборудования" "снят с поддержки". После долгого поиска решения на просторах интернета, сам пришел к простому и рабочему решению проблемы.

1 стартмани

27.06.2019    18276    21    limonas    4    

Разработка COM-объекта для взаимодействия с весами

Весы v8 Казахстан Абонемент ($m)

Разработка COM-объекта для взаимодействия с весами на платформе .Net Framework.

2 стартмани

29.06.2018    6100    2    user1004603    0    

Драйвер 1С для весов Масса-К ВПМ

Оптовая торговля Розничная торговля Учет ТМЦ Весы Разработка внешних компонент Оптовая торговля Розничная торговля Учет ТМЦ v8 Розница УТ11 Россия Казахстан УУ Абонемент ($m)

Драйвер торгового оборудования для 1С. Поддерживает работу весов с печатью этикеток работающих по протоколу Масса-К ВПМ. Выгрузка осуществляется штатными средствами 1С.

10 стартмани

21.06.2018    9318    15    AnacRon    1    

Внешняя компонента для работы с весами Massa-K (технология NativeAPI) из 1С

Разработка внешних компонент Весы v8 1cv8.cf Абонемент ($m)

Внешняя компонента создавалась для работы с терминалами типа А и RA, вполне вероятно, будет работать и с другими терминалами масса-К. Получает показания весов в любой момент времени, также можно подключить выдачу внешнего события при окончании взвешивания (при звуковом сигнале весов).

2 стартмани

15.09.2017    14658    12    Kant1975    17    

Внешняя компонента обмена данными с весовыми терминалами

Разработка внешних компонент Весы v8 Украина Абонемент ($m)

Внешняя компонента с использованием Native API предназначена для подключения весоизмерительных приборов к различным конфигурациям 1С: Предприятия. Данная библиотека будет очень полезна тому, кто проходит путь интеграции весоизмерительных приборов и системы 1С:Предприятия.

1 стартмани

15.09.2017    9091    6    podorojnii_ayu    0    

Обработка обслуживания АТОЛ:Драйвер весов с печатью этикеток 6Х для БСП

Разработка внешних компонент Розничная торговля Весы Розничная торговля v8 УТ10 Розница Розничная и сетевая торговля (FMCG) УУ Абонемент ($m)

Компонента обслуживания торгового оборудования "АТОЛ:Драйвер весов с печатью этикеток 6Х"

1 стартмани

26.10.2016    13729    4    non1ka    1    

Весы с печатью этикеток ШТРИХ-ПРИНТ. Подключение, настройка. Доработка возможности прямого взаимодействия (получения веса, цены, кода товара и PLU) в документе чек ККМ. Выгрузка прайс-листа с базы весов.

Весы v8 УТ10 Абонемент ($m)

После поступившей от клиента задачи по автоматизации розничной торговли, а именно "подключите мне как-нибудь весы". Разобрались, что нам может предложить сама 1С по поводу тандема с весовым оборудование с печатью этикеток, немножко шаманив с драйвером упростили механизм при постоянном подключении. Вот что же у нас получилось…

1 стартмани

28.12.2014    90162    138    softgarant    29    

Внешняя обработка "Загрузка весов" для Штрих-М Торговое предприятие 5 Базовая версия.

Весы v8 1cv8.cf Абонемент ($m)

Решение проблемы с загрузкой весов в базовой версии Штрих-М Торговое предприятие 5.

1 стартмани

19.07.2014    16106    17    Zoba    7    

Обработка обслуживания электронных весов Штрих-М

POS терминал Весы v8 Розница Россия Абонемент ($m)

Данная обработка осуществляет обслуживание электронных весов фирмы Штрих-М, работающих по протоколам Штрих АС, Штрих АС POS, Штрих POS2.

1 стартмани

27.06.2012    41731    169    1carbon    15    

Загрузка весов Масса-К с печатью этикеток 1С 8.2

Весы v8 УТ10 Россия Абонемент ($m)

1C 8.2 загрузка весов Масса-К ВП с печатью этикеток подключенные через Ethernet.

1 стартмани

14.03.2012    31862    132    dvoinik    8    

Обработка обслуживания электронных весов CAS серий: AD,AP,DB,EM,ER,EMR для "Розница 8,1"

Весы v8 Розница Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Данная обработка осуществляет обслуживание электронных весов CAS серий: AD,AP,DB,EM,ER,EMR

1 стартмани

26.11.2009    29162    296    kolpak_mp3    15    

C++ (ATL) против METTLER-TOLEDO

Весы v8 1cv8.cf Россия Абонемент ($m)

Внешняя компонента для работы с периферией по RS-232. В моём случае это были весы!

1 стартмани

06.11.2009    25101    289    AmoreMe    17