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    171853    962    403    

924

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

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

8400 руб.

20.08.2024    14351    109    46    

108

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

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

22200 руб.

06.10.2023    17307    43    15    

75

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

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

9360 руб.

17.05.2024    27298    96    48    

138

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

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

15000 руб.

10.11.2023    11911    45    27    

67

SALE! %

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

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

4800 3840 руб.

14.01.2013    191266    1152    0    

920

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18097    7    32    

42

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

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

3600 руб.

27.12.2024    1128    2    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Infactum 318 16.11.15 06:06 Сейчас в теме
К слову, буду очень признателен, если кто-то поможет подобрать параметры zlib (или указать другую ошибку), которые позволят добиться полного совпадения исходного контейнера и результата упаковки. Сейчас они могут немного отличаться, хотя и успешно работали во всех проведенных мной тестах.
2. Evil Beaver 8263 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 8263 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 8263 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 8263 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С.
Так вот соль в том, чтобы пересчитывать заголовок, у меня не хватает знаний. Может направите в правильную сторону?
Оставьте свое сообщение