Простое штрихкодирование документов

09.07.10

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

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

Конфигурация "Торговля и склад". Хотелось сделать как можно проще и быстрее, и в тоже время надежно. На решение задачи ушло 1,5 часа. И так приступим....

У нас будет использоваться штрихкод EAN13. Создаем общий реквизит документов.

Тип - "Строка", длина - 13, отбор по реквизиту.

Добавляем в глобальный модуль процедуру:

//******************************************************************************
// глСформироватьШтрихкодДокумента(Конт)
//
// Параметры:
//  Конт - контекст документа для которого необходимо сформировать штрихкод
//    EAN13- реквизит документа содержащий штрихкод
// Возвращаемое значение:
//  Нет                 
//
// Описание:
//  На основании номера документа и вида документа формирует штрихкод в формате EAN
//
Процедура глСформироватьШтрихкодДокумента(Конт, EAN13) Экспорт
	
	Если ПустаяСтрока(EAN13) = 1 Тогда
		
		ПрефиксыДокументов = СоздатьОбъект("СписокЗначений");
		ПрефиксыДокументов.ДобавитьЗначение("001", "Реализация");
		ПрефиксыДокументов.ДобавитьЗначение("002", "СчетФактураВыданный");                
		// и т.д
		КодДокумента        = СокрЛП(Прав(Конт.НомерДок,7));
		КодВидаДокумента    = Строка(Константа.ПрефиксВидаДокумента) + ПрефиксыДокументов.Получить(Конт.Вид());
		
		Префикс = Прав(ДатаГод(Конт.ДатаДок), 2);
		
		ИспКолво = 10;
		
		Штрихкод = СимволыВЦифры(Прав(СокрЛП(КодДокумента+КодВидаДокумента), ИспКолво));
		Штрихкод = Префикс + глДополнитьСтрокуЛ(Штрихкод, "0", ИспКолво);
		
		EAN13 = Штрихкод + глКонтрольныйСимволEAN(Штрихкод, 13);
	КонецЕсли;
	
КонецПроцедуры // глСформироватьШтрихкодДокумента()

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

Процедура ПриЗаписи()
	//..............................
	глСформироватьШтрихкодДокумента(Контекст, EAN13);
КонецПроцедуры

В результате при первой записи документа ему будет присвоен штрихкод состоящий из следующих блоков:

  1. год документа (2 символа);
  2. семь цифр справа от номера документа;
  3. код вида документа (3 символа);
  4. контрольный символ;

Осталось только вставить в печатную форму объект ActiveBarcode и настроить необходимые свойства у него.

А вот и результат Smile

Штрихкод на печатной форме документа

Минус у данного подхода несомненно есть - при совпадении префикса  штучного (весового) товара и последних двух цифр года документа возможно создание одинаковых штрихкодов для этих разных объектов базы.

http://shkuraev.ru

См. также

Сканер штрих-кода Розничная торговля Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Обработка представляет собой аналог обработки обслуживания для подключения сканеров штрихкодов на базе драйверов от Атол к типовым конфигурациям 1С8. Как правило, интеграция сканера штрихкодов в конфигурациях 1С7.7 ограничивается подключением при старте системы внешней компоненты из поставки драйверов Атол и прописыванием во всех нужных местах ОбработкиВнешнегоСобытия() для реакции на считываемые штрихкоды. Настройки подключения сканера можно установить на дополнительной вкладке в меню Сервис \ Драйвера устройств ввода. К сожалению настройки эти надо производить непосредственно под сеансом конечного пользователя (и для каждого пользователя). Кроме того, они иногда слетают и приходится заново их настраивать. Устранить эти недочеты и призвана моя обработка. Тестировалось на версии драйвера торгового оборудования Атол 6.4.1.359, версия платформы 1С 7.7.027, конфигурация ТиС для Украины 036 (Хотя конфигурация не важна, общие процедуры и функции или объекты конфигурации не используются).

1 стартмани

26.03.2018    17948    9    Vortigaunt    0    

2

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

Драйвер торгового оборудования и приложение для Android, телефон или планшет в качестве стандартного штрихкод сканера для платформы 1С.

3 стартмани

29.11.2016    65115    215    dreamadv    119    

152

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

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

1800 руб.

21.12.2014    59971    8    21    

20

Сканер штрих-кода Системный администратор Программист Платформа 1С v7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Россия Абонемент ($m)

Обработка превращает ПК с запущенной 1С в информационный киоск для вывода информации о товаре при сканирования штрих-кода.

1 стартмани

22.10.2014    24250    10    etmarket    23    

3

Сканер штрих-кода Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Внешняя компонента Shakmaev, поможет распознать штрих-код, используя обычную веб камеру реализована под 1Сv7.7

1 стартмани

05.03.2014    25056    30    waizz    7    

6

Сканер штрих-кода Рабочее место Розничная торговля Пользователь Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Розничная и сетевая торговля (FMCG) Россия Бухгалтерский учет УСН Абонемент ($m)

