0. aipnnov 163 15.12.09 14:24 Сейчас в теме

Пример генерации штрих-кода для документов, справочников и его расшифровка

Генерация штрих-кода для документов и справочников с помощью стандартной компоненты ActiveX 1CBARCOD.DLL

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. sva0 85 15.12.09 14:24 Сейчас в теме
2. aipnnov 163 15.12.09 14:26 Сейчас в теме
Добавил. почему-то в первый раз не сохранился.
3. Новый чайник 15.12.09 19:06 Сейчас в теме
Очень подробно и понятно описан третий абзац. Спасибо
4. Angeros 16.12.09 06:22 Сейчас в теме
Автору за усердия однозначный плюс. Вот только вопрос - а можно с помощью этой компоненты прочитать ШК с изображения сканированного.
5. aipnnov 163 16.12.09 09:35 Сейчас в теме
(4) Компонента, как уже сказано в описании выше, стандартная и формирует только штрихкод, а для того, чтобы прочитать его с помощью сканера с графического изображения необходимо установить драйвер чтения ШК АТОЛ или любой другой.
6. aipnnov 163 16.12.09 09:39 Сейчас в теме
(4) Это 1С-вская компонента, поэтому она корректно формирует только EAN13, EAN8, Code128 и Code39, а вот EAN128 она как бы формирует, но при чтении сканером код считывается с ошибками т.е. без "(" и ")", в отличие от других, например barcode.ocx
7. ODergunov 16.12.09 12:22 Сейчас в теме
Илья, добрый день. Скажите есть ли icq или skype? Хотелось бы кое-что у Вас уточнить. Можете скинуть на ODergunov@dscompany.kz
10. aipnnov 163 17.12.09 09:39 Сейчас в теме
16. aipnnov 163 18.12.09 20:24 Сейчас в теме
Если выкладывается обработка, то для ее запуска
необходимо писать Вам на почтовый ящик, что бы узнать как она работает.

А вы её скачали, смотрели чтобы утверждать, что она не запускается? Что-то я вас среди 150 скачавших не увидел.
Как видите скачало на сей момет 150 человек и никто не пожаловался, что она не работает.
Как раз судя по комментариям нельзя сказать, как Вы утверждаете что всем все понятно.

Укажите, какие коментарии я оставил без внимания и кому ответил не внятно?
Писать весь код в коментариях нет необходимости т.к. он не маленький, поэтому кому надо узнать что-либо конкретнее, обращаются как например (7) и (8) коментариях.
Лично мне разъяснения писать не надо, тема штрихкодирования документов
довольно популярна, и здесь на сайте обработки выкладываются довольно
часто, я решал эту тему без снятия с поддержки года два назад.

Так выложи здесь, пусть люди посмотрят и оценят все-таки здесь есть программисты поопытней меня, а может кому твой опыт и пригодится.
8. ODergunov 16.12.09 15:14 Сейчас в теме
"Для проверки с помощью сканера необходимо внести изменения в стандартную обработку конфигурации СерверТО, а именно в модуле обработки в функцию ОбработатьСобытиеСШК добавить код расшифровки(только расшифровки) из модуля формы внешней обработки."

Извеняюсь конечно. но что-то не могу найти где этот кусок кода?

Обработка полезная, давно мучался этим вопросом, но вот нигде найти не мог. Плюс.
9. aipnnov 163 16.12.09 19:43 Сейчас в теме
(8) Этот кусок кода находится в модуле формы. Необходимо добавить часть кода с начала процедуры до запроса.
11. Воронкин 17.12.09 20:58 Сейчас в теме
aipnnov 16.12.2009 19:43:16
(8) Этот кусок кода находится в модуле формы. Необходимо добавить часть кода с начала процедуры до запроса.

Вам дважды пишут, что бы Вы более подробно описали свой "третий" абзац. А Вы
очередной раз отвечеате ахинеей. Если выложил обработку - выложи код, отметь
куда и что вставить. Не умничай сильно...
12. aipnnov 163 18.12.09 09:08 Сейчас в теме
(11)Пример обработки написан для тех кто хоть что-то понимает в программировании 1С. Если кто этого не знает, то пишет либо в личку, либо в коментариях. (8) Так и сделал и я ему послал письмо, что и как надо сделать.
Прежде чем в чем-то обвинять надо смотреть внимательно мои ответы (10).
Вы я как понял здесь недавно и еще ничего не опубликовали, поэтому ...
13. aipnnov 163 18.12.09 09:17 Сейчас в теме
(11) Остальным все ясно и понятно, судя по коментариям.
14. Арчибальд 2707 18.12.09 09:18 Сейчас в теме
А выведу ка я это в топ 8-)
15. Воронкин 18.12.09 15:15 Сейчас в теме
Как раз судя по комментариям нельзя сказать, как Вы утверждаете что
всем все понятно.

И не согласен с Вами - Если выкладывается обработка, то для ее запуска
необходимо писать Вам на почтовый ящик, что бы узнать как она работает.
Написали бы только заголовок - Штрихкодирование документов, если кому-то
что-то не понятно - пишите в личку.

Порадовало, что не поленились посмотреть, когда я зарегистрировался,
а мне все равно сколько времени Вы на сайте и какой у Вас рейтинг.

Лично мне разъяснения писать не надо, тема штрихкодирования документов
довольно популярна, и здесь на сайте обработки выкладываются довольно
часто, я решал эту тему без снятия с поддержки года два назад.
17. Dimasik2007 399 25.12.09 20:54 Сейчас в теме
(0) Большое спасибо, применил в своем блоке - понравилась автогенерация штрихкода, единственное, как я понял - идет привязка (кроме типа документа, номера) к дате документа, т.е. если исправили в базе документ, то поиск по ш/к не будет успешным. Решил регистром сведений.
18. aipnnov 163 26.12.09 19:49 Сейчас в теме
(17) Очень рад, что мой труд вам пригодился.
Шифровать можно любые даные, которые считаете нужными. Исправлять дату документа, например РеализацияТоваровУслуг, а именно дату после того как документ проведен и по нему распечатана накладная или др., настоящий бухгалтер не позволит, ну а если уж пришлось тогда и распечатывается новый документ(накладная) и в нем уже будет другой ШК, в котором будут зашифрованы и номер, и дата. Необходимо для этого генерацию поместить в печать документа и не надо создавать лишний регистр и засорять базу, да и размер ее увеличится, что при файловой не желательно.
19. tlk 24.02.10 18:22 Сейчас в теме
(0) Не смог понять алгоритм кодирования в формате code128, зачем переводить в цифры, если формат штрихкода позволяет работать с ASCII и в результате все равно получаем очень большое число?
20. aipnnov 163 25.02.10 09:55 Сейчас в теме
(19) Для получения контрольной суммы все равно придется переводить символы в числа.
Стандарт штрихкода Code 128 предусматривает три подсистемы кодирования:
А (моде=1) - управляющие знаки, входной аски < 32;
В (моде=2) - символы, текст вперемежку с цифрами, (65 - английская A)
С (моде=3) - группа цифр. Каждая пара кодируется как символ с номером равным паре цифр (65 - два знака, цифры 6 и 5.)
41. aipnnov 163 09.04.12 10:27 Сейчас в теме
Вы с генерируйте штрих код через эту обработку, но в ней найдите и замените префикс определения документов, это можно сделать в модуле КнопкаВыполнитьНажатие(Кнопка) формы т.е. введите еще один тип документа:

Если ТипЗнч(Документ) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
		СтрокаКод = Формат(Документ.Дата,"ДФ=yyMMdd");
		СтрокаКод = "Р " + СтрокаКод + " " + ФорматКода(СокрЛП(Документ.Номер),УбратьЛидНули);
	ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
		СтрокаКод = Формат(Документ.Дата,"ДФ=yyMMdd");
		СтрокаКод = "П " + СтрокаКод + " " + ФорматКода(СокрЛП(Документ.Номер),УбратьЛидНули);
	ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
		СтрокаКод = Формат(Документ.Дата,"ДФ=yyMMdd");
		СтрокаКод = "В " + СтрокаКод + " " + ФорматКода(СокрЛП(Документ.Номер),УбратьЛидНули);
        ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.КомплектацияНоменклатуры") Тогда
                СтрокаКод = Формат(Документ.Дата, "ДФ=yyMMdd");
                СтрокаКод = "С " + СтрокаКод + " " + ФорматКода(СокрЛП(Документ.Номер),УбратьЛидНули);
Показать

и т.д. далее по коду...
После этого генерируйте штрих-код.
Я сейсас поверил в документе Реализация товаров и услуг БД000002488 от 12.04.2011 6:29:08 и получил код Code128: 1044062991104110018620438441820242416 или EAN128: (20)40(15)110412(10)$FL2488, которые великолепно расшифровываются и открывается сам документ, к сожалению у меня нет документов комплектации т.к. мы ее не используем.
21. a_titeev 6 23.03.10 11:46 Сейчас в теме
дык неправильно работает с кодировкой code128... попробуй например закодировать и раскодировать документ с номером "10001111000"... я так понимаю косяк в раскодировании... скорее всего... короче сочетания цифер 10 смертельны... вместо этого получаем "1000111*!"... нехорошо...
22. Dimasik2007 399 29.03.10 13:21 Сейчас в теме
23. Dimasik2007 399 29.03.10 13:23 Сейчас в теме
(21) Присоединяюсь.
Пример: код
1044062991003210024621715211817162323 документ Реализация товаров и услуг 1/52107 от 28.03.2010 9:58:23 - работает хорошо

104406299100321002462171521181716225 - Реализация товаров и услуг 1/52106 от 28.03.2010 9:57:48 - уже не открывает, видно что 1 символ потерян, причем если дописать справа 1 любой символ (1, 2, 3 etc), то документ найдется.
24. aipnnov 163 31.03.10 16:32 Сейчас в теме
(23)(21) Исправил, теперь будет декодировать штрихкод 128 без проблем.
25. a_titeev 6 01.04.10 13:42 Сейчас в теме
(24) Исправил генерацию кода или только раскодирование? А то раскодирование я и у себя уже поправил, но впечатление такое что принцип кодирования был неверен, т.к. приводил к неоднозначности при раскодировании... Но тогда я решил кодирование не трогать принципиально, т.к. сразу не проверил, а потом было поздно - уже напечатали тыЩи документов... :)
26. a_titeev 6 01.04.10 13:46 Сейчас в теме
(24) Исправил кодирование или раскодирование? А то раскодирование уже и у себя поправил кое-как, и сложилось такое впечатление что принцип кодирования неверен, т.к. приводит к неоднозначностям кода при раскодировании. Сам же исправлять кодирование не хотел по той причине что напечатали тыЩи доков уже и сканить именно их надо было...
27. aipnnov 163 02.04.10 08:58 Сейчас в теме
(26) Исправил раскодирование, теперь проблем не должно быть. А вообще-то этот код, писался не под компоненту 1С, поэтому можно переписать его под нее т.е. из этого кода убрать подсчет контрольной суммы для code 128 при его формировании, а если нет смысла шифрования данных, то убрать и шифрование и оставить как есть тип документа (только в анг.раскладке), номер документа и дату, тогда при включении отображения текста кода будут не цифры а именно текст, который шифруется, но в этом случае может быть большая ширина самого штрихкода. Ну и при раскодировании тоже все изменить.
Я же отталкивался от международных стандартов и правил кодирования, чтобы можно было использовать и другие ActiveX ну и конечно же, компактности самого штрихкода.
28. Dimasik2007 399 27.04.10 21:34 Сейчас в теме
(27) На новой версии ошибка.
Кодируемая строка Реализация товаров и услуг 1/55580 от 23.04.2010 11:43:55
штрих-код 1044062991004210019621715212121241699 (code128)

Раскодирование
{Форма.Форма.Форма(552)}: Преобразование значения к типу Число не может быть выполнено
Сум = Мод(Сум+Число(СимвКод)*Ном,103);

Подскажите, где исправить....
29. aipnnov 163 29.04.10 09:17 Сейчас в теме
(28) Перезалил, видимо что-то не закачалось в первый раз. Теперь пробуй, должно быть все нормально.
30. StAsya_1C 16 04.08.10 11:49 Сейчас в теме
Если ввожу "неправильный" код для раскодирования, то функция КонтролСумма(СтрокаКода) зацикливается. Копаться в алгоритме совсем не хочется, может поставить остановку по числу итераций? Тогда какое значение должна вернуть эта функция?
31. nusya39 23.12.10 09:38 Сейчас в теме
А скажи как переделать эту обработку под БП 1.6??? Очень нужно..
32. wing 20 12.04.11 05:30 Сейчас в теме
А разве фраза
Данный пример генерирует штрихкод к документу, справочнику с использованием стандартной компоненты 1CBARCOD.DLL, которая прилагается к обработке.
не должна подразумевать, что данная dll содержится в обработке или в архиве с обработкой?

