Скрипт выгрузки хранилища в GIT на Python

04.04.19

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

Скрипт для выгрузки хранилища 1С в GIT для платформ 8.1, 8.2(не тестировалось), 8.3

Скачать файл

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

Наименование По подписке [?] Купить один файл
cfg_tools-master.zip
.zip 25,99Kb
7
7 Скачать (1 SM) Купить за 1 850 руб.

Решили мы как-то подружить 1С (и себя) с GIT. Основной задачей этой дружбы является анализ истории объектов, быстро найти, "откуда ноги растут" той или иной строчки кода. Есть желание попробовать Git-flow в контексте 1С. Но, на данном этапе, нужно было перегрузить модули различных конфигураций 1С с комментариями из хранилища в GIT.

На данный момент есть несколько разработок, позволяющих это сделать 

  • Gitter от rtmn, - конфигурация для автоматизации процесса выгрузки изменений из хранилища 1С в систему версионирования Git.
  • gitsync на OneScript от Evil Beaver - представляет собой отдельное (standalone) приложение на 1Script, и предназначено для синхронизации хранилища конфигураций 1С с репозитарием git.
Алгоритмы работы у них схожи  - извлечь версию конфигурации, загрузить в базу, выгрузить в файлы используя платформу. За счет использования платформы тратится много времени.
 

Мы выбрали gitsync, это было субъективное решение, желание поработать с OneScript, более легкое и гибкое решение.

Сначала тестирование проводилось на небольших хранилищах 8.3, все отлично отработало и работает сейчас.

Следующим шагом была выгрузка хранилище на 8.1. Немного подправив скрипты, запустили процесс выгрузки. По примерным расчетам, для переноса данных хранилища в git, потребовалось бы чуть меньше месяца (проекту 8 лет, большая конфигурация, много версий, на 1 commit требовалось около 8 минут). Смирились с производительностью и решили подождать месяц. Но стали возникатоь ошибкой 1с конфигуратора. Не долго разбираясь, решили попробовать написать свой велосипед. Были наработки на C# и python по чтению 1CD и разбору контейнеров(cf)

 

 

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

 

Спасибо

 

 

Плюсы:

  • скорость - 1 commit ~ 0,7 сек, выгрузка всей истории хранилища(4600 версий) заняла примерно 1 час, без выполнения git -commit 22 сек.
  • эстетическая - нет дополнительных окон (конфигуратор, tool_1cd, cmd)

Минусы:

  • "обратно не засунешь" - нет возможности собрать из выгрузки cf или загрузить в базу (но у нас не было такой задачи), 
  • трудно читаемое описание объектов - объекты выгружаются как есть (в скобочном формате "{"), а не в XML (опять же, задача была быстро выгрузить код)

 

Итог: данное решение подходит, если хранилище на 8.1/8.2, если основной целью выгрузки является код.

8.3 умеет выгружать конфигурацию в XML, тут лучше подойдет gitsync на OneScript.

 

Исходники выложены на GitHub и на своем Git-сервере, кто хочет помочь, присоединяйтесь.

 

Требования:

Сценарий использования:

  1. Создаем файл настроек
    [LOG]
    level = ERROR
    file = %%Y-%%m-%%d.log
    [BASE]
    store = Путь к файлу хранилища
    local_repo = Путь к локальному каталогу репозитория
    remote_repo = URL удаленного репозитория
  2. Запускаем для создания репозитория и служебных файлов.
    python rup.py init <файл настроек>
  3. Настраиваем соответствие пользователей и пользователей GIT в файле <Каталог локального репозитория>\authors.cs
  4. Запускаем для выгрузки истории
    python rup.py export <файл настроек>

Актуальная версия и подробный мануал тут и на GitHub 

GIT python Хранилище конфигураций

См. также

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

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

12000 руб.

02.09.2020    170257    940    403    

907

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

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

8400 руб.

20.08.2024    13248    100    46    

104

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

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

9360 руб.

17.05.2024    26828    90    48    

134

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

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

22200 руб.

06.10.2023    16974    41    15    

75

SALE! %

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

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

4800 3840 руб.

14.01.2013    190769    1151    0    

918

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

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

15000 руб.

10.11.2023    11504    40    27    

66

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

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

3600 руб.

27.12.2024    954    2    0    

5

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

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

5000 руб.

07.02.2018    104013    244    100    

306
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1565 26.01.16 16:53 Сейчас в теме
Еще один в клуб разборщиков конфы на исходники :)

Исходники выложены, кто хочет помочь, присоединяйтесь.

