Нам потребуется:
1. Бухгалтерия 3.0 (3.0.25.7)
2. Управление торговлей ред. 11 (11.1.2.9)
3. Установленный драйвер сканера.
Будем вносить изменения таким образом, чтобы работали все 3 типа сканеров, которые есть в УТ.
Можно конечно обойтись простым подключением через создание COM-объекта, но мы лёгких путей не ищем и будем делать всё как и принято в 1С, т.е. через жопу с задействованием внутренних универсальных механизмов.
Итак, чтобы подключить сканер нужно:
1. В общем модуле МенеджерОборудованияКлиентСерверПереопределяемый поправить функцию ПолучитьДоступныеТипыОборудования():
Функция ПолучитьДоступныеТипыОборудования() Экспорт
СписокОборудования = Новый Массив;
// Фискальные регистраторы
СписокОборудования.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.ФискальныйРегистратор"));
// Конец Фискальные регистраторы
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VladC# 01.10.2013
СписокОборудования.Добавить(ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.СканерШтрихкода"));
Возврат СписокОборудования;
КонецФункции
2. В том же модуле поправить функциюПолучитьОбработчикаДрайвера, т.е. нужно добавить строки относящиеся к санеру:
Функция ПолучитьОбработчикаДрайвера(ОбработчикДрайвера) Экспорт
Результат = Неопределено;
// Вызов метода выполнения команды у обработчика
Если ОбработчикДрайвера <> Неопределено Тогда
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VladC# 29.09.2013
// Сканеры штрихкода
Если ОбработчикДрайвера = ПредопределенноеЗначение("Перечисление.ОбработчикиДрайверовПодключаемогоОборудования.Обработчик1ССканерыШтрихкода") Тогда
Результат = ПодключаемоеОборудование1ССканерыШтрихкодаКлиент;
ИначеЕсли ОбработчикДрайвера = ПредопределенноеЗначение("Перечисление.ОбработчикиДрайверовПодключаемогоОборудования.ОбработчикСканкодСканерыШтрихкода") Тогда
Результат = ПодключаемоеОборудованиеСканкодСканерыШтрихкодаКлиент;
ИначеЕсли ОбработчикДрайвера = ПредопределенноеЗначение("Перечисление.ОбработчикиДрайверовПодключаемогоОборудования.ОбработчикАтолСканерыШтрихкода") Тогда
Результат = ПодключаемоеОборудованиеАтолСканерыШтрихкодаКлиент;
КонецЕсли;
...
3. Из конфигурации УТ ред. 11 скопировать три общих модуля прямо из дерева конфигурации:
— ПодключаемоеОборудованиеАтолСканерыШтрихкодаКлиент
— ПодключаемоеОборудование1ССканерыШтрихкодаКлиент
— ПодключаемоеОборудованиеСканкодСканерыШтрихкодаКлиент
4. Из конфигурации УТ ред. 11 скопировать три общих формы настроек, тоже прямо из дерева конфигурации:
— ФормаНастройкиАтолСканерыШтрихкода
— ФормаНастройки1ССканерыШтрихкода
— ФормаНастройкиСканкодСканерыШтрихкода
5. Из конфигурации УТ ред. 11 скопировать иконку для отображения на форме настроек торгового оборудования (находится в общих картинках):
— ПодключаемоеОборудованиеСканерШтрихкода32
6. Создадим общий модуль, я назвал влОбщийМодуль (использование только на клиенте управляемого приложения), рекомендую сделать имя пока именно такое, потом сможете изменить.
В этом общем модуле нужно добавить процедуру:
Процедура ПодключитьСканер() Экспорт
Массив=МенеджерОборудованияСервер.ПолучитьСписокОборудования(,,МенеджерОборудованияСервер.ПолучитьРабочееМестоКлиента());
Для Каждого Стр из Массив Цикл
Если Стр.ТипОборудования=ПредопределенноеЗначение("Перечисление.ТипыПодключаемогоОборудования.СканерШтрихкода") Тогда
Идентификатор = Стр.Ссылка;
ПараметрыУстройства = МенеджерОборудованияКлиентПовтИсп.ПолучитьПараметрыУстройства(Идентификатор);
МенеджерОборудованияКлиент.ВыполнитьДополнительнуюКоманду("ПолучитьВерсиюДрайвера",,,Идентификатор,ПараметрыУстройства);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
7. В модуле управляемого приложения, в процедуре ПриНачалеРаботыСистемы() добавить вызов ранее созданной процедуры:
Процедура ПриНачалеРаботыСистемы()
// СтандартныеПодсистемы
СтандартныеПодсистемыКлиент.ДействияПриНачалеРаботыСистемы();
// Конец СтандартныеПодсистемы
//РаботаСВнешнимОборудованием
МенеджерОборудованияКлиент.ПриНачалеРаботыСистемы();
//Конец РаботаСВнешнимОборудованием
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VladC# 02.10.2013
влОбщийМодуль.ПодключитьСканер();
КонецПроцедуры
8. Все новые объекты конфигурации добавить в подсистему ПодключаемоеОборудование.
9. Для проверки, в справочнике номенклатуры например, создайте обработчик события формы элемента ВнешнееСобытие:
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник="BarCodeScaner" и Событие="BarCodeValue" Тогда
Сообщить(Данные);
КонецЕсли;
КонецПроцедуры
10. Сохраняемся, запускаем Бухгалтерию в пользовательском режиме. Идём в Администрирование -> Подключаемое оборудование.
11. Если рабочее место не выбрано, то выберите, затем слева щёлкните Сканеры штрихкода.
12. Добавьте сканер «АТОЛ: Сканеры штрихкода» (я отлаживал именно этот тип сканеров, можете выбрать свой) и установите в
нём галочку «Устройство используется».
13. Нажмите «Записать и закрыть», а потом нажмите «Настроить» и введите там необходимые настройки, порт, суффикс и т.д.,
настройки у всех разные, поэтому свои здесь приводить не буду, дабы не вводить в заблуждение.
14. Перейдите в справочник Номенклатуры, откройте форму элемента и сосканируйте любой штрихкод, должно появиться сообщение с
этим штрихкодом.
Ну вроде всё, ничего не забыл, надеюсь кому-нибудь поможет.
Добрый день!
Очень полезная инструкция!
Все пункты выполнил в тесте драйвера штрих-код сканирует, но в справочнике номенклатуре нет, что сделал не правильно?
Спасибо, а настройки сканера в 1С такие же как в тесте драйвера? Подозреваю что у вас суффиксы не установлены.
Можно немного по подробнее, опыта с штрих-кодами нет!
при сканировании штрих-код появляется в тесте оборудование
Покажите скриншот с отображенным штрихкодом в тесте драйвера.
в суффикс нужно добавить (10), т.е. там должно быть (13) CR, (10) LF
Добрый день!
Подскажите где добавить суффикс ?
Вот у меня параметры!
вот именно из этого списка, вы правильно открыли, когда выберете (10) LF, он у вас добавится к существующему и получится строка «(13) CR, (10) LF»
Добрый день! Не работает! хотел спросить если штрих-код сканировать в блокноте он должен сканировать?
*Сканер Voyager 1250g USB
*Windows 7 Home
*Настройки сканера
Если подключить через USB то сканер работает как клавиатура, считывает в блокнот
Если подключен через USB настроен эмулятор COM работает как сканер, но в блокнот не считывает
*Тестирование
Тестировал на УТ 10.3 все работает ок.
(10) lihomanov, в блокноте сканер будет считывать только если подключен как клавиатура, через COM не будет. Сравните свои настройки сканера в УТ с настройками в бухгалтерии.
Пробовал
1. Разные драйвера
2. Настройки заново
Мне кажется Процедура ВнешнееСобытие() не срабатывает!, что еще можно проверить!
Конфа: Бухгалтерия предприятия, редакция 3.0 (3.0.24.12)
Платформа: 1С:Предприятие 8.3 (8.3.3.721)
Про 8.3 не знаю, не пробовал, да и сейчас уже нет возможности т.к. сканер отдал, может стоит пока попробовать на 8.2, я на 8.2 отлаживал? Как была создана процедура ВнешнееСобытие(), это точно обработчик события формы «ВнешнееСобытие», а не просто вручную созданная процедура?
Попробовал на:
Платформа: 1С:Предприятие 8.2 (8.2.19.68)
Конфа: Бухгалтерия предприятия, редакция 3.0 (3.0.27.7)
хотел уточнить, а какой драйвер надо было ставить?
(16) lihomanov, я на атоловском отлаживал.
Добрый день! Попробовал на Атоловском драйвере, не чего не выходит!
Менял режим запуска: Тонкий клиент, Толстый клиент
Пробовал разные платформы, релизы, драйвера, компьютеры, но событие не срабатывает!!!
вот на этот вопрос ответьте: «Как была создана процедура ВнешнееСобытие(), это точно обработчик события формы «ВнешнееСобытие», а не просто вручную созданная процедура?»
уже описывал выше, файл прикрепляю
посмотрел, сделано всё верно, проблема явно в настройках сканера в 1С, можно получить скриншот окна атоловского теста драйвера сканера с работающими настркойами и скриншот с настройками из 1с?
Добрый день! Вот данные!
Попробовал другую версию драйвера Атол
Еще
Похоже что настройки в порядке, НО я увидел у вас ещё 2 других сканера, удалите их, на одном порту может сидеть только одно устройство, несколько сканеров в программе могут сидеть только в разных портах, либо они должны быть клавиатурные, так что лучше удалите, оставьте только атоловский.
не помогло, удалил сканеры,оставил один
у меня сканер штрих-кодов Voyager 1250g USB в режиме эмуляции COM-порта (USB Serial), настроен управляющий штрих-код «USB Serial» (TERMID130)
На УТ 10.3 работает замечательно!
сделайте скриншот настроек, которые у вас находятся в меню Сервис->Параметры, вкладка Драйвер устройств ввода
не понял, можно поточнее?
меню Сервис -> Параметры
вот
открываю, ошибка
у меня платформа 1С:Предприятие 8.2 (8.2.19.68)
драйвер сканера 6.5.2.399
Может стоит платформу переустановить или драйвер другой взять, ещё может помочь копирование Scaner1C.dll из каталога атол в каталог bin платформы 1С.
Добрый день! Не могу исправить данную ошибку
версия драйвера и платформы как у меня?
А как же быть потом с обновлениями? при каждом обновлении придется такое проделывать? Или можно по хитрому обновиться?
(37) ToJIuK, изменения, в основном, вносятся в те места конфигурации, которые меняются достаточно редко, поэтому их можно просто исключать из обновления и всё. Исключением будут только модули форм документов, да и то там изменений то совсем немного, лично мне это никак не мешает, обновляю регулярно и всё в порядке.
А вот сам Штрих код лучше добавить через добавление реквизита в номенклатуру или задействовать регистр ?
(39) ToJIuK, однозначно регистр
Тут недавно набрался смелости и начал делать все по плану.
взял Бух 3.0.29.8 (Знаю что отличается от описанной, но сказали что «изменения, в основном, вносятся в те места конфигурации, которые меняются достаточно редко, поэтому их можно просто исключать из обновления и всё»)
Ут 11.1.2.9
Но сразу же столкнулся с проблемами:
1)пункт В общем модуле МенеджерОборудованияКлиентСерверПереопределяемый поправить функцию ПолучитьДоступныеТипыОборудования()
В ред.3.0.29.8 нет такого общего модуля, есть 2 разных МенеджерОборудованияВызовСервераПереопределяемый и МенеджерОборудованияКлиентПереопределяемый. При помощи поиска на названию функций нашел куда добавить 1 и 2 пункт. вроде все добавил запустилось . в меню Сервис-Параметр появилась вкладка . там все настроено как положено.
2) В обработку формы Элемента добавил как написано , но при сканировании она не отрабатывает. А просто набирает символы как при вводе с клавиатуры.
Что не так ?
Кое как добился чтобы срабатывала Процедура «Внешнее событие» , но даже она отрабатывает не корректно , Вместо Цифр штрихкода , в данные попадает номер сканирования (т.е если отсканировал ШК в первый раз то выходит «1», если 2-й ,то «2» и тд). Драйвер менял , что то ничего не помогает . Не могу ни как разобраться. Ни кто с таким не сталкивался?
(42) ToJIuK, в тесте драйвера всё работает?
(43) Да в тесте драйвера все нормально. Результата такой какой надо.
И ещё посмотрел как обрабатывается работа со сканером УТ 11! Там нет Процедуры «внешнееСобытие». Все делается через другую процедуру.
Единственное что получилось Это примерно вот так
В модуле обычного приложения
Показать
В документе (Справочнике)
Показать
Но такое работает только в Обычном приложении . В управляемых формах почему то не работает, хотя я их и в модуль управляемого приложения засунул. но процедура «ВнешнееСобытие» не отрабатывает.
(45) ToJIuK, попробуйте добавить реквизиты формы:
а также следующие процедуры в модуль формы:
Показать
Тогда сработает внешнее событие:
Правда я использовал драйвер ScanOPOS
Спасибо автору за эту статью!
Ребята . кто пользовался дешевыми китайскими USB сканерами? Как они в работе и подключении к 1С? Проблем с ними нет?
(47) piton66, Если подключать их в режиме эмуляции клавиатуры с Атоловским драйвером(Старым) проблем не должно быть. Так как там все одинаково. А вот если пробовать подключить в режиме эмуляции COM порта то могут быть проблемы с драйверами на USB-COM.
(46) ducks01, да еще добавить Картинки «ПодключаемоеОборудованиеСканерШтрихкода32″(16)
Добрый день БП 3.0.36.15
Нифига не пойму, сделал все по описанию (с учетом уже текущей конфигурации). Но!
Подключаю сканер, но реквизит «Драйвер оборудования» пустой и не дает выбрать!
Установил под правами админа драйвер 1С и атоловский драйвер. Перенес драйверы и в папку Bin 1С, все равно пусто.
На самом деле, можно сделать всё намного проще. У компании 1С есть Библиотека Подключаемого Оборудования(БПО). Заходим в бухгалтерию, смотрим в общем модуле МенеджерОборудованияВызовСервера в функции ВерсияБиблиотеки() версию БПО. Качаем с сайта 1С, где качаем обновления, такую же версию БПО или более новую. Берем её и просто объединяем с нашей конфигурацией по прилагаемой инструкции. В конце надо не забыть, запустить процедуру ОбновитьПоставляемыеДрайвера(), в инструкции это есть. Таким образом, я очень быстро прописал сканер в бухг. 3.0.
(50) Гость,
Надо запустить процедуру МенеджерОборудованияВызовСервераПереопределяемый.ОбновитьПоставляемыеДрайвера(), я это сделал из внешней обработки, 1с рекомендует добавить данную строчку в процедуру запускаемую один раз при старте системы.
Короче в режиме подключение в разрыв клавиатуры самый простой метод. Нужно только сам сканер настроить. ну чтобы нужную последовательность нажатий клавиш выдавал.
(42) ToJIuK, Решили почему выводятся цифры 1,2,3…? Если — да, то может подскажете как это победить?
Распечатав ШК на этикетке через принтер печати шк сканер считывает не все штрих-кода при этом использую три вида сканера Линейнный Ханевел1250, Имидживый Моторола DS2208 и 2D сканер который считывает даже с экранов. Принтер модель ZEBRA 420. При этом сформированные и распечатанные эти шк из под УТ, Розницы эти сканера считывают на УРА. Куда копать подскажите
Помогите пожалуйста:
Установил атоловские драйвера, платформа 8.3.13.1513, обычные формы.
В Сервис — Параметры отсутствует вкладка Драйвер. Как жить дальше?
(56) На обычных формах настройка драйверов торгового оборудования обычно осуществляется в меню Сервис -> Торговое оборудование -> Подключение и настройка торгового оборудования.
(57) Дело в том что при загрузке Scaner1C.dll в меню Сервис — Параметры должна появится дополнительная вкладка для настройки ТО. Я думаю что дело в платформе, так как на других платформах (пр. 8.3.8) эта вкладка есть…
(58) Разрядность платформы и драйвера совпадает?
(58) просто установки драйвера недостаточно для появления вкладки, нужно чтобы он в 1с был подключен.
(59)Платформа х64… Может в этом и проблема???