Сжать стоку до 13 цифр #354319


#0 by ktif
Каким образом строку из букв и цифр(до 256 символов) можно сжать/зашифровать до 13 цифр?
#1 by nop
выбирайте
#3 by dk
обратное преобразование в исходную строку требуется?
#4 by ktif
да
#5 by ДенисЧ
мда... Отсыпьте мне такой же травы...
#6 by ktif
"держи карман шире" (с) русская народная поговорка
#7 by Mikeware
(1-3) А до одного бита сжать - слабО? :-)) зы. аффтар - дятел
#7 by Нуф-Нуф
никак. учи математику
#9 by Fragster
не правильно задан вопрос. если сжатие нужно - то кури , но то, что 13 символов получится - это далеко не факт...
#10 by dk
т.е. надо сжать в 20 раз без потерь? больше ничего не надо? ну может там виллу на Багамах :) Я не говорю, что это невозможно, но ...
#11 by Нуф-Нуф
+1 гыгыгы
#12 by Ursus maritimus
Можно сжать даже до одной цифры. Правда придется использовать 65536'ричную систему исчислений
#13 by Нуф-Нуф
интересно если автор реализует сабж ему дадут нобелевскую премию?
#14 by nop
постановка задачи конечно круть: до 13 цифер. А если в 256 буквах изначально 14 не повторяющихся? То есть нужно что бы при 256 буквах допустимо ?? неповторяющихся символов. И что понимается под 13 цифрами? Число длинной 13 знаков (64 разрядное) ?
#15 by ktif
ок, немного подкорректирую вопрос: есть строка, состоящая из номера документа, даты документа, и n пар код номенклатуры - количество товара в этом документе. Эту строку надо преобразовать в штрих-код, а потом при необходимости считать этот штрих-код и найти этот документ. В формате code128 получается слишком длинный штрих-код.
#16 by miki
для поиска документа достаточно зашифровать его номер/вид... ну на крайняк + дату, если периодичность маленькая...
#17 by ДенисЧ
тебе уже объяснили, что не сделать этого. И объяснили почему.
#18 by Salimbek
Можно считать Хэш строки, но при этом надо четко понимать, что может найтись другая строка с аналогичным Хэшем. Еще уточнение, если кодировать в ЕАН13, то использовать можешь лишь 12 цифр, 13 - контрольная
#19 by dk
нормальная такая корректировка кури значениевстрокуВнутр(твойдокумент), там аккурат вроде 13 символов
#20 by ktif
хэшированием тоже длинная строка получается
#21 by victuan1
Тебе нужно идентифицировать документ в целом? Тогда нахрена в результат ты добавляешь информацию о товарах? А? Если достаточно след. значений: ВидДокумента+НомерДок+ДатаДок
#22 by AlexWolf
Если приспичило хранить в ШК такую кучу информации, покури кодировку Aztec...
#23 by Mikeware
хых, точно дятел..."В формате code128 получается слишком длинный штрих-код." плЯкаю... ----------- Можно привязываться не к номеру и дате, а иду объекта Но все равно в максимальном случае в 12 цифр не вписаться.
#24 by miki
12 цифр. 2 - на вид дока 1 - на номер года остается 9 на номер. ну 7, если не юзать первые 2 как попало...
#25 by ktif
если поменять состав документа, то его id не изменится и штрих-код не изменится следовательно, а на распечатанном документе будет другой состав документа
#26 by ktif
см.25
#27 by victuan1
Ну тогда тебе в штрихкод нужно записать и количество и сумму и клиента и все-все-все остальное! Ведь они тоже могут измениться! Итого: твой штрихкод будет иметь размер, равный размеру документа в текстовом виде. Ну если запаковать Винраром, то чуть поменьше.
#28 by ktif
интересно, почему еще никто не предложил генерить случ. число при создании документа и хранение его в отдельном регистре?
#29 by ktif
контрагент не важен, важен номенклатурный состав и количественный
#30 by victuan1
Считай, что ты уже придумал
#31 by dk
и что, надо еще и изменение документа фиксировать? тогда рисуй 2 ШК 1-й для идентификации документа 2-й для хэша документа или более длинный ШК используй
#32 by victuan1
Мне интересно, сколько тебе еще нужно времени, чтобы ты понял, что указанным путем ты уникальный штрихкод не получишь? (PS У меня появилась мысль как это реализовать ;))
#33 by ktif
это мне не подходит, т.к. если в документе поменяли цену например, или еще что-нибудь, но не количество и состав, то штрих-код тоже поменяется, а он в этом случае как раз не должен меняться
#34 by Mikeware
А на этот случвй как раз хэш-функция. и отдельный ШК.
#35 by ktif
"указанным" это каким?
#36 by PowerBoy
не случайное число, а хэш функцию по всем записям таб.части
#37 by ktif
так что за мысль?
#38 by victuan1
Указанным = "Сжать строку до 13 цифр". Но я знаю как это можно по другому. Но помолчу пока ты не поймешь сам что идешь не тем путем
#39 by Salimbek
Советы: 1) Использовать МД5 алгоритм на всем документе, переведенном в текстовый вид (например ЗначениеВСтроку(Док)); 2) Использовать штрихкод вида Code39, так как он может содержать символы;
#40 by miki
а если у тебя будет туева куча уникальных строк в одном доке? и тоже желание не пропадет запихать всё это в 12 цифр?..
#41 by ktif
это был один из вариантов, он оказался неверным цель - зафигачить читаемый штрих-код(или 2 - об этом тоже думал), но может кто предложит совсем элегантное решение
#42 by victuan1
Добавь в конфигурацию справочник ОписаниеДокументов с двумя реквизитами: Код - длина.13 и Описание - строка неогр. длины. Твоему документу добавить реквизит Штрихкод - типа Справочник.ОписаниеДокументов. ПриЗаписи документа в переменную Описание генеришь строку вида: НомерДок/ДатаДок/КодТовара1/КолвоТовара1/КодТовара2/КолвоТовара2/....КодТовараN/КолвоТовараN. Спр=создатьОбъект("Справочник.ОписаниеДокументов"); Если (Штрихкод.Выбран=0) или (ШтрихКод.Описание <> Описание) Тогда Спр.Новый; //создается новый элемент с уникальным кодом Спр.Описание = Описание; Спр.Записать; Штрихкод = спр.текущийЭлемент КонецЕсли; Итого ты сможешь создавать новых документов + плюс изменять старых 100 миллионов раз. Надеюсь, тебе этого хватит.
#43 by victuan1
+ После этого ты сканером ищещь документ по реквизиту Документ.Штрихкод. Если не найден, значит этот документ был изменен, найден, значит после печати последнего штрихкода этого документа он еще не менялся (в отношении перечисленных тобою показателей).
#44 by Serg_1960
Элегантное решение: "галавой ап стенку". Но сомнения берут, однако. Поможет ли?
#45 by DenLaDen
у нас както была задача кодировать всю табличную часть в штрихкод, пришлось использовать ЕАН128, хоть и длинный, и хэш функцию, иначе не придумали
#46 by dk
классное решение
#47 by dk
можно в описаниедокументов добавить ссылку на документ, нашел ШК - получи документ и старое описание
#48 by Serg_1960
Не тупи: Штрихкод = ссылка на документ + ссылка на регистр сведений. В регистре - пиши все что хочещь. Изменили документ -> новая запись в регистре -> новый штрихкод документа. История изменения документа в регистре - дарю даром:)
#49 by ktif
какого размера(в см.) получается штрих-код и какие сканеры читают?
#50 by Mikeware
А, собссссно, нахрена? Для тохо, чтоб ненаиобманули - достаточно идентифицироваться по сумме. Проверка изменений в составе - мд5. Достаточно... А логирование.... вообще, цель непонятна всей этой затеи
#51 by Salimbek
В Code39 кодируется больше инфы, за счет возможности использования английского алфавита
#52 by Serg_1960
Да так просто. Скучно. А тут лисапед с квадратными колесами
#53 by ktif
сумма тут не при чем, на склад идут документы без сумм, только с количеством. а надо затем, что пока клиент идет с бумажкой в которой 100 штук фигни, менеджер в базе исправляет на 10 штук фигни, а склад отгружает клиенту 100 штук фигни, итого 90 штук фигни безвозмездно, то есть даром...
#54 by victuan1
Да, а еще можно при записи искать описание документа в спр. Вдруг наименяли и вернулись к одному из старых представлений. Но такой поиск (по строке неогр. длины) будет долгим. Поэтому в отработанных элементах лучше обнулять реквизит Описание, чтобы файл 1sconst не сильно рос.
#55 by Господин ПЖ
в pdf427 зафигачить...
#56 by Salimbek
И как твое штрихкодирование спасет ситуацию?
#57 by miki
+1
#58 by ktif
кладовщик сканирует накладную, ему выдает есть такой - нет такого, после отгрузки реализация блокируется от изменений
#59 by ktif
-1
#60 by miki
хитрый ушлый манагер успеет отследить момент между сканом кладовщика и блокировкой...
#61 by miki
+ для этого-то и заставляют расписацо покупателя в _бумажной_ накладной.
#62 by DenLaDen
на пол листа-портрет. У нас везде Metrologic стоят
#63 by ktif
используется ордерная схема - реализация подтверждается расходным ордером, который вводится попозиционно с бумажки и проводится, если все совпало - все, ок реализация заблокирована, если нет - караул.
#64 by victuan1
Вроде бы я все в разжевал. Объясни почему не подходит мой вариант?
#65 by Salimbek
Тогда нужен реквизит для поиска. Заполнять его лучше хэшем МД5 от этого документа. Печатать - Code39.<- этот формат берет практически любой сканер штрихкода (Metrologic + Zebex - сам настраивал; наладонник symbol spt18ХХ - читал этот код без проблем). Формируется он легко через ActiveBarCode.OCX (или как-то так)
#66 by ktif
и что потом с этой подписью делать? в банк идти деньги по ней получать?
#67 by ktif
а и не говорил, что он не подходит, только я думаю, что не справочник, а регистр сведений
#68 by ktif
67 к 64
#69 by YauheniL
Британские ученые разработали двубайтный архиватор (TBA -- Two Bytes Archiver). Согласно алгоритму функционирования, утилита способна сжать любой объем информации до двух байт. Теперь ученые пытаются создать программное обеспечение для извлечения информации из архива, созданного TBA.
#70 by victuan1
Ну делай на регистре сведений, раз 8-ку юзуешь. Главное, ты понял принцип. А он не меняется - регистр ли это сведений или справочник. Тема закрыта?
#71 by Lama12
строка из 256 символов может иметь 256^256 (ASCII, при юникоде больше) = 3,231700607131100730071487668867e+616 уникальных значений. 13 цифр = 10e+13 уникальных значений. Данным путем задача точно не решается. Удивительно как столько информации помещается в 256 символов? Допустим дата - 6 символов, номер документа (при создании 100 документов в день и уникальности в пределах года) - 5 символов, код номенклатуры - 30 символов (смысловая нагрузка на код), количество - 25 символов (с запасом, хрен его знает чт там учитывается). В итоге получаем 6+5 = 11 символов на док + N * (30 + 25), где N - число строк. Вычислим N при 256 символах. N = 4.45, т.е. 4 символа. Итого в документе может быть не больше 10000 строк. Как то все тютилька в тютильку. Длина случайного числа для документа должа тоже расчитываться. Определи сначала множество допустимых значений, а исходя из этого можно размерность определять.
#72 by ktif
спс, а как же пофлудить с miki?:)
#73 by miki
просто цели у Вас, ув. афтор, какие-то плавающие... то док найти, а теперь уже чтоб и не спистели... Варианты люди понапридумывали разные, как-то: - при (пере)проведении накладной сборочный лист автоматически, т.е. не зависимо от волеизъявления манагера отправляется на принтер кладовщика. - сборка/выдача идет под сканер. Можете сканировать в свой ордер. Прри проведении ордера его можно сравнить с соответствуюшей накладной и при необходимости крикнуть караул...
#74 by DenLaDen
Задача вполне нормальная - простому юзверю быстро определить, что табличная часть документа изменена и принять меры. Чтоб не хранить лишних данных в базе, необходимые данные кодируются в строку и выносятся на печатную форму в виде штрихкода.
#75 by ktif
так док найти как раз затем чтоб не спистели, нах он просто так нужен
#76 by nop
ну что зашифровали уже?...
#77 by Mikeware
Для того, чтоб определить изменения - не нужно хранить состав документа. Достаточно хэша.
#78 by AntiBuh
болеем? расписка в получении товара свидетельствует о том, что товар не с3,14здили и за него следует стребовать денежку
#79 by ktif
живем реалиями, покупатель пришел один раз за небелый нал купил и ушел. С кого требовать?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С