Ссылка на исходники не работает.
7. team bios 30 26.01.16 17:36 Сейчас в теме
(1) artbear, ссылку поправили, спасибо! И спасибо за интерес!;)
2. artbear 1565 26.01.16 17:03 Сейчас в теме
3. artbear 1565 26.01.16 17:03 Сейчас в теме
Добавьте лицензию к проекту
4. Infactum 318 26.01.16 17:17 Сейчас в теме
В целом проект радует. После беглого взгляда рекомендовал бы следующее:
- Убрать велосипед git_mng.py. Вместо него есть такая великолепная вещь, как GitPython.
- Заимствуя чужой код не нарушать лицензию :) Намекаю на мой проект. Что мешало просто включить его в качестве зависимости?
- После реализации предыдущих пунктов сделать нормальный setup.py и залить все в pip.
artbear; Evil Beaver; +2 Ответить
5. team bios 30 26.01.16 17:27 Сейчас в теме
(4) Infactum, GitPython - чтот не взлетел по-быстрому, так что пришлось сделать костыль, а так да, в дальнейшем планируется работа с гитом через него.
по проекту вашему, из него была взята идея и небольшая часть кода, мы боролись за скорость и наше решение выигрывало.
6. Infactum 318 26.01.16 17:30 Сейчас в теме
(5) заимствование части кода как бы не отменяет требований лицензии :)
А если отложить занудство в сторону, то был бы рад получить более подробное описание относительно того, какие проблемы скорости работы вы встретили и как они были решены. В идеале можно и pull request, но настаивать конечно не могу.
8. team bios 30 26.01.16 17:38 Сейчас в теме
(6) Infactum, хорошо, будем внимательнее:) Чуть позже отпишем по подробностям. Спасибо!
9. team bios 30 26.01.16 17:41 Сейчас в теме
(6) Infactum, по лицензии и возможности pull request позже. мы только после последнего ивента занялись вопросом git и open source:)
23. team bios 30 27.01.16 14:25 Сейчас в теме
(6) Infactum, про проблемы сложно сказать, т.к. проект был написан с нуля с использованием части Вашего кода(разбор описания таблиц и преобразование типов + некоторые идеи) за это вам большое спасибо, уже исправились в части лицензировния:)). В чистом виде Ваше решение у нас не взлетело, решили писать свой велосипед (уже поняли, что это не популярное мероприятие в местных кругах, но интересно же:)). Можно только по итогу сказать - разница в быстродействии - примерно в 2 раза (база ~ 3гб; onec_tools: 06:28.567312; cfg_tools: 03:49.299595). Если есть желание можем попробовать объеденить наши проекты. но это надо обсуждать отдельно.
25. Infactum 318 27.01.16 16:16 Сейчас в теме
(23) опубликуйте код теста, которым вы производительность сравниваете, пожалуйста (например на GIST). Как будет время я обязательно посмотрю, что там с быстродействием.
26. team bios 30 27.01.16 16:26 Сейчас в теме
(25) Infactum, текст кода, была идея сначала, что дело в BLOB, но увы они мало влияют. А так, профйлер покажет что надо улучшать.
29. KAV2 157 14.08.16 07:41 Сейчас в теме
(6) Infactum, А равзе MIT лицензия не предусматривает что проект является общественным достоянием и код можно использовать по своем усмотрению, в том числе использовать код в своих проектах?
30. Infactum 318 14.08.16 10:20 Сейчас в теме
(29) alexkmbk, можно.
У лицензии MIT всего лишь одно условие:
Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.
22. team bios 30 27.01.16 14:00 Сейчас в теме
(4) Infactum, Добавили лицензию и включили в нее Вас
10. Evil Beaver 8261 26.01.16 18:10 Сейчас в теме
Быструю многопоточную разбиралку CF на базе unpackv8 (С++) делал Сергей Батанов (http://infostart.ru/profile/45491/). Оно как бы хорошо, что вы все наши наработки знаете и пробовали, а все ж теперь есть "еще одна", а не развитие существующих.
12. Infactum 318 26.01.16 18:25 Сейчас в теме
(10) Evil Beaver, Ссылка куда-то не туда ведет.
В защиту Python (да и любой скриптовой реализации разбора) скажу, что не смотря на всю быстроту C++ необходимость самостоятельно сборки или наличия готовых бинарников под все системы несколько напрягает. Python например работает везде куда только не посмотри, и в большинстве случаев стоит "по дефолту". Кстати никто так и не решился сделать адекватное сравнение скорости работы распаковки/запаковки на Python и C++. В моем субъективном тесте Python версия как минимум работает так же по скорости.

(11) Evil Beaver, плюсую. НУ разве что кроме последнего пункта :)
А если надумают выйти на совсем взрослый уровень, то крайне желательно наличие тестов и какого-нибудь CI. Тот же Travis например практически идеальный вариант для гитхаба.
team bios; +1 Ответить
14. Evil Beaver 8261 26.01.16 19:24 Сейчас в теме
(12) Infactum, т.е. с предпоследним пунктом все-таки согласен?
16. team bios 30 26.01.16 20:38 Сейчас в теме
(10) Evil Beaver, Мы не нашли "наработок"(кроме Tool_1cd, но у него нет исходников в свободном доступе) на основании которых можно было бы сделать быструю выгрузку. Используя несколько инструментов(tool_1cd и unpuck, например) мы бы тратили лишнее время на сборку cf а потом разборку, когда, например, в коммите был 1 файл.
11. Evil Beaver 8261 26.01.16 18:18 Сейчас в теме
А, ну и чего не на гитхабе-то?

Предложение-дополнение Infactum:

1. Делаете пакет "разбиралки" файлов guid.0 из CF на файлы Справочник.ЧтоТоТам.Форма
2. Оформляете как самостоятельный пакет в pip
3. Делаете пакет вот этого вот синхронизатора
4. Подключаете существующий "читатель" 1CD, как зависимость
5. Опять же создаете пакет в pip
6. Переписываете все это на 1Скрипт :)
8. Выкладываете на гитхаб.
15. awa 2612 26.01.16 20:32 Сейчас в теме
(11)(14) Предпоследний пункт - это пункт 7 ведь?
19. Evil Beaver 8261 27.01.16 10:51 Сейчас в теме
(15) awa, нет, предпоследний - это пункт 6. Просто он две единицы занимает ))
17. team bios 30 26.01.16 20:40 Сейчас в теме
(11) Evil Beaver, У нас была одна задача на этом этапе - быстро перекинуть код. В будущем постараемся развить, спасибо за советы! А разработку оставим на питоне, потому как нравится:). А не на гитхабе, потому что после ивента решили познакомиться с гитом, "покурили" тему и выбрали гитлаб, потому что его можно бесплатно развернуть у себя (у нас есть закрытые проекты, такой режим на гитхабе платный). Вот и расшарили этот проект на своем сервере. Создаем учетку на гитхабе, опубликуем там проект. Спасибо!
theshadowco; +1 Ответить
18. Evil Beaver 8261 27.01.16 09:54 Сейчас в теме
(17) судя по недавним тикетам на gitsync и данной статье, вы с theshadowco - коллеги?

То, что в статье предложено, мне нравится. Я же не с критикой выступаю, а с предложениями. Ну и вообще, я сторонник подхода share the knowledge. Отсюда и желание видеть это в опенсорсе, на сервере, который не будет сегодня-завтра отключен владельцем. Это раз. И хочется видеть это в виде продукта, готового к повторному использованию, с соответствующей документацией и лицензией - это два.
21. team bios 30 27.01.16 12:53 Сейчас в теме
(18) Evil Beaver, нет, не коллеги и не знакомы)
Очень рады предложениям и с радостью их воспринимаем, спасибо! Про гитхаб все поняли, зарегились, опубликовали там проект https://github.com/TeamBIOS/cfg_tools ((3) artbear, лицензию добавили).
Про готовый продукт обсуждали между собой, чтобы все по-человечески доделать и опубликовать, но решили сделать это сейчас и после доработки обновить (для этого и приписали beta). В общем, оно и хорошо получилось, учтем все предложения при развитии проекта.
24. artbear 1565 27.01.16 15:38 Сейчас в теме
(21) Первый форк у меня :)
Лицензию увидел
team bios; +1 Ответить
13. artbear 1565 26.01.16 19:07 Сейчас в теме
Я на всякий случай сделал 2 origin-а, один из них ведет на исходный сайт автора, другой на гитхаб https://github.com/artbear/cfg_tools_python
(0) Как только определитесь с лицензией, поправлю репо на гитхабе.
20. pumbaE 27.01.16 11:20 Сейчас в теме
Добавили бы еще в gitsync частичную выгрузку только изменных модулей - цены б не было. Т.е. если в версии поменялся только модуль или толстая форма, тогда только их выгружаем по правильному пути, а в случаи изменения объектов или упр.форм тогда выгружаем все полностью всю конфигурацию.
JohnyDeath; +1 Ответить
27. Stas26 25.07.16 13:09 Сейчас в теме
Разместил хранилище с помощью гит хранилище на сайте bitbucket.org. Загрузка идет прекрассно. Можно ли каким-то образом сделать загрузку обратно в к конфигурацию 1С (хранилище), но не всю целиком (git clone ...), а выборочно? То есть, на сайте bitbucket.org хранится информация в коммитах. Допустим коммит 1 - Справочник Номенклатура, коммит 2 Справочник - Организация, коммит 3 - Справочник контрагенты. Мне нужно загрузить в конфигурацию 2 (хранилище 2) из этих 3 коммитов только 1, коммит 2, а остальные не загружать, так как например имеются там какие-нибудь ошибки. Можно это сделать? Если да, то как?
28. team bios 30 25.07.16 13:25 Сейчас в теме
(27) Stas26, На данный момент (в нашем инструменте) нет такой возможности.

Можно посмотреть в строну Tool_1cd, умеет ли он, если да то, можно выгрузить средствами гита нужные коммиты, привести имена файлов к нужному виду(для Tool_1cd) и скормить из ему. А может Tool_1cd уже имеет необходимый функционал.
31. Neco 133 18.12.17 14:06 Сейчас в теме
В файле store_reader.py в строке 126 ошибка
Сейчас
if not self.format_83:

должно быть
if self.format_83:
32. team bios 30 09.02.18 11:35 Сейчас в теме
Оставьте свое сообщение