gifts2017

Упаковка внешних отчетов (обработок)

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

Данная обработка предназначена для уменьшения размеров любых внешних отчетов/обработок (ERT), имеет режим пакетной обработки каталогов. В зависимости от первичной оптимизации обрабатываемого файла, степень сжатия может составлять от нескольких процентов до нескольких раз.


ПРИНЦИП ДЕЙСТВИЯ:

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

Сжатие достигается за счет переформирования потока "Gallery" (в тех обработках, где используются картинки), а также за счет анализа диалоговых форм и уменьшения потока "Main MetaData Stream" с учетом только используемых в диалоге обработки/отчета типов метаданных.

В состав обработки входит библиотека "compound.dll" (автор Костя Волков (reminder@softhome.net)), она запакована в состав ERT-файла обработки и распаковывается по мере необходимости. С ее помощью происходит процесс разбора файла на потоки и последующий сбор результирующего файла. Метод хранения бинарных файлов внутри ERT описан мной здесь: http://infostart.ru/profile/1782/projects/600/

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

Наименование Файл Версия Размер
- 204
.1220964628 62,24Kb
25.09.09
204
.1220964628 62,24Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Maljaev (maljaev) 09.09.08 17:02
Решил пока не делать те вещи, которые описаны в посткриптуме к данной обработке. Если есть интерес - можно сделать, не проблема, но только под "личную ответственность" упаковывающего.
2. Сhe Burashka (CheBurator) 10.09.08 00:16
смотрел обработку Abadona по упаковке?
3. Сhe Burashka (CheBurator) 10.09.08 00:20
кста, как я упоминал в комментариях к твоему ной-хау - Абрахамс демонстрировал как внутрь обработки может быть зашита например ДЛЛ-ка и установлена для работы обработки...
4. Аркадий Кучер (Abadonna) 10.09.08 05:29
(0) Саш, насчет Main MetaData Stream и "даже предварительный анализ обработки не даст 100%-корректного результата" не прав. Если в Dialog Stream вообще нет ссылок на реквизиты типа Документ, Справочик, Журнал и т.д (в общем на метаданные) можно резать смело. Выигрыш в размере может составить до 10 (!) раз
6. Maljaev (maljaev) 10.09.08 08:31
К своему стыду, обработку Abadonna не видел, но как понял из комментариев, он не знал что можно обрезать поток Gallery, а именно из-за него размер файла растет наиболее значительно.
7. Аркадий Кучер (Abadonna) 10.09.08 08:39
(6) У меня в основной задаче как раз стояло ВЫГРУЗИТЬ всю галерею, чтобы внутренние, превращенные во внешние, оказались со встроенными картинками. А какие потоки резать/не резать - это я уж на сто рядов изучил :))) И без compound.dll и g-comp
Компаунд, по большому счету - обычная файловая система, только внутри самого файла ;)
8. VasilyKushnir (vasilykushnir) 10.09.08 08:41
+1 За нетривиальную идею.
9. Аркадий Кучер (Abadonna) 10.09.08 08:42
Да, блин, плюс-то надо! Щас..
10. Maljaev (maljaev) 10.09.08 08:43
(3) На слово не верю. Почему когда я это выкладывал на двух форумах, никто кроме тебя не обмолвился об аналогиях? Ты покажи: что, где, когда, а уж потом будем говорить о неоригинальности.
11. Maljaev (maljaev) 10.09.08 08:56
(7) В том-то и дело, что галлерею вообще выгружать не надо, а только сами картинки и пустой Gallery - работать будет на любой конфе - проверил. Насчет Compound - Abadonna, я еще не настолько опытен, без инструментов не умею, но буду учиться :)
12. Maljaev (maljaev) 10.09.08 09:02
А обрезку потока meta я сделаю, раз Abadonna говорит что ничего страшного. Вот только до компа доберусь, а то я щас со смарта.
13. Аркадий Кучер (Abadonna) 10.09.08 09:02
(11) Саш, странно... у меня как раз полностью противоположный опыт: выгружаю нужные картинки без галереи - фиг вам, нема картинок....
14. Аркадий Кучер (Abadonna) 10.09.08 09:06
(12) Надо не совсем обрезку (тут я не уверен). В своем у пихаю "нулевой "мета, т.е. который будет в заготовке отчета, сохраненного в пустой конфе

