Подключение сканера штрих-кодов в 1С:Бухгалтерии 3.0

Нам потребуется:
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с. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Solve : *
30 − 25 =