Механизм работы с одномерным штрих-кодом в независимом веб-интерфейсе

02.03.20

Интеграция - Сканер штрих-кода

В продолжение предыдущей публикации приведу пример работы с одномерным штрих-кодом в простом веб-интерфейсе, посредством сканера одномерного цифрового штрих-кода.

Скачать исходный код

Наименование Файл Версия Размер
Механизм работы с одномерным штрих-кодом в независимом веб-интерфейсе:
.rar 3,65Kb
0
.rar 3,65Kb Скачать

Дошли руки, так что если есть интерес, то попробуем расписать механизм по частям. И начнём с механизма получения данных от сканера штрих-кода.

Если вкратце, то суть состоит в том, чтобы html-документ, при получении данных от клавиатуры, выполнял необходимый нам функционал.

В приложенном архиве три файла: index.htm (сам пользовательский интерфейс с данными), index.js (программный код обработчиков) и index.pdf (в нём три штрих-кода, использованные в файле index.htm).

Для проверки механизма следует извлечь файлы из архива в произвольный каталог и открыть браузером файл index.htm

Разумеется, браузер, в котором будет выполняться проверка, должен быть "свежим", т.е. "понимать" стандарты html-5. И, само собой, не должно быть запрещено выполнение java script. Впрочем, если не идёт речь о какой-либо экзотике или раритетах под старыми операционными системами, то вышеуказанное является само собой разумеющимся.

При этом к компьютеру (либо мобильному устройству, с которого будет открываться страница) должен быть подключён сканер штрих-кода в режиме клавиатуры. Это может быть как usb-подключение (к мобильным устройствам - посредством otg-адаптера), так и беспроводное соединение: в зависимости от модели сканера.

Выглядеть загруженная страница должна следующим образом:

Штрих-коды для проверки можно распечатать из файла index.pdf

Результат сканирования, в данном случае, выглядит следующим образом:

Разумеется, это лишь пример для демонстрации механизма.

Итак, перейдём к описанию.

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

В данном случае все данные уже включены в тело .htm файла во вставке кода: это массив "var docs = […]", содержащий интересующие нас объекты. Это не обязательный механизм, но он допустим. В общем случае, если не говорить о детальных данных, несколько тысяч записей вида "штрих-код, ключ, представление" будут в таком виде занимать несколько сотен килобайт, что позволяет работать с данными полностью на стороне клиента.

В файле index.js реализована привязка события: "document.onkeypress = keypress_action", где в "keypress_action" реализован механизм сбора данных, поступающих с клавиатуры (а сканер штрих-кода в данном случае воспринимается системой именно как клавиатура, последовательно передающая коды символов).

Функция выглядит следующим образом:

 

function keypress_action(e){
    let key_code = e.keyCode;
    if(key_code > 47 && key_code < 58){
        if(key_code == 48){res_code += '0'};
        if(key_code == 49){res_code += '1'};
        if(key_code == 50){res_code += '2'};
        if(key_code == 51){res_code += '3'};
        if(key_code == 52){res_code += '4'};
        if(key_code == 53){res_code += '5'};
        if(key_code == 54){res_code += '6'};
        if(key_code == 55){res_code += '7'};
        if(key_code == 56){res_code += '8'};
        if(key_code == 57){res_code += '9'};
        if(timer_eraser != undefined){
            clearTimeout(timer_eraser);
        }
        timer_eraser = setTimeout(eraser, 100);
    }
}

Т.е. входящие символы, если они являются цифрами, функция конкатенирует в переменную "res_code". Для того, чтобы изолировать вводимые в ручном режиме цифры, подключён обработчик ожидания с функцией "eraser", которая очищает значение переменной "res_code" каждые (в данном случае) десять миллисекунд. При этом при вводе нового символа выполнение данной функции прекращается для исключения удаления рабочих данных.

В данном примере функция очистки переменной со штрих-кодом совмещает в себе механизм поиска документа по штрих-коду и отображения данных.

