При быстром расширении торговой сети или добавлении новых рабочих мест кассиров (РМК) системные администраторы часто прибегают к копированию (клонированию) настроенного образа операционной системы с одного компьютера на другой. Это кажется отличным решением: все необходимые программы, включая платформу 1С, драйверы и утилиты, уже установлены и готовы к работе.
Однако при запуске 1С на таком «склонированном» компьютере часто возникают труднообъяснимые проблемы с торговым оборудованием. В частности, отказывается работать сканер штрихкодов, использующий стандартную компоненту 1С:Сканеры штрихкода (NativeApi). Сканер может успешно считывать данные в блокнот или даже в поисковую строку 1С, но при этом программа не обрабатывает внешнее событие и не находит нужный документ или товар автоматически. Проанализируем, почему так происходит, и разберем детальные методы исправления этой ситуации.
Выясним, как платформа 1С понимает, на каком именно физическом компьютере она запущена. При первом запуске системы на новом ПК платформа генерирует уникальный GUID (идентификатор клиента) и сохраняет его в файле настроек профиля пользователя Windows.
Этот файл называется 1cv8u.pfl (или 1cv8.pfl в зависимости от версии платформы) и располагается по пути:
%LocalAppData%\1C\1cv8\ (например, C:\Users\ИмяПользователя\AppData\Local\1C\1cv8\)
Внутри этого файла находится текстовая запись следующего вида:
{"Universal",
{"ClientID",
{"#",fc01b5df-97fe-449b-83d4-218a090e681e,ad7f6d3b-179f-4770-a2cc-0e9274d75e29},""}
}
Что происходит при клонировании диска:
Файл 1cv8u.pfl копируется на новый компьютер (например, на ПК 3) без изменений. В результате два или более физических компьютера в распределенной информационной базе (РИБ) работают под абсолютно одинаковым ClientID. Для системы 1С они выглядят как одно и то же рабочее место кассира.
Когда вы пытаетесь настроить торговое оборудование на ПК 3, настройки на ПК 2 начинают сбиваться, так как базы постоянно синхронизируются и затирают параметры друг друга. Драйверы оборудования впадают в конфликт, а сессии пользователей перехватывают управление оборудованием.
Как решить проблему дублирования ClientID:
%LocalAppData%\1C\1cv8\.1cv8u.pfl.%AppData%\Roaming\1C\1cv8\ и проверьте, нет ли там аналогичного файла настроек, при наличии — удалите его.ClientID для этого компьютера.Рассмотрим механизм работы 1С с внешними компонентами. При установке интеграционной библиотеки для сканера штрихкодов платформа копирует файлы драйвера во внутренний каталог профиля пользователя:
%AppData%\Roaming\1C\1cv8\ExtCompT\ (например, C:\Users\ИмяПользователя\AppData\Roaming\1C\1cv8\ExtCompT\)
В этой папке хранятся файлы динамических библиотек (например, ScanOPOSNative.dll) и специальный файл манифеста — registry.xml. Этот файл содержит информацию о зарегистрированных версиях компонент, их разрядности и уникальных идентификаторах классов.
При переносе образа операционной системы пути к файлам, права доступа пользователей или даже разрядность установленной платформы 1С могут измениться. Например, на старом ПК использовалась 32-разрядная платформа 1С, а на новом запустили 64-разрядную. В этом случае 32-битная библиотека драйвера не сможет загрузиться в процесс 1С, но система будет считать, что драйвер уже установлен, так как запись о нем присутствует в файле registry.xml.
Попытка просто вручную «перетереть» файлы DLL в папке ExtCompT часто приводит к ошибкам инициализации оборудования.
Разберем по шагам правильный алгоритм очистки драйверов:
ExtCompT по пути %AppData%\Roaming\1C\1cv8\ExtCompT\.%LocalAppData%\1C\1cv8\%AppData%\Roaming\1C\1cv8\ibases.v8i удалять не нужно.
Проанализируем ситуацию, когда сканер успешно считывает штрихкоды в обычный текстовый блокнот Windows или в поисковую строку 1С, но сама программа не реагирует на сканирование должным образом. Это означает, что сканер работает в режиме эмуляции клавиатуры (HID-режим), но при этом нарушены правила передачи сигналов.
Если сканер работает как клавиатура, то при сканировании штрихкода он просто быстро эмулирует нажатие клавиш. Для того чтобы 1С поняла, что эти символы ввел именно сканер (а не пользователь руками набрал их с огромной скоростью), драйвер оценивает временные задержки между приходящими символами. Если операционная система компьютера перегружена или работает нестабильно после клонирования, интервалы между символами увеличиваются. 1С перестает воспринимать этот поток как единое внешнее событие сканирования.
Кроме того, в режиме клавиатуры сканирование сработает только тогда, когда фокус ввода в программе уже находится в активном поле (например, открыта строка поиска). Если фокус потерян, сканирование произойдет «в пустоту».
Важность настройки суффикса:
Чтобы 1С понимала, где заканчивается штрихкод, сканер должен посылать управляющий символ возврата каретки (Enter). В терминах торгового оборудования это называется суффиксом #13 (Carriage Return). Если сам физический сканер не запрограммирован на отправку этого суффикса, он вставит цифры штрихкода в активное поле, но команда поиска или подтверждения ввода в 1С не выполнится.
Если у вас нет возможности установить драйверы виртуального COM-порта, выполните настройку в режиме клавиатуры:
13 или 'CR'.Использование режима эмуляции COM-порта полностью избавляет от проблем с фокусом ввода и скоростью передачи символов. В этом режиме драйвер 1С постоянно прослушивает выделенный порт компьютера, и сканирование штрихкода мгновенно открывает или находит нужный документ в программе, в каком бы месте интерфейса ни находился курсор.
Выполним перевод сканера в COM-режим по шагам:
USB Serial Port (COM3) или виртуальный порт с названием бренда вашего сканера (Honeywell, Zebra, Mertech, Атол и т.д.).
Если устройство отображается с желтым восклицательным знаком в разделе «Другие устройства», скачайте и установите драйвер виртуального COM-порта (Virtual COM Driver) с официального сайта производителя вашего сканера.
COM3).COM3).Выполнив указанные шаги по очистке идентификатора ClientID, сбросу кэша внешних компонент в ExtCompT и правильному программированию суффиксов или портов самого сканера, вы гарантированно запустите торговое оборудование на любом количестве клонированных рабочих мест.