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

15.03.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Файл конфигурации содержащий разработку этого решения
.cf 242,26Kb
6
6 Скачать (10 SM) Купить за 4 550 руб.
Бесплатная утилита UniScalesDriver
.zip 53,14Kb
134
134 Скачать бесплатно
Инструкция к интегрируемой утилите с сайта производителя.
.rtf 65,26Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

См. также

Весы Системный администратор Программист Платформа 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    21808    75    36    

71

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

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

2400 руб.

19.12.2017    69278    401    131    

145

Весы Платформа 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    830    1    0    

2

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

Обработка для работы с весами в программе Далион, которая использует бесплатный драйвер МАССА-К Driver-R.

3 стартмани

31.10.2024    141    0    Lichi001    0    

3

Весы Платформа 1С v8.3 1С:Управление торговлей 11 Россия Платные (руб)

Исправление ошибки нового драйвера весов Штрих-Принт (ШТРИХ-М:Весы с печатью этикеток ШТРИХ-ПРИНТ NG), когда пре выгрузки весового товара на весы он его выгружает как штучный. А так же исправление ошибки весов при выгрузки "Нет связи".

3600 руб.

15.10.2024    405    0    0    

1

Весы Программист Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Абонемент ($m)

Предлагается пример создания рабочего файла, который понимает загрузчик loader для весов с печатью этикеток "Штрих-Принт".

3 стартмани

16.09.2024    553    1    aximo    1    

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