function eraser(){
    let tmp = Number(res_code).toString();
    let work_table = document.getElementById('work_table');
    let rows = work_table.getElementsByTagName('tr');
    let id_exist = false;
    let found = false;
    docs.forEach(row => {
        if(row.sc == tmp){
            found = true;
            for (let tbl_row of rows){
                if(row.uid == tbl_row.id){
                    id_exist = true;
                }
            }
            if(!id_exist){
                let tr = document.createElement('tr');
                tr.id = row.uid;
                tr.doc = row.doc;
                tr.sum = row.cnt;
                tr.onclick = function(){
                    if(confirm('Удалить из списка ' + this.doc + '?')){
                        work_table.removeChild(this);
                        process_sum();
                    }
                }
                tr.innerHTML = '<td>' + row.doc + '</td><td>' + row.cnt + '</td>';
                
                if(rows.length == 0){
                    work_table.appendChild(tr);                    
                }
                else{
                    work_table.insertBefore(tr, rows[0]);
                }
                process_sum();
            }
        }
    });    
    res_code = '';
}

В приведённом примере использованы штрих-коды с усечёнными лидирующими (не значимыми) нулями, так что поступивший штрих-код преобразуется в число и затем снова в строку. Это не является необходимым, но в данном случае экономит трафик.

Приведённый в данном случае пример не является единственно возможным, однако он чрезвычайно прост для применения и без проблем может быть подключён к произвольному пользовательскому интерфейсу.

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

Веб-интерфейс

См. также

"Штрихкод-информер" - мобильный ТСД и прайс-чекер в смартфоне

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн. Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

2880 руб.

03.12.2018    55153    139    102    

162

Проверка товаров сканером штрихкода/ТСД для УТ11, КА2, ERP2, УНФ, БП3, Розница 2/ 3

Сканер штрих-кода Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Розница 3.0 Управленческий учет Платные (руб)

У вас возникал вопрос - Как быстро и правильно выполнить приемку товара в торговой точке? Как минимизировать ошибки при сборке заказа клиента? Текущая разработка способна помочь в решении данных проблем. Её назначение - проверка с помощью сканера штрих кода поступления и реализации товаров, заказов клиентов, заказов поставщикам, расходных и приходных ордеров, перемещений и возвратов.

2400 руб.

29.07.2020    34318    158    152    

131

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    92474    521    186    

298

Подсистема штрихкодирования серий номенклатуры для 1С:УТ 11.4/11.5 КА, ERP 2.4/2.5

Сканер штрих-кода Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Стандартные конфигурации ERP, КА, УТ 11 позволяют работать с штрихкодированием серий. Есть только одно суровое ограничение – на упаковке должна быть этикетка для номенклатуры и отдельно для серии. Во многих случаях это критически неудобно.

12000 руб.

19.04.2021    20938    58    35    

53

Конфигурация "Информационный киоск". Обработки выгрузки товаров для ТиС 9.2, УТ 10.3, УТ 11 (обмен данными с любой конфигурацией 1С 7.7, 8.х)

Оптовая торговля Розничная торговля Обмен между базами 1C Сканер штрих-кода Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Управленческий учет Платные (руб)

Конфигурация предназначена для организации offline доступа клиента (покупателя) к информации о товарах, услугах или дисконтных картах посредством сканирования штрих-кода. Основная цель – мгновенно предоставить наиболее актуальную информацию о цене, остатках, наименовании товара (услуги) или накоплениях, держателе, состоянии дисконтной карты.

1800 руб.

21.12.2014    59350    8    21    

20

Прайс-чекер. Розница (Россия, Казахстан)

Сканер штрих-кода Платформа 1С v8.3 1С:Розница 2 Абонемент ($m)

Простой и удобный прайс-чекер, работающий в режиме рабочего стола.

1 стартмани

28.11.2023    466    0    x-ynegve    0    

2

Прайсчекер для 1С (УНФ, УТ, Розница)

Сканер штрих-кода Платформа 1С v8.3 Управляемые формы 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Абонемент ($m)

Внешняя обработка (доработка) - прайсчекер для 1С (для следующих конфигураций УНФ 1.6 и 3.0, для УТ 11 и Розница 3.0), подойдет для Ритейла как полная альтернатива прайсчекеру, точнее, полноценная его замена с функцией озвучки цены.

3 стартмани

15.11.2023    653    8    usinfostart1c    2    

4
Оставьте свое сообщение