1С бухгалтерия

До сегодняшнего дня много раз подключал и сканеры штрих кодов и фискальные регистраторы. Но все это были подключения к "1С Управление торговлей", где данные торговые оборудования предусмотрены типовой конфигурацией. В бухгалтерии же предполагается подключение только фискального регистратора. Ну не покупать же из-за сканера штрих кода новую конфигурацию, поэтому пришлось делать подключение сканера к бухгалтерии.

Решил сначала на компьютере установить сканер для УТ, а потом уже пробовать подключение к БП. Как я уже сказал, много раз подключал торговое оборудование: и к 7-ке и к 8-ке, и к Торговле и к Бухгалтерии, но было это довольно давно. Поэтому, когда после установки АТОЛовского драйвера, сканер считывал коды с большой задержкой, то для меня это было неожиданностью. Только потом выяснил, что оказывается драйвера от АТОЛа стали платными. И в демоверсии сканер будет работать с 10-ти секундной задержкой.

Вторая проблема, к которой я был не готов - это то, что в процедуру ВнешнееСобытие(Источник, Событие, Данные) в качестве параметра передавались порядковые номера считываний. Мне в свое время попадались только Metrologic-ки и я привык к тому, что в параметре Данные передается уже готовый штрих-код. А тут, то ли из-за того, что был сканер Zebex, то ли из-за того, что драйвер не тот что был раньше, но в параметре Данные действительно передается номер события.

Нарыл я не демовские дрова АТОЛа, установил, скопировал Scaner1C.dll в 1С-кую папку bin и стал подключать сканер. Попробовал сначала сделать подключение с помощью обработки ATOLBarcodeScan_v2.epf, т.к. думал делать по аналогии с УТ. И даже подключил, предварительно немножко подправив обработку ТОНастройка(т.к. там фильтрация по фискальникам стоит). Но потом понял, что замучаюсь с обработкой данных, поэтому взял за основку код, который идет в качестве примера с драйверами АТОЛа. А именно пришлось немного подправить модуль приложения:

Перем Scaner Экспорт;  // ХА
 
...
 
Процедура ПриЗавершенииРаботыСистемы()
 
	// Показ финальной дополнительной информации
	Форма = Обработки.ДополнительнаяИнформация.Создать();
	Форма.ВыполнитьДействие();
	//
 
	Scaner = 0; // ХА
 
КонецПроцедуры
 
...
 
Процедура ПриНачалеРаботыСистемы()
...
	// ХА
	Попытка
		ЗагрузитьВнешнююКомпоненту("Scaner1C.DLL");
		//Сообщить("Внешняя компонента сканера штрих-кода успешно загружена");
        Попытка
			Scaner = Новый("AddIn.Scaner45");
			Scaner.OldVersion = 0;
			Scaner.AutoDisable = 1;
			Scaner.DataEventEnabled = 1;
		Исключение
			Сообщить("Объект не найден");
		КонецПопытки;
	Исключение
		Сообщить("Внешняя компонента сканера штрих-кода - Scaner1C.DLL не найдена");
	КонецПопытки;
	// 		ХА
 
КонецПроцедуры // ПриНачалеРаботыСистемы()
 
...
 
// ХА
Функция ОбработкаДанныхСканера(Источник,Событие,Данные) Экспорт
	Результат = "";
	Если Scaner.OldVersion <> 0 Тогда
		Результат = Данные;
	Иначе
		Результат = Scaner.ScanData;
	КонецЕсли;
	Scaner.DataEventEnabled = 1;
	Возврат СокрЛП(Результат);
КонецФункции
// 		ХА

Ну а в документе, для которого это собсвенно все и нужно пишем что-то подобное этому:

// ХА
Процедура ВнешнееСобытие(Источник, Событие, Данные)
 
	Если Источник = "BarCodeScaner" Тогда
		ШК = ОбработкаДанныхСканера(Источник,Событие,Данные);
		НайденаНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("ХА_ШтрихКод",ШК);
		Если НайденаНоменклатура.Пустая() Тогда
			Возврат;
		КонецЕсли;
		ЭлементыФормы.Продукция.ДобавитьСтроку();
		ЭлементыФормы.Продукция.ТекущиеДанные.Номенклатура = НайденаНоменклатура;
		ЭлементыФормы.Продукция.ТекущиеДанные.Количество = 1;
		ПродукцияПродукцияПриИзменении("");
	КонецЕсли;
 
КонецПроцедуры // ВнешнееСобытие()
// 		ХА

Да. Забыл сказать, что для настройки сканера я просто скопировал и вставил обработку СвойстваСканера из все того же примера, который идет с драйверами АТОЛа. В этой настройке в качестве порта выбрал "Клавиатура", т.к. сканер USB.

Приведенные выше коды - для версии "Бухгалтерия предприятия 2.0", релиз 2.0.17.6.

Как подключить сканер штрих кода к 1С Бухгалтерия предприятия 3.0

Комментарии

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Столкнулся с интересным глюком scanopos.dll

Я с коллегами прикрутили к конфигурации Бухгалтерия сканер ШК так как рекомендовал автор. Благополучно используем пару лет во многих документах заполнение штрихкода данными со сканера в режиме com порта. Пользуемся для сканирования своих ШК в которые кодируем латиницу и цифры. Общая длина кодируемого сообщения 28 и более символов. А теперь то чего собственно пишу. При приеме данных со сканера в пакетном режиме в максимальном объеме пакета (пока не пропиликает сканер о полной памяти) нашли что в com порт прилетает весь пакет, а вот в 1С пакет режется где то на 4450 символе, при том что полный пакет более 8000
символов. Перепробовал разные версии scanopos.dll от 8_0_13_1 до 8_1_6_1. и в чем дело не нашел.
Пока ищу причину скармливаю сканеру по 200 ШК и ищу закономерность в отладчике.

Помучав пару дней прихожу к выводу, что сканопус принимает в работу не все что прилетело в порт. он принимает порцию. Пока отдает порцию в 1с тот остаток пакета, прилетевшмй в СОМ порт просто забывает. Все настройки на таймаут (8_0_17_3) или таймаутСОМ(8_1_6_1) не помогают. все новости в сканопус 2016 года касаются работы с двумерными ШК и возможно кирилицей в QR кодах. Про это написано но сам не проверял. Грустно как-то. На самом сканере есть настройка программируемой задержки при передаче пакета, но это не в каждом сканере, а мы используем несколько разных моделей.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".