использование «читать часть штрих-кода»

Страницы: 1
RSS
использование «читать часть штрих-кода», Обсуждение: использование «читать часть штрих-кода»
 
ТСД Chiperlab 8001, прошивка 2.41.0-EL15

структура считываемого штрих-кода накленного на коробку следующая
ППКККГГВВВВВС
ПП  - префикс
ККК - код продукции
ГГ  - количество продукции в коробке
ВВВВВ - вес коробки

нужна сумма по  ВВВВВ

использую работу с весовым кодом
При маске кода товара 5
в вес попадает ГГВВВВВ
для поля вес делаю настройку «читать часть штрих-кода» с 8 позиции 5 символов, т. е. выделяю из ГГВВВВВ только ВВВВВ
все прекрасно суммирует
только каждую этикетку сканировать приходится два раза: 1 раз поиск товара и выделение веса, 2 раз    обрезание кода. А хотелось бы за одно считывание.

Вобщем можно читать только штрихкод и нашинковать програмно и сумму по ГГ и ВВВВВ программно суммировать, но оператору терминала нужно видить общий вес отгружаемого по накладной товара, не выгружая данные.

Возможно ли реализовать данный функционал используя только одно считывание?

1126_2menu.AGX

 
Ну если только в этом проблема, то решить просто. Первую строку Тип делаете "Переменная1", а в 5 строке Источник указываете тоже "Переменная1". По кнопке "Еще" в поле "Авто ввод" выбираете "Авто(клав)" и все. Если нужно еще суммировать ГГ  - количество продукции в коробке, то также ставить источник "Переменная1", а выделяете с 6 позиции 2 символа.
Есть одно но. В данном случае вес у Вас в кг, а не в граммах, т.е. на 1000 не делится.
 
Сделал согласно указаниям. Задача не решилась. Все работает как обычный весовой код
т.е. ГГВВВВВ считает весом и его и суммирует.

Пробовал экспериментировать не используя весовой код.
В первой строчке указал читать только часть кода с 1 пять символов,
нормально работает в базе находит, только для выделение веса нужно еще раз считать.
Я так понял что "читать часть кода" работает как именно получить со сканера, т.е. из переменной он его не возьмет.

Может что-то не так делаю или возможно еще какие нибудь варианты есть?
Возможно ли доработать прошивку, чтобы указывалась не только маска кода, но и маска веса?


1140_2menu1.AGX

 
Исправил и отправил Вам по почте. Дайте пожалуйста знать, помогло ли. В понедельник выложу релиз на сайт.
 
ТСД Chiperlab 8001, прошивка 2.41.0-FF19

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

есть подозрение, что это трагическое совпадение настроек: использование переменной и автоввода.
и на самом деле терминал отрабатывает ошибку возвращается на поле, где произошла ошибка автоматом вводит повторно неправильный код и подтверждает его автовводом, опять генерирует ошибку и так уходит в бесконечный цикл.
Но согласно вышеописанным требованиям использование автоввода позволяет получить все поля за одно считывание и без него вроде как не обойтись.

Верно ли мое предположение по отработке ошибки?
Есть ли способ обойти эту проблему на уровне построения задачи?


1152_2menu_забой.AGX

 
Именно так и есть!
Изменять логику я не буду, поэтому объясню. Дело в том, что данная ошибка обрабатывается на странице "База Данных". Строка "Если не найдено в БД". Вот тут мы и устанавливаем рекцию на событие "не найдено в БД". Выбирите необходимое тут и проблема уйдет.
Поле же "если случилась ошибка" не отменяет само событие ошибки, а отменяет реакцию на нее - переход на другое меню/форму.
 
из режимов "Если не найдено в базе данных"
подошел бы режим "предупредить и очистить экран", но в этом режиме наблюдается также бесконечный цикл обработки ошибки, возможно потому что экран очищается, а переменная нет
режим "очистить экран" отрабатывает и клавиатурой можно переместится в первое поле и перечитать код, но есть минусы: нет ни текстового, ни звукового перемещения, что может ввести в заблуждение оператора, который может начать сканировать другую коробку посчитав, что предыдущую  он уже отсканировал.

в итоге обработку ошибки реализовал переходом в другую форму с сообщением "Нет в базе!" там сравнением с переменной генерю ошибку с дальнейшим возвратом по Enter в исходную форму для продолжения сканирования

Спасибо за наводку!

Выкладываю задачу, может кому понадобится - форма1 для сканирования, форма3 для обработки ошибки на форме1

1155_2menu_забой.AGX

 
На то я Вам пробную и высылал. Завтра посмотрю "предупредить и очистить". Должно очищать. И очищение переменной тут не при чем - ведь после предупрежденеия терминал должен очистить форму и вернуться к вводу на первой строке.
А вот возврат с формы 3 можно было сделать проще - сделать всего одну строку с типом Пауза и в поле "Следующая" выбрать форму 1. Так правильней. Вообще подумываю сделать пункт вернуться на прежнюю. Чтоб после обработки ошибки можно было вернуться туда, откуда пришел.
 
Цитата

А вот возврат с формы 3 можно было сделать проще - сделать всего одну строку с типом Пауза и в поле "Следующая" выбрать форму 1.
так может и проще, но мне, нужно было генерить ошибку со звуковой сигнализацией ошибки
поскольку оператор сканирует коробки обычно не глядя в терминал и посмотрит на экран терминал, если услышит двойной звуковой сигнал ошибки
может можно не использовать сравнение, а генерить ошибку как-то по другому?

Цитата

Вообще подумываю сделать пункт вернуться на прежнюю. Чтоб после обработки ошибки можно было вернуться туда, откуда пришел.
вот это нужная вещь
в моем случае две формы на чтение и соответственно  2 формы на обработку ошибки, поскольку с первого обработчика возврат на форму1, а со второго возврат на форму2
а если было бы 6 форм на чтение, то на обработку ошибок осталось бы только 4 формы
Страницы: 1