| 
    
            
         
         | 
    
  | 
Уменьшить количество символов во внутреннем идентификаторе | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        НачинающийНик    
     15.02.19 
            ✎
    11:36 
 | 
         
        Добрый день,
 
        настроен обмен данными (отчет о продажах и проч) с другой ИС по внутреннему идентификатору 1с, все работало ок. ИС-приемник поменяли, теперь есть ограничение на код - 17 символов. Типовую менять не хочется (да и обработки обмена тоже сильно менять не охота), может у кого какая идея есть на этот счет? Может хэш-функцию от внутреннего идентификатора сделать, но я в них не очень шарю, уникальность хэшкода от уникального внутреннего идентификатора сохранится?  | 
|||
| 
    1
    
        ДенисЧ    
     15.02.19 
            ✎
    11:37 
 | 
         
        Сделай свой идентификатор. С библиотекаршами и чаепитием     
         | 
|||
| 
    2
    
        Вафель    
     15.02.19 
            ✎
    11:38 
 | 
         
        символы Юникод?     
         | 
|||
| 
    3
    
        НачинающийНик    
     15.02.19 
            ✎
    11:38 
 | 
         
        (1) С хэшем не прокатит? Лень, как вы понимаете :)     
         | 
|||
| 
    4
    
        НачинающийНик    
     15.02.19 
            ✎
    11:38 
 | 
         
        (2) не понял вопроса, если честно     
         | 
|||
| 
    5
    
        Вафель    
     15.02.19 
            ✎
    11:39 
 | 
         
        (3) хэш на то и хэш, что это не однозначное соотвествие     
         | 
|||
| 
    6
    
        Вафель    
     15.02.19 
            ✎
    11:39 
 | 
         
        ГУИД - 16 байт.  
        Строка 17 символов - значит должно влезть, даже без юникода  | 
|||
| 
    7
    
        НачинающийНик    
     15.02.19 
            ✎
    11:40 
 | 
         
        (5) ну т.е. считаете один выход - звать библиотекарш, как в (1) ?     
         | 
|||
| 
    8
    
        Вафель    
     15.02.19 
            ✎
    11:41 
 | 
         
        а если юникод, то даже 2 гуида влезет     
         | 
|||
| 
    9
    
        НачинающийНик    
     15.02.19 
            ✎
    11:42 
 | 
         
        юникод, в смысле? вы спрашиваете можно ли юникод отправить в ИС приемник?     
         | 
|||
| 
    10
    
        НачинающийНик    
     15.02.19 
            ✎
    11:43 
 | 
         
        d6c20ebd-0276-11db-8007-0013d4609ea4
 
        36 символов. Если дефисы выкинуть 32 остается..  | 
|||
| 
    11
    
        Вафель    
     15.02.19 
            ✎
    11:44 
 | 
         
        думай еще     
         | 
|||
| 
    12
    
        НачинающийНик    
     15.02.19 
            ✎
    11:45 
 | 
         
        (11) думал.. нет идей. Пришел сюда, здесь по умнее, может подскажут как быть     
         | 
|||
| 
    13
    
        Вафель    
     15.02.19 
            ✎
    11:47 
 | 
         
        подсказка: не все символы алфавита используются в гуиде     
         | 
|||
| 
    14
    
        НачинающийНик    
     15.02.19 
            ✎
    11:47 
 | 
         
        :) понимаю что там 16тиричная система.. но.. не улавливаю. В 32ричную перекодировать?     
         | 
|||
| 
    15
    
        VladZ    
     15.02.19 
            ✎
    11:49 
 | 
         
        (14) Как вариант.     
         | 
|||
| 
    16
    
        Вафель    
     15.02.19 
            ✎
    11:49 
 | 
         
        если нужно чтоб читабельно было можно взять русск + англ + цифры + заглавные как буквы с другим кодом     
         | 
|||
| 
    17
    
        НачинающийНик    
     15.02.19 
            ✎
    11:51 
 | 
         
        D6C20EBD027611DB80070013D4609EA4(16) = 6MO87BQ0JM27DO01O02FA617L4(32)
 
        Почти )  | 
|||
| 
    18
    
        Мыш    
     15.02.19 
            ✎
    11:52 
 | 
         
        (16) Так можно в 8 символов уложиться )     
         | 
|||
| 
    19
    
        НачинающийНик    
     15.02.19 
            ✎
    11:54 
 | 
         
        (18) есть функция :)?     
         | 
|||
| 
    20
    
        Мыш    
     15.02.19 
            ✎
    11:55 
 | 
         
        (19) Где-то была. Что-то из разряда "МойГенийДаритВам" )))
 
        Надо порыться  | 
|||
| 
    21
    
        НачинающийНик    
     15.02.19 
            ✎
    11:57 
 | 
         
        (20) очень надо, поищите пожалуйста     
         | 
|||
| 
    22
    
        Вафель    
     15.02.19 
            ✎
    11:58 
 | 
         
        (21) берешь 2 символа - ему в соответствие ставишь 1. 
        таблицу соотвествий можно руками заполнить  | 
|||
| 
    23
    
        НачинающийНик    
     15.02.19 
            ✎
    12:00 
 | 
         
        256 вариантов таблица получается, правильно я посчитал?     
         | 
|||
| 
    24
    
        Йохохо    
     15.02.19 
            ✎
    12:02 
 | 
         
        (23) только если глазами посчитать будет сильно меньше     
         | 
|||
| 
    25
    
        Мыш    
     15.02.19 
            ✎
    12:02 
 | 
         
        (21) Навскидку не нашел, сорри     
         | 
|||
| 
    26
    
        НачинающийНик    
     15.02.19 
            ✎
    12:33 
 | 
         
        не хватает, блин :((
 
        цифры - 10 символов английский алфавит строчный + прописной 52 русский алфавит строчный + прописной 66 128 вариантов. Мне то 256 надо :(  | 
|||
| 
    27
    
        Вафель    
     15.02.19 
            ✎
    12:35 
 | 
         
        Значит не читабельный будет     
         | 
|||
| 
    28
    
        Nikoss    
     15.02.19 
            ✎
    12:42 
 | 
         
        (27) что значит не читабельный? типа без спец символов?     
         | 
|||
| 
    29
    
        НачинающийНик    
     15.02.19 
            ✎
    12:45 
 | 
         
        Что-то высох по идеям.
 
        Наверное придется (1) :(  | 
|||
| 
    30
    
        ptiz    
     15.02.19 
            ✎
    12:45 
 | 
         
        (0) Вариант 1: Пусть ИС-приемник заставят принимать 36 символов и не выпендриваются.
 
        Вариант 2: всё-таки править конфу, или сделать расширение, в котором добавить "регистр соответствий".  | 
|||
| 
    31
    
        Вафель    
     15.02.19 
            ✎
    12:47 
 | 
         
        (28) типа такого  
        ↓D·♂↨◙○▬♫  | 
|||
| 
    32
    
        НачинающийНик    
     15.02.19 
            ✎
    12:51 
 | 
         
        (31) приемник такое не возьмет     
         | 
|||
| 
    33
    
        Йохохо    
     15.02.19 
            ✎
    13:01 
 | 
         
        (32) уточни у них что такое символ     
         | 
|||
| 
    34
    
        Мыш    
     15.02.19 
            ✎
    14:09 
 | 
         
        ТС ещё тут? Вспомнил, где эти функции )     
         | 
|||
| 
    35
    
        Nikoss    
     15.02.19 
            ✎
    14:24 
 | 
         
        (34) тут уже не в функции проблема, а в том что в 17 символов не впихнуть 128бит, без кракозябский символов     
         | 
|||
| 
    36
    
        hhhh    
     15.02.19 
            ✎
    14:26 
 | 
         
        (32) в шестнадцатеричном коде 16 разных символов. Больше там нет в гуиде. 10 цифр и шесть букв, всё. Откуда вы 52 символа выцарапали, наверно пятница вам в голову ударила.     
         | 
|||
| 
    37
    
        Вафель    
     15.02.19 
            ✎
    14:26 
 | 
         
        (32) а китайские иероглифы примут?     
         | 
|||
| 
    38
    
        Мыш    
     15.02.19 
            ✎
    14:29 
 | 
         
        (35) Этта да. Надо 185 символов.     
         | 
|||
| 
    39
    
        Мыш    
     15.02.19 
            ✎
    14:29 
 | 
         
        (36) Символов 16, а разрядов 32     
         | 
|||
| 
    40
    
        Конструктор1С    
     15.02.19 
            ✎
    14:51 
 | 
         
        (0) "ИС-приемник поменяли, теперь есть ограничение на код - 17 символов"
 
        А отдельное поле добавить под 1сный гуид никак?  | 
|||
| 
    41
    
        ам794123    
     15.02.19 
            ✎
    15:11 
 | 
         
        (0) прочти вот это http://catalog.mista.ru/public/635159/ и все сразу станет понятным     
         | 
|||
| 
    42
    
        НачинающийНик    
     17.02.19 
            ✎
    22:04 
 | 
         
        (41) почитал, спасибо!
 
        Выгрузил УИДы - справочник контрагенты 1с почему-то решила без кода сделать, из-за этого то в общем весь огород горожу. 3.5тыс уникальных ссылок, разделил по группам разделенные дефисами и посчитал количество повторений. 1-ая группа на моей выборке обеспечивала уникальность, т.е. ни одного повторения не было 2-ая группа разброс от 1 до 56 повторений 3-я группа от 50 до 451 повторений 4-ая от 1-220, 5ая от 1-791 Судя по (41) первые три группы обеспечивают уникальность интервала в десятых долях микросекунд, и это всего 12 символов. Добавим 4ую группу "счетчик уникальности" (не до конца понял, что это, но на 4 символа еще есть место) и получим уникальный код. Последняя часть, которую в (41) обзывают MAC адресом (я так понимаю не сервера, а клиента) можно отбросить, по ней меньше всего разброс, оно и понятно, большая часть клиентов сидят в rdp значит будет часто повторяться т.к. MAC один. Получается 16 символов которые должны обеспечить уникальность кода. Надеюсь я все правильно понял. Ну если возникнут проблемы с повторениями, то это проблемы "меня из будущего", а не мои. Наверное он будет решать как в (1) :))  | 
|||
| 
    43
    
        НачинающийНик    
     17.02.19 
            ✎
    22:06 
 | 
         
        (42) устал наверное. 4 и 5 не помещаются, только 1, 2 и 3я влезут.     
         | 
|||
| 
    44
    
        bolero    
     17.02.19 
            ✎
    22:22 
 | 
         
        (42) если ВЭД не планируется - пиши свой порядковый номер (читай, номер справочника) в "НаименованиеМеждународное" или что там в твоей конфе есть.
 
        При записи новых контрагентов чтобы не мучить базу вычислением максимума от строки, можно взять unix time - там 10 цифр. Главное - проверить, что пол-секунды назад другого не записали, и единичку-две накинуть (либо Отказ бросить). Либо микросекунды добавить, будет 16 цифр. будущий ты, правда, сильно удивится, когда начнет ВЭД  | 
|||
| 
    45
    
        НачинающийНик    
     17.02.19 
            ✎
    22:30 
 | 
         
        (44) так 1,2 и 3 группа и так время в десятых долях микросекунд, зачем еще что-то придумывать.     
         | 
|||
| 
    46
    
        trad    
     17.02.19 
            ✎
    23:34 
 | 
         
        md5 хэш
 
        128бит = 16 байт Уникальность сохранится  | 
|||
| 
    47
    
        trad    
     17.02.19 
            ✎
    23:34 
 | 
         
        Только не просите меня это доказать )     
         | 
|||
| 
    48
    
        palsergeich    
     17.02.19 
            ✎
    23:53 
 | 
         
        (46) Гуид тоже 16 байт.
 
        Тут не могут 16 байт в 16 строковых символов уложить.  | 
|||
| 
    49
    
        bolero    
     17.02.19 
            ✎
    23:57 
 | 
         
        (46) (48) у ТС ограничение на использование всех битов в байте, но это не точно - он до сих пор на (33) не ответил     
         | 
|||
| 
    50
    
        Мыш    
     18.02.19 
            ✎
    09:05 
 | 
         
        (48) Тут вопрос, что считать строковыми символами. В 185 укладывается, но это с расширенной таблицей ascii     
         | 
|||
| 
    51
    
        mcarrowd    
     18.02.19 
            ✎
    09:36 
 | 
         
        Где-то видел мега-функцию на делфи, которая из гуида делала строку с кириллицей на 23 символа. Сдаётся мне, что без "кракозябр" короче не сделать. А не всякая кракозябра нормально ляжет в БД.     
         | 
|||
| 
    52
    
        Xapac    
     модератор 
    18.02.19 
            ✎
    09:55 
 | 
         
        (0) Дай по жопе авторам другой ИС. пускай байтов добавят. Это же не проблема     
         | 
|||
| 
    53
    
        НачинающийНик    
     18.02.19 
            ✎
    10:46 
 | 
         
        (50) почему ты считаешь 185? если по два символа 16бит в 1 переделывать это 16 х 16 = 256 вариантов. Я же считал уже: цифры - 10 символов
 
        английский алфавит строчный + прописной 52, русский алфавит строчный + прописной 66 = 128 символов. Всякие спецсимволы *&^&*!$# я уверен нельзя. (33) молчат пока. наверное нестандартный вопрос :)  | 
|||
| 
    54
    
        Nikoss    
     18.02.19 
            ✎
    10:59 
 | 
         
        (53) 
 
        "если по два символа 16бит в 1 переделывать это 16 х 16 = 256 вариантов" что это такое? ты сам это придумал? если так по этому у тебя и 256. Мы же говорим о 185-ричной системе счисления, которая как раз влазит в 17 символов. Т.е. максимальный 16-ричный гуид 1С - это 17 символов 185-ричной системы счисления.  | 
|||
| 
    55
    
        Йохохо    
     18.02.19 
            ✎
    11:10 
 | 
         
        судя по той статье вот такая маска будет максимально уникальной FFFFFFFF-FFFF-0FFF-000F-000000000000 и с "3.5тыс уникальных ссылок" смысла искать дальше нет     
         | 
|||
| 
    56
    
        НачинающийНик    
     18.02.19 
            ✎
    11:17 
 | 
         
        (54) была идея брать два подряд идущих символа 16тиричной системы и переделывать в 1 по своей таблице символов цифры, кириллица + латиница в двух регистрах. Два символа это 16х16=256 вариантов.
 
        (55) Все верно, в третьей части FFFFFFFF-FFFF-0FFF-000F-000000000000 первый символ, это метод присваивания - случайный или от времени, т.к. справочник один, там всегда будет один тот же символ. А вот почему в 4 сегменте последний символ?  | 
|||
| 
    57
    
        Йохохо    
     18.02.19 
            ✎
    11:21 
 | 
         
        (56) в четвертой "Clock Sequence - используется чтобы избежать появления дубликатов, когда часы переводятся назад или меняется идентификатор узла. Если предыдущее  значение счетчика известно - то увеличивается на единицу, иначе берется случайное число." т.е. достаточно уникальная фигня на блок из 32 штук, избыточно для 3500, но почему нет, раз влезает     
         | 
|||
| 
    58
    
        Йохохо    
     18.02.19 
            ✎
    11:28 
 | 
         
        только если делать синхру и взад и вперед, где то засмеется ДенисЧ из (1)     
         | 
|||
| 
    59
    
        Мыш    
     18.02.19 
            ✎
    11:52 
 | 
         
        (53) 185^17 > 16^32 > 184^17     
         | 
|||
| 
    60
    
        Мыш    
     18.02.19 
            ✎
    11:55 
 | 
         
        (0) Пока ты тут, забирай:
 
        Res = AnyToAny("FFFF", "0123456789ABCDEF", "01") function AnyToDec(val IS, T) R = 0; DC = StrLen(T); IL = StrLen(IS); for i=0 to IL-1 do S = Mid(IS, IL-i, 1); P = StrFind(T, S)-1; R = R + P*Pow(DC,i); enddo; return R; endfunction function DecToAny(val ID, T, D=0) R = ""; RA = new Array; DC = StrLen(T); B = -1; while not B=0 do O = ID%DC; RA.Add(Mid(T,O+1,1)); B = (ID - O)/DC; ID = B; enddo; for i=0 to RA.UBound() do R = RA[i]+R; enddo; if D>StrLen(R) then Z = Left(T, 1); for i=1 to D-StrLen(R) do R = Z + R; enddo; endif; return R; endfunction function AnyToAny(IS, IT, DT) return DecToAny(AnyToDec(IS, IT), DT); endfunction  | 
|||
| 
    61
    
        Lama12    
     18.02.19 
            ✎
    12:20 
 | 
         
        (0) Может я ошибаюсь, но ГУДИ это 16 байтов. Что мешает его по другому представлять?     
         | 
|||
| 
    62
    
        Rema Dan    
     18.02.19 
            ✎
    12:25 
 | 
         
        (0) Похожая проблема и решение: http://ethicorum.ru/?p=161&lang=ru По её мотивам можно сжать UID до нужных размеров.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |