| 
    
        
     
     | 
    
  | 
Прошу проверить код | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:00 
 | 
         
        Дня доброго.
 
        Есть задача собрать хеш с данных, записать его в 1С и выполнять поиск по нему. Хеш я решил собрать MD5, проверил на 15 млн. записей, коллизий не нашел. MD5 - это 16 байт и я их отлично засуну в УникальныйИдентификатор 1С и проиндексирую. В виде строки это будет 32 символа, 64 байта в данных и такое хранение хеша и его индекса нам и вообще не нужно. Новый ХешированиеДанных(MD5) возвращает хеш в виде ДвоичныхДанных, которые мне надо преобразовать в UUID. Делаю я это так: Функция ПреобразоватьДвоичныеДанныеВУникальныйИдентификатор(Данные) Экспорт Если Данные.Размер()<>16 Тогда //В уникальном идентификаторе должно быть 16 байт Возврат Неопределено; КонецЕсли; БуферДвоичныхДанныхХеша=ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Данные); // 16 байт D1=БуферДвоичныхДанныхХеша.ПолучитьСрез(0,4); // 4 первых байта D1=D1.Перевернуть(); // hex требует bigEndian D2=БуферДвоичныхДанныхХеша.ПолучитьСрез(4,2); // 2 вторых байта D2=D2.Перевернуть(); D3=БуферДвоичныхДанныхХеша.ПолучитьСрез(6,2); // 2 третьих байта D3=D3.Перевернуть(); D4=БуферДвоичныхДанныхХеша.ПолучитьСрез(8); // 8 байт остатка D40=D4.ПолучитьСрез(0,1); D41=D4.ПолучитьСрез(1,1); D42=D4.ПолучитьСрез(2,1); D43=D4.ПолучитьСрез(3,1); D44=D4.ПолучитьСрез(4,1); D45=D4.ПолучитьСрез(5,1); D46=D4.ПолучитьСрез(6,1); D47=D4.ПолучитьСрез(7,1); D1=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D1); D2=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D2); D3=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D3); D40=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D40); D41=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D41); D42=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D42); D43=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D43); D44=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D44); D45=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D45); D46=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D46); D47=ПолучитьHexСтрокуИзБуфераДвоичныхДанных(D47); ИдентификаторСтрокой=D1+"-"+D2+"-"+D3+"-"+D40+D41+"-"+D42+D43+D44+D45+D46+D47; Возврат Новый УникальныйИдентификатор(ИдентификаторСтрокой); КонецФункции  | 
|||
| 
    1
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:05 
 | 
         
        Я эту шлабуду проверил, сохранив эти ДвоичныеДанные в файл, загрузив его 16 байт в Дельфи, в TGUID и преобразуя TGUID в строку.
 
        Именно таким образом я понял, что нужно делать: D1=D1.Перевернуть(); // hex требует bigEndian так как порядок байт в hex представлении не совпадал (сформированной в 1С и Дельфи). Конечно, пофиг, у меня обратной функции не будет и она не требуется, но все же. Вообще, нет ли каких - то вшитых ограничений на TGUID. Можно ли в него засовывать все, что хочешь. Я прогнал 10Кзаписей и пока вроде норм. Дальше потестю на 15 млн, но думаю, все будет ок.  | 
|||
| 
    2
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:07 
 | 
         
        (0) >ИдентификаторСтрокой=D1+"-"+D2+"-"+D3+"-"+D40+D41+"-"+D42+D43+D44+D45+D46+D47;
 
        замени на СтрШаблон()  | 
|||
| 
    3
    
        vde69    
     27.04.21 
            ✎
    21:08 
 | 
         
        Зачем все это?     
         | 
|||
| 
    4
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:09 
 | 
         
        (3) Процитирую то, что написал на партнерке:
 
        "В связи с активным внедрением систем маркировок и прослеживаемости товаров встает проблема адекватного хранения цифровых идентификаторов. На данный момент, цифровые идентификаторы представлены нижней частью ASCII таблицы символов (цифры и латиница) и позволяют хранить себя в однобайтных строках. Для цифровых идентификаторов размером 150 символов (новые алкогольные марки) это становится уже критичным. Использование 2-хбайтных строк влечет за собой 2-х кратный рост как таблицы данных, так и таблицы индекса по этому идентификатору, а также избыточные накладные на обновление индекса и поиска по нему. Конечно, мы можем это обойти построением хешей MD5, размером в 16 байт, которые корректно можно преобразовать в УникальныйИдентификатор и реализовать хранение средствами платформы, а значения цифровых идентификаторов хранить в хранилище значений, перегнав их в однобайтную строку, но это как то странно выглядит в целом."  | 
|||
| 
    5
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:11 
 | 
         
        У нас таблица марок уже самая большая в системе.
 
        Ушедшие марки я хочу архивировать, исключая из индекса строковое ее представление и помещая ее в однобайтное хранилище (скорее всего без сжатия). А в индекс засовывать 16 байтных хеш для поиска.  | 
|||
| 
    6
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:11 
 | 
         
        (0) И код оптимизируй, точнее надо будет сравнить по скорости
 
        Может проще ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); ХешированиеДанных.Добавить("Hello Word!"); MD5Строкой = СокрЛП(ХешированиеДанных.ХешСумма); И далее из строки вытащить в формат для Новый УникальныйИдентификатор  | 
|||
| 
    7
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:12 
 | 
         
        (6) "MD5Строкой = СокрЛП(ХешированиеДанных.ХешСумма);"
 
        Это недокументированная фича.  | 
|||
| 
    8
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:12 
 | 
         
        (7) Кто сказал?     
         | 
|||
| 
    9
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:13 
 | 
         
        (8) Base64Строка(), добавляющий переносы строк, сказал.     
         | 
|||
| 
    10
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:14 
 | 
         
        (8) Да, это работает, но вдруг 1С скажет - ага и выключит. Лучше я документированными методами это сделаю. По быстродействию все нормально.     
         | 
|||
| 
    11
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:15 
 | 
         
        (9) (10) ПолучитьСтрокуИзДвоичныхДанных ?     
         | 
|||
| 
    12
    
        timurhv    
     27.04.21 
            ✎
    21:16 
 | 
         
        (4) 13млн марок весит 5.5Гб с SHA256 по приходу (переделал кстать как в других темах советовали). Можно и до 3-4 Гб уменьшить, но тогда будет долгая запись.
 
        В основном это сигареты за 10 мес. Очистку не делал, объем считаю приемлемым, когда начнут расти таблицы буду удалять проданные марки.  | 
|||
| 
    13
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:16 
 | 
         
        (11) Нет, Егор.     
         | 
|||
| 
    14
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:16 
 | 
         
        (11)+ хотя это изврат     
         | 
|||
| 
    15
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:18 
 | 
         
        Кстати изначально хеш MD5 для поиска это изврат     
         | 
|||
| 
    16
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:18 
 | 
         
        (12) Ну я пока буду архивировать, если они будут заново по возвратам заходить - разархировать.     
         | 
|||
| 
    17
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:19 
 | 
         
        Имхо выноси наружу из 1С и не страдай хе     
         | 
|||
| 
    18
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:19 
 | 
         
        (15) Дадада, Егор. По сабжу что-то будет?     
         | 
|||
| 
    19
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:19 
 | 
         
        (17)+ sqlite или иная СУБД     
         | 
|||
| 
    20
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:20 
 | 
         
        (18) см (17)
 
        про код ничего  | 
|||
| 
    21
    
        rsv    
     27.04.21 
            ✎
    21:21 
 | 
         
        (0) имха зачем имитировать рабоиу субд по хранению и 
 
        поиску ? Неужели субд загнется при поиске в табличке по полю с типом варчар150?  | 
|||
| 
    22
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:21 
 | 
         
        (20) Ок.     
         | 
|||
| 
    23
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:22 
 | 
         
        (21) А вы не в КТ-2000 работаете :-) ?
 
        https://kt-alkogol.ru/forum/10-----/6641-khranilishche-aktsiznykh-marok.html  | 
|||
| 
    24
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:23 
 | 
         
        (21) можно SGTIN разбить на две части так то и хранить в двух табличках     
         | 
|||
| 
    25
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:23 
 | 
         
        (24)+ или иной идентификатор если у него определен внутренний формат по которому можно разделить     
         | 
|||
| 
    26
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:24 
 | 
         
        (25)+ а делать от длинного идентификатора MD5 хэш и хранить его это легкий изврат     
         | 
|||
| 
    27
    
        timurhv    
     27.04.21 
            ✎
    21:25 
 | 
         
        (16) Я планирую раз в месяц\квартал окончательно удалять записи из БД после истечения срока возврата от покупателя. Удаляемые данные скидывать в текстовый файл с архивированием.
 
        Зачем этот мусор старый? :)  | 
|||
| 
    28
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:26 
 | 
         
        (25) (26) Это можно было бы сделать для новых марок, у которых есть значащая часть в первые 14 символов, но у нас остаются старые марки, у которых другая значащая часть. Писать 2 алгоритма это не меньший изврат.     
         | 
|||
| 
    29
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:27 
 | 
         
        (25) (26) Ну и переход на эту стратегию влечет большие изменения, а тут я делаю лишь надстройку и не рушу все работающее.     
         | 
|||
| 
    30
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:27 
 | 
         
        (27) Иногда может пригодиться для разбора ситуаций     
         | 
|||
| 
    31
    
        H A D G E H O G s    
     27.04.21 
            ✎
    21:28 
 | 
         
        (27) Срок возврата как то регламентирован?     
         | 
|||
| 
    32
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:30 
 | 
         
        (31) 3 года вроде или "срок годности"     
         | 
|||
| 
    33
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    21:31 
 | 
         
        (32)+ Учти что марки будут повторяться через ХЗ лет
 
        Это заложено  | 
|||
| 
    34
    
        timurhv    
     27.04.21 
            ✎
    21:39 
 | 
         
        (30) Думаю файл формировать по наименованию GTIN + Год + Месяц/Квартал. Если надо будет поднять историю, то сделаю обработку по поиску марки в этих файлах.
 
        (31) Только законом и расширенным сроком от производителя. У нас основной объем по количеству марок сигареты и молочка, не думаю что там необходимо хранить марки после продажи в течение 1-3 мес.  | 
|||
| 
    35
    
        BeerHelpsMeWin    
     27.04.21 
            ✎
    21:53 
 | 
         
        я бы тоже все лишнее раньше какого-то периода вынес во внешний источник     
         | 
|||
| 
    36
    
        Вафель    
     27.04.21 
            ✎
    22:24 
 | 
         
        А разве в алкомарке серия+номер не уникальны?     
         | 
|||
| 
    37
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    22:27 
 | 
         
        (36) "серия+номер" занимают много места в базе, ТС решил брать от них MD5 и хранить только его     
         | 
|||
| 
    38
    
        Вафель    
     27.04.21 
            ✎
    22:28 
 | 
         
        Серия 3 знака и номер 8 . Итого 11     
         | 
|||
| 
    39
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    22:32 
 | 
         
        (38) хохо     
         | 
|||
| 
    40
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    22:33 
 | 
||||
| 
    41
    
        Вафель    
     27.04.21 
            ✎
    22:34 
 | 
         
        (40) и что там? влом читать     
         | 
|||
| 
    42
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    22:34 
 | 
         
        (41) 150 символов что в 1С при 2 байта на символ много в базе     
         | 
|||
| 
    43
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    22:35 
 | 
         
        (42)+ 300 байт vs 16 байт УИД/Ссылка     
         | 
|||
| 
    44
    
        Вафель    
     27.04.21 
            ✎
    22:36 
 | 
         
        Ну так я же предлагал оставить только серию и номер     
         | 
|||
| 
    45
    
        H A D G E H O G s    
     27.04.21 
            ✎
    22:44 
 | 
         
        (44) Это на новую марку. На старую - по другому.     
         | 
|||
| 
    46
    
        Вафель    
     27.04.21 
            ✎
    23:01 
 | 
         
        А эти хэши хранить где? 
        В новом справочнике?  | 
