Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Имеется поле, куда можно записать строку не длиннее 20 символов, а сама строка имеет длину 36 символов (это GUID). Может, существует алгоритм сжатия этого GUID хотя бы до 20 символов с последующим восстановлением к первоначальному виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 07:41 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
КеусИмеется поле, куда можно записать строку не длиннее 20 символов, а сама строка имеет длину 36 символов (это GUID). Может, существует алгоритм сжатия этого GUID хотя бы до 20 символов с последующим восстановлением к первоначальному виду? Если GUID типа 910023AC-56DC-48B5-BB86-55C1C9A21AC1 то его можно хранить в 16 байтах. 1) убираем "-" 2) преобразуем пару шестнадцетиричных символов "91" в байт; 3) преобразуем следующую пару ... -------------------------- вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 07:50 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. К сожилению приходится использовать 1С, а в ней типы могут быть только "число", "строка", "Дата". Поэтому GUID может быть только строкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 08:04 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Поэтому GUID может быть только строкой. Потому и задумался, как строку сжать и разжать без потерь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 08:11 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. К сожилению приходится использовать 1С, а в ней типы могут быть только "число", "строка", "Дата". Поэтому GUID может быть только строкой. Ну и что? а) 1С вполне справляется со строками длиннее 20 символов... б) Строка может содержать ЛЮБЫЕ значения байта как символ строки - выглядит канешна страшновато, но тебе ж на нее не любоваться? См. алгоритм выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 09:00 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
1 Кеус: вы таким образом место на диске пытаетесь сэкономить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 09:31 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
При большом желании можно получить и 20 печатных символов (из диапазона кодов 33-126). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 09:34 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Melkiades1 Кеус: вы таким образом место на диске пытаетесь сэкономить? Нет. Просто в 1С по номеру документа самый быстрый способ поиска. А номер документа не может превышать 20 символов. За месяц в базе создается и передается в другие организации около 200 000 документов. Раньше идентификатор конкретного документа состоял из 10 символов, теперь вот из 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 10:05 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
а) 1С вполне справляется со строками длиннее 20 символов... Номер документа не может. б) Строка может содержать ЛЮБЫЕ значения байта как символ строки - выглядит канешна страшновато, но тебе ж на нее не любоваться? См. алгоритм выше. А влезут ли они в 20 символов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 10:08 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
BarloneПри большом желании можно получить и 20 печатных символов (из диапазона кодов 33-126). Можно поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 10:16 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус а) 1С вполне справляется со строками длиннее 20 символов... Номер документа не может. б) Строка может содержать ЛЮБЫЕ значения байта как символ строки - выглядит канешна страшновато, но тебе ж на нее не любоваться? См. алгоритм выше. А влезут ли они в 20 символов? 1символ=1байту. Учи матчасть. ------------------------- исключение unicode-символы, дык в один unicode-символ можно аж два байта забабахать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 15:01 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Элементарнейшая экономия, это компоновка бит. Если диапозон используемых симоволов 0-9, т.е. 10 симовлов, то для их сохранения достаточно 4 бита (имеет 16 значений). Таким образом в байт можно положить 2 символа. Если диапозон симовлов больше 16-ти, то количество бит прийдется увеличить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 15:17 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус BarloneПри большом желании можно получить и 20 печатных символов (из диапазона кодов 33-126). Можно поподробнее? Ну изучай принцЫпы MIME-encoding... разные там методы есть. Всего надо закодировать 16*8=128 бит 126-33+1=94 различных символов Кодируем 128 битное число по основанию 94, используя символы как цифры разрядов. log2(94)= 6.555 бит/символ [128/6.(5)]=19.528 символа. ================= => можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 15:19 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
КеусНет. Просто в 1С по номеру документа самый быстрый способ поиска. А номер документа не может превышать 20 символов. За месяц в базе создается и передается в другие организации около 200 000 документов. Раньше идентификатор конкретного документа состоял из 10 символов, теперь вот из 36. 1)строкой длиной в 20 символов из больших букв латинского алфавита можно занумеровать ~20^20 документов , чего хватит на 20^20 / 20000 месяцев работы проги что много больше времени предпологаемого существования солнечной системы. Нужен ли тут именно GUID??? а может просто номер числовой?? зы. бедные юзери ищущие документ по гуид ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 17:16 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
aleks2 Спасибо за разъяснение. Хранить символы в байтах и битах это конечно хорошо, но платформа 1С этого не позволяет. Я могу использовать только "Строка" или "Число". Т.е. мне надо строку из 36 символов превратить в строку (число) максимум в 20 символов, а потом без потерь восстановить в первоначальный вид. Я просто не представляю, как записать байты в строковое или числовое поле. Если не трудно покажите, пожалуйста, как будут выглядеть в виде байтов несколько первых символов этой строки (910023AC-56DC-48B5-BB86-55C1C9A21AC1), а то без конкретного примера я не соображу, как это будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 10:38 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Палестинец 1)строкой длиной в 20 символов из больших букв латинского алфавита можно занумеровать ~20^20 документов , чего хватит на 20^20 / 20000 месяцев работы проги что много больше времени предпологаемого существования солнечной системы. Нужен ли тут именно GUID??? а может просто номер числовой?? Да нам и 10 символов хватало, но решили перейти на GUID в качестве идентификатора не мы, а Москва, при том по всей стране. Палестинецзы. бедные юзери ищущие документ по гуид У каждого документа есть серия и номер, который видят пользователи, но он может быть не уникальный. Идентификатор используется только для электронного обмена. Да и на уровне нашей организации ни кто не работает конкретно с каждым документом в ручную. Используют только общие данные, типа суммы выплаты вознаграждения по всем документам конкретного учреждения. У нас в области есть около 70 учреждений, где создаются каждый день куча документов, затем эти документы в электронном формате передаются нашей организации. Мы их заносим в базу и раз в месяц все эти документы выгружаем в один файл и отдаем в следующую организацию, а та в свою очередь еще в одну. Затем всё это возвращается назад по той же цепочке. При том один и тот же документ может месяцами ходить по этой цепочке. Каждый такой документ должен уникально идентифицироваться, раньше в качестве уникального номера использовался «код учреждения»+»порядковый номер документа» в этом учреждении. Затем в Москве решили перейти на единый формат обмена файлами и в качестве уникального идентификатора документа предписали использовать GUID (формат обмена действует для всей страны в рамках этого направления). От GUID отказаться нельзя, создать дополнительный реквизит для хранения GUID можно, но поиск по нему будет очень медленный и загрузка \ выгрузка данных затянется на сутки. Хранение символов в байтах я понимаю, но как записать их в 1С не представляю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 11:12 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. К сожилению приходится использовать 1С, а в ней типы могут быть только "число", "строка", "Дата". Поэтому GUID может быть только строкой.А разрядность "числа" у этой чудо-системы какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 12:52 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
DocAlА разрядность "числа" у этой чудо-системы какая? Длина числа может быть 20 знаков с точностью в 9. Можно записать число Пи: 3.141592653 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 17:18 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус От GUID отказаться нельзя, создать дополнительный реквизит для хранения GUID можно, но поиск по нему будет очень медленный и загрузка \ выгрузка данных затянется на сутки. Может, возможно нужный индекс в базе создать просто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 20:05 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус aleks2 Спасибо за разъяснение. Хранить символы в байтах и битах это конечно хорошо, но платформа 1С этого не позволяет. Я могу использовать только "Строка" или "Число". Т.е. мне надо строку из 36 символов превратить в строку (число) максимум в 20 символов, а потом без потерь восстановить в первоначальный вид. Я просто не представляю, как записать байты в строковое или числовое поле. Если не трудно покажите, пожалуйста, как будут выглядеть в виде байтов несколько первых символов этой строки (910023AC-56DC-48B5-BB86-55C1C9A21AC1), а то без конкретного примера я не соображу, как это будет. Я без Help-а програмиировать в 1C не могу - не помню имен функций наизусть... на VBA - пожалуйста Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Извиняй, но кодировать число по основанию 94 - учись сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2006, 20:21 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
aleks2 на VBA - пожалуйста Спасибо за пример. Понял Вашу мысль, вроде то, что мне может подойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 11:28 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
DocAlМожет, возможно нужный индекс в базе создать просто? 1С не позволяет самому создавать индексы. Точнее, там есть несколько намертво записанных полей, по которым оптимизирован поиск и они присутствуют во всех документах. Можно создать свои поля (реквизиты) для поиска, но по ним поиск значительно медленней, чем по предопределенным в системе. 1С не удовлетворительно работает с задачей, для которой мы её используем. Как оказалось с большим объемом данных она не справляется. Если использовать дополнительные реквизиты для поиска, то мы не сможем уложиться в отведенные нам временные рамки. Вот и приходится через математику решать возникающие проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 11:45 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Зато MS SQL вполне может позволить создать-таки нужный индекс. Хотя у вас, возможно, файл-серверная версия.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2006, 18:32 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Кеус вообще-то GUID так и хранится в нормальных системах, а к 36-символьному виду приводится только для показа человеку. К сожилению приходится использовать 1С, а в ней типы могут быть только "число", "строка", "Дата". Поэтому GUID может быть только строкой. Разбей на две части и храни в двух строках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 23:02 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
DocAlХотя у вас, возможно, файл-серверная версия.. И документов 200000/мес? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 14:46 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич DocAlХотя у вас, возможно, файл-серверная версия.. И документов 200000/мес? 1C у нас SQL версии. Сомневаюсь, что без вреда для самой 1С не из конфигуратора можно создавать индексы. Документов создается 200 000 в месяц, и от раза к разу их всё больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 05:38 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Было б интересно узнать, о каком вреде идёт речь... Если, конечно, не о копеечном замедлении занесения данных в базу.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2006, 19:22 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
DocAlБыло б интересно узнать, о каком вреде идёт речь... Если, конечно, не о копеечном замедлении занесения данных в базу.) Имеется в виду, что разработчики 1С не рекомендуют что-то менять не посредственно в SQL базе. Конечно это не факт, что возникнут проблемы, но не хочется повредить такую большую базу. Можно делать прямые запросы в SQL базу и даже добавлять новые данные, но создавать индексы... 1С вроде сама создает и удаляет нужные индексы. Проблема не в SQL базе, а в среде 1С. Она сама по себе замедляет работу, прямой запрос к SQL базе выдает результат в 60 раз быстрее, чем тот же запрос в 1С, но это не наш вариант. Исключительно по административным причинам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 06:25 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
Создай в Документы->ОбщиеРеквизиты реквизит GUID. поставь галочку отбор. И в экспорт импорт вместо номера подставляй этот реквизит. и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 14:45 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
ПалестинецСоздай в Документы->ОбщиеРеквизиты реквизит GUID. поставь галочку отбор. И в экспорт импорт вместо номера подставляй этот реквизит. и всё. В общем случае это хороший вариант. Такую возможность я знаю, мы её рассматривали, но поиск по общему реквизиту всё равно медленней, чем поиск по номеру документа. При небольшом объеме данных это не так заметно, а при нашем имеет значение каждый процент производительности. Период поиска документа у нас год. Потому что дата документа может, изменится, с даты допустим текущего месяца, после исправления в учреждении стать датой прошлого или даже позапрошлого месяца. Такая возможность вероятна. Если бы период был месяц, то поиск по общему реквизиту нас бы устроил, но к сожалению это не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 08:47 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
aleks2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. А как востановить тот ГУИД номер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 09:38 |
|
||
|
Подскажите алгоритм сжатия строки текста
|
|||
|---|---|---|---|
|
#18+
ффф aleks2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. А как востановить тот ГУИД номер? А подумать? Нет прЫвычки? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2006, 21:13 |
|
||
|
|

start [/forum/search_topic.php?author=Programmer+C%23&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 648ms |
| total: | 764ms |

| 0 / 0 |
