При сканировании товара у меня в документе первой позицией всегда вылетает товар, у которого единица не имеет штрих-кода. Удаляешь эту строчку, дальше сканирование проходит в штатном режиме, как и должно было бы быть. В чем причина - пока не могу разобраться. ТиС переписана конечно, но обработку внешних событий не трогали. Грешу на внешнюю библиотеку scanopos.dll а там - какие могут быть варианты, кто сталкивался с подобным и как решил?
(1) А отладчиком не пробовали пробежаться по коду? Посмотрите, что приходит со сканера. Возможно какие-нибудь префиксы есть в скане. Соответственно, либо программируйте сканер, либо изменяйте настройки компоненты.
(3) Настройки компоненты сканера находятся в "Сервис-Параметры"(у меня сканер сейчас не установлен). Порт, биты и т.д. Возможно, установлено 7 бит в "Количестве бит данных". Попробуйте поиграться со скоростью. Если установлено 115 кб, то это по моим наблюдениям слишком большое значение. Эти значения настроек 1С должны совпадать с аналогичными значениями порта в Windows.
(1) Прежде чем лезть в настройки компоненты (если они вообще есть), надо все-таки разобраться с кодом программы. Посмотри отладчиком, что происходит при первом сканировании.
Так все-таки, будет или нет ответ на вопрос: какой код ищется в программе при первом сканировании? Пустая строка, бессмысленный набор символов или реальный, но искаженный? А то так можно долго гадать вслепую.
Например, хоть это: убрать галку "Разрешить отключение этого устройства для экономии электроэнергии" с железки, через которую подключен сканер - может, система ее отключает, а потом она опаздывает с просыпанием на первом сканировании.
У меня стоит Windows XP на РМК и сервер 2003. Там такие функции у меня по умолчанию отключены. Мне кажется, что глюк именно в обрабатывающей библиотеке scanopos.dll
(8) Ууу, я правильно понял, что сканер подключен в терминале? Тогда это вообще вещь в себе, запасайтесь бубном и записывайтесь на курсы танцев.
Потому что в таком случае пробовать надо всё: и переключение режима сканера COM<->эмуляция клавиатуры, и разные драйвера, причем как на клиенте, так и на сервере, и какой вариант взлетит - ХЗ.
Кстати, на полпути решения проблемы автор уперся в точно такой же глюк: "первое сканирование передает в 1С пустой штрих код, а уже второе сканирование передает нормальный."
Чем закончилось - непонятно, но там хоть какая-то информация была сообщена: "пустой штрих код", а что там у вас приходит в ТиС, мы так и не узнали. Если хотите, чтобы вам помогали, то старайтесь писать то, о чем вас спрашивают, а не то, что вам кажется существенным. А то лично я уже сомневаюсь в эффективности своих советов. В том числе и этого. :-)
Если Событие = "BarCodeValue" Тогда
Если глПолучитьТоварПоШтрихкоду(Данные, ВремТовар, ВремЕдиница, ВремКоличество) <> 0 Тогда
АктивизироватьОбъект(ВремТовар);
ВыбратьТекущийЭлемент(ВремТовар,"");
ИначеЕсли глПолучитьТоварПоИД(Данные,глЗначениеПоУмолчанию("ОсновнойСклад"),глЗначениеПоУмолчанию("ОсновнаяФирма"),ВремТовар,ВремИД)<>0 Тогда
АктивизироватьОбъект(ВремТовар);
ВыбратьТекущийЭлемент(ВремТовар,ВремИД);
КонецЕсли;
// Обработка закончена. Готовы к получению нового штрихкода.
глСканерПосылкаДанных(1);
Иначе
глОбработкаВнешнегоСобытия(Источник, Событие, Данные);
КонецЕсли;
КонецПроцедуры // ОбработкаВнешнегоСобытия()
И даже когда вы подключаете сканер через порт клавиатуры вы указываете префикс или суффикс по которому дайвера перехватываю ввод клавиатуры и передают набранные символы как внешнее событие. Если у вас происходит просто набор символов в 1с то отрабатывают совсем другие процедуры и например в справочнике номенклатур такой способ в стандартной ТиС работать не будет(самое интересное что такой способ ввода не будет работать ни где кроме документа "чекккм"). Из выше следующего следует понимать что когда вы подключаете сканер драйверам глубоко по фене какой порт вы укажите эмулированный com или клавиатуру они просто передадут информацию как внешнее событие и сработает процедура ОбработкаВнешнегоСобытия() в модуле формы или глобальном модуле конфигурации. Следовательно я бы посоветовал автору темы просто подключить сканер через драйвера Атол и я уверен что это решит проблему. Как это сделать можно прочитать в документации к драйверам. http://www.atol.ru/link/file/71/ И подключение в терминале не требует ни каких бубнов и плясок, все отлично работает как с эмуляцией и указанием в подключении что надо подключать ком порты так и при подключении через порт клавиатуры.(Больше десятка довольных клиентов это могут подтвердить :) ) Удачи!
(15) 1. Атоловские драйвера подойдут только если сканер работает в режиме "в разрыв клавиатуры", а если режим "эмуляция COM-порта", то они бесполезны: установятся, но делать им просто нечего. Какой у вас там режим - мы не в курсе.
2. Дистрибутив последней бесплатной версии этих драйверов имеет название DTO6_2008_06_06.zip - найдете без труда.
(17) "Установлен" - еще не значит "работает". Основное его назначение - распознать введенный "с клавиатуры" штрих-код (набранная с определенной скоростью строка цифр плюс CR) и сэмулировать приход этой же строки уже из COM-порта, вызвав внешнее событие в 1С. И чем, по-вашему, ему заниматься, если сканер сам отдает информацию в COM-порт?
Ну, разве что генерировать внешнее событие для 1С, но у автора проблема явно не с событием, а со считываемым штрих-кодом.
Проблема решилась банально. Взялилсь атоловские драйвера 6 версии, заменились стандартные обработчики внешних событий на атоловские, настроились СУФФИКСЫ и все. Все заработало.