P.S.: Dll уже нашел, но описание некорректно...
43. Модератор раздела artbear 06.07.12 12:09 Сейчас в теме
Хорошая обработка, использую не один год, использую функции генерации и распознавания штрихкода.
но все-таки есть некоторые проблемы при распознавании:
1. Code39 не распознается, т.к. простая опечатка
ИначеЕсли Найти(ДанДок,Символ(32)) Тогда // здесь ошибка, нужно добавить "= 0"
ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39;
после исправления все распознается верно.
2. распознавание работает только для Ean128, Code128 и Code39 - автор уже писал об этом.
3. Code128 так и выдает ошибки зацикливания при распознавании
чем больше символов в коде, тем больше вероятность цикла :(
например, строка для штрихкодирования "спа;Хи-039141;2012;85727;000000109" после кодирования
приведет к зацикливанию при раскодировании.
эту проблему так и не получилось решить :(
что можно сделать все-таки?

есть ли еще где-нибудь функции распознавания штрихкодов?
33. qwqwqwqwqwqw 24.10.11 17:01 Сейчас в теме
34. serge_focus 4 15.11.11 21:15 Сейчас в теме
Понравилось. Рекомендую Как пример обработки для изучения стандартной компоненты ActiveX 1CBARCOD.DLL ...
35. Sairys 26.12.11 14:45 Сейчас в теме
Спасибо как раз сейчас и понадобилась обработка. Правда что то компоненты не нашёл. Хотя в описании сказано что она прикреплена к файлу
36. Sairys 26.12.11 15:12 Сейчас в теме
Спасибо за обработку, могу сказать что данная обработка понадобилась как нельзя кстати. Спасибо разработчику за это.
37. jack_kkm 33 16.02.12 07:24 Сейчас в теме
От лица своей лени выражаю автору благодарность :)
Спасибо, пригодился код.
orehova123; +1 Ответить
38. zaxarovsky 07.04.12 15:09 Сейчас в теме
Вопрос автору:
подскажите пжлст, как быть с таким кодом 10435629912040100206299000081001002227 ?
При раскодировании зацикливается на функции КонтролСумма
пришлось поставить такое условие в конце, чтобы база не висела хотябы
Если УбратьЗн = ДлКода Тогда
			Сообщить("Внимание! Ошибка распознавания штрихкода!", СтатусСообщения.Важное); 
			прервать;
		КонецЕсли;


сам штрихкод - к такому документу: Лист комплектации 000081006 от 04.04.2012
префикс типа документа использую "С"
39. aipnnov 163 09.04.12 10:04 Сейчас в теме
(38) haz,
Этот код сформирован не правильно поэтому происходит зацикливание т.к. не возможно проверить контрольную сумму кода.
Данная обработка выложена как пример генерации и расшифровки штрих-кодов (это не конечный продукт) поэтому могут быть ошибки или что-то не учтено при различных вариантах, но при этом генерация происходит корректно и соответственно расшифровка дает требуемый результат. Генерация происходит по международным правилам. Используется только латинский шрифт.
40. zaxarovsky 09.04.12 10:09 Сейчас в теме
(39)
а где же неправильность?
42. 2vadmaster 36 16.04.12 13:11 Сейчас в теме
Почему Оптимально, БазаМодеС = 6 ?
44. beldieff 23.08.12 10:59 Сейчас в теме
У меня не декодирует.
               Если ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128 
						Или ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
						СпрНом = Справочники.Номенклатура.НайтиПоКоду(Сред(РасшСтрока,3,5));
					ИначеЕсли ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
						СпрНом = Справочники.Номенклатура.НайтиПоКоду(Сред(РасшСтрока,1,5));
					ИначеЕсли ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8 Тогда
						СпрНом = Справочники.Номенклатура.НайтиПоКоду(Сред(ШК,2,5));
					Иначе
						Предупреждение("Это штрихкод " + ТипШК + ",который необходимо занести в базу 
						|и присвоить номенклатуре!");
					КонецЕсли;
					
					СпрНом.ПолучитьФорму("ФормаЭлемента").Открыть();
Показать

Каким образом можно найти элемент с 11-значным кодом по 5-значному?
45. vlanik 25.03.13 15:28 Сейчас в теме
Обработка со своими задачами справляется вполне, если не заставлять ее декодировать "бог знает что", то все работает на ура.
46. mixqn 18.09.13 09:33 Сейчас в теме
Объясните мне, а зачем нужен такой сложный алгоритм кодирования CODE 128? Почему нельзя просто представить в виде кода любой нужный набор цифр, например в формате NNNNNNNNNyyyyMMdd, где NNNNNNNNN - номер документа без буквенного префикса, а yyyyMMdd - его дата в формате yyyyMMdd.

например, для варианта приведенного выше: Реализация товаров и услуг БД000002488 от 12.04.2011 6:29:08, получим код 00000248820110412, его прекрасно можно представить в виде ШК CODE 128, он замечательно считается и далее уже по коду найдем документ.

не понимаю, зачем так усложнять?
47. rozer 221 04.12.14 16:24 Сейчас в теме
все ок но пока в номерах документов не появились ЛАТИНСКИЕ буквы ) Пришлось допилить
48. pss1985 3 14.11.16 12:06 Сейчас в теме
а code 39 генерируется с контрольным символом?
49. aipnnov 163 14.11.16 16:17 Сейчас в теме
(48) pss1985, Делал давно и уже точно не помню, но должно быть с контрольной суммой, см. нужно сам код. Это не полноценная обработка, а ПРИМЕР кодирования и раскодирования по международным правилам, просто я ее сделал под документы, но могут возникать ошибки в определенных случаях, поэтому нужно ее допиливать под свои конкретные нужды.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день