Обработка работает на платформе 1С 7.7 УСН (без изменения конфигурации). Предназначена для регистрации розничных продаж в торговом зале небольшого магазина (мини- микро маркета). Использует штрих-код номенклатуры. Обработка делалась для себя и, в принципе, продолжает дорабатываться в процессе эксплуатации, посему кому интересно - следите за обновлениями. В 2015 году планируется опубликовать аналог под 1С 8.2-8.3

1 стартмани

03.06.2013    19196    10    ionfox    1    

3

Сканер штрих-кода Системный администратор Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Россия Бесплатно (free)

Если под рукой нет сканера штрих-кода, а нужно проверить, отладить, работу программы. Работу сканера штрих-кода можно эмулировать с помощью программ. Описан пример эмуляции: настройка используемых программ и настройка подключения сканера штрих-кода в 1С 7.7 и 1С 8.

21.05.2013    98860    1st    38    

97
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Sherlock_kmw 28 15.12.09 11:52 Сейчас в теме
Заманчивая конечно идея использовать EAN13,
но
1. неуникальность кода ты укзал
2. необходимость создания еще одного общего реквизита
3. парево с его присвоением и хранением.

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

ЗЫ. в моем случае ессно используется EAN128
2. salexdv 2360 15.12.09 12:04 Сейчас в теме
(1) Согласен, EAN128 удобнее будет. EAN13 - как вариант.
Пиши статью про 128 ;)
4. Арчибальд 2709 15.12.09 12:24 Сейчас в теме
возможно создание одинаковых штрихкодов для этих разных объектов базы

Во-первых, ничего страшного. Уж как нибудь отличить можно Документ от товара.
Во-вторых, вполне можно настрогать уникальных префиксов видов документов, отличных от всех префиксов товаров и поставить их впереди, а цифры года загнать в конец кода.
Что касается других замечаний в (1) - не думаю, что это существенно. Дополнительный общий реквизит проходит вполне безболезненно. А вот для формирования штрихкода я бы вместо глобальной процедуры взял обработку. Или вообще поручил бы это дело ВПФ, ведь пока штрихкод не напечатан, он все равно ни к чему.
5. salexdv 2360 15.12.09 12:36 Сейчас в теме
(4)
А вот для формирования штрихкода я бы вместо глобальной процедуры взял обработку. Или вообще поручил бы это дело ВПФ, ведь пока штрихкод не напечатан, он все равно ни к чему.


На мой взгляд, процедура все-таки глобальная и размещаться должна рядом с процедурой "глСформироватьШтрихкод()" :-)
6. Арчибальд 2709 15.12.09 12:42 Сейчас в теме
(5) Мое кредо - "неразрушающее конфигурирование". Т.е. если можно обойтись только дополнением конфигурации, без изменения - так я и делаю. Вариант с ВПФ, которую все равно допиливать надо, тем и хорош, что на обновления конфигурации вообще никак не повлияет.
7. salexdv 2360 15.12.09 12:46 Сейчас в теме
(6) Все упирается в частности :) И ты, конечно, по-своему прав
3. braynt 57 15.12.09 12:18 Сейчас в теме
а можно code 39. Как раз подходит для служебного штрихкодирования
8. Арчибальд 2709 15.12.09 12:51 Сейчас в теме
+6 Доходит до смешного - даже вставляя штрихкодирование документов (правда, только одного вида) в собственную самописную конфу, я не стал трогать глобальный модуль. :D Все в обработке http://infostart.ru/public/19400/
9. salexdv 2360 15.12.09 12:56 Сейчас в теме
(8) Это называется правильный подход к делу :D
10. Vix 29 16.12.09 08:15 Сейчас в теме
Дело конечно каждого, но как вариант штрих-код документа можно формировать из номера документа, даты и кода базы, т.к. помимо центральной есть еще и переферийные базы, тогда точно штрих-код будет уникальным. А насчет того, чтобы присваивать штрих-код документу, я это делал во время его создания, и процедуру лучше сделать в глобальном модуле, чтобы не напрягать лишними движениями пипла который этим делом будет заниматься. Это конечно мой подход, все мы любим творить и каждый творит по своему :)
11. hren 17.12.09 03:15 Сейчас в теме
А как штрикод в дкоумент вставить?
12. Vix 29 17.12.09 06:30 Сейчас в теме
(11) Если говорить о печатных формах то автор написал, что необходимо вставить обьект ActiveBarcode. А в самом документе вставляется общий реквизит для документов, как показано на рисунке EAN13, а в модуле формы в процедуре "ПриЗаписи()" прописывается эта строчка глСформироватьШтрихкодДокумента(Контекст, EAN13);
13. salexdv 2360 17.12.09 08:44 Сейчас в теме
(11) В типовой конфигурации "Торговля и склад" есть обработка ПечатьЭтикетки, объект ActiveBarcode можно скопировать оттуда. И еще, в операционной системе необходимо зарегистрировать Barcode.ocx
14. hren 17.12.09 08:46 Сейчас в теме
В восьмерке в пункте "Вставить -- Объект" есть 3 переключателя, и можно втавить объект. А в семерке всего два переключателя и вставить объект нельзя. Можно вставить только лист Excel и прочую дребедень, а объектов ActiveX нет.
15. salexdv 2360 17.12.09 09:27 Сейчас в теме
(14) Ctrl+C Ctrl+V см. сообщение 13
16. hren 17.12.09 09:28 Сейчас в теме
Чувак, это беспонтовый совет. Из восьмерки в семерку CTRL+C не прокатит. А если у меня вообще документа со штрихкодом нет, что делать? Откуда копировать?
17. salexdv 2360 17.12.09 09:49 Сейчас в теме
(16) Да причем тут восьмерка. Русским языком написал

В типовой конфигурации "Торговля и склад" есть обработка ПечатьЭтикетки, объект ActiveBarcode можно скопировать оттуда
18. hren 17.12.09 09:50 Сейчас в теме
У меня нет типовой конфигурации "Торговля и склад". Штрихкод че там, родился чтоли? Как его вставить без копирования?
19. salexdv 2360 17.12.09 09:57 Сейчас в теме
(18) Его там родили разработчики конфигурации. Роды происходили так: :) Excel -> Вставка -> Объект... -> ActiveBarcode
Объект выделяется Ctrl+С, 1С - Ctrl+V
20. hren 17.12.09 10:03 Сейчас в теме
Не работает. Я уже и "regsvr32.exe barcode.dll" делал. Захожу в Excel во вставку и вижу (на прикрепеленном файле).
Прикрепленные файлы:
21. salexdv 2360 17.12.09 10:07 Сейчас в теме
22. Арчибальд 2709 17.12.09 10:07 Сейчас в теме
(20)
Я уже и "regsvr32.exe barcode.dll" делал.

Вообще-то компонента называется "barcode.ocx" :o
23. hren 17.12.09 10:09 Сейчас в теме
Ну да, описка. Но все равно сделал, и он мне показал окошко, что все зарегено успешно. В списке объектов них не появилось. Что еще может быть? Попробую перезагрузиться
24. artbear 1565 17.12.09 11:11 Сейчас в теме
Лично у меня в штрихкоде помимо данных документа хранится еще сумма документа. Ее удобно использовать для сверки данных документа - типа не нахимичил ли кто с распечаткой.
25. -I- 31 04.02.10 16:29 Сейчас в теме
26. salexdv 2360 04.02.10 16:43 Сейчас в теме
30. -I- 31 05.02.10 09:10 Сейчас в теме
(26) Sherlock_kmw писал:
вывод:
я всегда штрихкодировал доки на основании внутреннего представления объекта в базе. за основу бралась не моя идея, я лишь прикручивал ее к практике, если интересно могу вечером выложить кусок кода

27. hren 05.02.10 03:33 Сейчас в теме
Ну что, расскажет кто-нибудь как без копирования в чистую базу на пустой лист вставить этот компонент баркода? Копирование из другой базы не канает, у меня ее нет.
28. Арчибальд 2709 05.02.10 07:33 Сейчас в теме
(27) Ну возьми у меня в профиле нумератор и скопируй из обработки
29. hren 05.02.10 07:46 Сейчас в теме
Товарищи, 4-ый раз говорю, что меня интересует не копипаст, а технология вставки в пустую базу. Просто может случиться такая ситуация, когда у меня под рукой не будет обработок, откуда можно скопировать баркод. Я хочу узнать как его вставить, имея только .ocx файл
31. advocatus2007 25.06.10 08:45 Сейчас в теме
:cry: В глобальный текст вставил, реквизит создал, в документе в модуле строку добавил, баркод скопипастил с этикетки, а вот что писать в его своийствах? кто поможет
32. salexdv 2360 25.06.10 09:05 Сейчас в теме
33. advocatus2007 25.06.10 10:41 Сейчас в теме
Text <<?>>= EAN13
Переменная не определена (Text)
34. salexdv 2360 25.06.10 11:43 Сейчас в теме
(33) <ИмяТвоейТаблицы>.ТекущийОбъект.Text = EAN13
35. advocatus2007 25.06.10 18:19 Сейчас в теме
36. MrDen 435 25.06.10 19:35 Сейчас в теме
(0) А хватает ли 12 цифр для унификации документа???
37. CheBurator 2684 25.06.10 19:46 Сейчас в теме
буквально месяц назад делал аналогичную задачу. в шк дока кодировался также контрагент, сумма, и еще что-то + рабочее место для проверки доков. Отвественный запускает рабочее место и щелкает доки перед сканером - правильные в одну кучку, неправильные в другую - связано с тем, что много переоформлений документов и идет рассогласование инфы в базе с имеющимися печатными копиями. того: клиент доволен...
38. salexdv 2360 25.06.10 21:43 Сейчас в теме
39. CheBurator 2684 25.06.10 22:02 Сейчас в теме
(38) угумс... тут еще надо смотреть что если делать все совсем по уму - то линейный код может и не подойти - тупо по стандартам размеров не влезет.
40. salexdv 2360 25.06.10 23:47 Сейчас в теме
41. advocatus2007 26.06.10 15:13 Сейчас в теме
42. advocatus2007 26.06.10 16:33 Сейчас в теме
вопрос с повестки снят
Оставьте свое сообщение