[ОТВЕТИТЬ]
03.12.2014 10:28
MaximBelousov
 
Добрый день, вопрос такойй уже был, автор сам решил проблему и не написал как и тему закрыл, так что не судите пож. Проблема такая: у меня пищевое производство, птица, сеть Билла или Биллы использует необычный штрих код- в нём первые 6 цифр фиксированная часть, седьмая-это контрогльная формируемая из веса, следующие 5 - это вес продукта, последняя тринадцатая-контрольная общая(как у всех ean-13).
У меня Иннова, индивидуальные этикетки делает Делфорд через comformat editor шаблоны, там есть такой формат шк, тарную на короб делают Интермеки через NiceLabel, там такой функции нет(или я не додумался), но короба у меня фиксированным весом, то есть я могу этот штрих код забить вручную в шаблон из любой перемпенной базы данных, но есть проблема, не могу найти формулу расчёта именно седбмой контрольной цифры, в инете везде калькуляторы и формулы тринадцатой, а мне нужна седьмая, помогите пожалуйста. Ктото же работает с Биллой, может сталкивались с этим.
03.12.2014 10:39
Nekit
 
Т.е. это какой - то придуманный штрих-код? Или реально существующий формат ? Раз говорите в Comformat есть? как называется формат?
03.12.2014 10:50
MaximBelousov
 
------vwwwwwC это barcode format d comformat editor(в этом помогли Марел)
03.12.2014 10:50
MaximBelousov
 
это американская система штрих кодов, как мне сообщили, в России редко встречается
03.12.2014 11:05
Nekit
 
А как он выглядит? Как обычный ean13 ?

з.ы. уже посмотрел в комформате - как обычный EAN13
03.12.2014 11:11
MaximBelousov
 
да, те же 13 цифр
05.12.2014 15:12
MaximBelousov
 
Решение похоже нашёл, может кому то будет полезно: Седьмая контрольная цифра высчитывается исключительно из весовой части штрих кода еан13, тарный стикер как правило(у меня по крайней мере) идёт фиксированным весом(по 7, 8, 10, 12, 13кг), а значит необходимо просто например для 10 килограмм угадать эту цифру и в какую либо переменную ПЛУ вбить следующее-ххххххVwwwww (хххххх-фиксированная часть шк; V-подобранная контрольная седьмая цифра; wwwww - фиксированный вес короба) после этого в nice label штрих код должен ссылаться на эту переменную, и контрольную последнюю nice расчитает сам.
Теперь о том как "угадать" седьмую контрольную цифру- есть файлик excel через который можно проверить правильность обеих контрольных цифр, формулу не знаю, если нужно простите, сброшу.
05.12.2014 19:22
Nekit
 
Я искал в интернете подобный формат, нигде не упоминается контрольная 7 цифра. Странно это все. Зачем вообще изобретают велосипеды...
05.12.2014 19:49
KirillHome
 
Цитата:
MaximBelousov ...
Теперь о том как "угадать" седьмую контрольную цифру- есть файлик excel через который можно проверить правильность обеих контрольных цифр, формулу не знаю, если нужно простите, сброшу.
Положи в хранилище, размести здесь ссылку - возможно удастся угадать алгоритм.
05.12.2014 19:56
Micle
 
Цитата:
KirillHome Положи в хранилище, размести здесь ссылку - возможно удастся угадать алгоритм.
Полагаю, что угадывать не придётся. Т.к. в экселе этим занимается vba скрипт. Это же basic чистой воды..
06.12.2014 19:29
MaximBelousov
 
supermag/upload/temp/файл_проверки_шк.rar
это тот файлик, конечно там всё делает VBA, кажется запоролено, в тексте макроса алгоритма я не увидел,(вобщем то это нормально защищать свои разработки наверное) я в VBA защите не силён, слышал что легко пароли снимаются, сам не пробовал, если есть вопросы об организации такого шк в иннове, возможно смогу помочь, обращайтесь, но пока всё ещё я не получил ответа от сети Билла о правильности этого штрих кода, не хочу вводить всех в заблуждение, всё это пока неопробованная технология
06.12.2014 20:00
MaximBelousov
 
ещё, извиняюсь, кажется я туплю, в эксельке по ходу просто вормалами ячеек и "если" обошлись, нет там ВБА и макросов
06.12.2014 23:03
Micle
 
Цитата:
MaximBelousov ещё, извиняюсь, кажется я туплю, в эксельке по ходу просто вормалами ячеек и "если" обошлись, нет там ВБА и макросов
Все так и есть. тупо формулы забиты. Единственный макрос что есть - тупо чистит ячейки с исходными данными для расчёта.
07.12.2014 00:13
KirillHome
 
Макрос есть, но он просто очищает строку ENA-13

И есть скрытый лист "Prüfziffer 1", в котором расписано получение "первой контрольной цифры" (7-я цифра штрихкода)
09.12.2014 13:12
Nekit
 
Спасибо, что был предоставлен алгоритм расчета контрольной цифры.

В общем после долгих мучений у меня получилось сделать вам готовое решение через Nice Label.
Выкладываю файл с этикеткой (на этикетке один штрихкод), если вам необходимо скопируйте куда угодно. В функция найдете vbскрипт Barcode.Также используются две переменные - запросы из Innova:

pack.material.barcode - этот берет данные из Продукты - Штрих код (Barcode), штрих код должен быть из 6 цифр!
pack.nominal;Dbc5,2;DecimalBarcodeFormatter - этот берет данные из таблицы Спецификации содержимого - Fixed Weight

Единственное, я не проверил все варианты с различными значениями, так что это за вами :)

Если кому надо, вот код скрипта для Nice Label:

dim two, plus5, minus5, weight(4), znach, res, dif, res2, i
two = array(0,2,4,6,8,9,1,3,5,7) 'создаем массивы с исходными данными
plus5 = array(0,5,1,6,2,7,3,8,4,9)
minus5 = array(0,5,9,4,8,3,7,2,6,1)
for i = 1 to 5 'посимвольно записываем значение веса в массив, чтобы работать с каждым символом отдельно
weight(i-1) = Mid([pack.nominal;Dbc5,2;DecimalBarcodeFormatter],i,1)
next
znach = 0
'проверяем не пустой ли символ в массиве и потом в переменную znach складываем все значения из массивов
'в соответствии с алгоритмом
if weight(0) <> "" then znach = znach + plus5(cint(weight(0)))
if weight(1) <> "" then znach = znach + two(cint(weight(1)))
if weight(2) <> "" then znach = znach + minus5(cint(weight(2)))
if weight(3) <> "" then znach = znach + plus5(cint(weight(3)))
if weight(4) <> "" then znach = znach + two(cint(weight(4)))
' теперь определяем к какому десятку относится сумма
res = 0
dif = 0
if znach < 51 then res = 50
if znach < 41 then res = 40
if znach < 31 then res = 30
if znach < 21 then res = 20
if znach < 11 then res = 10
dif = res - znach ' разница между суммой и этим же десятком
' теперь ищем какому значению соответствует разница в массиве minus5
for i = 0 to 9
if dif = minus5(i) then
res2 = i
exit for
end if
next

Result = [pack.material.barcode] & cstr(res2) & [pack.nominal;Dbc5,2;DecimalBarcodeFormatter]
09.12.2014 13:15
Nekit
 
Сама этикетка
Вложения
Тип файла: 7z Barcode with two control digit for nice label.7z (5.6 Кб, 133 просмотров)
09.12.2014 15:26
MaximBelousov
 
Обязательно протестирую, как время будет, данный шаблон, спосб с готовым алгоритмом в nice, если он корректный, конечно же более оптимальный
Опции темы


Часовой пояс GMT +3, время: 12:25.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.