|   |   | 
| 
 | Прошу проверить код | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Глянь в отладчике КитайМассив. Всё читабельное, красивое и китай-тамильское     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |