Имя: Пароль:
1C
1С v8
Классификатор слов
0 Уникальный ник
 
22.10.11
20:24
Классификатор слов, кодирование текста, уменьшение разрядности, или просто интересный и быстрый алгоритм по переводу строки в число и числа в строку.

может кому пригодится :)
http://infostart.ru/public/95249/
1 IamAlexy
 
22.10.11
20:33
нераскрыто главное:

какой в этом всем практический смысл
2 Уникальный ник
 
22.10.11
20:35
Там есть способы применения

- Использование максимального диапазона допустимых символов внутри установленной длинны кода.
- Визуальное кодирование и декодирование текста.
- Получение уникального идентификатора приемлемой длинны по нескольким элементам имеющим числовой код.
- Изменяя строку Алфавит2 (набор и последовательность символов), можно установить уникальную кодировку.
- Поместить строку в реквизит числового типа
- Генерировать строковые пароли
- Использовать как классификатор всех слов
- ...
3 GROOVY
 
22.10.11
20:38
Нахрена так и не понял...
4 IamAlexy
 
22.10.11
20:42
(2) не понятен практический смысл всех этих пунктов..

поипать мозги можно чисто ради "поипать мозги"
а можно например ради получения какого то осмысленного практического результата

в чем практический результат данного механизма?
5 Уникальный ник
 
22.10.11
20:55
(4) Лично мне понадобился для создания обмена между базами, в которых нельзя было изменять конфигурации. Брался номер документа "договор", соединялся с номерами контрагентов по этому договору и записывался в качестве кода основного договора в базу бух 7.7

т.е. в одной базе договор заключается с несколькими контрагентами (это документ), в другой базе (бух 7.7) на каждый договор с каждым контрагентом создан новый элемент справочника.

берем код контрагента 999 999 и номер договора 999 999 и генерируем их общий идентификатор и записываем в код основного договора 48AшяC
6 Fragster
 
гуру
22.10.11
20:55
автор что, открыл преобразование систем счисления?
7 vde69
 
22.10.11
20:59
(0) почитай что такое ХЕШ и поищи сколько его есть готовых реализаций :)
8 Уникальный ник
 
22.10.11
21:01
(6) предлагается готовый не большой и быстрый кусок кода на 1с , кому понадобится найдет и не будет задавать глупых вопросов типа "Нахрена ..."
9 GROOVY
 
22.10.11
21:10
Вот еще проще и быстрее:
//////////////////////////////////////////////////////////////////////
//СтрокаХэш - исходный текст
//hash- начальное значение hash
// М - множитель (влияет накачество хэш и производительность)
// TABLE_SIZE - размер получаемого ключа, как Максимальная величина + 1
Функция Хэш(СтрокаХэш, hash=0, M = 31, TABLE_SIZE = 18446744073709551616)
   //TABLE_SIZE = 18446744073709551615; 64 бита
   //M = 31; Умножитель
   ДлинаСтроки = СтрДлина(СтрокаХэш);
   Для к=1 по ДлинаСтроки цикл
       hash = M * hash + КодСимвола(Сред(СтрокаХэш,к,1));
   конеццикла;
   возврат hash%TABLE_SIZE;
КонецФункции

// Для ускорения работы с большими текстами их надо передавать блоками
// Данная функция разбивает исходный текст (Параметр "Строка") на блоки
// длиной ДлинаБлока и вычислет хэш блоками возвращая результат для всего текста.
Функция ХэшБлоками(Строка, ДлинаБлока = 64, hash = 0, M = 31, TABLE_SIZE = 18446744073709551616)
    НачПозиция = 1;
    ДлинаСтроки = СтрДлина(Строка);
     Пока  НачПозиция<=ДлинаСтроки цикл
       hash = Хэш(Сред(Строка, НачПозиция, ДлинаБлока), hash, M, TABLE_SIZE);
       НачПозиция = НачПозиция + ДлинаБлока;
   КонецЦикла;
   возврат hash;
КонецФункции

Взято от сюда: infostart.ru/public/70030/

Кому понадобится не будет изобретать велосипед и гордиться этим.
10 Уникальный ник
 
22.10.11
21:19
(9) вы протестировали? может вы разработали ? почему заявляете что быстрее, вы уверены что это тоже самое вообще :)) ?
11 Уникальный ник
 
22.10.11
21:21
(9) и уже не возникает вопрос "Нахрена..." ?
12 Уникальный ник
 
23.10.11
06:32
(7) куча реализаций, но вот чтобы по значению hash можно было восстановить весь первоначальный текст и что бы hash был только числовым, и все это написано на 1с что-то я не нашел.
13 DJ Anthon
 
23.10.11
06:57
когда будешь использовать этот код, не забудь мушку спилить..
14 DJ Anthon
 
23.10.11
07:01
для начала запомни, что существительного "длинна" не существует, только краткое прилагательное.
15 hhhh
 
23.10.11
10:31
(0) написано: "публикация не активна".
16 Уникальный ник
 
23.10.11
10:44
(15) исправил ошибку в слове, на модерации пока