» Казахстанский Бухгалтерский форум www.balans.kz

СОНО: Утилита для распаковки архивов СОНО *.tar.bz2

 
Показать сообщения:
Начиная со старых .::. Начиная с новых


Автор: DotNetCoder
Добавлено: #1  Сб Июл 25, 2009 18:42:03
Заголовок сообщения: СОНО: Утилита для распаковки архивов СОНО *.tar.bz2

База знаний http://balans.kz/viewtopic.php?p=364415#364415

Утилита распаковывает содержимое описателей форм и архивы с данными для СОНО, а именно архивы типа *.tar.bz2

НАСТРОЙКА
tar_bz2_unzip2.cmd - содержит путь к Java машине, по умолчанию стоит СОНО-шный,
т.е. если СОНО установлен в папку
по умолчанию "C:\Program Files\SONO\target\jre\bin\java.exe", то будет работать.

ИСПОЛЬЗОВАНИЕ
tar_bz2_unzip2.cmd принимает 2 параметра
1. путь к рабочей папке, в которой лежат описатели форм
2. имя файла описателя в ней, xml-ки лягут рядом с ними после запуска
Например,
tar_bz2_unzip2.cmd ".\\FNO\\" "form_300_00_v9_r8.tar.bz2"
Структуру каталога лучше не менять, возможны проблемы с путями (не тестировалось).

Для того что бы распаковать новый файл
1. положите его в папку FNO из этого архива
2. для удобства скопируйте и переименуйте файл test_form_101_03_v5_r3.tar.bz2.cmd
3. отредактируйте ваш файл cmd, заменив в нем второй параметр, содержащий имя файла
4. запустите ваш cmd файл двойным щелчком, при успешном завершении xml файлы будут в папке FNO
5. если это не сработало - запустите cmd из командной строки, через команду cd перейдите в папку, куда вы положили файл tar_bz2_unzip2.jar, вызовите из консоли ваш cmd файл, если там будут ошибки - то так вы их увидите.
ПАРА СЛОВ О РЕАЛИЗАЦИИ

Писалось "на коленке", по просьбе товарища.
Выкладывается для ознакомления, возможно, кому то пригодится.
Задача стояла - вытащить данные с этих непонятно как запакованых архивов.

tar_bz2_unzip2.jar - Собственно jar-ка, в которой лежит класс для распаковки.
Внутри используются классы BZip2CompressorInputStream и TarArchiveEntry из либы commons-compress-1.0-SNAPSHOT.jar. Весь код - это где то 100 строчек java кода, пока без проверок и обработки ошибок. Ну и для сведения - двойной архив это: tar - просто компонует файлы в один, bz2 архивирует, но только один файл. В итоге получаем *.tar.bz

ФАЙЛЫ
FNO - папка с тестовыми данным
commons-compress-1.0-SNAPSHOT.jar - либа архиваторов
Readme.txt - описание
tar_bz2_unzip2.cmd - командный файл для удобного запуска, содержит путь к java машине
tar_bz2_unzip2.jar - сама либа для распаковки файлов tar.bz2
test*.cmd - тестовые командные файлы для запуска распаковки форм из папки FNO

p.s. в папке FNO лежат примеры извлеченных xml-ок - описателей форм. Если подсунуть архив 300-ой формы с данным, то он также будет распакован. Целью не ставилось широкое использование, так что за отсутствие GUI и удобств сильно не пинайте :-)



Автор: Технический
Добавлено: #2  Сб Июл 25, 2009 20:00:20
Заголовок сообщения:

А линуксе можно с консоли разархивировать. Верно?

Добавлено спустя 6 минут 33 секунды:

Как то уже приводил ссылку http://ru.wikipedia.org/wiki/Bz2 но не занимался этими архивами.



Автор: DotNetCoder
Добавлено: #3  Сб Июл 25, 2009 20:20:16
Заголовок сообщения:

Compas говорит:
А линуксе можно с консоли разархивировать. Верно?

Добавлено спустя 6 минут 33 секунды:

Как то уже приводил ссылку http://ru.wikipedia.org/wiki/Bz2 но не занимался этими архивами.

Насчет линукса я не знаю, не специалист. Для Win находил портированный с линукса архиватор tar.bz2, но эти файлы он у меня так и не взял. Прежде чем что то писать - скачивал еще несколько архиваторов, в описании заявлявшие, что работают с такими архивами. Ни одним не получилось :-(
Пришлось написать свое, что бы не пропадало - решил поделиться.



Автор: Cosmo
Добавлено: #4  Сб Июл 25, 2009 21:22:04
Заголовок сообщения:

DotNetCoder
Работаешь в IntelliJ IDEA? Использовал декомпилятор Java?



Автор: Технический
Добавлено: #5  Сб Июл 25, 2009 21:25:07
Заголовок сообщения:

DotNetCoder говорит:
5. если это не сработало - запустите cmd из командной строки, через команду cd перейдите в папку, куда вы положили файл tar_bz2_unzip2.jar, вызовите из консоли ваш cmd файл, если там будут ошибки - то так вы их увидите.

tar_bz2_unzip2.cmd имели ввиду



Автор: DotNetCoder
Добавлено: #6  Сб Июл 25, 2009 21:38:42
Заголовок сообщения:

Cosmo говорит:
DotNetCoder
Работаешь в IntelliJ IDEA? Использовал декомпилятор Java?

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



Автор: Технический
Добавлено: #7  Сб Июл 25, 2009 21:42:21
Заголовок сообщения:

Высылайте мне http://balans.kz/privmsg.php?mode=post&u=86
С консоли работает.



Автор: Граур Станислав
Добавлено: #8  Пн Июл 27, 2009 09:41:26
Заголовок сообщения:

А что за декомпилятор ? Вот этот ? http://java.decompiler.free.fr

Печать 300 формы ну "очень хочется начальник".
Там то exception-ы то совсем простые.



Автор: Cosmo
Добавлено: #9  Пн Июл 27, 2009 09:46:11
Заголовок сообщения:

Граур Станислав
Цитата:
А что за декомпилятор ?

DJ Java Decompiler http://members.fortunecity.com/neshkov/dj.html



Автор: vogobondo
Добавлено: #10  Пн Июл 27, 2009 15:02:36
Заголовок сообщения:

Compas говорит:
А линуксе можно с консоли разархивировать. Верно?


верно, команда tar xjf имя_файла_со_всеми_расширениями

Цитата:
Добавлено спустя 6 минут 33 секунды:

Как то уже приводил ссылку http://ru.wikipedia.org/wiki/Bz2 но не занимался этими архивами.


bzip2 очень прост: на входе имя файла, на выходе сжатый файл, оригинальный файл удаляется.

Добавлено спустя 9 минут 56 секунд:

вдогонку

вот bzip2 для windows

http://gnuwin32.sourceforge.net/packages/bzip2.htm

вот tar для windows

http://gnuwin32.sourceforge.net/packages/gtar.htm

когда тар запускается он предварительно разжимает файл bzip'ом, после разворачивает файл в отдельный файлы и каталоги.



Автор: alkaed
Добавлено: #11  Ср Июл 29, 2009 11:03:37
Заголовок сообщения:

Compas говорит:
А линуксе можно с консоли разархивировать. Верно?

Добавлено спустя 6 минут 33 секунды:

Как то уже приводил ссылку http://ru.wikipedia.org/wiki/Bz2 но не занимался этими архивами.

Нет, под линухой не распаковывается, к слову сказать виндовозный архиватор WinRAR прекрасно понимает никсовые стандарты архивации tar tgz tar.gz2 tar.bz2 и т.д. Для каких целей разработчики используют такое расширение в своих формах непонятно.



Автор: Технический
Добавлено: #12  Ср Июл 29, 2009 11:11:19
Заголовок сообщения:

Политика закрытости.


Автор: Elis
Добавлено: #13  Ср Июл 29, 2009 11:55:02
Заголовок сообщения:

От кого и что закрывают?
Причем не понятно, почему Ф300 закрывают tar.bz2, а для остальных форм xml-ка открытая.



Автор: Технический
Добавлено: #14  Ср Июл 29, 2009 12:03:51
Заголовок сообщения:

Спросил, сказали так надо. Тех задание так поняли. Но это уже влево уходим. Работаем.


Автор: ТатьянаС
Добавлено: #15  Ср Июл 29, 2009 14:20:35
Заголовок сообщения:

DotNetCoder говорит:
НАСТРОЙКА
tar_bz2_unzip2.cmd - содержит путь к Java машине, по умолчанию стоит СОНО-шный,
т.е. если СОНО установлен в папку
по умолчанию "C:\Program Files\SONO\target\jre\bin\java.exe", то будет работать

Пожалуйста, скажите, вот я не программист и не совсем понимаю приведенные термины-смогу ли я по указанному пути все сделать сама или лучше обратиться к прграммистам, чтобы всё не испортить?



Автор: Технический
Добавлено: #16  Ср Июл 29, 2009 14:22:47
Заголовок сообщения:

ТатьянаС зачем Вам это надо? Не ходите в эту ветку.


Автор: vogobondo
Добавлено: #17  Ср Июл 29, 2009 20:56:52
Заголовок сообщения:

alkaed говорит:
Compas говорит:
А линуксе можно с консоли разархивировать. Верно?

Добавлено спустя 6 минут 33 секунды:

Как то уже приводил ссылку http://ru.wikipedia.org/wiki/Bz2 но не занимался этими архивами.

Нет, под линухой не распаковывается, к слову сказать виндовозный архиватор WinRAR прекрасно понимает никсовые стандарты архивации tar tgz tar.gz2 tar.bz2 и т.д. Для каких целей разработчики используют такое расширение в своих формах непонятно.


Поначалу хотел возмутиться, но решил проверить и точно - не открывается в линухе, bzip ругается и говорит, что это не bzip файл. Чуть ковырнул, проверил формат, оказывается разработчики СОНО все же не отказались от упаковки bzip, просто они выкусили первых два байта, сигнатуру bzip: BZ. Если добавить эти два байта к архивам СОНО все открывается и разжимается под линухом.

Подводя итог можно сказать, что это все же тар-файл упакованный bzip, только файл чуть покорежен.

Сожалею, что дал не достоверную информацию.

Конечно путь - использования родных классов СОНО он более перспективнее - можно будет сделать утилитки по переносу профилей между разными базами, по извлечению сохраненных форм, печать и т.д. Есть куда развиваться :) Да и не будет подводных камней



Автор: alkaed
Добавлено: #18  Ср Июл 29, 2009 21:29:08
Заголовок сообщения:

vogobondo говорит:

Подводя итог можно сказать, что это все же тар-файл упакованный bzip, только файл чуть покорежен.

Защита от дурака надо понимать :) мне было если честно лень лезть в bin-редактор для выяснения причин.

Добавлено спустя 2 минуты 18 секунд:

Да кстати в консоли необязательно, можно воспользоваться архиватором Ark (в гуях предоставляет фейс к консольным программам архивации)



Автор: vogobondo
Добавлено: #19  Ср Июл 29, 2009 21:49:12
Заголовок сообщения:

Elis говорит:
От кого и что закрывают?


:) вопрос риторический, вообще обещали открытые API

Цитата:
Причем не понятно, почему Ф300 закрывают tar.bz2, а для остальных форм xml-ка открытая.


пожет вот поэтому:

размер компонент архива 2 МБайта

form_300_00_v10_r14_chr.xml 967
form_300_00_v10_r14_loc.xml 1152083
form_300_00_v10_r14.xml 889592

архив всего 86 КБайт

form_300_00_v10_r14.tar.bz2 86577



Автор: Elis
Добавлено: #20  Ср Июл 29, 2009 22:30:56
Заголовок сообщения:

А чем обычный rar не вариант?
Так же сжимает.



Автор: vogobondo
Добавлено: #21  Чт Июл 30, 2009 00:03:03
Заголовок сообщения:

Elis говорит:
А чем обычный rar не вариант?
Так же сжимает.


рара нет в открытых исходниках и библиотеках

только не думайте, что я защищаю выбор разработчиков :)



Автор: Cosmo
Добавлено: #22  Чт Июл 30, 2009 00:50:30
Заголовок сообщения:

Elis
Цитата:
А чем обычный rar не вариант?

Не забываем, что клиент СОНО написано на языке Java (free), и почти все компоненты приложения используют бесплатные библиотеки (http://commons.apache.org/components.html, для печати в pdf http://www.lowagie.com/iText/), а WinRar платный архиватор. Для архивации используется класс Compress на java http://commons.apache.org/compress/, который как раз умеет архивировать только в tar, zip и bzip2, вот откуда эти расширения. ИМХО.

Добавлено спустя 56 секунд:

vogobondo
Все верно



Автор: Elis
Добавлено: #23  Чт Июл 30, 2009 01:05:14
Заголовок сообщения:

Я уже поняла, что причина в том, что RAR платный.
Спасибо. :)



Автор: alkaed
Добавлено: #24  Пт Июл 31, 2009 15:47:29
Заголовок сообщения:

Elis говорит:
А чем обычный rar не вариант?
Так же сжимает.

rar в некоторой степени проприетарный формат, в отличии от того же tar и bzip которые используются в открытых системах, собственно как и java на котором написана СОНО.



Автор: sthprog
Добавлено: #25  Чт Авг 06, 2009 10:27:42
Заголовок сообщения:

Уточнение, если имя фала содержит кирилицу, он не распаковывается.


Автор: Taxkz
Добавлено: #26  Чт Авг 06, 2009 10:44:11
Заголовок сообщения:

Я попробовал с кириллицей, вроде проблем не было.
Вот только в CMD надо писать в кодировке 866.
Надеюсь Вы понимаете что это такое.

Добавлено спустя 5 минут 24 секунды:

Т.е. в кодировке MS DOS.



Автор: АФРИКА
Добавлено: #27  Вт Янв 05, 2010 19:20:45
Заголовок сообщения:

:twisted: Сойду с ума. Не могу скачать 300.00 v10.r22. Подскажите,то что прочла выше - никак. :%):


Автор: sthprog
Добавлено: #28  Вт Авг 17, 2010 14:26:21
Заголовок сообщения:

Taxkz говорит:
Я попробовал с кириллицей, вроде проблем не было.
Вот только в CMD надо писать в кодировке 866.
Надеюсь Вы понимаете что это такое.

Добавлено спустя 5 минут 24 секунды:

Т.е. в кодировке MS DOS.


Разумеется понимаю.

Знакомый в Плюс Микро работает, спросил у него про запаковывальщик в тар.бз, ответил дословно так
Код:
АРХИВ ТРОГАТЬ НИЗЯ И НИКАК ОНИ ЕГО НЕ ЗАПАКОВЫВАЮТ. Открой просто двойным кликом.
запаковщика нет. Есть распаковщик, но тебе его не дадут потому что низя.



Автор: Taxkz
Добавлено: #29  Вт Авг 17, 2010 14:34:23
Заголовок сообщения:

Да, не было бы вопросов если бы он еще сказал какое приложение при этом должно быть установлено.


Автор: sthprog
Добавлено: #30  Ср Авг 18, 2010 10:45:50
Заголовок сообщения:

было упомянуто "nodpad++"

я думаю все же Notepad++...



Автор: Taxkz
Добавлено: #31  Ср Авг 18, 2010 13:09:41
Заголовок сообщения:

Что-то сомневаюсь.
Это какой-то супер блокнот, который сам распаковывает файл и откроет ?