15. Maljaev (maljaev) 10.09.08 09:08
(13) Ну вот попробуй открыть упакованный моей обработкой отчет под другой конфой - все работает, проверял на 26 релизе 1с.
16. Maljaev (maljaev) 10.09.08 09:12
(14) Да я в курсе, спасибо. Читал... Да и видно как Gcomp это делает.
17. Maljaev (maljaev) 10.09.08 09:39
(13) Возможно, мы по-разному пытались формировать пустой Gallery. У меня тоже далеко не с первой попытки получилось - то упакованный отчет вообще не открывался, то открывался но без картинок.
18. Аркадий Кучер (Abadonna) 10.09.08 18:48
(17) Вот теперь мне всё ясно стало! Я при выгрузке ваще убивал поток Gallery.
Забавно, что пустой Meta таки надо подсунуть сообразил, а что пустой (как ты делаешь) Gallery - нет. И на старуху бывает проруха ;)
19. Maljaev (maljaev) 10.09.08 18:57
Abadonna, все оказалось немного сложнее. Почитай эту ветку: http://www.1cpp.ru/forum/YaBB.pl?num=1220866790
20. Аркадий Кучер (Abadonna) 10.09.08 19:08
(19) Лана, как-нить доберусь я до галереи ;) На том этапе меня это не сильно колыхало и я не стал особо заморачиваться. Но одно знаю точно: когда ThunderRep выгружает внутренний отчет во внешний и забирает только нужные картинки и всю галерею - оно потом работает корректно в любой конфе. Поэтому на том этапе я и плюнул слюной на размер галереи.
21. Сhe Burashka (CheBurator) 11.09.08 00:55
(10) Ты - бяка! абрахамс - реально крутой чел, я от его скриптов и подходов чисто прусь.. такое впечатление, что он может сделать почти все (5 9-ок после ЗПТ) без использования ВК... если нужен пример упомянутый в (3) - то отпишись в личку - а то забуду и не найду...
22. Maljaev (maljaev) 11.09.08 13:23
Оказалось, что принцип формирования "Picture->Gallery" сложнее, чем я предполагал. Просто тупо записывать один и тот же поток в обработки неверно, так как Gallery формируется динамически согласно количеству картинок и их идентификаторов (и размер потока тоже не постоянный). На данный момент обработка переделана с учетом этих особенностей - то есть каждый раз формирует поток "Picture->Gallery" с учетом особенностей конкретной обработки/отчета.

Для тех, кто уже упаковывал ERT с помощью моей обработки, желательно перепаковать их еще раз новой версией (если есть проблемы или желаете их избежать). Возможные проблемы при упаковке старой версией:

1) При количестве картинок более 22 старшие картинки не отображаются.
2) Некоторые картинки (даже до 22) могут не отображаться по причине несоответствия их идентификаторов предполагаемым.
3) При вставке упакованного отчета/обработки в конфигурацию вставляется всегда 22 картинки (скажем 5 реально существующих и 17 пустых).
23. Maljaev (maljaev) 11.09.08 13:38
Abadonna, я разобрался в принципе формирования Gallery. Теперь проблем быть вроде не должно. Описание формата Gallery здесь: http://www.1cpp.ru/forum/YaBB.pl?num=1220866790
24. Maljaev (maljaev) 15.09.08 22:49
Ну наконец-то я доделал то что давно хотел - сделал упаковку Main MetaData Stream. И притом не просто заменой, а путем анализа диалоговых форм и исключением из Main MetaData Stream тех объектов метаданных, которые не используются в реквизитах диалогов. На данный момент, с учетом "умной" упаковки Main MetaData Stream и Gallery, по степени сжатия моя обработка превосходит аналоги от Абадонны и G-Comp. Но пока еще возможны глюки (хотя сам не видел), пользуйтесь осторожно, об ошибках сообщайте.
25. Maljaev (maljaev) 16.09.08 14:31
Полностью переработал интерфейс. Теперь не только работает, но еще и красиво :)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа