Меню

При подключении оборудования произошла ошибка 1с сканеры штрих кода nativeapi

Сканеры штрихкодов на общепите

Автор Imaris, 01 окт 2015, 17:22

0 Пользователей и 1 гость просматривают эту тему.

Добрый день.
Задача такая: заставить сканеры штрихкодов (конкретно модель Voyager MS9540) работать в Общепите так же, как в Управлении Торговлей, а именно: в форме «Перемещение Товаров» при создании нового документа при сканировании штрихкода должен автоматически добавляться в список товар со считанным штрихкодом.
На общепит была установлена библиотека подключаемого оборудования.
Сам сканер вне 1С работает через прерывание клавиатуры и просто печатает штрихкод.
Я, как очень зелёный и едва начавший программист, столкнулся с непосильными проблемами, некоторые из них решил, но самые жуткие остались нерешёнными.
В частности, общепит отказывается работать с драйвером сканера. Какой-то драйвер есть в библиотеке, и, вообще говоря, это тот же самый драйвер, что был в УТ. Выгрузка драйверов из УТ ничего не даёт. При попытке настроить драйвер вылезает:

Ошибка получения описания драйвера
{ОбщийМодуль.ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.Модуль(2132)}: Метод объекта не обнаружен (УстановитьПараметр)

Как заставить этот метод работать я так и не понял.
Сам сканер отказывается работать. При его инициализации (при открытии нужной формы) появляется ошибка:

При подключении оборудования произошла ошибка:"'1С: Сканеры штрихкода (NativeApi)' на Администратор(ImarisPad): Не удалось загрузить драйвер устройства.
Проверьте, что драйвер корректно установлен и зарегистрирован в системе.
Не удалось подключить устройство "'Сканер' на Администратор(computer)": Ошибка обращения к драйверу. (999)".

В УТ сканер работает как надо. Подскажите, что я делаю не так?
Далее мне нужно будет разобраться непосредственно с процедурой ОбработатьПолученныйШК(ДанныеШтрихкодов), перепастить из УТ не вышло, как быть — не знаю. Но сперва надо хотя бы драйвер заставить работать.
Спасибо за ответы!


Если сканер работает через клавиатуру, то никаикх драйверов не надо .оно работает просто как клавиатура.

Помог? Нажми — Спасибо :)
skype: Soprov1C


Цитата: дфтын от 01 окт 2015, 18:07
Если сканер работает через клавиатуру, то никаикх драйверов не надо .оно работает просто как клавиатура.

Дело в том, что для работы сканера в Управлении Торговлей необходимо было в настройке драйвера указать порт клавиатура, по умолчанию там стоит COM, при котором сканер не работает должным образом. У общепите же я не могу открыть эти настройки.

Добавлено: 03 окт 2015, 09:17


Больше идей нет?


Аватара пользователя

Chistota

Сообщения: 12
Зарегистрирован: 03 май 2016, 14:07
Operating system: KDE 5 Plasma

1С Торговое оборудование

Полазил по форуму но так и не обнаружил темы касательно подключения и настройки торгового оборудования в 1С.
Спасибо огромное разработчикам за статью по установке 1С Предприятия на Росу вот от сюда — http://wiki.rosalab.ru/ru/index.php/1C
Всё установилось и запустилось без проблем, но теперь встал вопрос подключения торгового оборудования в Управлении торговлей:

— Сканер штрихкода: Honeywell Metrologic MS5145 (usb) — нашел ссылку http://www.metrologic.ru/index.php/faq.html на драйвер но ничего не понял в инструкции.
— Чекопечатающая машинка: Pos58(usb) — для него драйвера не нашел.
— Принтер этикеток: L-MARK LK-560A (usb) — тоже ничего не нашел

Возможно ли это оборудование прикрутить?


Аватара пользователя

Chistota

Сообщения: 12
Зарегистрирован: 03 май 2016, 14:07
Operating system: KDE 5 Plasma

Re: 1С Торговое оборудование

Сообщение

Chistota » 09 май 2016, 07:22

Всех с праздником Победы.
Вчера весь вечер сканер мучал. Самое интересное что он определился росой сразу же. Попробовал даже в либре офисе сканировать, цифры правильные ставит, а вот с 1с Управление торговлей не всё так однозначно.
Создал новое устройство. Указал 1с сканер штрихкода (NativeApi), записал вошел вновь в настройки, сразу заметил что дравер установлен, указал порт COM1, провел тест который прошел успешно, но когда перешел в Рабочее место кассира то вылетела ошибка типа сканер не подключен и проверьте правильность подключения (999).
Хотя по кнопке F7 товар выбирает, да и в самом товаре штрих код задаёт без проблем.

img-2016-05-09-11-34-44.png


Аватара пользователя

DELTA-79

Сообщения: 1925
Зарегистрирован: 14 янв 2012, 14:07
Operating system: ROSA FRESH R2 KDE x86_64
Откуда: Георгиевск Ставропольский кр.
Контактная информация:

Re: 1С Торговое оборудование

Сообщение

DELTA-79 » 09 май 2016, 09:32

А вы в тех-поддержку 1С обращались? Это, кажется, их первый опыт работы в линуксе. Вполне возможно, что дело может быть в их коде. Тем более, как вы писали выше, сканер подхватывается в Росе автоматом и в других программах он работает.

‎Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz / 4 Gb RAM / NVIDIA GeForce GT 240 / Rosa 2012.1 R5 х86_64


keleg

Сообщения: 5485
Зарегистрирован: 15 сен 2011, 01:58

Re: 1С Торговое оборудование

Сообщение

keleg » 09 май 2016, 12:21

Chistota писал(а):Всех с праздником Победы.
Вчера весь вечер сканер мучал. Самое интересное что он определился росой сразу же. Попробовал даже в либре офисе сканировать, цифры правильные ставит, а вот с 1с Управление торговлей не всё так однозначно.
Создал новое устройство. Указал 1с сканер штрихкода (NativeApi), записал вошел вновь в настройки, сразу заметил что дравер установлен, указал порт COM1, провел тест который прошел успешно, но когда перешел в Рабочее место кассира то вылетела ошибка типа сканер не подключен и проверьте правильность подключения (999).
Хотя по кнопке F7 товар выбирает, да и в самом товаре штрих код задаёт без проблем.

img-2016-05-09-11-34-44.png

Все ж — вы подключаете как native api (com) или как эмулятор клавиатуры?


Аватара пользователя

Chistota

Сообщения: 12
Зарегистрирован: 03 май 2016, 14:07
Operating system: KDE 5 Plasma

Re: 1С Торговое оборудование

Сообщение

Chistota » 10 май 2016, 07:56

keleg писал(а):

Chistota писал(а):Всех с праздником Победы.
Вчера весь вечер сканер мучал. Самое интересное что он определился росой сразу же. Попробовал даже в либре офисе сканировать, цифры правильные ставит, а вот с 1с Управление торговлей не всё так однозначно.
Создал новое устройство. Указал 1с сканер штрихкода (NativeApi), записал вошел вновь в настройки, сразу заметил что дравер установлен, указал порт COM1, провел тест который прошел успешно, но когда перешел в Рабочее место кассира то вылетела ошибка типа сканер не подключен и проверьте правильность подключения (999).
Хотя по кнопке F7 товар выбирает, да и в самом товаре штрих код задаёт без проблем.

img-2016-05-09-11-34-44.png

Все ж — вы подключаете как native api (com) или как эмулятор клавиатуры?

Пробовал и так и так.
Если NativeApi как клавиатуру то тест проходит и ошибку не выдаёт при открытии рабочего места кассира, но товары не считывает ни просто так ни по F7.
Если NativeApi как COM1 то тест проходит, но в рабочем месте кассира выдаёт ошибку 999 и простое считывание товара не происходит, за-то по F7 работает.

Ладно попробуем в поддержэку


Возникла потребность обеспечить идентификацию номенклатуры по штрихкоду. На складе уже было рабочее место с Бухгалтерией 3.0. Поиск по ключевой фразе «сканер ШК БП 3.0» выдал не так много результатов. На ИС была обнаружена статья от 2013 года, которая сейчас несколько устарела.
В 2023 году процесс подключения сканера штрихкода стал существенно проще.

Ссылка на статью //infostart.ru/public/203591/ (сейчас она несколько устарела).

В 2023 году процесс подключения сканера штрихкода стал существенно проще.

В разделе «Администрирование» есть пункт «Подключаемое оборудование» и в ней есть закладка «Сканеры штрихкода». Тут все просто. Нажимаем «Создать», выбираем тип оборудования «Сканеры штрихкоды» и драйвер. Например, «1С:Сканеры штрихкода (NativeApi)». Если драйвер еще не установлен будет выдано предложение сделать это сейчас и база сама зарегистрирует нужную компоненту.

Для проверки нажимаем (в этой же форме) «Настроить» и «Тест устройства». Сканер я предварительно перевел в режим virtual COM и установил драйвер виртуального COM порта. В окне теста сразу видно, что доступен порт COM3. После считывания штрихкода данные отображаются в окне. Значит, 1С получает событие от сканера.

Следующий шаг — описать, как база должна реагировать на событие сканирования штрихкода.

Коротко напомню как все устроено в типовых конфигурациях.

У форм документов нет обработчика события «Внешнее событие». Все реализовано через событие управляемого приложения.

Его обработчик получает все события, определяет от какого оборудования они пришли.

Передача управления обработчикам формы выполняется через механизм оповещения.

Реакция системы на штрихкод описывается уже в модуле формы в обработчике события ОбработкаОповещения.

Поиск по конфигурации не порадовал. «Из коробки» штрих код работает только в трех видах документов.

Поскольку конфигурация на поддержке изменения будем вносить через расширение.

Реализуем 2 сценария — привязка штрихкода к карточке номенклатуры и обработка считывания штрихкода для длокумента «Перемещение товаров».

Начнем с номенклатуры.

Чтобы форма элемента получала оповещения от драйвера подключаемого оборудования необходимо добавить обработчики событий ПриОткрытии и ПриЗакрытии (оба с вызовом После).

&НаКлиенте
Процедура Расш1_ПриОткрытииПосле(Отказ)

ТипыПО = Новый Массив();
ТипыПО.Добавить("СканерШтрихкода");

ОповещениеПриПодключении = Новый ОписаниеОповещения("ПодключениеОборудованияЗавершено", ЭтотОбъект);

МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПоТипу(ОповещениеПриПодключении, УникальныйИдентификатор, ТипыПО);

КонецПроцедуры

&НаКлиенте
Процедура ПодключениеОборудованияЗавершено(РезультатВыполнения, Параметры) Экспорт

Если Не РезультатВыполнения.Результат Тогда
ТекстСообщения = НСтр( "ru = 'При подключении оборудования произошла ошибка:""%ОписаниеОшибки%"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки);
Сообщить(ТекстСообщения);
Иначе
ТекстСообщения = НСтр("ru = 'Оборудование подключено.'" );
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура Расш1_ПриЗакрытииПосле(ЗавершениеРаботы)

ТипыПО = Новый Массив();
ТипыПО.Добавить("СканерШтрихкода");

ОповещениеПриОтключении = Новый ОписаниеОповещения("ОтключениеОборудованияЗавершено", ЭтотОбъект);

МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПоТипу(ОповещениеПриОтключении, УникальныйИдентификатор, ТипыПО);

КонецПроцедуры

&НаКлиенте
Процедура ОтключениеОборудованияЗавершено(РезультатВыполнения, Параметры) Экспорт

Если Не РезультатВыполнения.Результат Тогда
ТекстСообщения = НСтр( "ru = 'При отключении оборудования произошла ошибка:""%ОписаниеОшибки%"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%" , РезультатВыполнения.ОписаниеОшибки);
Сообщить(ТекстСообщения);
Иначе
ТекстСообщения = НСтр("ru = 'Оборудование подключено.'" );
КонецЕсли;

КонецПроцедуры

Если код вызывает вопросы — напишите в комментарии — отвечу.

Далее создадим обработчик события ОбработкаОповещения (вызов также После).

&НаКлиенте
Процедура Расш1_ОбработкаОповещенияПосле(ИмяСобытия, Параметр, Источник)

Если Источник = "ПодключаемоеОборудование" Тогда

Если ИмяСобытия = "ScanData" Тогда

Если Параметр[1] = Неопределено Тогда
ТекущийКод = Параметр[0];
Иначе
ТекущийКод = Параметр[1][1];
КонецЕсли;

Номенклатура = "";
Если ЕстьНоменклатураПоШтрихкоду(ТекущийКод, Номенклатура) Тогда
ТекстСообщения = НСтр("ru = 'Штрихкоду %Штрихкод% уже сопоставлена номенклатура %Номенклатура%'" );
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Штрихкод%" , ТекущийКод);
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Номенклатура%" , Номенклатура);
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = ТекстСообщения;
СообщениеПользователю.Сообщить();
Иначе
ВопросСоздатьНоменклатуруЗавершение = Новый ОписаниеОповещения("ПривязатьШтрихкодКНоменклатуреПослеВопроса", ЭтаФорма, ТекущийКод);
ТекстСообщения = НСтр("ru = 'Привязать штрихкод %Штрихкод% к номенклатуре %Номенклатура%?'" );
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Штрихкод%" , ТекущийКод);
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Номенклатура%" , Объект.Наименование);
ПоказатьВопрос(ВопросСоздатьНоменклатуруЗавершение, ТекстСообщения, РежимДиалогаВопрос.ДаНет, 30, КодВозвратаДиалога.Нет);
КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецПроцедуры

&НаСервере
Функция ЕстьНоменклатураПоШтрихкоду(Штрихкод, Номенклатура)

Рез = Ложь;

ТаблицаНоменклатурыПоШтрихкоду = РегистрыСведений.ШтрихкодыНоменклатуры.НоменклатураПоШтрихкоду(Штрихкод);

Если ТаблицаНоменклатурыПоШтрихкоду.Количество() > 0 Тогда
Номенклатура = ТаблицаНоменклатурыПоШтрихкоду[0].Номенклатура;
Рез = Истина;
КонецЕсли;

Возврат Рез;

КонецФункции

&НаКлиенте
Процедура ПривязатьШтрихкодКНоменклатуреПослеВопроса(Результат, Параметры) Экспорт

Если Результат = КодВозвратаДиалога.Да Тогда
ПривязатьШтрихкодКНоменклатуре(Параметры);
КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ПривязатьШтрихкодКНоменклатуре(Штрихкод) Экспорт

НовыйШК = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
НовыйШК.Штрихкод = Штрихкод;
НовыйШК.Номенклатура = Объект.Ссылка;
НовыйШК.Записать();

КонецПроцедуры

Обработчик проверяет, что пришло событие именно со сканера штрихкода. Далее выполняется поиск номенклатуры по штрихкоду. Если номенклатура найдена выдается сообщение пользователю, что штрихкод уже сопоставлен с другой номенклатурой. В противном случае создается запись в регистре сведений ШтрихкодыНоменклатуры (после уточняющего вопроса пользователю).

Со справочником на этом все.

Переходим к документу.

Аналогично добавляем код для событий ПриОткрытии и ПриЗакрытии для подключения (и отключения) подписки на получение событий от подключаемого оборудования.

В обработчике ОбработкаОповещения размещаем код

&НаКлиенте
Процедура Расш1_ОбработкаОповещенияПосле(ИмяСобытия, Параметр, Источник)

Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" Тогда
Если Параметр[1] = Неопределено Тогда
ТекущийКод = Параметр[0];
Иначе
ТекущийКод = Параметр[1][1];
КонецЕсли;
ДобавитьПоШтрихкодуНаСервере(ТекущийКод);
КонецЕсли;
КонецЕсли;

КонецПроцедуры

Процедура ДобавитьПоШтрихкодуНаСервере выполняет поиск номенклатуры сопоставленной с штрихкодов. Если номенклатура не найдена выдает сообщение пользователю. Иначе — добавляет строку в документ. Добавление строки реализовано по аналогии с документом ПоступлениеТоваровУслуг.

&НаСервере
Функция ДобавитьПоШтрихкодуНаСервере(Штрихкод)
ТаблицаНоменклатурыПоШтрихкоду = РегистрыСведений.ШтрихкодыНоменклатуры.НоменклатураПоШтрихкоду(Штрихкод);

Если ТаблицаНоменклатурыПоШтрихкоду.Количество() = 1 Тогда
ДобавитьНоменклатуруНаСервере(ТаблицаНоменклатурыПоШтрихкоду[0].Номенклатура);
Иначе
ТекстСообщения = НСтр("ru = 'Штрихкоду %Штрихкод% не сопоставлена ни одна номенклатура'" );
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Штрихкод%" , Штрихкод);
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = ТекстСообщения;
СообщениеПользователю.Сообщить();
КонецЕсли;

КонецФункции

&НаСервере
Процедура ДобавитьНоменклатуруНаСервере(Номенклатура)

ПараметрыОтбора = Новый Структура("Номенклатура", Номенклатура);

мСтрок = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
Если мСтрок.Количество() = 0 Тогда

ТаблицаТовары = Новый ТаблицаЗначений;
ТаблицаТовары.Колонки.Добавить("Номенклатура");
ТаблицаТовары.Колонки.Добавить("Количество");
ТаблицаТовары.Колонки.Добавить("Цена");


СтрокаТаблицаТовары = ТаблицаТовары.Добавить();

СтрокаТаблицаТовары.Номенклатура = Номенклатура;
СтрокаТаблицаТовары.Количество = 1;
СтрокаТаблицаТовары.Цена = 0;

Значение = Новый Структура("АдресПодобраннойНоменклатурыВХранилище, КоличествоДобавленныхСтрок", ПоместитьВоВременноеХранилище(ТаблицаТовары, УникальныйИдентификатор));

ОбработкаВыбораПодборВставкаИзБуфераНаСервере(Значение, "Товары");

Иначе

СтрокаТовары = мСтрок[0];
СтрокаТовары.Количество = СтрокаТовары.Количество + 1;

КонецЕсли;

КонецПроцедуры

На этом всё.

Взаимодействие сканера с другими документами выполняется аналогичным образом.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • При подключении к интернету пишет ошибку 651
  • При печати фискального чека возникла ошибка iiko