Автор: sthprog
Добавлено: #32  Ср Авг 18, 2010 13:23:55
Заголовок сообщения:

Taxkz говорит:
Что-то сомневаюсь.
Это какой-то супер блокнот, который сам распаковывает файл и откроет ?

Это скорее всего их внутренняя прога.
Потому что tar.bz2 это бинарный файл, его в любом текстовой редакторе открывать нет смысла.
Если сильно нужно можно распаковать представленной тут прогой, а запаковывается обратно 7zip-ом, потом любым 16 ричным редактором выкусываете 2 первых байта и соно снова его поймет.



Автор: Moslem
Добавлено: #33  Ср Авг 18, 2010 22:34:31
Заголовок сообщения:

sthprog говорит:
потом любым 16 ричным редактором выкусываете 2 первых байта и соно снова его поймет.

Ничего себе как замудренно :x



Автор: sthprog
Добавлено: #34  Ср Авг 18, 2010 22:40:53
Заголовок сообщения:

sthprog говорит:

Если сильно нужно



Автор: Ким Семен
Добавлено: #35  Вс Дек 22, 2013 23:35:43
Заголовок сообщения:

Дорогие форумчане, пожалуйста если у кого то есть - скиньте эту наработку "tar_bz2_unzip2_v0.1.zip". ООоооочень ннннада. Есть форма 300 с приложением 08 порядка 1000 строк - задача сравнить с данными в 1С сданное приложение. Обещаю при получении приложения в формате xml - выложу обработку по чтению данных из файла xml.

Добавлено спустя 8 минут 54 секунды:

Или если кто то знает как открыть файл .tar.bz2 выгруженный из соно 300 формы (так как в xml СОНО не дает сохранить сданную форму)



Автор: sthprog
Добавлено: #36  Пн Дек 23, 2013 13:01:34
Заголовок сообщения:

Вот попробуйте, к батникам оболочку накатал тогда еще, в папку FNO положить этот тар бз, который распаковать, раньше работал, счас проверить возможности нету. ас ис , как говорится.


Автор: Elis
Добавлено: #37  Пт Апр 20, 2018 18:42:17
Заголовок сообщения:

Вплоть до 2016 года успешно пользовалась наработкой DotNetCoder и sthprog (предполагаю, что это одно лицо). Огромное спасибо, выручает каждый год, чтобы узнать, что изменили разработчики в новой форме 300.00, которая даже из СОНО сохраняется только в tar.bz2

Но с этого года почему-то перестала работать, пишет "Точка входа в процедуру _JVM_GetTemporaryDirectory@4 не найдена в библиотеке DLL jvm.dll"
Уже и dll`ку меняла на старую, и обработку заново скачивала - ни в какую, в прошлом году она работала, а в этом нет.

Еще раз перечитала всю ветку, и все оказалось гораздо проще:
vogobondo говорит:
просто они выкусили первых два байта, сигнатуру bzip: BZ. Если добавить эти два байта к архивам СОНО все открывается и разжимается под линухом
И не только под линусом, но и в винде! Все очень просто.

Ким Семен говорит:
Или если кто то знает как открыть файл .tar.bz2 выгруженный из соно 300 формы (так как в xml СОНО не дает сохранить сданную форму)

Запускаете FAR, встаете на файл архива *.tar.bz2 (в том числе и сохраненный отчет из СОНО)
Нажимаете F4 (редактировать), перед всей этой белибердой в самом начале первой строки вбиваете BZ и опа! Архив открывается, причем и в FAR`е, и в RAR`е, и в 7zip`е.
В нем два файла large_data.xml.bz2 и null.xml, вот в файле null.xml и есть распакованный отчет.

Добавлено спустя 51 секунду:

Ким Семен говорит:
Обещаю при получении приложения в формате xml - выложу обработку по чтению данных из файла xml.

Давайте, давайте... Пригодится!



  

Служба поддержки WWW.BALANS.KZ