1. Юзаются штатные ВК
Scaner1C.dll // подключение через разъем клавиатуры COM-порт
ScanOPOS.dll // подключение через COM-порт
2. Для сканера с разъемом клавиатуры краткая инструкция
// НАСТРОЙКА СКАНЕРА штрихкода через разъем клавиатуры - написал Артур Аюханов
//
// 1. используется Scaner1C.dll версия 6.2.3.230
// для этой ВК нужна rtl70.bpl , vcl70.bpl
// 2. Сервис - Параметры - драйвер штрих-кода
// 2.1 в поле суффикс нужно выбрать #13
// 2.2 в поле "Вариант подключения" выбираем "Клавиатура"
// 2.3 в случае проблем со сканером нажимаем "Поиск оборудования" и подносим к сканеру штрихкод,
// сканер должен найти устройство, показать штрихкод и показать префикс или суффикс (со знаком #)
// т.е. все настройки можно автоматом получить через поиск оборудования
//
// ============================ ============================ ============================
3. В форме объявляешь глобальную переменную гОбъектСканирования
4. В форме ПриОткрытии или ПередОткрытием юзаешь следующую функцию
Цитата:Функция ЗагрузитьСканер() Экспорт
Попытка // TODO нужно сделать выбор компонент для рабочего места
ЗагрузитьВнешнююКомпоненту("scanopos.dll"); // подключение через COM-порт
Исключение
Попытка
ЗагрузитьВнешнююКомпоненту("Scaner1C.dll"); // подключение через разъем клавиатуры COM-порт
Исключение
ОписаниеРезультата = "не удалось загрузить внешнюю компоненту ";
Возврат ОписаниеРезультата;
КонецПопытки;
КонецПопытки;
Попытка
гОбъектСканирования = Новый("AddIn.Scanner");
Исключение
Попытка
гОбъектСканирования = Новый("AddIn.Scaner45");
Исключение
ОписаниеРезультата = "не удалось создать объект внешней компоненты с программным идентификатром AddIn";
Возврат ОписаниеРезультата;
КонецПопытки;
КонецПопытки;
Если гОбъектСканирования.УстройствоВключено = 0 Тогда
Попытка // для Scaner1C не работает
Если гОбъектСканирования.Подсоединить("Сканер № 1") <> 0 Тогда
ОписаниеРезультата = "не удалось подсоединить устройство";
Возврат ОписаниеРезультата;
КонецЕсли;
гОбъектСканирования.ИмяСобытия = "BarCodeValue";
Если гОбъектСканирования.Занять(1) <> 0 Тогда
Сообщить("Сканер №" + ": не удалось получить монопольный доступ к устройству");
Возврат ОписаниеРезультата;
КонецЕсли;
гОбъектСканирования.УстройствоВключено = 1;
Если гОбъектСканирования.Результат <> 0 Тогда
ОписаниеРезультата = "не удалось включить устройство";
Возврат ОписаниеРезультата;
КонецЕсли;
Исключение
//Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;
КонецЕсли;
Попытка
// очищаем буфер компоненты
гОбъектСканирования.ОчиститьВход();
гОбъектСканирования.ОчиститьВыход();
Исключение
//Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;
// включаем режим немедленной посылки данных
гОбъектСканирования.ПосылкаДанных = 1;
Возврат "";
КонецФункции
5. Подключаешь к форме обработчик ВнешнееСобытие для распознавания штрихкода
Его примерный код - в штрихкоде сохранен номер и сумма документа. Решение не самое лучшее, но так уж исторически сложилось, еще со времен 77
Цитата:Процедура ВнешнееСобытие(Источник, Событие, Данные)
гОбъектСканирования.ПосылкаДанных = 1;
// -- Артур -- 08.01.2008 -
Сумма = 0;
Код = адной(Данные, Сумма);
// --завершение
КонецПроцедуры
6. Юзаешь приложенный глобальный модуль ИспользованиеШтрихКодаВДокументах - в нем есть куча методов для работы с разными форматами штрихкодов.
7. Из любой типовой (например, УТ) вставляешь в свою конфу план видов характеристик ТипыШтрихкодов - нужен для работы с разными форматами штрихкодов.
ЗЫ еще есть интересная публикация "ПРИМЕР ГЕНЕРАЦИИ ШТРИХКОДА ДЛЯ ДОКУМЕНТОВ, СПРАВОЧНИКОВ И ЕГО РАСШИФРОВКА"
http://infostart.ru/public/62668/но в ней идет сильная привязка к типовым конфам, я часть кода по разным форматам штрихкода добавлял из нее, он есть в моем глобальном модуле.