Я участвую в разработке кроссплатформенного инструмента для работы с файлами 1С:Предприятие 8.x.
Инструмент для работы с файлами 1CD за авторством Валерия Агеева с адаптацией от сообщества.
На данный момент описание форматов 1С:Предприятие 8.x известны и описаны в том числе на infostart.ru
- //infostart.ru/public/19734/ - Краткое описание формата файлов *.1CD (файловых баз 1Сv8)
- //infostart.ru/public/187832/ - Файловые базы *.1CD. Физическая структура. Восстановление.
- //infostart.ru/public/536343/ - Формат баз 1CD - классические и 8.3.8
В процессе анализа кода проекта tool1cd меня не покидало ощущение, что я не до конца понимаю, как устроен этот самый файл, чтобы разобраться я решил попробовать написать свой распаковщик.
Для реализации я выбрал молодой язык программирования Rust.
Rust — язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.
Более подробно о особенностях языка можно почитать
- Rust (язык программирования)
- The Rust Programming Language
У языка есть свой менеджер пакетов, который называется cargo, одновременно он же и занимается сборкой.
Так же есть реестр пакетов(crate) https://crates.io/.
Для своей разработки за основу я взял проект, который развивает Сергей Батанов - dmpas/v8unpack
Результат моей работы представлен здесь andreevlex/v8unpack-rs
Проект разделен на 2 части (библиотека и консольный проект).
На данный момент
Библиотека
Представляет основные объекты для работы с форматами 1С:Предприятие 8.x.
Пакет опубликован в реестре https://crates.io/crates/v8unpack4rs
Консольный проект
Конкретное применение библиотеки.
Пакет опубликован в реестре https://crates.io/crates/v8unpack
История версий:
Версия 2.1
- поддержка сборки файла контейнера из каталога;
- поддержка сборки файла контейнера из двоичных файлов.
Версия 2.0
- параллельная распаковка файлов контейнеров;
Версия 1.0
- распаковка файлов контейнера