Python V8Unpack

16.11.15

Разработка - Инструментарий разработчика

В ряду анпакеров пополнение! Теперь и на Python.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
V8Unpack + src
.zip 3,90Mb
24
24 Скачать (1 SM) Купить за 1 850 руб.

Судя по количеству публикаций c реализацией алгоритма распаковки/запаковки контейнеров 1С их не писал только ленивый. Уже существуют решения на C++, Java, C#, Lua и много что еще. А теперь будет и на Python.

На самом делее реализация распаковщика не была основной целью. Но в рамках развития модуля onec_dtools, о котором я писал в своей прошлой публикации, была добавлена поддержка работы с контейнерами 1С. Так что я решил собрать небольшое консольное приложение, для демонстрации этих возможностей.

В приложенном к публикации файле есть как исходники, так и упакованный exe для тех, кому лениво ставить Python.

Само консольное приложение имеет 2 режима:

1. Распаковка контейнера (parse) в указанный каталог. При этом вложенные контейнеры разархивируются и рекурсивно распаковываются.

py8unpack.exe -P in_filename out_dir_name

2. Упаковка каталога (build) в контейнер. Операция, полностью обратная предыдущей.

py8unpack.exe -B in_dir_name out_filename

V8Unpack python cf epf ert

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    169274    937    403    

905

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12599    99    42    

101

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    26529    90    48    

134

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    16825    41    15    

75

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

4800 3840 руб.

14.01.2013    190550    1150    0    

918

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

15000 руб.

10.11.2023    11392    40    27    

66

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    775    2    0    

4

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    103926    244    100    

306
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Infactum 318 16.11.15 06:06 Сейчас в теме
К слову, буду очень признателен, если кто-то поможет подобрать параметры zlib (или указать другую ошибку), которые позволят добиться полного совпадения исходного контейнера и результата упаковки. Сейчас они могут немного отличаться, хотя и успешно работали во всех проведенных мной тестах.
2. Evil Beaver 8261 16.11.15 09:44 Сейчас в теме
Вопрос "Нафига еще один unpack?" я задаю в каждом подобном топике. Наверное, не стоит нарушать традиций...

Нафига нам еще один unpack? Я не то чтоб хочу сказать, что он не нужен... Но в статье ни слова не сказано, про "зачем". Можно догадываться, а можно в статье рассказать подробнее - всем будет интересно.
3. Infactum 318 16.11.15 09:59 Сейчас в теме
(2) Evil Beaver,
Да нет какой-то особой цели. Вот вы, на сколько я знаю, чисто из академического интереса и не большой практической потребности, написали 1Script.
Я из тех же соображений делаю модуль для работы с данными 1С на Python. Начал с разбора 1CD, теперь добавил работу с контейнерами. У меня просто есть определенная идея (уже исключительно для моих личных целей), как я потом буду все это использовать. А библиотекой делюсь с сообществом абсолютно безвозмездно.
В перспективе, если сумею разобраться, хочу добавить в библиотеку возможность декомпиляции модулей, декомпиляции данных полей паролей (это просто и уже готово, просто в репозиторий пока не залил).
Что касается отдельно анпака: мне в существующем эталонном решении (V8Unpack на C++) не нравится то, что он во все проекты включен в качестве бинарника. В итоге тот же precommit1C представляет мешанину и Python, OS, C++ и по факту не является кроссплатформенным. Можно конечно взять бинарник под *nix, но мне больше симпатизирует вариант полной реализации на распространенном скриптовом языке. Python тут, имхо, лучший вариант. В общем я планирую, хотя бы чисто для себя, сделать форк precommit1C на чистом Python. Не разделяю я общего фанатизма сообщества, по переписыванию всего на OS.
zarucheisky; kote; +2 Ответить
4. Evil Beaver 8261 16.11.15 10:13 Сейчас в теме
(3) ну я-то как раз Вас правильно понял, и рад, что в Вашем комментарии, получил подтверждение того, что вы не просто повторяете уже существующие инструменты, но и имеете какую-то четкую прикладную цель. Это прекрасно. Просто в статье этого не прозвучало совсем никак. Итого, мы, как сообщество - что можем понять об этой (вполне замечательной) разработке? Ну еще один unpack... На этот раз на Питоне... Ну ладно... И дело заглохло...

Слишком мало информации сообщили, вот что удручает. Это, как бы, совет на будущее )

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

Фанатизм (неправильное слово, скорее энтузиазм) мне лично понятен. Не надо учить язык, чтобы развивать инструмент, если его хочется чуть-чуть доработать. Оно ведь как получается - кто-то сделал классную штуку на powershell, кто-то на Python, кто-то на Lua, кто-то на BAT. Я хочу, все это использовать, но чтобы все это объединить и развить, мне сколько экосистем нужно выучить? А тут - всего одна, да еще и знакомая в значительной мере.
А вот кстати, почему вы скептически к этому энтузиазму относитесь? (я не из вредности спрашиваю, надеюсь понимаете;), а в поисках конструктива для улучшений)
6. Infactum 318 16.11.15 11:11 Сейчас в теме
(4) Evil Beaver, касательно энтузиазма - я просто не вижу существенных плюсов OS перед тем же Python. Последний является одним из самых простых языков для изучения (даже детей сейчас зачастую обучают ему, как первому языку программирования) и вместе с тем одним из самых распространенных на различных платформах и не менее гибким. На мой взгляд для того, чтобы изучить питон на уровне, позволяющем писать программы, аналогичные возможностям OS нормальному программисту хватит рабочего дня.
В общем холивар разводить не хотелось бы. Скажу лишь, что многообразие экосистем сейчас встречается почти в любом серьезном проекте, и я обычно, не считаю его проблемой. Серьезный специалист (в том числе 1Сник) в любом случае в своем арсенале должен иметь хотя бы понимание основных языков. Понимание, это конечно не навык профессиональной разработки - это уровень, при котором можно внести минимальные правки. Под основными языками я (исключительно для себя) подразумеваю: JS (как основной язык веба), Java (C#) как стандарт Enterprise разработки, Python (для скриптов) и в идеале C++ (низкоуровневый софт).
(5) baton_pk, скорость работы как минимум сопоставима. Я правда на это упор не делал. Изначально хотел добиться низкого потребления памяти, чтобы ничего не падало на больших контейнерах. С запаковкой вроде бы все удачно, а вот на распаковкой еще стоит по работать.
Кстати сравнение скорости работы всех существующих решений очень не плохая идея для статьи..
7. minimajack 80 16.11.15 11:26 Сейчас в теме
(6)
если выбирать скорость-память я буду выбирать скорость. Требования - что бы не падало - само собой.
9. Infactum 318 16.11.15 11:33 Сейчас в теме
(7) minimajack, тут я с вами солидарен.
Я кстати смотрел вашу разработку и помню там была issue, что запакованные конфигурации медленно сравниваются конфигуратором. Удалось ли решить?
У меня после беглого взгляда на существующие решения сложилось мнение, что большинство из авторов пренебрегли некоторыми тонкостями: к примеру оглавление в стандартных контейнерах обычно разбито на несколько блоков: первый в начале контейнера длинной 512 байт и остальные в конце такими же блоками. Многие просто писали его целиком в самом начале. Аналогичная ситуация с размером блока по умолчанию. Платформа такие контейнеры обработает в любом случае, но влияет ли это на быстродействие самой платформы я не изучал.
11. minimajack 80 16.11.15 11:46 Сейчас в теме
(9) нет решить не удалось...Этот ньюанс необходимо проверять.
зы я подозреваю что тут важен порядок файлов в системе: рут, версии - вначале например...
8. Evil Beaver 8261 16.11.15 11:29 Сейчас в теме
(6) я и не спорю с фактом необходимости знать несколько языков. И разнородность решений (когда есть компоненты, сделанные в разных языках/экосистемах) это тоже не зло. Но вы же не будете отрицать, что они сложнее и требуют специалистов более высокой квалификации? Это иногда невыгодно, вот и все. Не поймите неправильно, я совсем не призываю всех писать все на oscript. Каждый решает сам. Просто 1С-никам (мне, например) на oscript писать тупо проще, поскольку не надо учить Питон (хоть он и очень замечательный, никаких вопросов)

даже детей сейчас зачастую обучают ему, как первому языку программирования


А вот здесь я солидарен со Спольски. Учить программированию на простых языках - это плохо. Сначала что-то вроде Бэйсика для понимания концепций "переменная/условие/цикл", а потом C/C++. Тогда на выходе получится более качественный программист. Правда, Спольски говорил про обучение в ВУЗах, а не про детей, но идея понятна, в любом случае.
10. Infactum 318 16.11.15 11:39 Сейчас в теме
(8) Evil Beaver, все верно. Для основных понятий Python и выбирают. Я как бы тоже считаю, что для дальнейшего качественного обучения нужно давать язык с явной типизацией и управлением памятью, чтобы потом поведение других языков не казалось "магией". Хотя может быть все дело в том, что нас так учили :)
12. Evil Beaver 8261 16.11.15 11:49 Сейчас в теме
(10)
Хотя может быть все дело в том, что нас так учили :)


Все придет к тому, что через двадцать лет программеры забудут что такое языки/компиляторы, которые дают нативный машинный код, будут программить для ОС, которая работает под silverlight, который работает в браузере, который написан на .NET, и запущено все это будет в какой-нибудь windows 7, а она в свою очередь будет работать в VmWare под линуксом. Среди программеров будут ходить слухи, что кто-то знает как программить не только под .NET, но и под windows и linux.

http://bash.im/quote/402319
Gruuush; shootnik; awa; +3 Ответить
5. dmpas 418 16.11.15 10:15 Сейчас в теме
Добро пожаловать в наш клуб!

Кстати, не сравнивали скорость работы?
kote; minimajack; Evil Beaver; +3 Ответить
13. Infactum 318 27.12.15 19:11 Сейчас в теме
Тем кому ранее эта тема была интересна, рекомендую заглянуть на гитхаб страницу проекта: https://github.com/Infactum/onec_dtools
А так же в оригинальную тему http://infostart.ru/public/412475/. Возможно найдутся желающие помочь мне с реализацией пары фич, чтобы довести проект до полностью завершенного состояния.
14. bugagashenka 203 21.03.19 07:01 Сейчас в теме
Можно ли как то провернуть следующую штуку:
После распаковки отчета/обработки на диск есть файл, например, с макетом, который начинается с заголовка файла и дальше xml.
Если изменить что -нибудь, обратно отчет собирается некорректно, вываливаясь с ошибкой при открытии в 1С.
Так вот соль в том, чтобы пересчитывать заголовок, у меня не хватает знаний. Может направите в правильную сторону?
Оставьте свое сообщение