|||
| 
    47
    
        mistеr    
     27.04.21 
            ✎
    23:03 
 | 
         
        А каков размер самих этих марок? Я просто не в теме.
 
        Причины заморачиваться с хешами должны быть очень весомые. Место на дисках сейчас не дорогое.  | 
|||
| 
    48
    
        aka MIK    
     27.04.21 
            ✎
    23:04 
 | 
         
        (15) почему? долго md5 рассчитывается? есть метрики?     
         | 
|||
| 
    49
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    23:09 
 | 
         
        (48) та не просто сама идея хеша для ускорения поиска теряется тут
 
        от дублей защита слабая что один хэш будет на разные марки короче изврат  | 
|||
| 
    50
    
        aka MIK    
     27.04.21 
            ✎
    23:14 
 | 
         
        (49) хеш не будет один на разные марки, это же его суть     
         | 
|||
| 
    51
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    23:22 
 | 
         
        (50) опс     
         | 
|||
| 
    52
    
        Garykom    
     гуру 
    27.04.21 
            ✎
    23:23 
 | 
||||
| 
    53
    
        H A D G E H O G s    
     28.04.21 
            ✎
    01:05 
 | 
         
        (46) Отдельный РС.
 
        Значения ШК я сначалл хотел вынести в отдельный справочник и хранить их по 10000 значений в элементе, чтобы было эффективное сжатие, а в РС - указатель на место ШК (аналог хранения в файлах), но обнаружилось, что коэффициент сжатия 1 Мб шк всего 50% (1 Мб сжимается в 500 Кб), так как криптохвосты слишком уникальны. Лучше всего срабатывал bzip2 (скорее всего из-за преобразования Барроуза — Уилера), но на столь малый выигрыш я решил забить и хранить ШК в элементе справочника.  | 
|||
| 
    54
    
        Конструктор1С    
     28.04.21 
            ✎
    06:07 
 | 
         
        Эм... А стоит ли овчинка выделки? Расчет делал, сколько твои 15 млн занимают и втом и в том виде?     
         | 
|||
| 
    55
    
        Йохохо    
     28.04.21 
            ✎
    06:25 
 | 
         
        (52) мд5 не надежен из-за существования алгоритма поиска коллизии, а не из-за алгоритма формирования. по мощности вроде 10е-8 данные/мд5, на реальных будет типа 10е-30 и все норм если в егаис хацкеров не завезут     
         | 
|||
| 
    56
    
        Йохохо    
     28.04.21 
            ✎
    06:29 
 | 
         
        + афаир там атака подменой блока, т.е. она алгоритмически не реализуема на 200 байтах     
         | 
|||
| 
    57
    
        Почему 1С    
     28.04.21 
            ✎
    07:43 
 | 
         
        (54) 166 против 300 байт
 
        (0) Каким методом получаешь однобайтовую строку?  | 
|||
| 
    58
    
        victuan1    
     28.04.21 
            ✎
    08:09 
 | 
         
        (28) А чем плохо написать разные алгоритмы для разных видов марок?
 
        1) для ЧЗ: ГТИН+СерНУМ 2) для новой алкомарки: первые 14 символов 3) для старой алкомарки: 23 символа, начиная с 9-го. Чем не ХЭШ-функция? И никаких вероятностных коллизий. И заодно готовый КИ (CIS) без траты времени его вычисления доп. функцией  | 
|||
| 
    59
    
        sitex    
     naïve 
    28.04.21 
            ✎
    08:11 
 | 
         
        (0) Спрашивается, для чего хранить это в 1С, может все таких вынести.?     
         | 
|||
| 
    60
    
        sitex    
     naïve 
    28.04.21 
            ✎
    08:12 
 | 
         
        (58) Не меньше времени уйдет вычислять какой вид у тебя марки .     
         | 
|||
| 
    61
    
        Кирпич    
     28.04.21 
            ✎
    08:21 
 | 
         
        Нахер чота выдумывать. Хранить как есть во внешней базе. Дешево, удобно и практично. Пока Китайцы не перестали делать нам новые террабайтные диски, проблем нету.     
         | 
|||
| 
    62
    
        Почему 1С    
     28.04.21 
            ✎
    08:24 
 | 
         
        (61) Как будто хранение во внешней базе сделано из коробки и не надо для этого тоже код писать выдумывать. А потом при надобности обратно все забирать из внешней базы.     
         | 
|||
| 
    63
    
        Кирпич    
     28.04.21 
            ✎
    08:25 
 | 
         
        (62) Программисты напишут. Один хрен сидят на мисте. Пускай работают.     
         | 
|||
| 
    64
    
        sitex    
     naïve 
    28.04.21 
            ✎
    08:31 
 | 
         
        (0) Во одной конторе, видел вынос базы по маркам в MongoDB. Подробностей не знаю реализации . Просто видел что в базе этих марок нет.     
         | 
|||
| 
    65
    
        timurhv    
     28.04.21 
            ✎
    08:55 
 | 
         
        (58) Разные регистры букв для запроса СУБД одно и тоже:
 
        00000000000001aaaaaaa 00000000000001AAAAAAA Соответственно в регистр сведений 1С эти марки не запишутся и вывалится ошибка: "Запись с такими ключевыми полями существует!".  | 
|||
| 
    66
    
        Kongo2019    
     28.04.21 
            ✎
    08:56 
 | 
         
        (0)Круто подошел, а тупо запихал во отдельную базу, на Firberd, сделал свою оболочку для обмена.     
         | 
|||
| 
    67
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    09:02 
 | 
         
        (55) Причем тут поиск коллизии когда даже без специального поиска вероятность наткнуться слишком высока
 
        И то что ТС "проверил на 15 млн. записей, коллизий не нашел" нихрена не значит  | 
|||
| 
    68
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    09:03 
 | 
         
        (61) +1 за внешнее хранение     
         | 
|||
| 
    69
    
        Кирпич    
     28.04.21 
            ✎
    09:13 
 | 
         
        (68) Да тупо базу 1с с одним справочником и http сервисом. Это если не обучен всяким эскулайтам, фаирбёрдам и прочим питонам с сишарпами     
         | 
|||
| 
    70
    
        Кирпич    
     28.04.21 
            ✎
    09:13 
 | 
         
        миллион ключей это 150 мегабайт     
         | 
|||
| 
    71
    
        Почему 1С    
     28.04.21 
            ✎
    09:19 
 | 
         
        (70) 300 же, но все равно фигня согласен.     
         | 
|||
| 
    72
    
        Кирпич    
     28.04.21 
            ✎
    09:20 
 | 
         
        (71) почему 300? вроде 150 байт одна марка     
         | 
|||
| 
    73
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    09:24 
 | 
         
        (72) марка да а хранение символов в строках в 1С 2 в 1     
         | 
|||
| 
    74
    
        Кирпич    
     28.04.21 
            ✎
    09:28 
 | 
         
        (72) А. Ну тогда если мало, то на 1с, а если много, то на любую другую субд     
         | 
|||
| 
    75
    
        H A D G E H O G s    
     28.04.21 
            ✎
    10:56 
 | 
         
        Вы такие интересные.
 
        А что даст вынос во внешнюю базу?  | 
|||
| 
    76
    
        Кирпич    
     28.04.21 
            ✎
    10:59 
 | 
         
        (75) Так вроде бы место в базе хотели съэкономить     
         | 
|||
| 
    77
    
        Kongo2019    
     28.04.21 
            ✎
    11:00 
 | 
         
        (75) Так это с ней можно работать напрямую, не средствами 1С.
 
        причем FireBerd делает MSSQL в легкую. да железо у меня слабое, и готовит я не умею. Ну как-то так. вот.  | 
|||
| 
    78
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:05 
 | 
         
        (76) Ну базу то нужно разместить на том же сервере. По сети мы потеряем в производительности.     
         | 
|||
| 
    79
    
        Кирпич    
     28.04.21 
            ✎
    11:14 
 | 
         
        (78) А у вас конвейер чтоли с бутылками?     
         | 
|||
| 
    80
    
        Кирпич    
     28.04.21 
            ✎
    11:14 
 | 
         
        Или алкогольный гипермаркет     
         | 
|||
| 
    81
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:15 
 | 
         
        (78) Какой именно производительности вы потеряете?
 
        Думаешь запрос внутри 1С быстрее чем запрос наружу?  | 
|||
| 
    82
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:16 
 | 
         
        (79) Ну типа подождут?     
         | 
|||
| 
    83
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:16 
 | 
         
        (82) Типа ты протести, причем смотря как делать запросы     
         | 
|||
| 
    84
    
        Кирпич    
     28.04.21 
            ✎
    11:16 
 | 
         
        (82) Ту долю миллисекунды подождут     
         | 
|||
| 
    86
    
        mistеr    
     28.04.21 
            ✎
    11:17 
 | 
         
        (75) Например, возможность использовать все возможности СУБД для компактного хранения.
 
        И для эффективного поиска, вроде блум фильтров.  | 
|||
| 
    87
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:17 
 | 
         
        (85) У тебя сервер 1С один хер сервер sql вызывает
 
        И точно такое же если прямые запросы можешь делать на тот же сервер sql Только не через запросы 1С а напрямую  | 
|||
| 
    88
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:18 
 | 
         
        Хотя нет, немного не так я общение построил.
 
        Егора я просто игнорить буду.  | 
|||
| 
    89
    
        Конструктор1С    
     28.04.21 
            ✎
    11:18 
 | 
         
        (57) получается вся затея ради экономии пары гигабайт места на диске? Ну я прям не знаю...     
         | 
|||
| 
    90
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:18 
 | 
         
        (89) Хохо. Бэкап базы 1С     
         | 
|||
| 
    91
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:20 
 | 
         
        (90)+ Мы как доки из документооборота вынесли так бэкап (который по сложным графикам и много хранится долго) стал вместо 20 гигов всего 200мб     
         | 
|||
| 
    92
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:20 
 | 
         
        (89) 15 млн марок занимает 14 Гб места. Это я замерял на одном из клиентов, который набрал такой объем за 10 месяцев.
 
        Сейчас есть клиент, который заявляет 10 млн марок за месяц. Давайте посчитаем, сколько Гб места потребуется клиенту в год на хранение всего одной таблицы в базе?  | 
|||
| 
    93
    
        Конструктор1С    
     28.04.21 
            ✎
    11:20 
 | 
         
        (87) ком-соединения будут долго подниматься     
         | 
|||
| 
    94
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:21 
 | 
         
        (93) в жопу ком     
         | 
|||
| 
    95
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:21 
 | 
         
        (94)+ имхо ВК или http даже если списком марки а не по одной     
         | 
|||
| 
    96
    
        Кирпич    
     28.04.21 
            ✎
    11:24 
 | 
         
        (92) А не анализировали как часто им эти марки нужно потом из базы доставать?     
         | 
|||
| 
    97
    
        sitex    
     naïve 
    28.04.21 
            ✎
    11:25 
 | 
         
        (93) COM вообще надо забыть как страшный сон и не произносить в слух. )))     
         | 
|||
| 
    98
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:25 
 | 
         
        (96) Нет, не анализировали.
 
        Но иногда нужно понимать, какие марки продавали клиенту, когда он заявляет пересорт, к примеру.  | 
|||
| 
    99
    
        sitex    
     naïve 
    28.04.21 
            ✎
    11:26 
 | 
         
        (98) А какие сложности итого по выносу ? .Если  у других уже есть практика выноса за пределы 1С     
         | 
|||
| 
    100
    
        Кирпич    
     28.04.21 
            ✎
    11:27 
 | 
         
        В 1с их точно пихать не надо. Хоть заужимайся, один хрен база распухать будет. Да и вычисление MD5 это нихрена не быстрый процесс. Не намного быстрее обращения через сеть.     
         | 
|||
| 
    101
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:27 
 | 
         
        (99) У всех есть какая-то практика и они ее придерживаются.     
         | 
|||
| 
    102
    
        Конструктор1С    
     28.04.21 
            ✎
    11:27 
 | 
         
        (92) так и в чём проблема? Клиенту лишь надо подкупить ХДД, которые обойдутся в разы дешевле работ по оптимизации     
         | 
