V8Formats
Библиотеки на .NET для работы с форматами файлов платформы 1С:Предприятие 8.x
Ссылка на GitHub
Класс V8File
C помощью класса V8File реализована функциональность распаковки в файловую структуру и запаковки в форматы файлов платформы 1С:Предприятие файлов конфигураций (.CF), внешний обработок (.ERF) и внешних отчетов (*.ERT). Возможности аналогичны утилите V8Unpack, написаной на C++ (//infostart.ru/public/15695).
Доступны следующие методы:
- Inflate и Deflate — распаковка и запаковка произвольных блоков данных.
- Unpack и Pack — распаковка файла в файловую структуру с минимальной детализацией и запаковка соответственно.
- Parse и Build — распаковка файла в файловую структуру с большей детализацией по сравнению с предыдущими вариантами команд и запаковка соответственно.
Консольная утилита
В качестве примера использования библиотеки добавлена консольная утилита (для сборки использовался .NET 4.0) со следующим списком доступных команд:
V8Formats Version 1.0 Copyright (c) YPermitin (ypermitin@yandex.ru) www.develplatform.ru PSPlehanov (psplehanov@mail.ru)
Unpack, pack, deflate and inflate 1C v8 file (.cf),(.epf),(*.erf)
V8FORMATS
- U[NPACK] in_filename.cf out_dirname
- PA[CK] in_dirname out_filename.cf
- I[NFLATE] in_filename.data out_filename
- D[EFLATE] in_filename filename.data
- E[XAMPLE]
- BAT
- P[ARSE] in_filename out_dirname
- B[UILD] in_dirname out_filename
- V[ERSION]
Другой пример использования библиотеки
Консольная утилита это хорошо, но хотелось бы более наглядный пример использования. Если Вы со мной согласны, то посмотрите на онлайн-инструмент «Конструктор дополнительных обработок (БСП)».
Библиотека используется для генерации файлов внешних отчетов и обработок в зависимости от введенных парамтров. С ее помощью реализовано как получение конечного файла, так и предварительный просмотр программного кода модуля объекта и модуля формы созданной обработки.
Лицензия
Разработка распостраняется по лицензии MIT. Полный текст лицензии на GitHub, там же есть текст на англ. языке.
Изменения
13.02.2025:
- Оптимизирована работа с памятью
TODO
В будущем добавявятся возможности работы с форматами файлов *.GRS (включая визуализацию) и *.MXL, а также оптимизация существующего кода в части использования памяти.
P.S. Приложение, а также другие материалы по интеграции через веб-сервисы, использование HTTP-сервисов, создание асинхронных виджетов и многое другое Вы можете найти в моем блоге www.develplatform.ru
Пора на инфостарте заводить новый тег — Yet Another Unpack.
Раз уж дот-нет, то сделайте заодно и Nuget-пакет, чтобы по быстрому можно было подключить.
(1) Evil Beaver, возьму на заметку. Почему бы и нет.
Есть проблема с распаковкой конфигурации в 700 МБ, в которой конфигурация поставщика порядка 300 МБ. Причем есть проблема и в v8Unpack-e исходном.
(3) fishca, с интересом бы посмотрел на этот CFник.
Можно ли каким-либо законным способом его получить и посмотреть?)
(4) буха 3.0 с бит финансом, упп с ним же, erp. Мало что ли огромных типовых.
(1) Evil Beaver, ты у нас ведешь списки клуба? Может тебе уже публикацию в разделе Лайф сделать и опубликовать полный состав клуба?
(6) awa, Я планирую сделать небольшую тему со сравнением всех известных распаковщиков.
(4) да, можно взять конфу ERP2, включить возможность изменения, чтобы конфигурация поставщика появилась «отдельным файлом» и попытаться распаковать.
(8) fishca, рискну заметить, что «исходный» V8Unpack тоже развивается и в его последней версии (которая включена в последний V8Reader) проблема с распаковкой больших конфигураций была решена.
(6) awa, не, я ничего такого не веду, зачем оно мне. Более того, у меня еще со времен V8Viewer есть C# библиотека для чтения/записи CF. Только она закрытая.
(8) fishca, ок. Разберемся конечно с проблемой.
На GitHub сделал отметку.
(10) а вот я принципиально не понимаю… «нахрена» ? Самое удивительное — что Юрий вроде в курсе всей движухи и давно на GitHub и G+
Это на моей памяти 8-ой unpack’er…
Потому что нужно на .NET, а С++ это зло ?
Как учил великий steban — С++ код можно использовать в C# проектах в виде unmanagment вставок.
Можно ведь делать обертки над libv8unpack.
Ох… Грусто…
P.S. Грусто от того сколько Юрий потратил времени на крутую вещь… Но блин. Мы не сможем отказаться от v8unpack в сторону .NET: потому как благодаря dm_pass у нас есть её gcc порт под linux и есть пакеты под linux если кто забыл
(10)
Андрей — единственное я подумал, а можно v8format встроить через NuGet напрямую в Oscript.io ? Чтобы было доступно в oscript через код.Прочитал (1) — вопрос снимается
(12) lustin, все очень просто. Для моих задач мне нужен был .NETная реализация.
Почему не использовал unmanagment код? По правде говоря использовал, в начале сборка была «неуправляемой».
«Неуправляемая» библиотека была сделана в середине прошлого года, потом почти сразу же портирована полностью на .NET.
Согласитесь, что использовать неуправляемый код там, где его можно легко портировать на управляемый — это настоящий костыль.
Никто никого не заставляет отказываться от CPPшной реализации. Тем более она работает быстрее этой сборки.
Вообщем, .NETная реализация мне была нужна, мы ее с напарником сделали, а теперь бесплатно из без СМС всем предложили.
Кому нужно, тот и будет использовать =)
(14) на .NET тоже была реализация уже. Входит в состав Elisy .Net Bridge. Кажется и проект живой еще.
(15) Infactum, он вроде как не бесплатный.
(12) Есть.Net Core для кроссплатформенных приложений
Запускаем ASP.NET Core приложение под Linux
(13) lustin, я тогда, раз пошла такая пьянка, свою либу причешу и-таки выложу в nuget. Больше анпаков, хороших и разных (или почти одинаковых, если быть честным)
(18) Evil Beaver, будет интересно посмотреть.
(18) А смысл? опять потеряешь время 🙂
а анпаки и правда почти все одинаковы, но наши продукты precommit1c и gitsync, расширяющие функционал анпаков, все равно удобнее и мощнее всех 🙂
PS это я слегка троллингом занялся
В тему анпаков. ИМХО, 1С должна выпустить свой кросплатформенный и многопоточный анпак, который будет раскладывать cf так, как это делает конфигуратор, а не «скобочками со строками». Ес-но всё должно быть отвязано от самой платформы и желательно поставляться отдельно от неё.
(19) а чего ее смотреть,она в принципе, опубликована давно:http://sourceforge.net/p/v8reader/code/HEAD/tree Просто есть еще «пишущая» версия, вот ее можно довести до товарного вида и выложить. Хотя, как правильно заметил Артур — смысл какой?
(21) Формат этих скобочек кто нибудь описал? Будет описание — выгрузку напишут уже быстро.
(23) so-quest, Написать зная формат/описание не долго. А вот собрать инфу, вот это действительно трудная задача. Даже проведя аналогию с unpack’ами, по описанному алгоритму закодить легко, у меня у самого есть 2 реализации на C# и python.
(23) so-quest, И надо оно вообще? Есть 8.3 с выгрузкой в xml, там читаемо и можно преобразовывать в «более читаемо»
YPermitin, можете где то добавить информацию под какой лицензией распространяется разработка?
(26) m.bolsun, я добавлю в ближайшие дни на GitHub и здесь.
Нужно немного подождать =)
(26) m.bolsun, текст лицензии добавлен. Используется MIT.
(23) so-quest, самое красивое получалось у awa на его закрытом проекте. Но, как он мне сказал при личной встрече, времени работать над всем этим дальше совсем нет.
(25) Надо. Во первых в хмл не выгрузишь обработку, во вторых сейчас все больше инструментов начинают использовать унпак. А работа с внутренним представлением данных (все эти скобочки) идет наощупь. Изменил,собрал, посмотрел что получилось — и так до бесконечности.
Вот и говорю — требуется некое описание внутреннего формата — это поле отвечает за это, то за то и тип у них такой-то.
(29) Алгоритм разбора epf/cf еще disa_da в лохматом 2009 (или 2008) выложил. С тех пор ничего не поменялось. Принципиально новых вещей не получилось. Потому как мало кому нужно. А те кому нужно — тратят время и ковыряют сами все эти скобочки, циферки….
(30) so-quest, распаковка/запаковка обработок в XML обещана в 8.3.8
(12) lustin,https://github.com/pbazeliuk/V8Commit и мой частично выложен для разбора, только с блек-джеком и плагинами. Какая разница на чем написан unpack, если его можно развернуть как веб-сервис.
(20) artbear, уверен моя версия кардинально отличается 🙂
(30) so-quest, именно эту «ощупь» и делал Валерий Агеев
(34) Эту ощупь делал каждый кто ковырял унпак. И результатов — никто не выложил. Ну а то что есть — либо мало, либо неполно, либо не работет
(35) so-quest, некоторые результаты есть в V8Reader. Но детальный разбор никто не выложит с версионированием по платформам потому, что на этом можно неплохо заработать.
(32) pbazeliuk, интересно.
Поразбираюсь с проектом попозже.
(36) Хоть одну бизнес-идею идею использования внутреннего формата cf|epf назови? что бы на ней можно было неплохо заработать
(38) so-quest, вот когда моя команда выпустит релиз готового продукта назову. А так идеи много стоят.
Подождем. Если будет успешно — дождемся и открытой реализации 🙂
(31) Вышла 8.3.8:
И по теме Yet Another Unpack:
(41) Mr.Rm, НУ наконец то, все на переделку своих унпаков!!!
(41) Mr.Rm, к анпакам это не относится.
А вот утилиты для чтения 1CD придется обновить.
Жаль нельзя сделать загрузку файла бесплатно.
V8Formats на http://www.develplatform.ru
Чтобы не тратить стартмани можете скачать последнюю версию консольной утилиты отсюда:
А сделать распаковку EFD в планах нет?
(45) biformatus, имеет ли это смысл и какой?
Нужно для распаковки обновлений конфигураций в автоматическом режиме (нужна консольная утилита). Ну собственно смысл получить распакованные обновление CFU, сгенерить CF. и т.д.
(47) biformatus, ок.
Запишу на будущее посмотреть этот вопрос.
(7) Вот еще на Go:https://github.com/tsukanov-as/cf
🙂
(49) + =)