kms писал(а) 30. Апреля 2008 :: 13:09:Uzhast писал(а) 29. Апреля 2008 :: 20:24:По видимому, не может. Впрочем BinFiles, ИМХО, тоже не слишком удачный вариант для реализации хранения бинарных файлов в 1С. Сложноватый алгоритм и, скорее всего, не самый быстрый.
У меня осталось воспоминание, что алгоритм там удачный, быстрее попавшихся мне BASE64.
Ага, блин. Дофига как удачный алгоритм. Сначала радостно превращаем строку в hex-коды, а потом радостно жмем ее архиватором. Сначала насоздавали себе трудностей, а потом бодро их преодолеваем.
Вот ЗАЧЕМ нужно сначала вытягивание hex-строки из ВК, а потом впендюривание ее обратно? А? А если еще учесть, что ВК сделана не по типу Rainbow, а по штатной технологии, то в этих перекидываниях строк туды-сюды , как пить дать, есть пара преобразований в юникод и обратно. Фактически через ВК прокачивается объем данных больше чем В ВОСЕМЬ раз превышающий размер исходного объема файла. До хрена как удачный алгоритм. Да-да. Трындец просто.
Правильная ВК должна предоставлять три простых метода:
1) ОткрытьФайл (чтение или запись)
2) ПрочитатьUUEДанные (длина). длина должна быть такова, чтобы получить целое количество закодированных байтов
3) ЗаписатьUUEДанные (СтрокаUUE)
Чтение при этом происходит поблочно (а не весь файл в строку). Файл пишется не в строку неограниченной длины а в специальный справочник поблочно - одна порция UUE-кодированных данных в одну запись. В результате нет больших затрат по памяти и не засоряется одинэсная блоб-таблица. Если в справочнике перелезли лимит в 2Гб, то без проблема создаем справочник нумер два и нас будет еще 2Гб, куда можно гадить.
Количество взаимодействий с ВК минимально, объем перекачиваемых данных невелик. Оверхед - 30% объема исходного файла. UUE заменить на Base64 по вкусу.
При этом ВК лучше делать по типу Rainbow, чтобы исключить преобразования в Юникод. Иначе оверхед будет сразу больше 100%.