|||
| 
    103
    
        Kongo2019    
     28.04.21 
            ✎
    11:28 
 | 
         
        (92) Ну пусть диски купит. У месяц, линия розлива до 100 гигов в пике. И ниче. Купили PCI-E SSD на терабайту нормально тянет.     
         | 
|||
| 
    104
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:28 
 | 
         
        (102) Я это делаю в свое свободное личное время.     
         | 
|||
| 
    105
    
        Конструктор1С    
     28.04.21 
            ✎
    11:30 
 | 
         
        (104) ну тады ладн     
         | 
|||
| 
    106
    
        mistеr    
     28.04.21 
            ✎
    11:31 
 | 
         
        (98) Для "иногда" как раз лучше внешняя БД. А если это единичные случаи, то можно и текстовый фай разархивировать и погрепать.
 
        Жаль, что не анализировали. От тебя я наоборот ожидал системного подхода.  | 
|||
| 
    107
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:33 
 | 
         
        (106) Звиняйте, ананасав нема.     
         | 
|||
| 
    108
    
        Вафель    
     28.04.21 
            ✎
    11:35 
 | 
         
        (98) какие марки продавали ты не узнаешь, только можно будет определить продавали ли эти конкретно марки или нет     
         | 
|||
| 
    109
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:36 
 | 
         
        (107) Дима, вот ты иногда упираешься как животное на букву б     
         | 
|||
| 
    110
    
        Вафель    
     28.04.21 
            ✎
    11:36 
 | 
         
        (106) +1 за внешнюю БД     
         | 
|||
| 
    111
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:37 
 | 
         
        (108) А?     
         | 
|||
| 
    112
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:37 
 | 
         
        (110) Вопрос даже не стоит     
         | 
|||
| 
    113
    
        Вафель    
     28.04.21 
            ✎
    11:37 
 | 
         
        (111) у тебя же кода не будет, только хэш. 
        А это односторонняя функция  | 
|||
| 
    114
    
        sitex    
     naïve 
    28.04.21 
            ✎
    11:37 
 | 
         
        (110) Голосовалки жаль нет.     
         | 
|||
| 
    115
    
        Вафель    
     28.04.21 
            ✎
    11:38 
 | 
         
        (112) ну вот уже и твоя система начинает обрастать костылями вместо нормальных решений     
         | 
|||
| 
    116
    
        ILM    
     гуру 
    28.04.21 
            ✎
    11:39 
 | 
         
        Если на блокчейн перевести алкомарки, то может пить перестанут. Пока новый блок найдется, пока на его основе создадут набор акцизов и т.д.     
         | 
|||
| 
    117
    
        Кирпич    
     28.04.21 
            ✎
    11:39 
 | 
||||
| 
    118
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:40 
 | 
         
        (100) 71К преобразований за 6 секунд. Ну в принципе, долговато, но я попробую вынести в ВК, может даст эффект.
 
        https://prnt.sc/126uedx  | 
|||
| 
    119
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:40 
 | 
         
        (113) Будет, Анатолий.     
         | 
|||
| 
    120
    
        Вафель    
     28.04.21 
            ✎
    11:41 
 | 
         
        (119) если код остается, то в чем вообще смысл тогда     
         | 
|||
| 
    121
    
        Кирпич    
     28.04.21 
            ✎
    11:42 
 | 
         
        (118) А если процессор начнет дымить, то можно форточку открыть     
         | 
|||
| 
    122
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:42 
 | 
         
        (113) Ты немного не понял.
 
        Проблема то в том, что Алкомарка храниться в избыточных 300 байтах с избыточным индексом по этим 300 байтам. Я эти 300 байт заменяю на 16 байт хеша. А этот 150 символьный код храню в отдельном реквизите как 150 байт в ДвоичныхДанных, так как у 1С нет однобайтных строк. И при необходимости, могу сделать обратную операцию.  | 
|||
| 
    123
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:43 
 | 
         
        (121) Ахахаха.     
         | 
|||
| 
    124
    
        Вафель    
     28.04.21 
            ✎
    11:44 
 | 
         
        (122) и какой выигрыш на 1 млн марок?     
         | 
|||
| 
    125
    
        sitex    
     naïve 
    28.04.21 
            ✎
    11:45 
 | 
         
        (122) Получается еще и * 2 данные в базе.     
         | 
|||
| 
    126
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:46 
 | 
         
        (124) 
 
        300 Мб данных превращаются в 16 Мб данных. 300*1.2 Мб индекса превращаются в 16*1.2 Мб индекса Добавляется 150 Мб данных.  | 
|||
| 
    127
    
        sitex    
     naïve 
    28.04.21 
            ✎
    11:50 
 | 
         
        (126) Время на обработку всех этих манипуляций и время выноса в стороннюю БД - очень интересно где профит будет выше.     
         | 
|||
| 
    128
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:51 
 | 
         
        (127) Время на обработку будет ночью регламентным заданием     
         | 
|||
| 
    129
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    11:51 
 | 
         
        (117) Подразумевал те которые Муфлоны и Уриалы     
         | 
|||
| 
    130
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    11:52 
 | 
         
        (122) ты в наименование свой хеш закинуть хочешь ?
 
        А саму марку хранить еще где, с ссылкой на этот хеш ? ЗЫ: всё не читал  | 
|||
| 
    131
    
        sitex    
     naïve 
    28.04.21 
            ✎
    11:53 
 | 
         
        (128) А если потребуется здесь и сейчас ? нужны данные по поиску по конкретной марки Отчет движения ?     
         | 
|||
| 
    132
    
        Кирпич    
     28.04.21 
            ✎
    11:53 
 | 
         
        А можно копнуть в сторону переделать строку чтобы она занимала 150 байт. Выглядеть будет типа как абракадабра, но зато 150, а не 300     
         | 
|||
| 
    133
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:54 
 | 
         
        (131) Марка в архиве будет восстанавливаться обратной функцией.     
         | 
|||
| 
    134
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:55 
 | 
         
        (132) nvarchar в SQL-е занимает 2 байта на символ.     
         | 
|||
| 
    135
    
        sitex    
     naïve 
    28.04.21 
            ✎
    11:55 
 | 
         
        (133) Это понятно. Интересно что будет быстрее.     
         | 
|||
| 
    136
    
        Кирпич    
     28.04.21 
            ✎
    11:57 
 | 
         
        (134) ну и пускай. пихать в нее строку 75 символов. В базе будет 150     
         | 
|||
| 
    137
    
        Кирпич    
     28.04.21 
            ✎
    11:57 
 | 
         
        Нолики поудалять     
         | 
|||
| 
    138
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:57 
 | 
         
        (130) Сейчас у меня есть справочник Марки, код храниться в Наименовании.
 
        Я планирую сделать отдельный РС, в котором буду хранить хеш и ссылку на справочник, в справочнике Наименование будет пусто, а в отдельном реквизите "АрхивДанныхМарки" торчать код марки.  | 
|||
| 
    139
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:58 
 | 
         
        (136) Я это сделаю через ХранилищеЗначений.     
         | 
|||
| 
    140
    
        Кирпич    
     28.04.21 
            ✎
    11:59 
 | 
         
        (139) Так надо же индекс делать     
         | 
|||
| 
    141
    
        H A D G E H O G s    
     28.04.21 
            ✎
    11:59 
 | 
         
        (140) см (138). Индекс будет в регистре на Хеш     
         | 
|||
| 
    142
    
        Вафель    
     28.04.21 
            ✎
    12:02 
 | 
         
        а зачем дополнительный регистр?     
         | 
|||
| 
    143
    
        Кирпич    
     28.04.21 
            ✎
    12:02 
 | 
         
        (141) Да нафиг хеш. Просто строковое поле в регистре. Только ужатое до 150 байт и всё. Чтобы хеши не считать     
         | 
|||
| 
    144
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    12:03 
 | 
||||
| 
    145
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:05 
 | 
         
        (142) Если мы добавим UID в справочник - мы сразу увеличим его на 16+16*1.2 байт на элемент для всех элементов, даже не подлежащих архивации. Это же не строковый реквизит, который 0 байт, когда он пуст.     
         | 
|||
| 
    146
    
        Кирпич    
     28.04.21 
            ✎
    12:05 
 | 
         
        Типа было
 
        $0070 0071 0072 0065 стало $7071 7265 КодСимвола($7071) + КодСимвола($7275)  | 
|||
| 
    147
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:06 
 | 
         
        (146) А давай ты это сделаешь и продемонстрируешь, а я посмотрю на это?     
         | 
|||
| 
    148
    
        Вафель    
     28.04.21 
            ✎
    12:07 
 | 
         
        (145) те хэш ты на для всех вычисляешь? а как поиск марки будет выполняться для незахэшированных?     
         | 
|||
| 
    149
    
        mistеr    
     28.04.21 
            ✎
    12:08 
 | 
         
        (144) Колеса не каноничной формы.     
         | 
|||
| 
    150
    
        sitex    
     naïve 
    28.04.21 
            ✎
    12:10 
 | 
         
        (146) И что ? Будет $0070 7001 0072 0065 или $0070 0701 0702 0605 Дубль ?     
         | 
|||
| 
    151
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    12:10 
 | 
         
        (149) По канону я тоже умею
 
        Например тупо марку перевожу в несколько УИДов и храню в РС в измерениях  | 
|||
| 
    152
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    12:10 
 | 
         
        (151)+ Перевожу без хеширования     
         | 
|||
| 
    153
    
        Кирпич    
     28.04.21 
            ✎
    12:10 
 | 
         
        (147) А мне это зачем? Ты же научные изыскания проводишь. Я тебе предлагаю вариант. Может оно быстрее работать будет, а места занимать меньше.     
         | 
|||
| 
    154
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    12:11 
 | 
         
        150 символов = УИД1+УИД2+УИД3+...
 
        Это измерения будут А Ресурс что хошь  | 
|||
| 
    156
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:12 
 | 
         
        (148) (148) По коду, по 150 символам. Поиск нужен при загрузке входящей ТТН и при сканировании на ТСД.
 
        При загрузке входящей ТТН с признаком Возврат буду еще искать и по хешу, при сканировании на ТСД - искать по коду, если не нашел - тогда по хешу.  | 
|||
| 
    157
    
        Кирпич    
     28.04.21 
            ✎
    12:13 
 | 
         
        (150) Ты ничо не понял     
         | 
|||
| 
    158
    
        sitex    
     naïve 
    28.04.21 
            ✎
    12:14 
 | 
         
        (157) понял как (137) написал     
         | 
|||
| 
    159
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:16 
 | 
         
        (153) Мне нет резона рассматривать этот вариант. Я просто переведу строку в однобайтную и сохраню ее через Поток в ХранилищеЗначений.     
         | 
|||
| 
    160
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    12:17 
 | 
         
        (159) что думаешь на (154)? идею понял?     
         | 
|||
| 
    161
    
        Почему 1С    
     28.04.21 
            ✎
    12:19 
 | 
         
        Интересно почему MS SQL server не поддерживает UTF-8 вместо юникода, это же самая оптимальная кодировка для строк.     
         | 
|||
| 
    162
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    12:23 
 | 
         
        (138) АрхивДанныхМарки..это строка 150 пожатая в хранилище ?     
         | 
|||
| 
    163
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    12:24 
 | 
         
        Так то идея понятна..ищем в наименовании, если дырка, преобразуем в хешь ищем в РС.. так ?     
         | 
|||
| 
    164
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:27 
 | 
         
        (163) Воистену!     
         | 
|||
| 
    165
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:27 
 | 
         
        (162) Да. Но не пожатая. Просто 150 символов в 150 байт.
 
        Жать коды марок - неэффективно.  | 
|||
| 
    166
    
        Вафель    
     28.04.21 
            ✎
    12:30 
 | 
         
        можно же еще съэкономить 1 байт больше 1 символа из кода     
         | 
|||
| 
    167
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    12:30 
 | 
         
        Посмотрел у себя.. 55млн, ~22гига (данные+индекс)     
         | 
|||
| 
    168
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:33 
 | 
         
        (167) хранится в 1С? У меня еще в коде справочника лежит 19 символов алкокода (38 байт данных+38*1.2 байт на индекс). Его тоже под нож.     
         | 
|||
| 
    169
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    12:41 
 | 
         
        (168) да, в 1с .. база на скуле..
 
        А так, не проще пожать, чем в уид преобразовывать ? 
©Спиз@но с нимфостарта  | 
|||
| 
    170
    
        Вафель    
     28.04.21 
            ✎
    12:43 
 | 
         
        а зачем хранилище в строку преобразовывать?     
         | 
|||
| 
    171
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:45 
 | 
         
        (169) Не жмется код марки.
 
        Даже если их собрать единный блок из 10000 марок - тогда коэффициент сжатия будет 50% и то с bzip2, который умеет предварительно сортировать данные. Мне лениво таким заморачиваться.  | 
|||
| 
    172
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    12:52 
 | 
         
        (171) ясна, надо потестить..
 
        Пока не критично. У меня РС с марками пока больше весит, чем сам справочник марок, ибо индекс покрывающий много весит. Думаю, от чего бы избавиться. Тоскливо планы опять мониторить и собирать статистику использования индексов.  | 
|||
| 
    173
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:55 
 | 
         
        (172) Да, у меня на 2 ом месте РС. Но там уже не от чего не избавиться.
 
        Сколько времени убито на вылизывания взаимоблокировок и попадания в индексы - я его ни за что уже не трону.  | 
|||
| 
    174
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:56 
 | 
         
        (172) Ну и все списанное через несколько дней сбрасывается во 2 РС, там с индексами попроще.     
         | 
|||
| 
    175
    
        sitex    
     naïve 
    28.04.21 
            ✎
    12:56 
 | 
         
        (171) Для одной марки применить Арифметическое кодирование. :)     
         | 
|||
| 
    176
    
        H A D G E H O G s    
     28.04.21 
            ✎
    12:57 
 | 
         
        (175) Свой алфавит, вы об этом?     
         | 
|||
| 
    177
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:06 
 | 
         
        Мдацкое ХранилищеЗначений сериализует мои 150 байт в 233 байта при сохранении без сжатия и в 216 байт при сжатии.
 
        Наверное надо будет делать блоки марок.  | 
|||
| 
    178
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:06 
 | 
         
        (176) я в смысле применить эту методику кодирования к 1 марке. Возможно будет эффект     
         | 
|||
| 
    179
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    13:11 
 | 
         
        (177) Нахер?
 
        Ты можешь просто взять свои 150 символов и поделить их на нужное число УИД каждый по 36 Тупо превратить их в УникальныйИдентификатор и заюзать как измерения в РС, в ресурс пиши 1  | 
|||
| 
    180
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:12 
 | 
         
        (178) + из 50 символов ,все равно будут повторения последовательностей  символов, по этому можно их посчитать.     
         | 
|||
| 
    181
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:12 
 | 
         
        +(180) *150 символов     
         | 
|||
| 
    182
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:13 
 | 
         
        (181) Нет там повторений, иначе их сжатие по словарю нормально бы сжимали.     
         | 
|||
| 
    183
    
        Dzenn    
     гуру 
    28.04.21 
            ✎
    13:14 
 | 
         
        Могу предложить радикальное решение твоей проблемы с хэшами, MD5 и UUID — не работай на "алкоголиков", "табачников" и прочих распространителей наркоты.     
         | 
|||
| 
    184
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:15 
 | 
         
        (182) Давай пример 150 символов     
         | 
|||
| 
    185
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:17 
 | 
         
        (183) Это интересно.     
         | 
|||
| 
    186
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:17 
 | 
         
        (184) 
 
        233300070266990119001TKU362V3E6AH5VNFAUTTF4X7IUTSAACSQG4MRFW4UYWIWQITOCBXZWG63SPFTFPUFDTJS6QKSRYQ4I4MRKIBH34F6FQHDCOJASAGVHP3LGMUDD3TG3K62BFAQZ5QKR5OQ  | 
|||
| 
    187
    
        Kongo2019    
     28.04.21 
            ✎
    13:18 
 | 
         
        (186) Криптохвост он в поиске как бы не сильно нужен. Может отбросит?     
         | 
|||
| 
    188
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:20 
 | 
         
        (186) Ну и как нет, есть. Видать вы не поняли выше коммент о чем я имею ввиду.     
         | 
|||
| 
    189
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:21 
 | 
         
        (187) Я думал об этом, но мне стало лениво морочаться со старой и новой маркой.     
         | 
|||
| 
    190
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:21 
 | 
         
        (188) Приведите конкретнее пример.     
         | 
|||
| 
    191
    
        Kongo2019    
     28.04.21 
            ✎
    13:23 
 | 
         
        (189) Мне проще, я производство, у меня только новая.     
         | 
|||
| 
    192
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:25 
 | 
         
        (186) Уникальных - 35 , Текст  = 2307691TKUVEAH5NF4XISCQGMRWYOBZPDJLG , 
 
        Сим Кол 3 10 f 9 6 8 t 8 q 8 0 7  | 
|||
| 
    193
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:26 
 | 
         
        (192) + потому сюда частотные интервалы, и т.д.     
         | 
|||
| 
    194
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:26 
 | 
         
        + (192) Сим, и кол. не все в сообщение вошли     
         | 
|||
| 
    195
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:28 
 | 
         
        (194) + это очень в сильно кратко, много чего упущено     
         | 
|||
| 
    196
    
        ptiz    
     28.04.21 
            ✎
    13:32 
 | 
         
        Раз начали меряться: 
 
        у меня уже 120 млн. кодов упаковок лекарств в системе в виде справочника - это 100Гб. Столкнувшись с кодами, отличающимися только регистром символов (руки оторвать бы архитектору в ЦРПТ, который придумал такую возможность), влепил строку 50 символов под Base64Строка(КодУпаковки). Но у меня в справочник и без того 15 реквизитов. К концу года ожидаю 400Гб только таблицу упаковок.  | 
|||
| 
    197
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:33 
 | 
         
        (196) 
 
        "Столкнувшись с кодами, отличающимися только регистром символов (руки оторвать бы архитектору в ЦРПТ, который придумал такую возможность)," Люто плюсую.  | 
|||
| 
    198
    
        sitex    
     naïve 
    28.04.21 
            ✎
    13:35 
 | 
         
        (196) Не хило вас прет)     
         | 
|||
| 
    199
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:36 
 | 
         
        Архитектору ЦРПТ, мы, конечно, поставим отдельную песню:
 
        https://youtu.be/7GPmw7LhE3M  | 
|||
| 
    200
    
        H A D G E H O G s    
     28.04.21 
            ✎
    13:37 
 | 
         
        (196) Типовой "ШтрихкодыУпаковокТоваров"?
 
        Мои соболезнования.  | 
|||
| 
    201
    
        ptiz    
     28.04.21 
            ✎
    13:44 
 | 
         
        (200) Нет, у нас ничего типового нет. Своё, но всё надо.     
         | 
|||
| 
    202
    
        Kongo2019    
     28.04.21 
            ✎
    13:58 
 | 
         
        В типовых там вообще реализацию на тестировали на скорость, десять записей на тесте они что-ли гоняют.     
         | 
|||
| 
    203
    
        Кирпич    
     28.04.21 
            ✎
    13:58 
 | 
         
        (147) //А давай ты это сделаешь и продемонстрируешь, а я посмотрю на это?
 
        
     | 
|||
| 
    204
    
        ptiz    
     28.04.21 
            ✎
    14:02 
 | 
         
        (5) "Ушедшие марки я хочу архивировать" - а ссылки на них в виде чего остаются?
 
        Что такое "марка" сейчас? Строка? Ссылка на справочник? У меня тоже будет задача удалять старые упаковки, но задача упирается в логическую модель: - будут битые ссылки в документах, а чтобы удалить документ - придется делать свертку с "вводом остатков" (документ двигает регистр сведений - историю движений упаковки). А ввод остатков по сотням миллионов упаковок .... но куда деваться. Архивировать старые упаковки смысла не вижу - всё равно они проданы. Правда, у меня есть вторая база - промежуточная между основной и ЦРПТ, там можно будет старую историю найти.  | 
|||
| 
    205
    
        Кирпич    
     28.04.21 
            ✎
    14:03 
 | 
         
        +(203)Теперь можно тупо в регистр сведений. 150 байт съэкономили. Индекс есть. Хеши вычислять не надо.     
         | 
|||
| 
    206
    
        H A D G E H O G s    
     28.04.21 
            ✎
    14:03 
 | 
         
        (203) Епстественно я это попробовал.
 
        Когда сохранишь строку в БД она станет размером в 300 байт  | 
|||
| 
    207
    
        Кирпич    
     28.04.21 
            ✎
    14:04 
 | 
         
        (206) поставь размер поля 75. задолбал     
         | 
|||
| 
    208
    
        Кирпич    
     28.04.21 
            ✎
    14:05 
 | 
         
        и будет 150     
         | 
|||
| 
    209
    
        H A D G E H O G s    
     28.04.21 
            ✎
    14:11 
 | 
         
        (207) Я с вами вежливо общаюсь, но похоже, абсолютно зря. Идите ка вы лесом.     
         | 
|||
| 
    210
    
        Кирпич    
     28.04.21 
            ✎
    14:12 
 | 
         
        (209) Ладно не обижайся. Я ж любя.     
         | 
|||
| 
    211
    
        H A D G E H O G s    
     28.04.21 
            ✎
    14:14 
 | 
         
        (210) Давай ты сохранишь в примитивнейший справочник строку в 1 байт через 1С.     
         | 
|||
| 
    212
    
        Кирпич    
     28.04.21 
            ✎
    14:15 
 | 
         
        (211) И нахрена?     
         | 
|||
| 
    213
    
        Почему 1С    
     28.04.21 
            ✎
    14:17 
 | 
         
        (203) Исходная строка "0123456789" - 10 байт, сжимаем - "㌲㔴㜶㤸" - 10 байт, 
 
        отличное сжатие я считаю  | 
|||
| 
    214
    
        Вафель    
     28.04.21 
            ✎
    14:19 
 | 
         
        (213) исходная строка 20 байт     
         | 
|||
| 
    215
    
        H A D G E H O G s    
     28.04.21 
            ✎
    14:19 
 | 
         
        (212) Чтобы понять, что решение нерабочее.     
         | 
|||
| 
    216
    
        Вафель    
     28.04.21 
            ✎
    14:20 
 | 
         
        (215)  почему нерабочее то?     
         | 
|||
| 
    217
    
        Почему 1С    
     28.04.21 
            ✎
    14:20 
 | 
         
        (214) В 1С 10 байт, а в SQL да 20, понял фишку приема.     
         | 
|||
| 
    218
    
        Вафель    
     28.04.21 
            ✎
    14:21 
 | 
         
        (217) в 1с 10 - СИМВОЛОВ     
         | 
|||
| 
    219
    
        Кирпич    
     28.04.21 
            ✎
    14:22 
 | 
         
        (215) а (217) уже понял     
         | 
|||
| 
    220
    
        Кирпич    
     28.04.21 
            ✎
    14:22 
 | 
         
        почти :)     
         | 
|||
| 
    221
    
        Кирпич    
     28.04.21 
            ✎
    14:22 
 | 
         
        (215) так почему не работает?     
         | 
|||
| 
    222
    
        Почему 1С    
     28.04.21 
            ✎
    14:23 
 | 
         
        (218) 10 символов из пределов ASCII =  10байт в UTF-8, в SQl согласен 10 символов = 20 байт, а закодированных 5 символов = 10 байт, смысл есть     
         | 
|||
| 
    223
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    14:24 
 | 
         
        Марки имеют ограниченный набор символов же!
 
        Можно сжимать использую кириллицу  | 
|||
| 
    224
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    14:24 
 | 
         
        (221) Ты про это (223) ранее писал?     
         | 
|||
| 
    225
    
        mistеr    
     28.04.21 
            ✎
    14:28 
 | 
         
        (196) >руки оторвать бы архитектору в ЦРПТ
 
        Может, лучше архитектору платформы?  | 
|||
| 
    226
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    14:29 
 | 
         
        (225) На ЦРПТ зря бочку катят там вполне продумано и хорошо по сравнению с ЕГАИС     
         | 
|||
| 
    227
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    14:30 
 | 
         
        (226)+ А реализация в конфах 1С это к ЦРПТ никак не относится     
         | 
|||
| 
    228
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    14:30 
 | 
         
        (226) Да-да..завести кучку левого и продать, очень хорошо в цтрп придумали.     
         | 
|||
| 
    229
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    14:31 
 | 
         
        И пока эти дыры не прикрыты, никак     
         | 
|||
| 
    230
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    14:31 
 | 
         
        А ждать ответа годами..     
         | 
|||
| 
    231
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    14:31 
 | 
         
        не, нам такого счастья не нать     
         | 
|||
| 
    232
    
        Вафель    
     28.04.21 
            ✎
    14:34 
 | 
         
        (222) можно и сильнее сжать ибо там всего 36 символов     
         | 
|||
| 
    233
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    14:34 
 | 
         
        (228) Т.е. ты жалуешься что еще не все дыры прикрыты?
 
        Не волнуйся постепенно дойдет что воровать станет дороже чем не воровать  | 
|||
| 
    234
    
        Кирпич    
     28.04.21 
            ✎
    14:55 
 | 
         
        Продолжаем изыскания. Забил в гугл переводчик урезаную марку. Вот результат:
 
        ㌵㌳〰 㜰 ㈰ 㘶 㤹  啋 насмешка 唳 䄶 㕈 兆 рвота 噔 夷 рвота 㜰 ㈰ 㘶 㤹  писк 啋 㘳 перед уходом  | 
|||
| 
    235
    
        Кирпич    
     28.04.21 
            ✎
    14:56 
 | 
         
        что то алкогольное в этом есть     
         | 
|||
| 
    236
    
        Кирпич    
     28.04.21 
            ✎
    14:58 
 | 
         
        И "перед уходом" тоже в тему. Ухожу с 1 мая на cdj,jlyjt бомжевание в связи с увольнением :))     
         | 
|||
| 
    237
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    15:03 
 | 
         
        (236) Меня в отпуск даже не пускают...     
         | 
|||
| 
    238
    
        Кирпич    
     28.04.21 
            ✎
    15:05 
 | 
         
        Китайский регистр сведений. всё работает, HADGEHOGs. Одно измерение в 75 символов
 
        https://ibb.co/hZKmPS1  | 
|||
| 
    239
    
        H A D G E H O G s    
     28.04.21 
            ✎
    15:06 
 | 
         
        (238) Все, я вкурил.
 
        Да, это работает.  | 
|||
| 
    240
    
        H A D G E H O G s    
     28.04.21 
            ✎
    15:06 
 | 
         
        Признаю свою ошибку перед Кирпич. Его метод позволяет сохранить строку так, как мне надо.     
         | 
|||
| 
    241
    
        Кирпич    
     28.04.21 
            ✎
    15:07 
 | 
         
        (237) Да нафиг щас отпуск. Ковид. Копим деньги, сидим дома     
         | 
|||
| 
    242
    
        H A D G E H O G s    
     28.04.21 
            ✎
    15:08 
 | 
         
        Теперь получается все достаточно легко сделать без своих blob структур     
         | 
|||
| 
    243
    
        Кирпич    
     28.04.21 
            ✎
    15:09 
 | 
         
        (240) Нифига ты правильный какой :) (239) вполне достаточно     
         | 
|||
| 
    244
    
        H A D G E H O G s    
     28.04.21 
            ✎
    15:14 
 | 
         
        Блин, хоть бери и преобразовывай все марки     
         | 
|||
| 
    245
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    15:31 
 | 
         
        Извращенцы зачем вам китайский когда можно просто строку из 150 символов разбить на уиды по 36?
 
        последний дополнить 0  | 
|||
| 
    246
    
        Почему 1С    
     28.04.21 
            ✎
    15:33 
 | 
         
        (244) Я только не понял, почему в Хранилище значений  из 150 байт получилось вдруг 230. Откуда столько лишних байтов.     
         | 
|||
| 
    247
    
        H A D G E H O G s    
     28.04.21 
            ✎
    15:35 
 | 
         
        (246) Сериализация.     
         | 
|||
| 
    248
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    15:37 
 | 
         
        (246) Там как строка по сути хранится в base64 вроде бы     
         | 
|||
| 
    249
    
        Garykom    
     гуру 
    28.04.21 
            ✎
    15:40 
 | 
         
        (0) В конечном итоге один хрен придется на внешнее (относительно 1С) хранение перейти!     
         | 
|||
| 
    250
    
        ptiz    
     28.04.21 
            ✎
    15:42 
 | 
         
        Вот что бы мы все делали без маркировки? А тут работы привалило! :)     
         | 
|||
| 
    251
    
        Kongo2019    
     28.04.21 
            ✎
    15:42 
 | 
         
        (250) Нам и без маркировки есть чем заняться.     
         | 
|||
| 
    252
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    16:36 
 | 
         
        (244) Но... наименование удалять всё равно будешь и РС новый лепить ?...
 
        Или просто наименование на китайщину поменяешь ? :)  | 
|||
| 
    253
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    16:36 
 | 
         
        В принципе, замена на китайщину уже в 2 раза меньше размер.     
         | 
|||
| 
    254
    
        H A D G E H O G s    
     28.04.21 
            ✎
    16:36 
 | 
         
        (252) Наименования чистить. Индекс же.     
         | 
|||
| 
    255
    
        Ёпрст    
     гуру 
    28.04.21 
            ✎
    16:42 
 | 
         
        (254) да, но если не чистить, а тупо китайщиной заменить, то в 2 раза пожмётся и так.
 
        А в менеджере справочника в представлении уже подменять китайщину на нужное.. и всё красиво - на экране норм шк, в базе китайщина, и без РС  | 
|||
| 
    256
    
        H A D G E H O G s    
     28.04.21 
            ✎
    16:42 
 | 
         
        (255) Ну да, но это полумеры.     
         | 
|||
| 
    257
    
        aka MIK    
     28.04.21 
            ✎
    17:12 
 | 
         
        (245) а 1С даст запихнуть в УИД любую неформатную хрень?     
         | 
|||
| 
    258
    
        H A D G E H O G s    
     28.04.21 
            ✎
    17:16 
 | 
         
        (257) Вроде дает.     
         | 
|||
| 
    259
    
        aka MIK    
     28.04.21 
            ✎
    17:20 
 | 
         
        (206) поставь фиксированную длину строки - будет nchar(150), а это 150 байт     
         | 
|||
| 
    260
    
        aka MIK    
     28.04.21 
            ✎
    17:22 
 | 
         
        А нет, обманули )     
         | 
|||
| 
    261
    
        aka MIK    
     28.04.21 
            ✎
    17:29 
 | 
         
        Но 2 байта можно сэкономить )     
         | 
|||
| 
    262
    
        victuan1    
     29.04.21 
            ✎
    06:57 
 | 
         
        (239) А если усовершенствовать "метод Кирпича", то можно строку сократить не до 75 символов, а до 38! ;)     
         | 
|||
| 
    263
    
        victuan1    
     29.04.21 
            ✎
    07:01 
 | 
         
        (192) "Уникальных - 35 , Текст  = 2307691TKUVEAH5NF4XISCQGMRWYOBZPDJLG"
 
        Нет, всего 23 символа, начиная с 9-го, писал об этом в (58).  | 
|||
| 
    264
    
        Kongo2019    
     29.04.21 
            ✎
    08:17 
 | 
         
        (262)И как?     
         | 
|||
| 
    265
    
        victuan1    
     29.04.21 
            ✎
    08:31 
 | 
         
        (264) Емкость алфавита алкомарки 36 символов (10 цифр + 26 лат. букв).
 
        Емкость 1 байта = 255. 256 / 36 = 7,1111. Следовательно в одном байте (символе) можно хранить 7 символов алкомарки. Длина алкомарки = 150 символов. Следовательно, для хранения одной марки требуется 150 / 7 = 22 байта. в 1с8 можно хранить в виде "китайского" алфавита по "методу Кирпича" в строке длиной 2*22 символа (выше я немного ошибся, написал 38).  | 
|||
| 
    266
    
        Вафель    
     29.04.21 
            ✎
    08:46 
 | 
         
        (265) получается что делаем хэш на 16 байт от данных на 22 байта     
         | 
|||
| 
    267
    
        timurhv    
     29.04.21 
            ✎
    09:14 
 | 
         
        (196) "Столкнувшись с кодами, отличающимися только регистром символов (руки оторвать бы архитектору в ЦРПТ, который придумал такую возможность),"
 
        А что делать, если у молочки только 5 символов в серийном? Это только 656млн марок на одну продукцию без верхнего регистра, а с ним почти 4млн.  | 
|||
| 
    268
    
        timurhv    
     29.04.21 
            ✎
    09:14 
 | 
         
        (267) *4млрд     
         | 
|||
| 
    269
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    09:18 
 | 
         
        (266) дык написать свой https://ru.wikipedia.org/wiki/Base64
 
        на основе символов в марках  | 
|||
| 
    270
    
        victuan1    
     29.04.21 
            ✎
    09:19 
 | 
         
        (265) Ой, я лажу написал. Надо же не делить, а вычислять логарифм по основанию 2. 
 
        Получается для 36 символьного алфавита нужно 6 бит с избытком, значит строку в 150 символов можно хранить в 114 байтах.  | 
|||
| 
    271
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    09:20 
 | 
         
        (269) к (265)     
         | 
|||
| 
    272
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    09:21 
 | 
         
        (270) Не так считаешь, там просто не в байтах хранение а в битах     
         | 
|||
| 
    273
    
        victuan1    
     29.04.21 
            ✎
    09:22 
 | 
         
        (267) ну да в битах: 150 симв. * 6 бит = 900 бит
 
        Что примерно равно = 113 байтов (900 / 8)  | 
|||
| 
    274
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    09:22 
 | 
         
        (272)+ в смысле 36 это не 6 бит ровно а дробное и можно это дробное для следующего символа алфавита использовать     
         | 
|||
| 
    275
    
        victuan1    
     29.04.21 
            ✎
    09:23 
 | 
         
        (274) Об этом тоже думал, но экономия будет не соизмерима со сложностью алгоритма.     
         | 
|||
| 
    276
    
        victuan1    
     29.04.21 
            ✎
    09:24 
 | 
         
        (274) Если так рассуждать, то и до алгоритмов сжатия дойдем))     
         | 
|||
| 
    277
    
        ptiz    
     29.04.21 
            ✎
    09:25 
 | 
         
        (267) В лекарствах - 13. Вопрос к тем, кто такое придумал. Зато у вас криптохвоста нет. Как жить без него будете - не представляю :)     
         | 
|||
| 
    278
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    09:25 
 | 
         
        (276) угу по Шеннону     
         | 
|||
| 
    279
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    09:25 
 | 
         
        (277) в МДЛП криптохвост есть но он только в печатном виде в обменах не участвует     
         | 
|||
| 
    280
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    09:28 
 | 
         
        (278)+ ли все же Хаффману?     
         | 
|||
| 
    281
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    09:30 
 | 
         
        (280)+ хотя правильней https://ru.wikipedia.org/wiki/Asymmetric_numeral_systems     
         | 
|||
| 
    282
    
        fisher    
     29.04.21 
            ✎
    09:40 
 | 
         
        Действительно. Если паковать в 22 байта, то хешировать смысла нет. И можно будет это засунуть в 11-символьную китайскую строку :)     
         | 
|||
| 
    283
    
        fisher    
     29.04.21 
            ✎
    09:43 
 | 
         
        Хотя стоп. Не. В 11-символьную не засунешь.     
         | 
|||
| 
    284
    
        fisher    
     29.04.21 
            ✎
    09:49 
 | 
         
        Что-то вы намутили с китайскими UTF. Там же еще номер страницы сидит плюс китайские символы до 4 байтов могут занимать.
 
        Напрашивается в два уида кодировать. И хрен с ним с хвостиком.  | 
|||
| 
    285
    
        fisher    
     29.04.21 
            ✎
    09:54 
 | 
         
        Стоп. Зачем уид? А сколько в базе займет тупо 4 разрядное целое?     
         | 
|||
| 
    286
    
        fisher    
     29.04.21 
            ✎
    09:58 
 | 
         
        Не, это я гоню.     
         | 
|||
| 
    287
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    10:13 
 | 
         
        (284) разбивать на уиды я предложил еще хз когда     
         | 
|||
| 
    288
    
        fisher    
     29.04.21 
            ✎
    10:19 
 | 
         
        (287) Просто практичнее всего таки использовать байт на символ, а это дохрена уидов получается. Идея в (203) очень привлекательная, но у меня есть подозрения, что не взлетит. То есть преобразования в 75 строку туда и обратно могут происходить с потерей данных.     
         | 
|||
| 
    289
    
        H A D G E H O G s    
     29.04.21 
            ✎
    10:21 
 | 
         
        (263) Очень  странно судить по алфавиту марки, опираясь на один пример.     
         | 
|||
| 
    290
    
        fisher    
     29.04.21 
            ✎
    10:25 
 | 
         
        В принципе, еще достаточно практично получится пихать 3 символа в два байта. То есть упаковать в 100 байт.
 
        Если уидами без хеширования, то это 7 уидов. Тоже как-то несподручно.  | 
|||
| 
    291
    
        victuan1    
     29.04.21 
            ✎
    10:45 
 | 
         
        (289) То есть? Я опираюсь не на один пример, а на знания того как устроена алкомарка.     
         | 
|||
| 
    292
    
        H A D G E H O G s    
     29.04.21 
            ✎
    11:02 
 | 
         
        (291) Ок. Я просто подумал, что вы написали, исходя из сообщений выше.     
         | 
|||
| 
    293
    
        victuan1    
     29.04.21 
            ✎
    11:07 
 | 
         
        (292) Вот регулярное выражение для проверки алкомарок всех типов (150, 68 и 40 (очень древних) символьных):
 
        ([1-9]\d{2}|\d([1-9]\d|\d[1-9])){2}([1-9]\d{7}|\d([1-9]\d{6}|\d([1-9]\d{5}|\d([1-9]\d{4}|\d([1-9]\d{3}|\d([1-9]\d{2}|\d([1-9]\d|\d[1-9])))))))(0[1-9]|1[0-2])(1[8-9]|[2-9][0-9])([1-9]\d{2}|\d([1-9]\d|\d[1-9]))[0-9A-Z]{129}|\d\d[a-zA-Z0-9]{21}\d[0-1]\d[0-3]\d{10}[a-zA-Z0-9]{31}|[0-9]{40} Как видим разрешены только A-Z0-9 - т.е. алфавит 36 симв.  | 
|||
| 
    294
    
        Вафель    
     29.04.21 
            ✎
    11:25 
 | 
         
        (284) могут и занимать по 4, но мы же берем только те что по 2 байта. 
        мы же не переводим человеческий язык  | 
|||
| 
    295
    
        Вафель    
     29.04.21 
            ✎
    11:29 
 | 
         
        несколько гуидов - это не очень хорошо, ибо нужно рс городить для поиска     
         | 
|||
| 
    296
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    11:39 
 | 
         
        (295) РС быстрее чем справочник и очень удобно     
         | 
|||
| 
    297
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    11:40 
 | 
         
        (296)+ Точнее неудобно что идентификатора нет и в другие объекты в реквизит ссылку не засунешь
 
        Но в задаче это не особо надо  | 
|||
| 
    298
    
        Вафель    
     29.04.21 
            ✎
    11:42 
 | 
         
        (297) а где хранить марки привязанные к документам? 
        там же эти составные уиды и хранить?  | 
|||
| 
    299
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    11:44 
 | 
         
        (298) Дополнительное измерение ведущее в РС, там уид, этот уид в документах     
         | 
|||
| 
    300
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    11:44 
 | 
         
        300     
         | 
|||
| 
    301
    
        fisher    
     29.04.21 
            ✎
    11:53 
 | 
         
        (300) Подставляешься     
         | 
|||
| 
    302
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    12:35 
 | 
         
        (292) полученные данные о китайщине, как будешь использовать ? Всё равно, марки без наименованием с реквизитом-хранилище и в РС - китайщина как хеш индексированная ?     
         | 
|||
| 
    303
    
        H A D G E H O G s    
     29.04.21 
            ✎
    12:48 
 | 
         
        (302) Хеш буду брать из исходной строки.
 
        Сейчас я прогоняю тест на 15 млн. Марка->Китаещина->МаркаВосстановленная И сравниваю Марка и МаркаВосстановленная Потом из этих 15 млн составлю алфавит и сделаю свой код, который сохраню в китаещину. Алфавит буду делать, если производительность будет норм.  | 
|||
| 
    304
    
        Вафель    
     29.04.21 
            ✎
    12:49 
 | 
         
        зачем нужен хэш тогда?     
         | 
|||
| 
    305
    
        H A D G E H O G s    
     29.04.21 
            ✎
    12:51 
 | 
         
        (304) Посмотрим на алфавит и скорость конвертации, может и не нужен.     
         | 
|||
| 
    306
    
        Вафель    
     29.04.21 
            ✎
    12:55 
 | 
         
        можно не 7 символов пихать, а 256/64 = 4. 
        тогда алгоритм будет существенно проще  | 
|||
| 
    307
    
        H A D G E H O G s    
     29.04.21 
            ✎
    13:12 
 | 
         
        (306) не понял     
         | 
|||
| 
    308
    
        victuan1    
     29.04.21 
            ✎
    13:36 
 | 
         
        (306) мой пост (265) неверный. Не нужно на него опираться.     
         | 
|||
| 
    309
    
        fisher    
     29.04.21 
            ✎
    13:53 
 | 
         
        (307) А ты уже протестил (203)? Оно работает корректно туда-обратно на твоей выборке (на строке в 75 символов)?     
         | 
|||
| 
    310
    
        fisher    
     29.04.21 
            ✎
    13:57 
 | 
         
        Я просто я не уверен, как ведет себя конвертация для участков кодов символов которые неопределены или зарезервированы. Не похерятся ли они при конвертации туда и обратно.     
         | 
|||
| 
    311
    
        Ivan_495    
     naïve 
    29.04.21 
            ✎
    14:07 
 | 
         
        я бы создал таблицу в sql базе 1с и работал бы с ней средствами ado из 1с.     
         | 
|||
| 
    312
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    14:11 
 | 
         
        (309) я проверил на паре мультов, норм. На 55 1с-ина сваливается в недостатке памяти для выполнения запроса..     
         | 
|||
| 
    313
    
        H A D G E H O G s    
     29.04.21 
            ✎
    14:15 
 | 
         
        (309) На 10000 марок нормально работает     
         | 
|||
| 
    314
    
        fisher    
     29.04.21 
            ✎
    14:50 
 | 
         
        (304) Хэш может пригодиться разве что для экономии места на диске за счет уменьшения размера индекса.
 
        (312)(313) Здорово. Кирпичу респект. И как все-таки оптимально сжимать? Если алфавит в 36 знаков, то ничего умнее чем кодировка 3 символов в два байта мне не приходит. То есть бить на группы по 3 символа, интерпретировать их как трех-разрядное число число в 36-ричке и писать в два байта. Тогда можно будет уложиться в 50 "китайских" символов.  | 
|||
| 
    315
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    14:52 
 | 
         
        (314) Самое оптимальное сжатие (с точки зрения размера) это https://habr.com/ru/post/190202/     
         | 
|||
| 
    316
    
        fisher    
     29.04.21 
            ✎
    14:54 
 | 
         
        (315) Не. Речь про 1С. Простота и скорость преобразования тоже важны.     
         | 
|||
| 
    317
    
        fisher    
     29.04.21 
            ✎
    15:00 
 | 
         
        (315) И с чего ты решил что это будет оптимальное сжатие с точки зрения размера? Там номер позиции может превысить размер данных :)     
         | 
|||
| 
    318
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    15:05 
 | 
         
        (317) Номер позиции число - дальше хрен сожмешь     
         | 
|||
| 
    319
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    15:07 
 | 
         
        (314) >как все-таки оптимально сжимать?
 
        Имхо вопрос не имеет ответа ибо у всех разное понимание оптимально. Мое мнение тут не имеет смысла сжимать и хранить в базе 1С. Храним в любой внешней СУБД и все.  | 
|||
| 
    320
    
        fisher    
     29.04.21 
            ✎
    15:09 
 | 
         
        (319) > Храним в любой внешней СУБД и все.
 
        Ага. Пытаешься уйти от ответа. Переформулируем. Как бы ты сжимал это в любой внешней СУБД для минимизации размера базы?  | 
|||
| 
    321
    
        ptiz    
     29.04.21 
            ✎
    15:51 
 | 
         
        (203) Проверил на первом попавшемся коде упаковки лекарств: 000000460026861000AAGRN8AGV
 
        Восстановилось криво. Кто-то еще может проверить?  | 
|||
| 
    322
    
        Вафель    
     29.04.21 
            ✎
    15:52 
 | 
         
        (321) у тебя длина нечетная     
         | 
|||
| 
    323
    
        Кирпич    
     29.04.21 
            ✎
    15:54 
 | 
         
        (321) прилепи нолик и упаковывай. распаковывай и отлепи нолик     
         | 
|||
| 
    324
    
        Кирпич    
     29.04.21 
            ✎
    15:55 
 | 
         
        да и смысла нету на таких коротких кодах     
         | 
|||
| 
    325
    
        ptiz    
     29.04.21 
            ✎
    15:56 
 | 
         
        Да, теперь норм.     
         | 
|||
| 
    326
    
        H A D G E H O G s    
     29.04.21 
            ✎
    15:57 
 | 
         
        Лучше Пробел     
         | 
|||
| 
    327
    
        H A D G E H O G s    
     29.04.21 
            ✎
    15:58 
 | 
         
        36 символов можно закодировать 6 битами, тоесть экономия 2 бита на символ, 25%. Нахрен надо такие радости.     
         | 
|||
| 
    328
    
        ptiz    
     29.04.21 
            ✎
    16:05 
 | 
         
        (327) Смотря какие символы. Там же могут быть в разных регистрах + спецсимволы.     
         | 
|||
| 
    329
    
        H A D G E H O G s    
     29.04.21 
            ✎
    16:07 
 | 
         
        (328) Это алкоголь. У нас нет таких радостей.     
         | 
|||
| 
    330
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    16:18 
 | 
         
        (320) >> Храним в любой внешней СУБД и все.
 
        >Ага. Пытаешься уйти от ответа. Переформулируем. Как бы ты сжимал это в любой внешней СУБД для минимизации размера базы? Никак! Тупо выбрал бы правильно внешнюю БД, например которая умеет сжимать по дефолту  | 
|||
| 
    331
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    16:19 
 | 
         
        (330)+ Сцуко вы еще предложите свой архиватор написать со своей файловой и операционной системой ля     
         | 
|||
| 
    332
    
        fisher    
     29.04.21 
            ✎
    16:20 
 | 
         
        (327) Ну, я привел пример 33% экономии :) Да и на таких объемах "даже немножечко, чайная ложечка - это уже хорошо" (с)
 
        В теории еще байта три можно сэкономить, но какой ценой...  | 
|||
| 
    333
    
        fisher    
     29.04.21 
            ✎
    16:23 
 | 
         
        (330) Вариант. Жаться оно должно хорошо...     
         | 
|||
| 
    334
    
        H A D G E H O G s    
     29.04.21 
            ✎
    16:24 
 | 
         
        (333) нет. я уже писал выше     
         | 
|||
| 
    335
    
        fisher    
     29.04.21 
            ✎
    16:29 
 | 
         
        (334) Что - "нет"? В СУБД же не обязательно построчно жать.     
         | 
|||
| 
    336
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    16:34 
 | 
         
        (330)+ https://db-engines.com/en/ranking/key-value+store
 
        Тупо полные марки писал бы во внешнюю БД, с уид как ключ В конфе 1С использовал этот ключ-уид где нуна  | 
|||
| 
    337
    
        H A D G E H O G s    
     29.04.21 
            ✎
    16:45 
 | 
||||
| 
    338
    
        fisher    
     29.04.21 
            ✎
    16:47 
 | 
         
        (337) Не нужны мне твои марки :) Я на слово поверю. Они там что, изначально как из рандомайзера выходят?     
         | 
|||
| 
    339
    
        Вафель    
     29.04.21 
            ✎
    16:48 
 | 
         
        (338) криптохвост же     
         | 
|||
| 
    340
    
        Кирпич    
     29.04.21 
            ✎
    16:50 
 | 
         
        (336) в этих key-value+store еще надо найти такую, которая не in memory
 
        А то запихнешь туда 10 гигов и комп остановится нахрен sqlite CREATE TABLE Marks (mark TEXT PRIMARY KEY) и хватит  | 
|||
| 
    341
    
        fisher    
     29.04.21 
            ✎
    16:51 
 | 
         
        (339) А, блин. Я просто не в курсах. Да, он там больше половины кода. Тогда извиняюсь.     
         | 
|||
| 
    342
    
        Вафель    
     29.04.21 
            ✎
    16:51 
 | 
         
        (340) sqlite? как внешнее хранилище?     
         | 
|||
| 
    343
    
        Кирпич    
     29.04.21 
            ✎
    16:54 
 | 
         
        Или тупо в текстовых файлах хранить отсортированных. Двоичный поиск и сё такое.
 
        Если конечно их искать редко будут  | 
|||
| 
    344
    
        Вафель    
     29.04.21 
            ✎
    16:54 
 | 
         
        (343) кластерный индекс же     
         | 
|||
| 
    345
    
        fisher    
     29.04.21 
            ✎
    17:05 
 | 
         
        Так а какой смысл выносить его во внешнюю? Как его идентифицировать из 1С? Где плюсы, кроме минусов?     
         | 
|||
| 
    346
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    17:07 
 | 
         
        (345) в 1С оно идентифицируется по УИД     
         | 
|||
| 
    347
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    17:08 
 | 
         
        (346)+ Плюсы что база 1С не пухнет как бешеная при сохранении приемлимой скорости
 
        Это важно для бэкапов, когда они часто и много хрантся Внешнее хранилище легко и быстро (ну это от рук и мозгов зависит да) можно переделать без гребаных переиндексаций  | 
|||
| 
    348
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    17:09 
 | 
         
        (347)+ В крупных сетевиках эту внешнюю бд для марок делают онлайн одну на все филиалы/отделы/магазины     
         | 
|||
| 
    349
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    17:10 
 | 
         
        В самой базе 1С один есть смысл держать только актуальные марки для товара на остатках в данный момент
 
        Все еще едущее или уже уехавшее/проданное нахрен во внешнюю  | 
|||
| 
    350
    
        fisher    
     29.04.21 
            ✎
    17:12 
 | 
         
        Убедил. Что-то я с гуидом сразу не допер.     
         | 
|||
| 
    351
    
        fisher    
     29.04.21 
            ✎
    17:21 
 | 
         
        Может, в самом деле в текстовые файлики складывать.
 
        По датам генерации гуидов. По часу на файлик, скажем. Текущий час - в регистре сведений. Файлики - только на чтение.  | 
|||
| 
    352
    
        fisher    
     29.04.21 
            ✎
    17:22 
 | 
         
        В общем, оперативный буфер - в РС, из которого выгружаться в файлики.     
         | 
|||
| 
    353
    
        fisher    
     29.04.21 
            ✎
    17:25 
 | 
         
        Просто отдельное хранилище для этой задачи - это из пушки по воробьям. Как сервис для нескольких потребителей - еще куда ни шло.
 
        А для одной базы плюсы есть, но и минусов хватает. Нужно ж это отдельное хранилище сопровождать. А у них всегда своих приколов хватает.  | 
|||
| 
    354
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    17:40 
 | 
         
        (353) dbf во всех платформах 1С есть     
         | 
|||
| 
    355
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    17:41 
 | 
         
        (354)+ Если очень очень хочется "в базе" то засунь эту dbf в хранилище     
         | 
|||
| 
    356
    
        fisher    
     29.04.21 
            ✎
    17:44 
 | 
         
        Не. Не хочу dbf. Мне файлики нравятся. Я бы на них сделал.
 
        Сделать папочки на день / месяц / год. Надо достать по гуиду - сразу генерится полный путь к нужному файлику. А они там уже по порядку разложены. Можно хоть тем же двоичным поиском строчку находить. Управлять удобно. Перенести старый период на бэкап-сервер в архиве - раз плюнуть. Красота.  | 
|||
| 
    357
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    17:46 
 | 
         
        (356) не тупи файлики тормоза по сравнению с dbf
 
        на dbf можно из 1С cdx сделать и быстро-быстро будет  | 
|||
| 
    358
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    17:47 
 | 
         
        (357)+ если один файлик dbf большой то можно их много завести, размер в гиг-два нормально     
         | 
|||
| 
    359
    
        fisher    
     29.04.21 
            ✎
    17:48 
 | 
         
        (357) Что-то мне подсказывает, что производительность достаточная будет. Хотя я без понятия в ентих алкомарках и чего с ними вытворяют. Может и ошибаюсь.     
         | 
|||
| 
    360
    
        fisher    
     29.04.21 
            ✎
    17:49 
 | 
         
        Главное, что производительность будет линейная. Если уж взлетит, то в пути не упадет.     
         | 
|||
| 
    361
    
        fisher    
     29.04.21 
            ✎
    17:51 
 | 
         
        Хотя... Можно же точно также завести по dbf на каждый час :)
 
        Ну, можно. Не придется свой поиск в файле рисовать.  | 
|||
| 
    362
    
        fisher    
     29.04.21 
            ✎
    17:53 
 | 
         
        Хотя места будет больше занимать. А оно же нам важно типа. Может, лучше текст? :)     
         | 
|||
| 
    363
    
        fisher    
     29.04.21 
            ✎
    17:57 
 | 
         
        Просто у нас естественным образом "кластерный индекс" получится. Генерить по нему cdx - избыточно.     
         | 
|||
| 
    364
    
        Кирпич    
     29.04.21 
            ✎
    18:18 
 | 
         
        Да в sqlite загнать и всё. Там тебе и кластерный индекс и всё шо хош.     
         | 
|||
| 
    365
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    18:34 
 | 
         
        (364) не поплохеет база в скульлайте от 50-100 мультов марки ?     
         | 
|||
| 
    366
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    18:34 
 | 
         
        мне лень тестить, были бы клюшки, попробовал бы.     
         | 
|||
| 
    367
    
        H A D G E H O G s    
     29.04.21 
            ✎
    18:42 
 | 
         
        Восстановил 15 млн марок.
 
        3 ошибочные на конце вместо 150 символа комбинация эя  | 
|||
| 
    368
    
        H A D G E H O G s    
     29.04.21 
            ✎
    18:42 
 | 
         
        сейчас буду разбираться     
         | 
|||
| 
    369
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    18:46 
 | 
         
        (367) служебные символы попало и обнулило     
         | 
|||
| 
    370
    
        H A D G E H O G s    
     29.04.21 
            ✎
    18:56 
 | 
         
        Все, вкурил.
 
        Пустой алкокод у них. Я архивирую как Алкокод;КодМарки 19символов алкокода+1 символ разделителя + 150 символов =170 символов - четное число. 0символов алкокода+1 символ разделителя + 150 символов =151 символов - нечетное число. Добавлю проверку на четность при архивации  | 
|||
| 
    371
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    19:05 
 | 
         
        Кто в ЕГАИС советую заранее готовиться к тому что все старые марки и алкокоды к черту
 
        И заставят перемаркировать новыми от ЧЗ  | 
|||
| 
    372
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    19:06 
 | 
         
        (371)+ Остатки понятно перемаркировать, все проданное нафик
 
        Если старые запасы возвращается то перемаркировка  | 
|||
| 
    373
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    19:10 
 | 
         
        (371) Но это вряд ли раньше чем https://xn--80ajghhoc2aj1c8b.xn--p1ai/business/projects/beer/about-experiment/
 
        Выйдет в продакшен  | 
|||
| 
    374
    
        victuan1    
     29.04.21 
            ✎
    19:17 
 | 
         
        (371) Откуда инфа?     
         | 
|||
| 
    375
    
        Кирпич    
     29.04.21 
            ✎
    19:22 
 | 
         
        (365) Так любой субд поплохеет. Ну сделай 20 баз. По 5 гигов на базу нормально будет искать.     
         | 
|||
| 
    376
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    19:26 
 | 
         
        (374) инфа с пива (373)
 
        "Останется только один" ибо кто крепким торгует тот и пивом тоже А юзать две разные "маркировки" дико неудобно  | 
|||
| 
    377
    
        victuan1    
     29.04.21 
            ✎
    20:02 
 | 
         
        (376) Про пиво понятно.
 
        Я про "Кто в ЕГАИС советую заранее готовиться к тому что все старые марки и алкокоды к черту И заставят перемаркировать новыми от ЧЗ". Старые марки на крепком алкоголе - почему заставят его перемаркировать?  | 
|||
| 
    378
    
        Вафель    
     29.04.21 
            ✎
    20:30 
 | 
         
        А кстати в чем отличие акцизных марок (АМ) и федеральных специальных марок (ФСМ)     
         | 
|||
| 
    379
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    20:32 
 | 
         
        (377) а нафига ЧЗ в лице ЦРПТ заморачиваться с этими кривыми старыми марками?     
         | 
|||
| 
    380
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    20:33 
 | 
         
        (379)+ На все экспериментальные так же забивали и заставляли перемаркировать или разрешали без них до окончания срока годности
 
        А у спиртного срок годности тю  | 
|||
| 
    381
    
        H A D G E H O G s    
     29.04.21 
            ✎
    21:26 
 | 
         
        (378) АМ - на импорт, ФСМ - отечественное, но с 2021 теперь все - ФСМ.     
         | 
|||
| 
    382
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    21:45 
 | 
         
        (373) зачет ага, а в Татарстане уже идет пилот по маркировке пива обычными ФСМ.. как на крепкий алкоголь один в один.
 
        Эти клоуны в правительстве всё пирожок не поделят.  | 
|||
| 
    383
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    22:08 
 | 
         
        (382) есть такое     
         | 
|||
| 
    384
    
        victuan1    
     29.04.21 
            ✎
    22:10 
 | 
         
        (382) Игры чиновников - в Татарстане это просто заградительная мера, чтобы не пустить пиво из других регионов. На всю страну не будет эксперимент Татарстана распространен.     
         | 
|||
| 
    385
    
        H A D G E H O G s    
     29.04.21 
            ✎
    22:31 
 | 
         
        6 Гб данных и
 
        8 Гб индекса превратились в 3,3 Гб данных и 1,3 Гб индекса  | 
|||
| 
    386
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    22:36 
 | 
         
        (385) неплохо.. это с РС ?     
         | 
|||
| 
    387
    
        H A D G E H O G s    
     29.04.21 
            ✎
    22:37 
 | 
         
        (386) нет, это справочник Марок     
         | 
|||
| 
    388
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    22:37 
 | 
         
        (387) ну.. без наименования ? или наименование - китайщина ?     
         | 
|||
| 
    389
    
        H A D G E H O G s    
     29.04.21 
            ✎
    22:40 
 | 
         
        (388) Алкокод+Наименование - в китай, в 170 байтную строку.
 
        Отдельный РС с хешами еще не строил  | 
|||
| 
    390
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    22:44 
 | 
         
        (389) я в марках храню не алкокод, а ссылку на справочник алкогольного классификатора. Но, промониторив запросы, нигде это не использую. Вот и думаю, а оно мне вообще надо ? ))) Ну разве что, открыл справочник марки и видишь, че за номенклатура сразу. Хотя, марку, врят ли кто смотрит так.     
         | 
|||
| 
    391
    
        Ёпрст    
     гуру 
    29.04.21 
            ✎
    22:44 
 | 
         
        Подумываю, прибить сей реквизит.     
         | 
|||
| 
    392
    
        H A D G E H O G s    
     29.04.21 
            ✎
    22:49 
 | 
         
        (390) Полезно иногда ткнуть быстрый отбор в динсписке, но это просто изза лени. У нас гдето в ТСД используется вроде.     
         | 
|||
| 
    393
    
        Garykom    
     гуру 
    29.04.21 
            ✎
    23:45 
 | 
         
        Кстати ТС правильно решил сжимать
 
        Гребаные майнеры, гребаная чиа, hdd и ssd самые большие пропали, а средние и мелкие ценник скакнул  | 
|||
| 
    394
    
        H A D G E H O G s    
     29.04.21 
            ✎
    23:53 
 | 
         
        (393) Ага. Именно под эту новость купил себе в понедельник Sams 980 на 1Тб.     
         | 
|||
| 
    395
    
        Garykom    
     гуру 
    30.04.21 
            ✎
    00:18 
 | 
         
        (394) 1Tb ssd еще можно найти но уже убогие бренды/марки
 
        ssd на 2Tb и более уже хрен найдешь как и hdd >6Tb пропали благо внешние hdd пока есть на 4-5Tb  | 
|||
| 
    396
    
        timurhv    
     01.05.21 
            ✎
    01:20 
 | 
         
        Объясните для тупых (для меня), почему китайская раскладка 1 символ занимает 1 байт в SQL. Я прикладник, хотелось бы углубиться в дебри. Суть обсуждения потерял на 3 странице. Можно просто ссылками на матчасть (вики) закидать, там сам буду разгребать...     
         | 
|||
| 
    397
    
        ДедМорроз    
     01.05.21 
            ✎
    01:48 
 | 
         
        Какие байты?
 
        Каждый символ кода марки имеет ограниченное число вариантов. Получается система не по основанию 2,но все равно мы можем последовательность символов перевести в число,а уже число потом перевести в набор байтов (изначально битов). И SQL умеет хранить символы в отличных от двухбайтовых кодировках,просто,это 1с не умеет. Хотя,квалификаторы двоичных данных - это как раз для этого.  | 
|||
| 
    398
    
        ДедМорроз    
     01.05.21 
            ✎
    01:54 
 | 
         
        Кстати,в sms на латинице 160 символов кладутся в 140 байт и никто не считает,что это плохо.     
         | 
|||
| 
    399
    
        Вафель    
     01.05.21 
            ✎
    08:26 
 | 
         
        (397) при конвертации из 36 в 256 получаем экономию 30% 
        Log_256 36  | 
|||
| 
    400
    
        Кирпич    
     01.05.21 
            ✎
    21:24 
 | 
         
        (396) Всё волшебство в (146)
 
        Китайские буквы получаются случайно  | 
|||
| 
    401
    
        H A D G E H O G s    
     02.05.21 
            ✎
    15:07 
 | 
         
        "Ветерок раскачивает чувств качель
 
        И такая горечь. А любовь моя - печаль-виалончель И на ней хреначит мертвый Ростропович." Я в расстроенных чувствах, короче. 1С вычисляет хеш для 100000 150 символов за 8,6 секунд. Дельфи делает это за 250 мсек. Буду переносить в ВК, наверное.  | 
|||
| 
    402
    
        Garykom    
     гуру 
    02.05.21 
            ✎
    15:53 
 | 
         
        (401) Потеряешь на передаче в ВК
 
        Выноси уже наружу и хранение  | 
|||
| 
    403
    
        H A D G E H O G s    
     02.05.21 
            ✎
    21:23 
 | 
         
        846 мс с использованием ВК.
 
        Обмен через кусок текста в виде строковой переменной в 100000 строк, разделенного переносами строк 250 мсек - MD5 164 мсек - MD5 в TGUID 26 мсек - разборка входящего текста и сборка исходящего текста и передача в ВК/из ВК 406 мсек - сборка в 1С массива в единый текст и разбор результата в массив и преобразование в УникальныйИдентификатор  | 
|||
| 
    404
    
        ДедМорроз    
     02.05.21 
            ✎
    23:56 
 | 
         
        (401) попробуй тот же самый хэш вычислять,не копируя строки,т.к.тормоза будут как раз на копировании строк.
 
        Я когда md5 на другие языки переписывал (например,на vbscript), как раз с копированием строк боролся,т.к.это самые медленные операции.  | 
|||
| 
    405
    
        Кирпич    
     03.05.21 
            ✎
    11:51 
 | 
         
        (403) Пакуйте хеши в 16 символьный китайкод и будет вам в 1с миллион за 8 сек
 
        
     | 
|||
| 
    406
    
        Кирпич    
     03.05.21 
            ✎
    11:54 
 | 
         
        ой. 8 символьный даже     
         | 
|||
| 
    407
    
        H A D G E H O G s    
     03.05.21 
            ✎
    11:59 
 | 
         
        (405) гениально!     
         | 
|||
| 
    408
    
        Кирпич    
     03.05.21 
            ✎
    12:00 
 | 
         
        (407) А чо. Те же 16 байт, только без лишних движений по склеиванию строк для формирования GUID     
         | 
|||
| 
    409
    
        H A D G E H O G s    
     03.05.21 
            ✎
    12:02 
 | 
         
        (408) нет, я наоборот респектую.     
         | 
|||
| 
    410
    
        H A D G E H O G s    
     03.05.21 
            ✎
    12:16 
 | 
         
        (408) надо еще понять что будет с нулевым символом     
         | 
|||
| 
    411
    
        Кирпич    
     03.05.21 
            ✎
    12:21 
 | 
         
        (410) А что с ним?     
         | 
|||
| 
    412
    
        H A D G E H O G s    
     03.05.21 
            ✎
    12:38 
 | 
         
        (411) его наличие обычно трактуется как завершение строки     
         | 
|||
| 
    413
    
        Кирпич    
     03.05.21 
            ✎
    12:42 
 | 
         
        (412) Ну да. Два нуля подряд должно быть. А чо попадалось такое?     
         | 
|||
| 
    414
    
        Кирпич    
     03.05.21 
            ✎
    12:50 
 | 
         
        (412) А ты попробуй. Сделай какой нибудь FFFF0000AAAA1111     
         | 
|||
| 
    415
    
        Кирпич    
     03.05.21 
            ✎
    12:55 
 | 
         
        Всё нормально.
 
        
     | 
|||
| 
    416
    
        Кирпич    
     03.05.21 
            ✎
    12:57 
 | 
         
        Только как оно в БД будет не проверял. Может там сюрпрайз от 1с какой нибудь     
         | 
|||
| 
    417
    
        Кирпич    
     03.05.21 
            ✎
    12:58 
 | 
         
        Но вряд ли     
         | 
|||
| 
    418
    
        Кирпич    
     03.05.21 
            ✎
    13:10 
 | 
         
        Всё работает
 
        
     | 
|||
| 
    419
    
        Кирпич    
     03.05.21 
            ✎
    13:12 
 | 
         
        А не. Глючит когда пытаешься справочник посмотреть. Недопустимые символы говорит     
         | 
|||
| 
    420
    
        Кирпич    
     03.05.21 
            ✎
    13:14 
 | 
         
        И если символы 00 в конце, то дальше не читает. Но это можно победить принудительным добавлением двух нулей справа     
         | 
|||
| 
    421
    
        Кирпич    
     03.05.21 
            ✎
    13:15 
 | 
         
        Хотя нет. С нулями в конце облом будет тоже     
         | 
|||
| 
    422
    
        Кирпич    
     03.05.21 
            ✎
    13:24 
 | 
         
        Разве что добавлять FFFF в конце. Но это уже не красиво     
         | 
|||
| 
    423
    
        H A D G E H O G s    
     03.05.21 
            ✎
    13:49 
 | 
         
        (419) Ну мы это поле выводить не будем и всё     
         | 
|||
| 
    424
    
        Кирпич    
     03.05.21 
            ✎
    13:56 
 | 
         
        Да и без китайкода в виде HEX строки тоже вполне приемлимо. 32 байта.     
         | 
|||
| 
    425
    
        Кирпич    
     03.05.21 
            ✎
    13:56 
 | 
         
        Или там 64 получается :))
 
        Мля. Лучше уж в идентификаторах тогда.  | 
|||
| 
    426
    
        Garykom    
     гуру 
    03.05.21 
            ✎
    15:03 
 | 
         
        Надеюсь вы понимаете что https://i2.paste.pics/6ef1f3ce66bd4cccfb41c2e92a0cb8ae.png     
         | 
|||
| 
    427
    
        Кирпич    
     03.05.21 
            ✎
    15:41 
 | 
         
        Да и с идентификаторами нормально работает. Миллион идентификаторов из хешей за 15 сек
 
        
     | 
|||
| 
    428
    
        Почему 1С    
     04.05.21 
            ✎
    08:04 
 | 
         
        Про производительность можно даже не задумываться, у вас что там каждый день по миллиону марок уходит, если нет, то на что разница в 10 сек раз в день может повлиять.     
         | 
|||
| 
    429
    
        fisher    
     05.05.21 
            ✎
    09:35 
 | 
         
        (396) > Объясните для тупых (для меня), почему китайская раскладка 1 символ занимает 1 байт в SQL
 
        Суть проблемы - нужно эффективно хранить двоичные данные и искать по ним. Но. В 1С нет индексируемых типов для двоичных данных кроме уникального идентификатора. Если писать символьное представление двоичных данных, то размер удваивается, так как в mssql юникодные символы занимают минимум 2 байта (для упрощения обработки UTF-8 там не используется). Поэтому идея была в том, чтобы писать в строку не символьное представление двоичных данных, а непосредственно сами двоичные данные. Берется по два байта двоичных данных, а в строку пишется тот символ, кодом которых эти два байта двоичных данных выступают. При этом часто (но не всегда) получаются символы с иероглифических кодовых страниц (так как их там дохрена).  | 
|||
| 
    430
    
        fisher    
     05.05.21 
            ✎
    09:43 
 | 
         
        Меня этот подход по-прежнему смущает. Что в очень редких случаях, когда получится код суррогатной пары или какой-то зарезервированной области, то могут быть проблемы. Но тесты на реальных данных вроде показывают что такой проблемы нет. Но осадочек все равно висит :)     
         | 
|||
| 
    431
    
        Кирпич    
     05.05.21 
            ✎
    10:14 
 | 
         
        (430) Так проверь и спи спокойно. Запиши и прочитай в справочник или в регистр сведений китайкод всех вариантов от '00' до 'ZZ' (в марках вроде кроме латинских буков и цифр ничего не используется)     
         | 
|||
| 
    432
    
        Кирпич    
     05.05.21 
            ✎
    10:17 
 | 
         
        код 'ZZ' 23130 
 
        23130 символов перебрать  | 
|||
| 
    433
    
        fisher    
     05.05.21 
            ✎
    10:49 
 | 
         
        (431) Согласен. Примерно так бы я и сделал.     
         | 
|||
| 
    434
    
        Кирпич    
     05.05.21 
            ✎
    10:50 
 | 
         
        А если брать только буквы и цифры, то там вабще 36*36 и всё читабельное (китай галимый в основном)     
         | 
|||
| 
    435
    
        Кирпич    
     05.05.21 
            ✎
    10:51 
 | 
        
     | 
|||
| 
    436
    
        Кирпич    
     05.05.21 
            ✎
    10:52 
 | 
         
        Глянь в отладчике КитайМассив. Всё читабельное, красивое и китай-тамильское     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |