Github и 1С. Пошаговая инструкция на конкретном примере
















Статья для тех, у кого есть неудержимое желание программировать и хочется доработать какую-то конфигурацию (или проект на 1С), выложенный на Github, но останавливают незнакомые слова Git, Github, Fork, Commit, Pull request, Merge, Issue.

Всем привет. 

Статья для тех, у кого есть неудержимое желание программировать и хочется доработать какую-то конфигурацию (или проект на 1с), выложенный на Github, но останавливают незнакомые слова Git, Github, Fork, Commit, Pull request, Merge, Issue. 

В статье рассмотрен пример как доработать конфигурацию 1С, выложенную на github.

Статья не претендует на полноту сведений, в ней будет рассказан один из сценариев работы.

Да, об этом уже много раз и в разных местах рассказывали и показывали, и были вебинары и прочее, но все-таки мне захотелось расписать один из сценариев работы.

Будем рассматривать конкретный пример. 

Итак, нам дано:

Репозиторийhttps://github.com/BlizD/Tasks (Управление задачами: Канбан доска)

Задача: Добавить кнопку в документ Выпуск релиза, которая загружает данные из хранилища и обновляет данные в документе (https://github.com/BlizD/Tasks/issues/65)

Набираемся сил и поехали.

 

Установка программ и регистрация

  1. Устанавливаем платформу 1С, в этом репозитории требуется версия 8.3.9.1850 – версия платформы очень важна, т.к. она влияет на выгрузку/загрузку конфигурации в файлы. Периодически фирма 1С изменяет формат выгрузки и загрузки.
  2. Скачиваем и устанавливаем SourceTree — программа нужна для отправки изменений(коммитов) в Git (или любую другую, но в примере будет рассказываться именно SourceTree);
    1. Ссылка для скачивания https://www.sourcetreeapp.com
    2. При установке SourceTree если будут проблемы с авторизацией, тогда авторизируйтесь с помощью Google. И установка продолжится.
  3. Регистрируемся на https://github.com
    1. Для этого примера создал специального пользователя ForInfostart

  1. Скачиваем и устанавливаем GIT
    1. Заходим на официальный сайт Git и скачиваем последнюю версию git для windows. Официальный сайт Git http://git-scm.com/
    2. При установке используем Далее – Далее
    3. Пошаговая инструкция как установить GIT от rtnm https://bitbucket.org/rtnm/gittertutorial — необходимо смотреть раздел Установка Git

 

Подготовка среды для разработки

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

В общем, создаем папку на диске D:RepTasks

Теперь нам надо загрузить в эту папку нужный нам репозиторий. 

Для этого заходим в браузер, открываем ссылку https://github.com/BlizD/Tasks.

Далее ставим звезду 

Ладно, ладно шучу, пункт со звездой вообще не обязателен =)

По правде, нам нужна кнопка Fork, жмем на нее

Теперь копия репозитория Tasks переехала к нашему пользователю ForInfostart

Далее нам надо загрузить наш репозиторий в созданную нами папку на диске D:RepTasks

Заходим по ссылке https://github.com/ForInfostart/Tasks и жмем кнопку «Clone or download» копируем путь «https://github.com/ForInfostart/Tasks.git»

 

Запускаем SourseTree, жмем добавить (+).

 

Заполняем скопированную ссылку, путь к нашей папке и жмем кнопку «Клонировать»

Давайте проверим, появились ли файлы проекта в нашей папке. Откроем папку D:RepTasks

Сменим ветку Master, на ветку Develope в программе SourceTree, для этого жмем двойным кликом «Внешние ветки – Origin – Develope» в открывшемся окне жмем ОК.

Теперь необходимо создать пустую базу 1с. Далее заходим в конфигуратор и жмем Конфигурация – Загрузить конфигурацию из файлов и выбираем папку D:RepTaskssrccf жмем кнопку «Выполнить»:

После загрузки, откроется окно с предупреждениями, пока просто игнорируем и просто жмем принять.

Если кто знает, как победить это окно с предупреждениями, скажите, пожалуйста =).

Далее жмем обновить конфигурацию ИБ.

Фуууххх вот только теперь можно кодировать в 1С как обычно =)

Если кто уже устал к этому моменту, предлагаю сделать перекур и пойти подышать и чайку попить. 

Отдохнули, поехали дальше
 

Как залить наш код в наш форк(Fork)

Кодируем нашу задачу, проверяем ее, радуемся полученному результату.  

Теперь пора залить наши изменения в наш форк.

Для этого в конфигураторе жмем кнопку «Конфигурация – Выгрузить конфигурацию в файлы» указываем путь D:RepTaskssrccf.

Теперь нам надо сделать коммит в git, для этого открываем программу SourceTree.

И что мы видим тут, оказывается git узнал, какие файлы были изменены, и показал расхождения.

Но прим этом расхождений намного больше, чем мы изменяли, это связано с особенностями платформы 1С (вариант обхода ниже). 

Выделяем все файлы – жмем кнопку «Индексировать»

Указываем комментарий: #НомерЗадачи + название задачи, т.е. 

#65 Добавить кнопку в документ Выпуск релиза, которая загружает данные из хранилища и обновляет данные в документе

Ставим галку «Сразу отправлять изменения в Origin/develop и жмем кнопку «Закоммитить»

Чтобы лишних расхождений не показывало, рекомендуется сделать прочистку «чакр», то есть сразу после того как загрузили изменения из файлов, сразу же выгрузить изменения в файлы и отправить их в ваш форк, а потом уже начинать кодировать задачу. Если бы такую прочистку сразу сделали, то показывались только вот эти изменения:

 

 

Как отправить наши изменения (из нашего форка) в основной проект (создание Pull Request)

Необходимо отправить Pull request (Запрос на добавление). Для этого заходим на сайт https://github.com/ForInfostart/Tasks жмем на закладку «Pull request». Теперь на кнопку "New pull request"   

Указываем ветку приемник «Features», а ветка источник «Develope» (ветка с нашего форка). 

 

Жмем Create pull request. 

Все, теперь остается ждать, когда владелец, того репозитория, примет Ваш пул реквест.

Как только он примет, то код будет влит в основную ветку проекта.

Поздравляю, теперь Вы, стали участником OpenSource сообщества=).

Если все равно остались вопросы или что то пошло не так в процессе, тогда можно смело, не боясь, писать в чат https://gitter.im/Tasks_/Lobby (или сюда https://gitter.im/EvilBeaver/oscript-library) там попробуем все разрулить.

Некоторый список 1С проектов, которые выложены на Github:

 

Ссылки на замечательные статьи про Git:

 

Спасибо, что Вы дочитали до этого места.

48 Comments

  1. avk72
    Если кто знает, как победить это окно с предупреждениями, скажите, пожалуйста =)

    При выгрузке в файлы не выгружаются объекты со слишком длинным идентификатором (более 80 символов). Может быть в этом дело?

    Reply
  2. Armando

    Я думал тут сейчас про EDT будет

    Reply
  3. Xershi

    Никогда гитом не пользовался плюсую! Если понадобится воспользоваться вернусь к вашей статье! Хранилище намного удобнее! Но это конечно не опенсурс, но удобнее!!

    Reply
  4. IvanovAV

    Начало статьи заманчивое, но тема начала статьи не раскрыта. Зачем мне все это нужно ? И непонятные слова, так и не расшифровали. И при чем тут кабан с доской?

    Reply
  5. Region102

    (3) Хранилище не позволяет организовать полноценную командную работу. И падения хранилища, как и баз 1С происходят гораздо чаще. В хранилище каждый сам себе хозяин.

    Reply
  6. BlizD

    (2)

    Нет про EDT тут не рассказывается, но можно почитать, что пишут и задать свои вопросы вот тут:https://gitter.im/artbear/EDT-ext

    Reply
  7. BlizD

    (3)

    Добрый день, Максим,

    спасибо, за отзыв.

    Reply
  8. BlizD

    (4)

    Добрый день, Алексей.

    Вы, правы, статья не раскроет все аспекты возможного взаимодействия Github и 1с.

    Основная цель статьи, это дать возможность взять инструкцию, и пропустить ее через свои руки.

    (4)

    Зачем мне все это нужно ?

    На этот вопрос не могу ответить. Каждый сам для себя решает, что ему нужно, а что нет.

    (4)

    И непонятные слова, так и не расшифровали.

    Так и есть, но дал возможность их «пощупать».

    Про Git можно почитать вот тут https://git-scm.com/book/ru/v1 (чуть позже добавлю это в статью).

    И при чем тут кабан с доской?

    Просто взят пример реальной задачи из этого репозитория.

    Reply
  9. BlizD

    Добавил в статью ссылки на замечательные статьи про Git:

    * https://infostart.ru/public/343317/ — Альтернативные системы контроля версий и их применение для хранения версий продуктов, разработанных на платформе 1С;

    * https://infostart.ru/public/310640/ — Git-flow В 1С (Система контроля версий);

    * https://infostart.ru/public/118207/ — Системы контроля версии и 1С;

    * https://infostart.ru/public/553119/— Использование git для доработки типовых конфигураций 1С.

    * https://git-scm.com/book/ru/v1 — книга про Git на русском;

    Reply
  10. cmd_vasec

    (3) Можно пользоваться и хранилищем и gitом ( В помощь (Gitter)).

    Reply
  11. anton448

    Очень полезная статья! Плюсую 🙂

    Reply
  12. artbear

    (10)Нафига наезжать на (3) ?

    Может быть, пора уже вылезти из своего домика и посмотреть вокруг ?

    Ограничение по захвату объекта — это технология 2000 года, централизованные системы управления версиями — СУВ (cvs, svn)

    мы их юзали еще в 77

    У подобных систем проблемы известны, и в результате решения этих проблем появились децентрализованные СУВ, яркий представитель которых git.

    Поработай в больших командах, увидишь, что работа в хранилище часто совершенно неудобна. Кто не попадал на захват корня челом, ушедшим с работы 🙂 ?

    Хранилище — это вещь в себе, слабо расширяется.

    А для гита очень много инструментов сделано, которые позволяют получать полезные фичи — связь с задачами из систем управлениям задачами/проектами, привязка тестов к конкретным изменениям от конкретного автора, авторство любой строки кода, понимание, какая строка кода связана с какой задачей и т.п. и т.д.

    Reply
  13. artbear

    (11) Правильно пользоваться и хранилищем, и гитом.

    Только в помощь юзайте https://github.com/oscript-library/gitsync

    Reply
  14. DenisCh

    подскажите, сколько времени ERP будет выгружаться в файлы, а потом обратно собираться?

    Reply
  15. Evil Beaver

    (4) Полезное:

    Привязка каждой строки кода к задаче в JIRA и автору в домене Windows.

    Каждую строку кода я знаю кто написал и по какой задаче. И это за секунды. В то время, как с помощью хранилища 1С историю строки я буду получать часами.

    Вы все еще комментируете старый код, чтобы было «для истории»? И как вам, нравятся портянки из зеленого тысячелетнего мусора, который всем страшно удалить?

    Тогда мы идем к вам!

    P.S. а еще вы, наверное, пишете в начале каждого изменения «Петров 2017-10-27 задача 8721 —>» а в конце «<—«. Ну и как, помогает? Авторские комментарии не устаревают и не врут, и у вас они всегда актуализированы? И можно увидеть, что было здесь ДО этого изменения? Конечно можно, рядом же закомментированный кусок того, что было, да?

    Reply
  16. pumbaE

    (16) Первый раз 20 минут, потом быстрее (до минуты) если коммандный режим используете.

    Reply
  17. Region102

    (10) Ну да, вы же эксперт, куда мне до вас. А теперь для «экспертов». Есть такой сервис в яндекс, wordstat называется, заходите туда и пишите «1с хранилище конфигурации повреждено», мне выдало 17 показов за месяц, то есть в течении месяца 17 уникальных человек искали решение данной проблемы. А так все красиво, ни одного падения за 3 года. У меня лично, за 17 лет работы с 1С, хранилище упало 1 раз, и потерялось 2 года изменений крупной отраслевой конфигурации. Но мы из разряда тех, кто уже делает бекапы. Так что удачи, а переходить на личности — это показатель вашего воспитания и компетенции.

    Reply
  18. cmd_vasec

    (15) Можно и так. Каждому свое.

    Reply
  19. cmd_vasec

    (12) Предлагаю написать статью о преимуществе хранилища перед гитом или напишите тут.

    Reply
  20. the1

    (18) На партнерском форуме разработчиками EDT была названа цифра 8 часов только на выгрузку

    Reply
  21. Xershi

    (22) т.к. я не пользуюсь гитом, то статью не имеет смысла писать. В чем для меня лично преимущество, уже я написал!

    Reply
  22. BlizD

    (1)

    Александр,

    возможно, но нужно пробовать и разбираться, пока это мне не мешает, не ищу.

    Reply
  23. pumbaE

    (23) в EDT да, а просто выгрузка в исходники 20-35 минут, это полная выгрузка.

    Reply
  24. Region102

    (20) У меня архивы то делались, я про то что хранилище «не падает».

    Reply
  25. Xershi

    (27) как я уже говорил, дайте мне случай который будет воспроизводиться! Если например на сервере нет резервного или жесткий диск полетит, тут никто не застрахован! Но пока мне ни одного аргумента не предоставили как можно положить хранилище и воспроизвести это на любом другом!

    А минусовать стали, циркачи))

    Reply
  26. the1

    (26) Разве там не одинаковый принцип? выгрузить конфигурацию в файлы

    Reply
  27. iliabvf

    Спасибо за статью, но почему бы не дать инструкцию по работе с обычным Git? Или локальным?

    Клиент это конечно хорошо, но поверхностные знания обычно как бумеранг всегда ударяют в затылок.

    Для тех, кто хочет понять суть GIT или создать свой репозиторий, короткая шпаргалка (да еще и на русском!):

    https://ru.stackoverflow.com/questions/431520

    Reply
  28. BlizD

    (30)

    Добрый день, спасибо за отзыв.

    Думаю в качестве изучения самого GIT, хорошо подойдет книга про гит.,

    * https://git-scm.com/book/ru/v1 — книга про Git на русском;

    Reply
  29. gradi

    Может кто-нибудь знает — при скачивании архива проекта с gitlab кириллические имена файлов «ломаются», т.е. символы заменяются на какой-то бред. Как с этим бороться?

    Reply
  30. BlizD

    (32)

    Добрый день, Константин.

    Ответа не знаю, но думаю Вам помогут вот тут: https://gitter.im/gitlab-russian/public

    Reply
  31. ADirks

    (32) наверное, потому что zip.

    не надо архив скачивать, надо говорить «git clone …»

    Reply
  32. ADirks

    (24) Не пользуетесь git’ом значит? А вас научат…

    Только бы не вышло, как с временными таблицами :))

    https://infostart.ru/journal/news/mir-1s/firma-1s-vypustila-instrument-dlya-vygruzki-khranilishcha-konfiguratsii-1s-v-repozitoriy-git_725293/

    Reply
  33. 7OH

    (10) Абсолютно согласен — тратить время на анализ (или не дай бог переработку) изменения объекта 2+ авторами — явно не плюс.



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

    Reply
  34. Xershi

    (36) в хранилище у меня старый кусок кода еще ни разу не попадал, а вот у коллег в локальной базе такое ловили, но об этом я уже раньше писал!

    Reply
  35. zarucheisky

    (9)

    https://git-scm.com/book/ru/v1 книга про Git на русском;

    Pro Git 2 издание на русском

    кому охота собирать — ruby-ями не выше 2.4

    Reply
  36. zarucheisky

    +(38) Собрал книжицу, вроде всё влезло.

    Reply
  37. sssss_aaaaa_2011

    (39)Стесняюсь спросить «А в epub’е нету?» 🙂

    Reply
  38. zarucheisky

    (40) вроде читабельно собралось

    Reply
  39. sssss_aaaaa_2011

    (41)Бальшой-бальшой спасиб! 🙂

    Reply
  40. artbear

    (42) Можно плюсиком поощрить (41) в дополнение к спасибо!

    Reply
  41. sssss_aaaaa_2011

    (41)К сожалению, обнаружились кое-какие огрехи. Но если огрехи в грамматике и орфографии больше относятся к переводчику, то вот кусок английского текста между вводным параграфом раздела Настройки Git и Заключением этого же раздела скорее всего ошибка сборки. На сайте этот кусок книги на русском.Для меня это не проблема и я благодарен и за то, что есть, но вот для кого-то это может стать большим обломом.

    Добавчик: в PDF такая же фигня.

    Опять забыл: в epub с оглавлением что-то не то. С него на любой раздел переход есть, а вот выйти на оглавление из любого места книги — нет. Хотя, может это моя читалка ерундит.

    Reply
  42. zarucheisky

    (40)

    (44)

    Да, собственно, потому epub и не собирался asciidoctor выдавал ошибку структуры с разделами.

    Сильно не стал заморачиваться, исходники на гитхабе, кому надо — может и сам потренироваться и собрать 🙂

    Reply
  43. sssss_aaaaa_2011

    (45)Да, собственно, там такая же лажа. 🙂 Так что это там надо править.

    Reply
  44. RainyAugust22

    В п. Clone выходит ошибка — Failed to connect to github.com port 443: Timed out.

    Настроил проксю в Git через ком. строку. Все равно никак.

    Возможно что-то пропустил в разделе «Установка Git».

    Генерация SSH-ключей

    Регистрация на Bitbucket и все пункты что ниже также необходимо выполнить?

    Reply
  45. BlizD

    (47)

    Добрый день, Михаил.

    Похоже, что то то с интернетом и установкой соединения.

    Генерация SSH-ключей

    Регистрация на Bitbucket и все пункты что ниже также необходимо выполнить?

    Генерацию SSH-ключей — не делал.

    Регистрацию на Bitbucket не надо делать.

    Гит можно установить через Далее — Далее.

    Еще можете задать вопрос вот тут https://gitter.im/EvilBeaver/oscript-library

    Они там быстрее и правильнее ответят.

    Reply
  46. ITerrible

    Подскажите, есть ли возможность из GIT репозитория обновить хранилище 1С?

    Reply
  47. BlizD

    (49)

    Подскажите, есть ли возможность из GIT репозитория обновить хранилище 1С?

    Добрый день, Иван.

    Если конфигурация на управляемых формах, то обновить из GIT хранилище в принципе можно.

    Но насколько мне известно, то лучше так не поступать.

    Узнать о еще каких причинах проблемах, можно задав вопрос в телеграмме например вот тут https://t.me/ssl1c

    Reply
  48. user1279314

    Привет! Нужен старый аккаунт github, если есть не нужный могу купить malikovone,gmail,com

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *