gifts2017

Размещение двоичных данных (обработок, документов, библиотек) в файле ERT

Опубликовал Александр Маляев (maljaev) в раздел Программирование - Практика программирования

Обработка для конвертации любого файла в псевдо-BMP-файл. Сконвертированные таким образом файлы можно размещать внутри любой внешней обработки/отчета (контейнера) и извлекать по мере необходимости. Таким образом можно внутри одного файла - внешней обработки, размещать различные двоичные данные. Например: многочисленные служебные ert-файлы, документы Word и Excel, архивы, библиотеки и так далее.
1. Воспользовавшись приведенной обработкой-конвертором, сконвертируйте необходимые вам файлы. Теперь обработка-конвертор не требует никаких внешних компонент и позволяет обрабатывать сразу группу файлов. Запишите размеры исходных файлов.

2. В рабочем отчете/обработке (куда хотите зашить сконвертированные файлы) в любую из печатных таблиц вставьте картинки из полученных вами файлов. В свойствах этих картинок (в поле "текст") укажите уникальные идентификаторы этих картинок-файлов, по которым потом будете к ним обращаться. Эти идентификаторы не должны встречаться больше нигде в пределах файла (ну например "fileimage1", "fileimage2"). Можно практически скрыть эти картинки с глаз пользователя, если картинки размещать строго по размеру ячеек, а те колонки и строки где картинки расположены, уменьшить по размеру до минимума.

3. В коде рабочей обработки создаете процедуру "РаспаковатьBin" и переменную "СписокРаспакованныхФайлов". Исходный код процедуры можно взять в обработке-примере.

4. Ну и затем, в необходимых местах обработки, когда требуется получить запакованный файл, вызываете процедуру распаковки. Например:

// первый параметр - имя распаковываемого файла
// второй параметр - уникальный идентификатор файла (который вы указывали в свойствах картинки)
// третий параметр - размер исходного файла (который выводился в списке файлов обработки-конвертора)
РаспаковатьBin("ObAvtore.ert","ObAvtore",14848);
ОткрытьФормуМодально("Отчет",,КаталогВременныхФайлов()+"ObAvtore.ert");

ЗАКЛЮЧЕНИЕ.

Таким образом можно внутри одного файла - внешней обработки, размещать различные двоичные данные. Например: многочисленные служебные ert-файлы, документы Word и Excel, архивы, библиотеки и так далее. Распаковка файлов занимает некоторое время (от долей секунды до нескольких секунд - в зависимости от размера распаковываемого файла и размера файла-контейнера), поэтому нужно использовать эти возможности разумно. Например, можно внутрь главной обработки запихать 5 вспомогательных обработок по 50 килобайт, или одну библиотеку килобайт на 500, но явно не стоит запихивать 10 вордовских файлов по 600 килобайт каждый. В этом случае лучше их предварительно запаковать, уменьшив тем самым раз в 10, и зашить в контейнер архив + маленький разархиватор (unzip, unrar). Можно создавать обработки с несколькими уровнями вложенности (как например здесь: http://infostart.ru/profile/1782/projects/2682/ ). На текущий момент большинство моих обработок, выложенных на Инфостарте, используют эту технологию.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Обработка-конвертор
.1204802977 28,50Kb
25.09.09
472
.1204802977 28,50Kb 472 Скачать
Пример реализации
.1225297119 24,00Kb
25.09.09
262
.1225297119 24,00Kb 262 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Maljaev (maljaev) 30.10.06 21:24
Успокою сразу: вирусов здесь нет. Можете предварительно поглядеть код обработки, он небольшой и довольно простой. Кроме того, в данном случае производится только распаковка компоненты, без ее подключения. Но в дальнейшем смотрите в оба ;)
2. artbear 30.10.06 21:37
Выложи, плиз, также эту обработку
Интересно было бы посмотреть :)
3. Maljaev (maljaev) 30.10.06 22:15
Добавлена обработка по преобразованию любых двоичных фaйлов в файлы BMP. Для работы обработки требуется загруженная ВК 1С++ версии не ниже 2.0.3.1
4. Maljaev (maljaev) 31.10.06 01:13
Обновил обе обработки.
1) Добавил везде комментарии
2) Исправил ошибку (нюанс) в алгоритме формирования BMP (выравнивание строк по 4 байта)
3) Увеличил удобство и наглядность кода
4) На порядки ускорил алгоритм восстановления бинарника (тот, что на VBS)
5. defini (defini) 02.11.06 11:05
Народ, ну вы даёте, столько скачиваний и нулевой рейтинг, неужто никому не понравилось. +1 адназначна (жаль, что нельзя +10).
6. Maljaev (maljaev) 02.11.06 11:54
Я еще радуюсь, что в минус нельзя ставить! А то бы мне сисадмины живо до -100 опустили. :)))
7. Maljaev (maljaev) 02.11.06 12:07
Надо было в ERT-шник патч Сауроновский зашить или еще что полезное - вот тогда бы рейтинг пополз :) На будущее хочу конвертер в BMP тоже без использования ВК переписать, и выложить дополнительно portable-сборку Uchoise (обработку подбора объектов) 8-ERT + 1-TXT ->> 1-ERT как пример практического использования.
8. rjhev korum (корум) 02.11.06 13:15
(0) Клянчишь, клянчишь... Не поставлю.
1. 1с++ = не у всех будет работать. Не проверить никак.
2. патчик, ДЛЛ в ЕРТ закинуть - а смысл?
Фото номенклатуры к каждой позиции всё равно не прикрутить...

Приведи пример практической сферы применения обработки.
9. Maljaev (maljaev) 02.11.06 17:07
Я НЕ КЛЯНЧУ! Это раз! Нахер мне у ВАС рейтинг клянчить, если у меня на ПРОКЛУБЕ все регалии, которых только можно добиться, ключая входимость в МОДЕРЫ и КОМАНДУ клуба. ВАМ до уровня этого ресурса еще расти долго, как бы ПРОКЛУБ ни висел. А выложил я исключительно ради любви к искусству, а не для плюсов, хотя просто комменты были бы приятны. Пример практического использования каждый для себя находит сам, это КОНЦЕПТ-работа. Главное предназначение - создание portable-сборок, если это слово что-нибудь ВАМ говорит.

Ну и в-общем, за одно только это оскорбление, которое главное Я считаю оскорблением, пожалуй отказываюсь от дальнейших издевательств и сношу обработки. Больше этого не повторится. Кому сильно понадобиться, тот напишет в личку.
10. Brr (brr) 11.10.07 10:17
11. Сhe Burashka (CheBurator) 11.10.07 10:57
Аналогичную штуку SmaharbA показывал...
12. Oleg (Rebel2007) 10.12.07 09:32
Скачивание недоступно, поэтому и судить нечего ;о)
13. АЛьФ (АЛьФ) 10.12.07 09:50
14. Владимир Костецкий (astonvilla) 10.12.07 10:20
Ну дык "сам породил, сам и убью".
Жаль... С чего было психовать?
15. VasilyKushnir (vasilykushnir) 10.12.07 11:18
(9)Сань, да плюнь ты да разотри - на все шпильки реагировать жизни не хватит. Глупо так обижатся. Есть отличная восточная поговорка: собака лает - караван идет...
16. Сhe Burashka (CheBurator) 10.12.07 13:01
Автор! Не психовать! Обработка нужная! А то есть юзвери, которые неспособны файлы копировать...
17. Maljaev (maljaev) 10.12.07 13:34
Да господи, че за сыр-бор-то? Ну снес давно как-то, жаль всю тему снести не смог. И странное дело: обработки нету, а обсуждают... Может, ее хоть выложить, чтобы было что обсуждать? Тем более, что уже никаких ВК не требуется и скрипт не пишется в файл.
18. vip (vip) 10.12.07 13:42
(17) Не нужно слушать мнение людей, способных создать только очередную гениальную форму ТОРГ-12.
Выкладывай.
19. Владимир Костецкий (astonvilla) 10.12.07 14:13
Давай, выкладывай. Хоть посмотрич, из-за чего сыр-бор начался :))
20. Maljaev (maljaev) 06.03.08 15:11
Ну вот выложил. Немного не доработал - для конвертации все еще требуется 1C++ (ну я думаю для разработчика это не проблема), но для дальнейшей работы контейнера и распаковки запакованных данных уже ничего не требуется.
21. Maljaev (maljaev) 06.03.08 15:29
Конечно, блин, вещь эта бомбе подобна - так как зашить вирус внутрь обработки раз плюнуть, но ведь взрывчатку не только в терактах используют. Надеюсь, что эта вещь не вызовет эпидемии 1С-заразы, а будет использоваться авторами разумно и по назначению.
22. VasilyKushnir (vasilykushnir) 06.03.08 15:40
23. Андрей Скляров (coder1cv8) 06.03.08 15:49
Почитал описание, ну как тока не выкручиваются семерочники, какие тока костыли не придумывают! ))
Ещё, щас забавно читать пост автора о проклабе, вот ведь как время ситуацию меняет! )
За смекалку плюс.
ЗЫ: надеюсь ничем не обидел уважаемого автора.
24. Maljaev (maljaev) 06.03.08 15:58
Да, времена меняются... и люди тоже. Насчет проклаба хочу сказать, что Лумпов имел возможность кардинально улучшить свой сайт, но упустил свой шанс или не захотел им воспользоваться. С другой стороны, не все в организации Инфостарта мне нравиться, многое можно было сделать удобнее, нагляднее, функциональнее, и дизайн постоянно перекраивают, но несмотря на это сайтом занимаются и идут в ногу со временем - а это самое главное.
25. Андрей Скляров (coder1cv8) 06.03.08 16:04
(24) Вот. Самый большой плюс, на мой взгляд, что этим проектом занимаются. А проклабу позволили спокойно умереть, ну да туда и дорога, никогда он мне не нравился, вечно тормозил сколько помню...
26. А Р (p1l1gr1m) 09.09.08 18:47
Великолепно! Автору - поклон в пояс
27. AlexQC (alexqc) 17.09.08 12:21
Можно пару-тройку предложений внести :)?
1а. 1С++ - компонента хорошая, регистрации под админом не требующая. Потому, может, не стоит от нее бегать, на скрипты переписывать?
1б. А если используем 1С++ - там BinaryData сжатие поддерживает, можно заодно и сжимать-разжимать.

2. В BMP теоретически может быть участок-дырка между заголовком и данными: смотрим на смещение 1078 до данных. Если его увеличить - получим "дырку", в которую можно засунуть что-то свое. Надо проверить, если это так (т.е. если такой "рисунок" корректно читается системой и не меняется 1Ской при вставке), то можно использовать даже "фиксированную" BMP - т.е. взять какой-то рисунок, (кстати не обязательно 256-цветный, дабы на палитру не расходоваться), и вставлять данные в него, меняя только размер "дырки". При этом сам рисунок можно вполне смысловым взять - дискету там какую-нибудь, или скрепку. Типа - "присоединенный файл" :)
28. Maljaev (maljaev) 29.10.08 19:29
Наконец-то у меня дошли руки доработать конвертор. Так как я часто теперь эту технологию использую, решил максимально облегчить себе процесс на будущее. Теперь преобразование файла в псевдо-BMP не требует никаких внешних компонент, плюс может обрабатывать сразу группу файлов (смотрите скриншот). Код для внедрения в свои разработки я вынес в обработку "Пример реализации", которую можно скачать там же где и конвертор.
29. Anatoliy (anatoliy123) 10.11.08 15:23
Огромное спасибо автору. Инструмент действительно стоящий внимания!
30. Я (konan) 14.11.08 15:19
31. Сhe Burashka (CheBurator) 14.11.08 16:10
Автор! выложи свою библиотеку пиктограмм!!!
;-)
32. Maljaev (maljaev) 14.11.08 16:17
(31) Что ты имеешь ввиду? Я не пользуюсь готовыми библиотеками - чаще рисую под конкретную разработку, ну плюс ранее нарисованные.
33. Евгений Мартыненков (JohnyDeath) 14.11.08 16:25
34. AntiBuh (AntiBuh) 03.12.08 10:42
Да плюс
прикольная весчь
35. Алексей Плутенко (Noy) 08.12.08 19:06
У такой обработки рейтинг должен быть гораздо выше.
ИМХО - недооценили.
36. nickVZ (nickVZ) 14.12.08 15:43
Можно еще предложение? Мне вот не нравится третий параметр в РаспаковатьBin() - размер исходного файла.
Ведь эти файлы - очень часто "живые", их может быть много (с вариантами), и хранить лишнюю техническую информацию как-то ломает ;)
Может, просто запсочить этот размер после заголовка BMP в виде 36-ричного значения при упаковке, да и дело с концом, а? И функции готовые в 1С имеется (_IdToStr и StrToId)... Ну не документированные - не беда, исключат - воспроизвести не проблема ;)
37. Александр Маляев (maljaev) 14.12.08 23:58
Отличное предложение, спасибо. Сделаю.
38. Александр Маляев (maljaev) 15.12.08 00:09
У меня даже получше идея появилась - использовать область палитры bmp-файла как fat. Тогда можно будет все необходимые файлы запихать в один bmp, а в fat записывать имена файлов, смещения, размеры. По идее, скорость должна возрасти (довольно сильно, если файлов много или они большие), и удобство тоже.
39. Алексей Плутенко (Noy) 15.12.08 09:35
40. Brr (brr) 16.01.09 15:54
В порядке бреда. А если бинарник хранить в строке бесконечной длины? Уйдем от конфигуратора.
41. Олег Веселов (sml) 29.01.09 15:07
плюсанул за идею - буду думать куда прикрутить у себя
LanaSN; snl; +2 Ответить 1
42. Епрст (Ёпрст) 29.01.09 15:17
(42) смотри у автора другие работы, и думать, куда прикрутить "идею" будет не надо :)
43. Алексей Плутенко (Noy) 29.01.09 15:24
(41) Можешь написать "инсталятор внешних обработок" ;)
Попиарюсь:
Я эту идею использовал для запаковки внешней компоненты в обработках http://infostart.ru/projects/3312/ и http://infostart.ru/projects/3057/
44. script Мальчинко (script) 17.02.10 04:16
А когда будет продолжение... ?
Разработка очень нужная но долго выгружает файл от 100 кб. При файле в 500 кб у меня 1С вообще виснет. Да и упаковка и распаковка нескольких файлов одновременно была бы тоже оч. полезной.
45. Виталий (nafa) 19.04.10 00:01
(44) Если файлы большие или их много, то можно попробовать os7764
46. Владимир Большов (BlueWind) 21.04.10 16:56
Обработка чрезвычайно полезная! Мне - 100% нужная вещь!!!

(44) (45) в той же os7764 имеется такой комментарий:


11. Noy 20.04.2010 17:13
По-поводу обработки Маляева (Размещение двоичных данных (обработок, документов, библиотек) в файле ERT) - она действительно очень медленная, но если ее чуть-чуть "допилить" то можно получить такие результаты:
Код
Распаковка файла FormEx.dll (558'080 байт): 0.133 сек
Распаковка файла far.com.ua.xls (10'362'368 байт): 0.953 сек
Распаковка файла Snatch_Goblin.avi (47'741'596 байт): 9.149 сек

что гораздо лучше чем
Цитата
kladr.zip (12Мб) извлекается за 16 секунд

Ответили: (12.) (13.) (16.) (18.)



13. Ёпрст 20.04.2010 18:01
(11.) чем допиливал обработку Маляева?

Ответили: (14.)

14. Noy 20.04.2010 18:06
(13.) Просто читаю не по-байтно, а блоками по 4К

Ответили: (15.)

47. VRP SoftLibrary (VRP) 04.06.10 02:25
48. krupp 27.10.11 13:02
50. Александр Маляев (maljaev) 12.08.13 01:49
Я случайно прочел свои же комменты за 2006-2007 годы и ужаснулся. :) Молодой был, горячий... Приношу извинения всем кого обидел ненароком.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа