|
Генерация кода товара | ☑ | ||
---|---|---|---|---|
0
zenik
15.06.15
✎
11:45
|
Доброго времени суток, форумчане.
Давайте поразмышляем над такой задачей: два справочника (номенклатура и характеристики). надо из кодов элементов этих двух справочников "состряпать" 3-й - который передать на кассу. Код для кассы = число до 10 разрядов. код справочника характеристик для каждого товара до 2-х разрядов. На номенклатуру берем что останется. код должен иметь возможность обратного преобразования Первое что приходит в голову - конкатенация :) Но хочу элегантное решение... С применением математики (не сложной) закодировать два числа с возможностью обратного кодирования. Естественно должна сохраняться уникальность, что бы раскодирование не давала две другие пары кодов. И еще один момент - код у характеристик может отсутствовать, т.е. = 0. Есть варианты? |
|||
1
Рэйв
15.06.15
✎
11:47
|
КодХарактеристики+"/"+КодНоменклатуры
Обратно разпарсить думаю труда не составит |
|||
2
МаксимМП23
15.06.15
✎
11:48
|
(0) Только регистр со связями. Ибо с уникальностью поиметь проблем потом сможешь.
|
|||
3
zenik
15.06.15
✎
11:51
|
(1) ды вот обратно то как раз будет проблема, ибо
0 / любое число = 0 :) |
|||
4
Garykom
гуру
15.06.15
✎
11:53
|
(0) 3-й справочник "НоменклатураКасса" с длиной кода 10 и 2 реквизитами "Номенклатура" и "Характеристика"
ЗЫ представим вариант смены программы, там другие длины кодов и что потом делать? |
|||
5
DirecTwiX
15.06.15
✎
11:53
|
(3) Там строка, а не число)
|
|||
6
zenik
15.06.15
✎
11:55
|
Блин, ребят, ну условия описаны же:
1. Код для кассы = число до 10 разрядов |
|||
7
zenik
15.06.15
✎
11:55
|
2. Конкатенация - я понимаю... но хочу МАТЕМАТИКУ :)
|
|||
8
oslokot
15.06.15
✎
11:56
|
(7) xor? :)
|
|||
9
icipher
15.06.15
✎
11:57
|
КодНоменклатуры * 100 + КодХарактеристики
:) |
|||
10
Рэйв
15.06.15
✎
11:58
|
(7)Зачем множить лишние сущности?
|
|||
11
zenik
15.06.15
✎
12:01
|
(10) 1300000012 - смотрится по меньшей мере убого :) то ли дело 65535 :)
|
|||
12
тарам пам пам
15.06.15
✎
12:02
|
(7) Математика тебе говорит, что в 10 разрядов нельзя запихать число в 10 разрядов и еще одно число в 2 разряда в общем случае. Разве что если сделаешь код для кассы строковым - тогда можно.
|
|||
13
zenik
15.06.15
✎
12:02
|
(12) а где я сказал, что у номенклатуры 10 разрядов?
|
|||
14
Рэйв
15.06.15
✎
12:02
|
>>1300000012 - смотрится по меньшей мере убого
Да ты эстет, я смотрю:-) Код как код... |
|||
15
zenik
15.06.15
✎
12:03
|
(14) оценил, спасибо :)
|
|||
16
Рэйв
15.06.15
✎
12:03
|
(11)Ну переводи в hex тогда, чтобы было красивее:-)
|
|||
17
DirecTwiX
15.06.15
✎
12:04
|
(11) Перегоняй в шестнадцатеричную систему
|
|||
18
zenik
15.06.15
✎
12:05
|
(17) тама буквы... нада цифры
|
|||
19
тарам пам пам
15.06.15
✎
12:05
|
(13) невнимательно прочитал... Тогда тупо конкатенация, если не нравится код 1300000012, то прибавляй код характеристики справа - будет 0000001213.
|
|||
20
zenik
15.06.15
✎
12:06
|
(19) - сразу налетаем на код номенклатуры с нулевой характеристикой
|
|||
21
fisher
15.06.15
✎
12:08
|
(11) Уже советовали. Делай XOR с красивой константой.
|
|||
22
Мыш
15.06.15
✎
12:12
|
Вспоминается классик: "Взволновалося синее море" )))
|
|||
23
zenik
15.06.15
✎
12:13
|
XOR что то мне не очень нравится.
Получится сделать что то на подобии кодирования двоички? аля 2*код+4*код... только естественно с моими числами: N*КодНоменклатуры + 10*КодХарактеристики. Сколько надо брать N, что бы мало не показалось? |
|||
24
Мыш
15.06.15
✎
12:14
|
(23) N в степени N
|
|||
25
Salimbek
15.06.15
✎
12:18
|
(7) Типа сказал волшебное слово "хочу математику" и оно тебе все организовалось? Странный такой...
Если что, то любая такая задача в первую очередь опирается на статистику. Сказать "хочу математику" чтобы осуществлять быстрый поиск по отпечаткам пальцев - значит не сказать ничего. |
|||
26
zenik
15.06.15
✎
12:18
|
(24) это больше доступной разрядности :(
|
|||
27
zenik
15.06.15
✎
12:22
|
(25) ну условия я привел доступные и понятные. требовалась формула, которая способна закодировать два числа разрядность которых в сумме не превышает разрядности получаемого числа. Народ здесь тусит умный, вот и думал, что у кого-то будет элегантное решение :) Если такого нет, то возьму лежащую на поверхности конкатенацию. Я же ничего не от кого не требую :)
|
|||
28
fisher
15.06.15
✎
12:22
|
(23) Простой читаемый штрих-код тебе не нравится. Бывает. Может, это твое последнее внедрение и ты хочешь осложнить всем жизнь напоследок. Но чем же тебе xor "не очень нравится"? Простотой? Надо позаковыристей, чтобы увеличить количество страданий?
|
|||
29
zenik
15.06.15
✎
12:28
|
Ок. понял что хочу странного. пойду конкатенацию делать...
з.ы. для (28) 12-й год тут работаю, думаю что не последнее внедрение :) |
|||
30
fisher
15.06.15
✎
12:35
|
(29) Сочувствую.
Кстати, я когда-то давно поразился, что на банальном xor базируется единственный алгоритм шифрования, который невозможно взломать в принципе и это математически доказано. Всё предельно банально, конечно, до смешного. Но когда вообще не касался темы криптографии и все уши прожужжали тем, что взломать можно любой код - было как-то неожиданно об этом услышать. |
|||
31
ЧеловекДуши
15.06.15
✎
12:51
|
(6) Используй 36-ти-ричное число исчисление.
|
|||
32
zenik
15.06.15
✎
12:51
|
(30) зато интересно наблюдать как оно все меняется :) пока я сидел в своем кресле в своем кабине поменялось 5 генеральных, порядка 4-х гл. бухов. Да что там говорить, даже фирма уже разок поменялась, причем не просто по документам, а реально со сменой собственника. А я все сижу и пишу программки :)
|
|||
33
zenik
15.06.15
✎
12:51
|
(31) Да ладно, замяли уже :)
|
|||
34
ЧеловекДуши
15.06.15
✎
12:54
|
(33) Замяли, таки и замяли. :)
А так, Справочник + Характеристика, напрашивается некий элементарный генератор числа под средством записи элемента справочника или неким регламентным заданием. ...простая нумерация от 1 до 9999999999 элементов... |
|||
35
m1_1976
15.06.15
✎
12:56
|
я делал подобное. Почти конкатенация, у меня правда было десятичное число. Работает мгновенно. Получение кода товара или кода характеристики - тоже очень быстро.
Функции есть математические. тогда получается элементарно - до запятой - код товара, после запятой код Характеристики. Любой вариант, включая НУЛИ дает тебе уникальное число. Можешь с ним, как с числом делать что хочешь... например 366,25 0,25 366,00 |
|||
36
тарам пам пам
15.06.15
✎
12:59
|
(20) и что? ну получится у тебя 0000001200 - все замечательно раскодируется обратно.
|
|||
37
zenik
15.06.15
✎
13:01
|
(35) идея интересная. Я прям что то подобное и ждал. надо будет подумать над таким вариантом. Спасибо!!!
(36)... я теперь понял твой вариант, после 35 :) |
|||
38
ЧеловекДуши
15.06.15
✎
13:03
|
(37) А какое ограничение в Коде у Кассы?
Вы подумали об этом? :) |
|||
39
ЧеловекДуши
15.06.15
✎
13:04
|
+(38) Я бы использовал еще перевод в 36-ти-ричное исчисление.
Если Код на кассе допускает применение в коде Алфавит :) |
|||
40
zenik
15.06.15
✎
13:04
|
(38) в 0 написано, что число в 10 разрядов... Это, мать его, миллиард товаров :)
|
|||
41
ЧеловекДуши
15.06.15
✎
13:04
|
+ Для быстроты сего хранения полученного коду, можно состряпать Регистр сведений
|
|||
42
ЧеловекДуши
15.06.15
✎
13:05
|
(40) Для 10-ти ричного исчисления, поверь, при использование характеристик, может быть так, что будет мало :)
|
|||
43
ЧеловекДуши
15.06.15
✎
13:07
|
+(40) 1 товар + характеристика или Характеристики, в зависимости от испорченности фантазии Операторов или кто там у вас :)
|
|||
44
zenik
15.06.15
✎
13:09
|
(42) в характеристики пока только обувь. пока перевалили 27к наименований... перевалят мильен - удалим старые наименования :)
Спасибо всем. Прям от души. Прям вот доволен аки слон :) |
|||
45
delavar
15.06.15
✎
13:25
|
Надо код товара и код характеристики закодировать простыми числами. и итоговый код сделать произведением - тут и математика и интересно и гемор - короче то, что нужно автору
|
|||
46
Salimbek
15.06.15
✎
14:00
|
(45) Гы...
|
|||
47
Злопчинский
15.06.15
✎
14:10
|
(1) Не знаю как там в снеговике, но использование слеша в - есть бяка, ибо он использовался в ПолноеНаименование()/ПолныйКод()
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |