Часто пользователи сталкиваются с необычным поведением программы 1С: при быстром вводе числовых данных, например, количества товара в документе реализации, система на мгновение "задумывается", а затем добавляет в табличную часть новую строку с тем же товаром. Это создает неудобства и замедляет работу. Проанализируем, почему так происходит и как это исправить.
Основная и наиболее вероятная причина такого поведения — подключенный к компьютеру сканер штрих-кодов, работающий в режиме эмуляции клавиатуры (также известный как "в разрыв клавиатуры" или "keyboard wedge"). Давайте разберемся, как это работает и какие есть способы решения.
Сканеры штрих-кодов могут подключаться к 1С двумя основными способами:
ОбработкаВнешнегоСобытия. Этот способ надежно отделяет ввод с клавиатуры от ввода со сканера.Проблема возникает именно в первом случае. Когда опытный пользователь очень быстро набирает цифры на клавиатуре (особенно на цифровом блоке), скорость ввода может оказаться сопоставимой со скоростью передачи данных от сканера. Система 1С ошибочно идентифицирует этот ввод как сканирование штрих-кода и добавляет новую строку, пытаясь найти товар по введенным цифрам.
Рассмотрим несколько способов решения этой проблемы, от самых простых до наиболее надежных.
Это самый быстрый способ, который может помочь без изменения настроек самого сканера. Он заключается в корректировке параметров, по которым 1С пытается отличить ручной ввод от машинного.
Порядок действий:
Важно: Этот метод является компромиссом и может не всегда работать идеально, особенно если пользователи вводят данные с разной скоростью.
Это более надежный способ заставить 1С однозначно распознавать данные от сканера. Идея в том, чтобы сканер перед отправкой цифр штрих-кода посылал специальный символ или комбинацию клавиш (префикс), которую пользователь случайно не нажмет.
Разберем по шагам:
После такой настройки обработчик штрих-кода в 1С будет срабатывать только тогда, когда получит последовательность символов, начинающуюся с префикса F7. Проблема самопроизвольного добавления строк при быстром ручном вводе будет полностью решена.
Этот метод полностью исключает путаницу, так как физически разделяет потоки данных от клавиатуры и сканера. Он требует чуть больше технических действий, но обеспечивает максимальную стабильность работы.
Порядок действий:
Теперь сканер будет работать через механизм внешних событий, и 1С никогда не спутает его данные с ручным вводом.
Важный нюанс: при использовании USB-сканеров в режиме эмуляции COM-порта иногда возникает проблема "плавающих" портов. Если вы переключите сканер в другой USB-разъем, Windows может назначить ему новый номер COM-порта, и сканер в 1С перестанет работать. Для решения этой проблемы системные администраторы могут жестко привязать конкретное USB-устройство к номеру порта через реестр Windows.
Для этого нужно:
VID и PID. Например: USB\VID_11CA&PID_0207.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags.IgnoreHWSerNum<VID><PID> (без разделителей, например, IgnoreHWSerNum11CA0207) и значением 01.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags]
"IgnoreHWSerNum11CA0207"=hex:01
Эта настройка заставит Windows всегда назначать этому устройству один и тот же COM-порт, вне зависимости от того, в какой USB-разъем оно подключено.
Если ни один из вышеперечисленных способов не решил проблему, стоит обратить внимание на исходное замечание автора темы о "непродолжительном зависании". Возможно, проблема не только в сканере, но и в производительности самой конфигурации. В момент изменения количества в строке могут запускаться "тяжелые" обработчики событий, которые вызывают задержку и некорректную обработку дальнейшего ввода. В этом случае программисту 1С следует использовать "Замер производительности" в Конфигураторе, чтобы найти и оптимизировать проблемные участки кода, выполняющиеся при изменении данных в табличной части документа.