Штрих-кодирование документов

Печать штрих-кода на накладных документов, открытие этих документов по штрих-коду. Не требует изменения конфигурации.

Комплект состоит из двух частей: универсальная накладная с ШК на «почти» универсальном макете печатной формы и перехватчик события от сканера.

Должна быть универсальна, тестировалась на КА 1.1 и УТ 10.3 (обычные формы) на товарно-номенклатурных документах.

 

1. Накладная (запуск как обработки с выбором документа или как внешней печатной формы):

генерирует штрихкод в формате EAN13: первая цифра «1», далее 3 следующих  по типу документа, далее 4 — дата документа, 1 — префикс номера, 3 — сам номер и последняя 1 — контрольный символ. Цифр мало, документов много, ШК может повторятся (будут открыты все найденные документы). Кого не устроит — делайте EAN128. Макет оптимизирован под номенклатурные документы КА/УТ. Рекомендация: в идеале по аналогии надо или делать индивидуальные печатные формы, или менять типовые (гиморно, не везде будет работать из-за Active-X. Способ кодирования подбирался под мои личные нужды — допускаю существование более удачных вариантов. Дизайн макета и его состав — аналогично.

2. Обработчик:

Выполнен в виде обычной внешней обработки: запустили — начали сканировать. После открытия форму можно закрыть! т.к. при закрытии отключение от СерверТО выполняется только при остановленном сканировании (возможный баг платформы? — после закрытия форма продолжает получать события и их обрабатывать). Если найден подходящий документ — он будет открыт. Рекомендация: перенести форму в «ОбщиеФормы», добавить ее открытие и сразу закрытие «ПриНачалеРаботыСистемы()», а экспортные процедуры перенести в свой ОбщийМодуль

3. Не забудьте настроить сканер — требуются драйверы с ИТС «1С: Печать штрихкодов» и «1С: Сканер штрихкода»

11 Comments

  1. Re:аниматор

    EAN13 не вариант для документов. Проходил это дело.

    Для расширения кругозора рекомендую глянуть на модуль штрих кодирования документов в УТ 11, там ШК по уникальному идентификатору документа что в итоге без повторений.

    P.S. можно сделать внешние печатные формы с использованием штрих кодирования из УТ 11 без изменения типовой конфигурации КА 1.1 и УТ 10.3.

    Reply
  2. dvv01

    1. Добавлена универсальная ПФ с формой на регистрацию.

    2. EAN13 выбран по личным соображениям. code128/ean128 — дело вкуса, переделать легко. Код по УИН не катит — в моем случае куча разношерстных баз с обменами — при переносе документов разные УИНы, и такой вариант не заработал.

    Рассматривались еще два варианта:

    Допил типового РС.Штрихкода (расширение типов Владельца) или свой аналогичный регистр. Генерация и запись ШК по подписке на события «ПриЗаписиДокумента»: много лишней возни с разнесенными конфами, допилы обменов по самому регистру и по фильтрации ненужных документов, которые могут поехать с ним «по ссылке» и … задвоения ШК после обмена.

    (1) можно сделать внешние печатные формы

    см. Рекомендации — именно это и писал. Предложенный вариант «на любителя» (то бишь «лентяя») ибо очевидно, что «Универсальная» ПФ ну ни как не сможет тягаться с персональной.

    Reply
  3. dvv01

    (1) Re:аниматор, EAN13 не для документов

    12 цифр, даже 11 цифр + префикс + КС.

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

    Reply
  4. Re:аниматор

    Так то в УТ 11, ШК на основе Code39, вполне достаточно, 128 не нужно. EAN 13 точно не вариант.

    Reply
  5. dvv01

    (4) 39, 128 — это не очень длина кода 🙂 — длина кода может быть произвольной, сколько нужно. Большинство сканеров, модули 1С работают с ean8, ean13, ean128, code39, code129 — код можно не переписывать вообще (вопрос только в контрольном символе и использованию латинских букв. Вопрос в том, как будет выглядеть код из 36 символов, и какова его устойчивасть к скрапкам, замятинам… хотя еще шесть разрядов было бы в самый раз.

    В аттаче небольшая тестилка: перебирает все документы (или только выбранный), для каждого генерит штрихкод, по которому выбирает «исходники». Если есть «двойные» — показывает. Медленно, долго, неоптимально, но для тестирования алгоритма составления штрихкода пойдет.

    Reply
  6. help1Ckr

    сами подумываем о штрихкодировании документов. Вообще хорошая тема.

    Reply
  7. lsnr

    Подойдет ли данная обработка для печати штрих-кода в формате EAN128 ?

    Reply
  8. dvv01

    (7) lsnr,

    сходу — нет, потребуются минимальные переделки:

    1. указать, где необходимо, иной формат кода в явном виде

    2. переделать алгоритм перерасчета:

    в EAN13 у меня используется только 11 цифр (+выделенный префикс «1» для назначения штрихкода («2» — товар, «3» — весовой товар, «7» — карты,…) +контрольный символ EAN13), в которых в сжатом виде закодированы тип документа, его номер и дата — в EAN128 (code38…) другая длина кода, по-другому рассчитывается контрольный символ — с учетом этого все остальное не изменится 🙂

    В принципе, формат кода может быть любой, при неограниченных по длине можно однозначно идентифицировать и искать любые документы (у меня тут есть некоторые ограничения из-за нехватки цифр). Неплохим вариантом будет внутренний УИД (36 символов), но и тут есть ньюансы, если используются распределенные базы или обмены — нужно смотреть как синхонизируются документы в правилах обмена (обычно или Тип/Номер/Год или Регистр соответствий как УИД в чужой базе)

    Код открыт, если что — уточняйте более детально

    Reply
  9. odineskin2

    (1) Re:аниматор, по идее EAN-13 будет достаточно для документов, хотя по уникальному идентификатору тоже выход но тогда нужна печать широкого штрих-кода типа PDF-417

    Reply
  10. dvv01

    УИД — 32 или 36 символов, соответственно подойдет любой штрих-код соответствующий длины (из простейших это типа EAN128, code39).

    НО!

    если есть несколько узлов с обменами (УТ+БУ) сей вариант уже не годится пройдет. Остается тип документа + номер + дата (год — если нумерация в пределах года).

    Reply
  11. flintic

    Как на УПП 1.3 заставить ее работать? выдает ошибку «Поле объекта не обнаружено (ТипКода)».

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *