Пример генерации штрих-кода для документов, справочников и его расшифровка
Комментарии
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Если выкладывается обработка, то для ее запуска
необходимо писать Вам на почтовый ящик, что бы узнать как она работает.
необходимо писать Вам на почтовый ящик, что бы узнать как она работает.
А вы её скачали, смотрели чтобы утверждать, что она не запускается? Что-то я вас среди 150 скачавших не увидел.
Как видите скачало на сей момет 150 человек и никто не пожаловался, что она не работает.
Как раз судя по комментариям нельзя сказать, как Вы утверждаете что всем все понятно.
Укажите, какие коментарии я оставил без внимания и кому ответил не внятно?
Писать весь код в коментариях нет необходимости т.к. он не маленький, поэтому кому надо узнать что-либо конкретнее, обращаются как например (7) и (8) коментариях.
Лично мне разъяснения писать не надо, тема штрихкодирования документов
довольно популярна, и здесь на сайте обработки выкладываются довольно
часто, я решал эту тему без снятия с поддержки года два назад.
довольно популярна, и здесь на сайте обработки выкладываются довольно
часто, я решал эту тему без снятия с поддержки года два назад.
Так выложи здесь, пусть люди посмотрят и оценят все-таки здесь есть программисты поопытней меня, а может кому твой опыт и пригодится.
"Для проверки с помощью сканера необходимо внести изменения в стандартную обработку конфигурации СерверТО, а именно в модуле обработки в функцию ОбработатьСобытиеСШК добавить код расшифровки(только расшифровки) из модуля формы внешней обработки."
Извеняюсь конечно. но что-то не могу найти где этот кусок кода?
Обработка полезная, давно мучался этим вопросом, но вот нигде найти не мог. Плюс.
Извеняюсь конечно. но что-то не могу найти где этот кусок кода?
Обработка полезная, давно мучался этим вопросом, но вот нигде найти не мог. Плюс.
aipnnov 16.12.2009 19:43:16
(8) Этот кусок кода находится в модуле формы. Необходимо добавить часть кода с начала процедуры до запроса.
Вам дважды пишут, что бы Вы более подробно описали свой "третий" абзац. А Вы
очередной раз отвечеате ахинеей. Если выложил обработку - выложи код, отметь
куда и что вставить. Не умничай сильно...
(8) Этот кусок кода находится в модуле формы. Необходимо добавить часть кода с начала процедуры до запроса.
Вам дважды пишут, что бы Вы более подробно описали свой "третий" абзац. А Вы
очередной раз отвечеате ахинеей. Если выложил обработку - выложи код, отметь
куда и что вставить. Не умничай сильно...
(11)Пример обработки написан для тех кто хоть что-то понимает в программировании 1С. Если кто этого не знает, то пишет либо в личку, либо в коментариях. (8) Так и сделал и я ему послал письмо, что и как надо сделать.
Прежде чем в чем-то обвинять надо смотреть внимательно мои ответы (10).
Вы я как понял здесь недавно и еще ничего не опубликовали, поэтому ...
Прежде чем в чем-то обвинять надо смотреть внимательно мои ответы (10).
Вы я как понял здесь недавно и еще ничего не опубликовали, поэтому ...
Как раз судя по комментариям нельзя сказать, как Вы утверждаете что
всем все понятно.
И не согласен с Вами - Если выкладывается обработка, то для ее запуска
необходимо писать Вам на почтовый ящик, что бы узнать как она работает.
Написали бы только заголовок - Штрихкодирование документов, если кому-то
что-то не понятно - пишите в личку.
Порадовало, что не поленились посмотреть, когда я зарегистрировался,
а мне все равно сколько времени Вы на сайте и какой у Вас рейтинг.
Лично мне разъяснения писать не надо, тема штрихкодирования документов
довольно популярна, и здесь на сайте обработки выкладываются довольно
часто, я решал эту тему без снятия с поддержки года два назад.
всем все понятно.
И не согласен с Вами - Если выкладывается обработка, то для ее запуска
необходимо писать Вам на почтовый ящик, что бы узнать как она работает.
Написали бы только заголовок - Штрихкодирование документов, если кому-то
что-то не понятно - пишите в личку.
Порадовало, что не поленились посмотреть, когда я зарегистрировался,
а мне все равно сколько времени Вы на сайте и какой у Вас рейтинг.
Лично мне разъяснения писать не надо, тема штрихкодирования документов
довольно популярна, и здесь на сайте обработки выкладываются довольно
часто, я решал эту тему без снятия с поддержки года два назад.
(0) Большое спасибо, применил в своем блоке - понравилась автогенерация штрихкода, единственное, как я понял - идет привязка (кроме типа документа, номера) к дате документа, т.е. если исправили в базе документ, то поиск по ш/к не будет успешным. Решил регистром сведений.
(17) Очень рад, что мой труд вам пригодился.
Шифровать можно любые даные, которые считаете нужными. Исправлять дату документа, например РеализацияТоваровУслуг, а именно дату после того как документ проведен и по нему распечатана накладная или др., настоящий бухгалтер не позволит, ну а если уж пришлось тогда и распечатывается новый документ(накладная) и в нем уже будет другой ШК, в котором будут зашифрованы и номер, и дата. Необходимо для этого генерацию поместить в печать документа и не надо создавать лишний регистр и засорять базу, да и размер ее увеличится, что при файловой не желательно.
Шифровать можно любые даные, которые считаете нужными. Исправлять дату документа, например РеализацияТоваровУслуг, а именно дату после того как документ проведен и по нему распечатана накладная или др., настоящий бухгалтер не позволит, ну а если уж пришлось тогда и распечатывается новый документ(накладная) и в нем уже будет другой ШК, в котором будут зашифрованы и номер, и дата. Необходимо для этого генерацию поместить в печать документа и не надо создавать лишний регистр и засорять базу, да и размер ее увеличится, что при файловой не желательно.
(19) Для получения контрольной суммы все равно придется переводить символы в числа.
Стандарт штрихкода Code 128 предусматривает три подсистемы кодирования:
А (моде=1) - управляющие знаки, входной аски < 32;
В (моде=2) - символы, текст вперемежку с цифрами, (65 - английская A)
С (моде=3) - группа цифр. Каждая пара кодируется как символ с номером равным паре цифр (65 - два знака, цифры 6 и 5.)
Стандарт штрихкода Code 128 предусматривает три подсистемы кодирования:
А (моде=1) - управляющие знаки, входной аски < 32;
В (моде=2) - символы, текст вперемежку с цифрами, (65 - английская A)
С (моде=3) - группа цифр. Каждая пара кодируется как символ с номером равным паре цифр (65 - два знака, цифры 6 и 5.)
Вы с генерируйте штрих код через эту обработку, но в ней найдите и замените префикс определения документов, это можно сделать в модуле КнопкаВыполнитьНажатие(Кнопка) формы т.е. введите еще один тип документа:
и т.д. далее по коду...
После этого генерируйте штрих-код.
Я сейсас поверил в документе Реализация товаров и услуг БД000002488 от 12.04.2011 6:29:08 и получил код Code128: 1044062991104110018620438441820242416 или EAN128: (20)40(15)110412(10)$FL2488, которые великолепно расшифровываются и открывается сам документ, к сожалению у меня нет документов комплектации т.к. мы ее не используем.
Если ТипЗнч(Документ) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
СтрокаКод = Формат(Документ.Дата,"ДФ=yyMMdd");
СтрокаКод = "Р " + СтрокаКод + " " + ФорматКода(СокрЛП(Документ.Номер),УбратьЛидНули);
ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
СтрокаКод = Формат(Документ.Дата,"ДФ=yyMMdd");
СтрокаКод = "П " + СтрокаКод + " " + ФорматКода(СокрЛП(Документ.Номер),УбратьЛидНули);
ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
СтрокаКод = Формат(Документ.Дата,"ДФ=yyMMdd");
СтрокаКод = "В " + СтрокаКод + " " + ФорматКода(СокрЛП(Документ.Номер),УбратьЛидНули);
ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.КомплектацияНоменклатуры") Тогда
СтрокаКод = Формат(Документ.Дата, "ДФ=yyMMdd");
СтрокаКод = "С " + СтрокаКод + " " + ФорматКода(СокрЛП(Документ.Номер),УбратьЛидНули);
Показатьи т.д. далее по коду...
После этого генерируйте штрих-код.
Я сейсас поверил в документе Реализация товаров и услуг БД000002488 от 12.04.2011 6:29:08 и получил код Code128: 1044062991104110018620438441820242416 или EAN128: (20)40(15)110412(10)$FL2488, которые великолепно расшифровываются и открывается сам документ, к сожалению у меня нет документов комплектации т.к. мы ее не используем.
дык неправильно работает с кодировкой code128... попробуй например закодировать и раскодировать документ с номером "10001111000"... я так понимаю косяк в раскодировании... скорее всего... короче сочетания цифер 10 смертельны... вместо этого получаем "1000111*!"... нехорошо...
(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), то документ найдется.
Пример: код
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) Исправил генерацию кода или только раскодирование? А то раскодирование я и у себя уже поправил, но впечатление такое что принцип кодирования был неверен, т.к. приводил к неоднозначности при раскодировании... Но тогда я решил кодирование не трогать принципиально, т.к. сразу не проверил, а потом было поздно - уже напечатали тыЩи документов... :)
(24) Исправил кодирование или раскодирование? А то раскодирование уже и у себя поправил кое-как, и сложилось такое впечатление что принцип кодирования неверен, т.к. приводит к неоднозначностям кода при раскодировании. Сам же исправлять кодирование не хотел по той причине что напечатали тыЩи доков уже и сканить именно их надо было...
(26) Исправил раскодирование, теперь проблем не должно быть. А вообще-то этот код, писался не под компоненту 1С, поэтому можно переписать его под нее т.е. из этого кода убрать подсчет контрольной суммы для code 128 при его формировании, а если нет смысла шифрования данных, то убрать и шифрование и оставить как есть тип документа (только в анг.раскладке), номер документа и дату, тогда при включении отображения текста кода будут не цифры а именно текст, который шифруется, но в этом случае может быть большая ширина самого штрихкода. Ну и при раскодировании тоже все изменить.
Я же отталкивался от международных стандартов и правил кодирования, чтобы можно было использовать и другие ActiveX ну и конечно же, компактности самого штрихкода.
Я же отталкивался от международных стандартов и правил кодирования, чтобы можно было использовать и другие ActiveX ну и конечно же, компактности самого штрихкода.
(27) На новой версии ошибка.
Кодируемая строка Реализация товаров и услуг 1/55580 от 23.04.2010 11:43:55
штрих-код 1044062991004210019621715212121241699 (code128)
Раскодирование
{Форма.Форма.Форма(552)}: Преобразование значения к типу Число не может быть выполнено
Сум = Мод(Сум+Число(СимвКод)*Ном,103);
Подскажите, где исправить....
Кодируемая строка Реализация товаров и услуг 1/55580 от 23.04.2010 11:43:55
штрих-код 1044062991004210019621715212121241699 (code128)
Раскодирование
{Форма.Форма.Форма(552)}: Преобразование значения к типу Число не может быть выполнено
Сум = Мод(Сум+Число(СимвКод)*Ном,103);
Подскажите, где исправить....
Если ввожу "неправильный" код для раскодирования, то функция КонтролСумма(СтрокаКода) зацикливается. Копаться в алгоритме совсем не хочется, может поставить остановку по числу итераций? Тогда какое значение должна вернуть эта функция?
А разве фраза
P.S.: Dll уже нашел, но описание некорректно...
Данный пример генерирует штрихкод к документу, справочнику с использованием стандартной компоненты 1CBARCOD.DLL, которая прилагается к обработке.
не должна подразумевать, что данная dll содержится в обработке или в архиве с обработкой?
P.S.: Dll уже нашел, но описание некорректно...
Хорошая обработка, использую не один год, использую функции генерации и распознавания штрихкода.
но все-таки есть некоторые проблемы при распознавании:
1. Code39 не распознается, т.к. простая опечатка
ИначеЕсли Найти(ДанДок,Символ(32)) Тогда // здесь ошибка, нужно добавить "= 0"
ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39;
после исправления все распознается верно.
2. распознавание работает только для Ean128, Code128 и Code39 - автор уже писал об этом.
3. Code128 так и выдает ошибки зацикливания при распознавании
чем больше символов в коде, тем больше вероятность цикла :(
например, строка для штрихкодирования "спа;Хи-039141;2012;85727;000000109" после кодирования
приведет к зацикливанию при раскодировании.
эту проблему так и не получилось решить :(
что можно сделать все-таки?
есть ли еще где-нибудь функции распознавания штрихкодов?
но все-таки есть некоторые проблемы при распознавании:
1. Code39 не распознается, т.к. простая опечатка
ИначеЕсли Найти(ДанДок,Символ(32)) Тогда // здесь ошибка, нужно добавить "= 0"
ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39;
после исправления все распознается верно.
2. распознавание работает только для Ean128, Code128 и Code39 - автор уже писал об этом.
3. Code128 так и выдает ошибки зацикливания при распознавании
чем больше символов в коде, тем больше вероятность цикла :(
например, строка для штрихкодирования "спа;Хи-039141;2012;85727;000000109" после кодирования
приведет к зацикливанию при раскодировании.
эту проблему так и не получилось решить :(
что можно сделать все-таки?
есть ли еще где-нибудь функции распознавания штрихкодов?
Вопрос автору:
подскажите пжлст, как быть с таким кодом 10435629912040100206299000081001002227 ?
При раскодировании зацикливается на функции КонтролСумма
пришлось поставить такое условие в конце, чтобы база не висела хотябы
сам штрихкод - к такому документу: Лист комплектации 000081006 от 04.04.2012
префикс типа документа использую "С"
подскажите пжлст, как быть с таким кодом 10435629912040100206299000081001002227 ?
При раскодировании зацикливается на функции КонтролСумма
пришлось поставить такое условие в конце, чтобы база не висела хотябы
Если УбратьЗн = ДлКода Тогда
Сообщить("Внимание! Ошибка распознавания штрихкода!", СтатусСообщения.Важное);
прервать;
КонецЕсли;
сам штрихкод - к такому документу: Лист комплектации 000081006 от 04.04.2012
префикс типа документа использую "С"
(38) haz,
Этот код сформирован не правильно поэтому происходит зацикливание т.к. не возможно проверить контрольную сумму кода.
Данная обработка выложена как пример генерации и расшифровки штрих-кодов (это не конечный продукт) поэтому могут быть ошибки или что-то не учтено при различных вариантах, но при этом генерация происходит корректно и соответственно расшифровка дает требуемый результат. Генерация происходит по международным правилам. Используется только латинский шрифт.
Этот код сформирован не правильно поэтому происходит зацикливание т.к. не возможно проверить контрольную сумму кода.
Данная обработка выложена как пример генерации и расшифровки штрих-кодов (это не конечный продукт) поэтому могут быть ошибки или что-то не учтено при различных вариантах, но при этом генерация происходит корректно и соответственно расшифровка дает требуемый результат. Генерация происходит по международным правилам. Используется только латинский шрифт.
У меня не декодирует.
Каким образом можно найти элемент с 11-значным кодом по 5-значному?
Если ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128
Или ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
СпрНом = Справочники.Номенклатура.НайтиПоКоду(Сред(РасшСтрока,3,5));
ИначеЕсли ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
СпрНом = Справочники.Номенклатура.НайтиПоКоду(Сред(РасшСтрока,1,5));
ИначеЕсли ТипШК = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8 Тогда
СпрНом = Справочники.Номенклатура.НайтиПоКоду(Сред(ШК,2,5));
Иначе
Предупреждение("Это штрихкод " + ТипШК + ",который необходимо занести в базу
|и присвоить номенклатуре!");
КонецЕсли;
СпрНом.ПолучитьФорму("ФормаЭлемента").Открыть();
ПоказатьКаким образом можно найти элемент с 11-значным кодом по 5-значному?
Объясните мне, а зачем нужен такой сложный алгоритм кодирования CODE 128? Почему нельзя просто представить в виде кода любой нужный набор цифр, например в формате NNNNNNNNNyyyyMMdd, где NNNNNNNNN - номер документа без буквенного префикса, а yyyyMMdd - его дата в формате yyyyMMdd.
например, для варианта приведенного выше: Реализация товаров и услуг БД000002488 от 12.04.2011 6:29:08, получим код 00000248820110412, его прекрасно можно представить в виде ШК CODE 128, он замечательно считается и далее уже по коду найдем документ.
не понимаю, зачем так усложнять?
например, для варианта приведенного выше: Реализация товаров и услуг БД000002488 от 12.04.2011 6:29:08, получим код 00000248820110412, его прекрасно можно представить в виде ШК CODE 128, он замечательно считается и далее уже по коду найдем документ.
не понимаю, зачем так усложнять?
(48) pss1985, Делал давно и уже точно не помню, но должно быть с контрольной суммой, см. нужно сам код. Это не полноценная обработка, а ПРИМЕР кодирования и раскодирования по международным правилам, просто я ее сделал под документы, но могут возникать ошибки в определенных случаях, поэтому нужно ее допиливать под свои конкретные нужды.