Как реализовать заполнение поля Менеджер или Ответственный в 1С:Управление торговлей 11 с помощью сканера штрихкодов

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В типовой конфигурации «1С:Управление торговлей, редакция 11» (УТ 11) автоматическое заполнение ответственного лица или менеджера в документах (например, в «Заказе клиента» или «Реализации товаров и услуг») путем сканирования штрихкода не предусмотрено «из коробки». Однако такая функциональность крайне востребована в магазинах и на складах для ускорения работы. Рассмотрим подробно, как реализовать этот механизм с помощью расширения и штатных регистров системы.

Анализ штатных возможностей и постановка задачи

В современных релизах УТ 11 (начиная с 11.5) существует регистр сведений ИдентификационныеДанныеПользователей. Он предназначен для связи пользователя системы со штрихкодом или магнитной картой. Этот механизм штатно работает в Рабочем месте кассира (РМК) для авторизации или смены продавца, но в обычных документах он не задействован. Наша задача — проанализировать путь поступления данных от сканера в форму документа и научить систему узнавать штрихкод сотрудника.

Способ 1: Программная доработка через расширение (рекомендуемый)

Для того чтобы не изменять типовую конфигурацию и сохранить возможность легкого обновления, мы будем использовать механизм расширений. Разберем по шагам процесс реализации.

Шаг 1. Перехват события сканирования. Все современные конфигурации на базе БСП (Библиотеки стандартных подсистем) используют единый механизм обработки штрихкодов. В форме документа за это обычно отвечает процедура ПодключаемоеОборудованиеШтрихкодОбработка. Нам необходимо создать расширение и добавить в него обработчик «Вместо» или «После» для этой процедуры.

Шаг 2. Разработка алгоритма идентификации. Проанализируем логику: когда сканер считывает код, данные попадают в массив штрихкодов. Нам нужно проверить, принадлежит ли этот код сотруднику. Чтобы система не путала штрихкод товара со штрихкодом менеджера, выясним причину использования префиксов. Рекомендуется использовать ШК стандарта EAN-13, начинающиеся на «2» (внутренние коды организации), например, диапазон 290...299.

Рассмотрим пример кода, который можно разместить в расширении для формы документа:


&НаКлиенте
Процедура Расш1_ПодключаемоеОборудованиеШтрихкодОбработка(ДанныеШтрихкода, Отказ)
    
    Для Каждого ТекущийШтрихкод Из ДанныеШтрихкода Цикл
        
        ШтрихкодСтрокой = ТекущийШтрихкод.Штрихкод;
        
        // Проверяем, начинается ли код на наш префикс (например, 29)
        Если Лев(ШтрихкодСтрокой, 2) = "29" Тогда
            
            // Ищем сотрудника по штрихкоду на сервере
            НайденныйМенеджер = НайтиМенеджераПоШтрихкодуНаСервере(ШтрихкодСтрокой);
            
            Если ЗначениеЗаполнено(НайденныйМенеджер) Тогда
                Объект.Менеджер = НайденныйМенеджер;
                ПоказатьОповещениеПользователя("Успешно", , "Менеджер изменен на: " + Строка(НайденныйМенеджер));
                Возврат; // Прекращаем обработку, так как это не товар
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЦикла;
    
    // Если это не код менеджера, вызываем стандартную обработку (товара)
    ПродолжитьВызов(ДанныеШтрихкода, Отказ);
    
КонецПроцедуры

Способ 2: Использование регистра идентификационных данных

Чтобы решение было архитектурно правильным, данные о штрихкодах сотрудников не стоит «зашивать» в код или хранить в доп. реквизитах справочника ФизическиеЛица. Посмотрим на ситуацию с точки зрения использования регистра ИдентификационныеДанныеПользователей. Это позволит одному сотруднику иметь и карту, и штрихкод.

При поиске менеджера на сервере следует использовать следующий запрос:


&НаСервере
Функция НайтиМенеджераПоШтрихкодуНаСервере(Знач Штрихкод)
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ИдентификационныеДанныеПользователей.Пользователь КАК Менеджер
        |ИЗ
        |   РегистрСведений.ИдентификационныеДанныеПользователей КАК ИдентификационныеДанныеПользователей
        |ГДЕ
        |   ИдентификационныеДанныеПользователей.ХешДанных = &ХешДанных";
    
    // В УТ 11 данные часто хранятся в виде хеша для безопасности
    // Если используется простой штрихкод, поиск идет по полю Штрихкод (зависит от версии БСП)
    Запрос.УстановитьПараметр("ХешДанных", Штрихкод); 
    
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Менеджер;
    КонецЕсли;
    
    Возврат Неопределено;
    
КонецФункции

Нюансы работы со сканером (HID vs COM)

Проанализируем техническую сторону подключения оборудования. Если сканер работает в режиме эмуляции клавиатуры (HID), данные просто «впечатываются» в то поле, где стоит курсор. В этом случае программный перехват события может не сработать корректно, если фокус не на форме. Рекомендуем перевести сканер в режим эмуляции COM-порта (через сканирование специального управляющего штрихкода из инструкции к сканеру).

В режиме COM-порта драйвер 1С генерирует «Внешнее событие», которое система гарантированно обрабатывает процедурой ОбработкаОповещения или ПодключаемоеОборудованиеШтрихкодОбработка, даже если курсор не установлен в конкретное поле. Это делает подбор менеджера стабильным и быстрым.

Особенности реализации для РМК

Если ваша задача ограничена розничными продажами через интерфейс Чека ККМ, выясним, что доработка может и не понадобиться. В настройках РМК (Раздел «Продажи» — «Настройки РМК») можно включить опцию «Использовать идентификационные карты». После этого при нажатии кнопки выбора продавца или при сканировании карты/ШК в момент оформления чека система будет автоматически подставлять сотрудника в строку или в шапку документа.

Важный момент: Для обычных документов (Заказ клиента) эта настройка не работает, поэтому там актуален Способ 1.

Практические советы по формированию бейджей

При создании штрихкодов для сотрудников проанализируем ситуацию с выбором формата:

  1. EAN-13: Самый распространенный. Используйте префикс 2, чтобы не пересекаться с глобальными кодами товаров. Пример: 2900000000015.
  2. QR-коды: Позволяют зашифровать больше данных. Можно добавить префикс в саму строку, например EMP-001. В коде 1С тогда достаточно проверить: Если Лев(Штрихкод, 4) = "EMP-" Тогда....
  3. Печать: Штрихкод на бейдже должен быть достаточно крупным и напечатанным на матовой бумаге, чтобы сканер не «бликовал» от ламинации.

Подведем итог: Реализация подбора автора по штрихкоду требует минимальных усилий программиста (около 15-30 минут на создание расширения). Главное — правильно определить процедуру перехвата события в форме и использовать штатный регистр идентификационных данных для хранения кодов сотрудников. Это значительно повышает дисциплину персонала и исключает ошибки при ручном выборе ответственного из огромного списка пользователей.

← На главную