Комплект состоит из двух частей: универсальная накладная с ШК на «почти» универсальном макете печатной формы и перехватчик события от сканера.
Должна быть универсальна, тестировалась на КА 1.1 и УТ 10.3 (обычные формы) на товарно-номенклатурных документах.
1. Накладная (запуск как обработки с выбором документа или как внешней печатной формы):
генерирует штрихкод в формате EAN13: первая цифра «1», далее 3 следующих по типу документа, далее 4 — дата документа, 1 — префикс номера, 3 — сам номер и последняя 1 — контрольный символ. Цифр мало, документов много, ШК может повторятся (будут открыты все найденные документы). Кого не устроит — делайте EAN128. Макет оптимизирован под номенклатурные документы КА/УТ. Рекомендация: в идеале по аналогии надо или делать индивидуальные печатные формы, или менять типовые (гиморно, не везде будет работать из-за Active-X. Способ кодирования подбирался под мои личные нужды — допускаю существование более удачных вариантов. Дизайн макета и его состав — аналогично.
2. Обработчик:
Выполнен в виде обычной внешней обработки: запустили — начали сканировать. После открытия форму можно закрыть! т.к. при закрытии отключение от СерверТО выполняется только при остановленном сканировании (возможный баг платформы? — после закрытия форма продолжает получать события и их обрабатывать). Если найден подходящий документ — он будет открыт. Рекомендация: перенести форму в «ОбщиеФормы», добавить ее открытие и сразу закрытие «ПриНачалеРаботыСистемы()», а экспортные процедуры перенести в свой ОбщийМодуль
3. Не забудьте настроить сканер — требуются драйверы с ИТС «1С: Печать штрихкодов» и «1С: Сканер штрихкода»
EAN13 не вариант для документов. Проходил это дело.
Для расширения кругозора рекомендую глянуть на модуль штрих кодирования документов в УТ 11, там ШК по уникальному идентификатору документа что в итоге без повторений.
P.S. можно сделать внешние печатные формы с использованием штрих кодирования из УТ 11 без изменения типовой конфигурации КА 1.1 и УТ 10.3.
1. Добавлена универсальная ПФ с формой на регистрацию.
2. EAN13 выбран по личным соображениям. code128/ean128 — дело вкуса, переделать легко. Код по УИН не катит — в моем случае куча разношерстных баз с обменами — при переносе документов разные УИНы, и такой вариант не заработал.
Рассматривались еще два варианта:
Допил типового РС.Штрихкода (расширение типов Владельца) или свой аналогичный регистр. Генерация и запись ШК по подписке на события «ПриЗаписиДокумента»: много лишней возни с разнесенными конфами, допилы обменов по самому регистру и по фильтрации ненужных документов, которые могут поехать с ним «по ссылке» и … задвоения ШК после обмена.
(1) можно сделать внешние печатные формы
см. Рекомендации — именно это и писал. Предложенный вариант «на любителя» (то бишь «лентяя») ибо очевидно, что «Универсальная» ПФ ну ни как не сможет тягаться с персональной.
(1) Re:аниматор, EAN13 не для документов
12 цифр, даже 11 цифр + префикс + КС.
В моем случае на 200000 документов у попало всего 79 повторений. Если в чьем-то варианте все хуже — можно изменить способ генерации кода (убрать учет префикса номера и одну цифирь номера, но детализировать на два разряда дату, учитывая секунды. Еще есть три разряда типа докуметна (я генерирую число по имени метаданных) — если видов документов меньше 100 — это еще один разряд. Первый символ тоже не обязательно делать строго «1». Теретически двенадцати разрядов должно хватить на все случаи жизни, нужно только придумать как…)
Так то в УТ 11, ШК на основе Code39, вполне достаточно, 128 не нужно. EAN 13 точно не вариант.
(4) 39, 128 — это не очень длина кода 🙂 — длина кода может быть произвольной, сколько нужно. Большинство сканеров, модули 1С работают с ean8, ean13, ean128, code39, code129 — код можно не переписывать вообще (вопрос только в контрольном символе и использованию латинских букв. Вопрос в том, как будет выглядеть код из 36 символов, и какова его устойчивасть к скрапкам, замятинам… хотя еще шесть разрядов было бы в самый раз.
В аттаче небольшая тестилка: перебирает все документы (или только выбранный), для каждого генерит штрихкод, по которому выбирает «исходники». Если есть «двойные» — показывает. Медленно, долго, неоптимально, но для тестирования алгоритма составления штрихкода пойдет.
сами подумываем о штрихкодировании документов. Вообще хорошая тема.
Подойдет ли данная обработка для печати штрих-кода в формате EAN128 ?
(7) lsnr,
сходу — нет, потребуются минимальные переделки:
1. указать, где необходимо, иной формат кода в явном виде
2. переделать алгоритм перерасчета:
в EAN13 у меня используется только 11 цифр (+выделенный префикс «1» для назначения штрихкода («2» — товар, «3» — весовой товар, «7» — карты,…) +контрольный символ EAN13), в которых в сжатом виде закодированы тип документа, его номер и дата — в EAN128 (code38…) другая длина кода, по-другому рассчитывается контрольный символ — с учетом этого все остальное не изменится 🙂
В принципе, формат кода может быть любой, при неограниченных по длине можно однозначно идентифицировать и искать любые документы (у меня тут есть некоторые ограничения из-за нехватки цифр). Неплохим вариантом будет внутренний УИД (36 символов), но и тут есть ньюансы, если используются распределенные базы или обмены — нужно смотреть как синхонизируются документы в правилах обмена (обычно или Тип/Номер/Год или Регистр соответствий как УИД в чужой базе)
Код открыт, если что — уточняйте более детально
(1) Re:аниматор, по идее EAN-13 будет достаточно для документов, хотя по уникальному идентификатору тоже выход но тогда нужна печать широкого штрих-кода типа PDF-417
УИД — 32 или 36 символов, соответственно подойдет любой штрих-код соответствующий длины (из простейших это типа EAN128, code39).
НО!
если есть несколько узлов с обменами (УТ+БУ) сей вариант уже не годится пройдет. Остается тип документа + номер + дата (год — если нумерация в пределах года).
Как на УПП 1.3 заставить ее работать? выдает ошибку «Поле объекта не обнаружено (ТипКода)».