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

Программирование - Теория программирования

193
Статья для тех, у кого есть неудержимое желание программировать и хочется доработать какую-то конфигурацию (или проект на 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:\Rep\Tasks\

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

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

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

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

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

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

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

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


 

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

 

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

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


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

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

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

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

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


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

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


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

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

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

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

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

Теперь нам надо сделать коммит в 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:

 

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

193

Скачать файлы

Наименование Файл Версия Размер
Github и 1с. Пошаговая инструкция на конкретном примере:
.docx 645,80Kb
26.10.17
5
.docx 261017 645,80Kb 5 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. avk72 70 26.10.17 21:36 Сейчас в теме
Если кто знает, как победить это окно с предупреждениями, скажите, пожалуйста =)

При выгрузке в файлы не выгружаются объекты со слишком длинным идентификатором (более 80 символов). Может быть в этом дело?
25. BlizD 558 27.10.17 15:37 Сейчас в теме
(1)
Александр,

возможно, но нужно пробовать и разбираться, пока это мне не мешает, не ищу.
2. Armando 1387 26.10.17 22:17 Сейчас в теме
Я думал тут сейчас про EDT будет
6. BlizD 558 27.10.17 07:18 Сейчас в теме
(2)
Нет про EDT тут не рассказывается, но можно почитать, что пишут и задать свои вопросы вот тут:https://gitter.im/artbear/EDT-ext
PLAstic; Klash; +2 Ответить
3. Xershi 402 26.10.17 22:32 Сейчас в теме
Никогда гитом не пользовался плюсую! Если понадобится воспользоваться вернусь к вашей статье! Хранилище намного удобнее! Но это конечно не опенсурс, но удобнее!!
5. Region102 32 27.10.17 06:58 Сейчас в теме
(3) Хранилище не позволяет организовать полноценную командную работу. И падения хранилища, как и баз 1С происходят гораздо чаще. В хранилище каждый сам себе хозяин.
iliabvf; cleaner_it; +2 Ответить
10. Xershi 402 27.10.17 10:04 Сейчас в теме
(5) за 3 года командной разработки ни 1 падения! Но я знаю что у хранилища есть правила работы, которые не опытные разработчики просто не знаю или не выполняют. Думаю это про вас.

А ограничение на захват объекта я отнесу к плюсам чем к недостаткам или ограничениям! Т.к. очень важно чтобы обновление проходило без анализа кода! А как я понял в гите этого нет. Разработчику придется потратить время, если ему придет 2 версии изменения на 1 объект!
7OH; Sheff; +2 2 Ответить
14. artbear 1090 27.10.17 11:03 Сейчас в теме
(10)Нафига наезжать на (3) ?
Может быть, пора уже вылезти из своего домика и посмотреть вокруг ?

Ограничение по захвату объекта - это технология 2000 года, централизованные системы управления версиями - СУВ (cvs, svn)
мы их юзали еще в 77
У подобных систем проблемы известны, и в результате решения этих проблем появились децентрализованные СУВ, яркий представитель которых git.

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

Хранилище - это вещь в себе, слабо расширяется.
А для гита очень много инструментов сделано, которые позволяют получать полезные фичи - связь с задачами из систем управлениям задачами/проектами, привязка тестов к конкретным изменениям от конкретного автора, авторство любой строки кода, понимание, какая строка кода связана с какой задачей и т.п. и т.д.
CratosX; JohnyDeath; cleaner_it; +3 Ответить
19. Region102 32 27.10.17 13:41 Сейчас в теме
(10) Ну да, вы же эксперт, куда мне до вас. А теперь для "экспертов". Есть такой сервис в яндекс, wordstat называется, заходите туда и пишите "1с хранилище конфигурации повреждено", мне выдало 17 показов за месяц, то есть в течении месяца 17 уникальных человек искали решение данной проблемы. А так все красиво, ни одного падения за 3 года. У меня лично, за 17 лет работы с 1С, хранилище упало 1 раз, и потерялось 2 года изменений крупной отраслевой конфигурации. Но мы из разряда тех, кто уже делает бекапы. Так что удачи, а переходить на личности - это показатель вашего воспитания и компетенции.
Leelon; sergelemon; Sheff; d4rkmesa; PLAstic; cleaner_it; +6 Ответить
20. Xershi 402 27.10.17 14:07 Сейчас в теме
(19) на такой случай у меня был грамотный админ, которому я все объяснил! Так что извините, что раньше не думали! И это был ваш косяк, умение признавать ошибки очень важно, а лучше учиться на чужом опыте! У меня к вам нет претензий, т.к. ваши проблемы это ваши проблемы! Не хотите слушать, объяснять или учить же не нужно мне))
Mettem_Kirill; +1 4 Ответить
27. Region102 32 27.10.17 19:10 Сейчас в теме
(20) У меня архивы то делались, я про то что хранилище "не падает".
28. Xershi 402 27.10.17 19:54 Сейчас в теме
(27) как я уже говорил, дайте мне случай который будет воспроизводиться! Если например на сервере нет резервного или жесткий диск полетит, тут никто не застрахован! Но пока мне ни одного аргумента не предоставили как можно положить хранилище и воспроизвести это на любом другом!

А минусовать стали, циркачи))
36. 7OH 32 10.01.18 17:04 Сейчас в теме
(10) Абсолютно согласен - тратить время на анализ (или не дай бог переработку) изменения объекта 2+ авторами - явно не плюс.
---
Но увы и минусы у хранилища есть - случаи есть , не часто и нет описания как воспроизвести, но после динамического обновления в хранилище может попасть старый кусок кода.
mbalyukin; eeeio; +2 Ответить
37. Xershi 402 10.01.18 17:41 Сейчас в теме
(36) в хранилище у меня старый кусок кода еще ни разу не попадал, а вот у коллег в локальной базе такое ловили, но об этом я уже раньше писал!
7. BlizD 558 27.10.17 07:18 Сейчас в теме
(3)
Добрый день, Максим,

спасибо, за отзыв.
11. cmd_vasec 34 27.10.17 10:07 Сейчас в теме
(3) Можно пользоваться и хранилищем и gitом ( В помощь (Gitter)).
12. Xershi 402 27.10.17 10:10 Сейчас в теме
(11) очень жаль, что не разобрались, очевидно не научили разработчиков пользоваться хранилищем! А оно как известно очень капризно!
22. cmd_vasec 34 27.10.17 14:50 Сейчас в теме
(12) Предлагаю написать статью о преимуществе хранилища перед гитом или напишите тут.
eeeio; Sheff; +2 Ответить
24. Xershi 402 27.10.17 15:10 Сейчас в теме
(22) т.к. я не пользуюсь гитом, то статью не имеет смысла писать. В чем для меня лично преимущество, уже я написал!
35. ADirks 180 10.01.18 13:26 Сейчас в теме
(24) Не пользуетесь git'ом значит? А вас научат...
Только бы не вышло, как с временными таблицами :))

https://infostart.ru/journal/news/mir-1s/firma-1s-vypustila-instrument-dlya-vygruzki-khranilishcha-konfiguratsii-1s-v-repozitoriy-git_725293/
15. artbear 1090 27.10.17 11:06 Сейчас в теме
(11) Правильно пользоваться и хранилищем, и гитом.
Только в помощь юзайте https://github.com/oscript-library/gitsync
cleaner_it; +1 Ответить
21. cmd_vasec 34 27.10.17 14:40 Сейчас в теме
(15) Можно и так. Каждому свое.
4. IvanovAV 65 26.10.17 23:27 Сейчас в теме
Начало статьи заманчивое, но тема начала статьи не раскрыта. Зачем мне все это нужно ? И непонятные слова, так и не расшифровали. И при чем тут кабан с доской?
Sheff; kuzyara; the1; artbear; +4 Ответить
8. BlizD 558 27.10.17 07:24 Сейчас в теме
(4)
Добрый день, Алексей.
Вы, правы, статья не раскроет все аспекты возможного взаимодействия Github и 1с.
Основная цель статьи, это дать возможность взять инструкцию, и пропустить ее через свои руки.

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

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


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

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

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

Просто взят пример реальной задачи из этого репозитория.
17. Evil Beaver 5337 27.10.17 12:01 Сейчас в теме
(4) Полезное:

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

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

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

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

P.S. а еще вы, наверное, пишете в начале каждого изменения "Петров 2017-10-27 задача 8721 -->" а в конце "<---". Ну и как, помогает? Авторские комментарии не устаревают и не врут, и у вас они всегда актуализированы? И можно увидеть, что было здесь ДО этого изменения? Конечно можно, рядом же закомментированный кусок того, что было, да?
profisasha; gztrbnst; CratosX; JohnyDeath; cleaner_it; Dach; kuzyara; IvanovAV; vlad.frost; artbear; baton_pk; +11 Ответить
9. BlizD 558 27.10.17 08:40 Сейчас в теме
Добавил в статью ссылки на замечательные статьи про 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 на русском;
gztrbnst; CratosX; JohnyDeath; RailMen; Evil Beaver; Korolev; vlad.frost; kuzev; artbear; IvanovAV; +10 Ответить
38. zarucheisky 11.01.18 12:17 Сейчас в теме
(9)
https://git-scm.com/book/ru/v1 книга про Git на русском;

Pro Git 2 издание на русском
кому охота собирать - ruby-ями не выше 2.4
39. zarucheisky 11.01.18 14:21 Сейчас в теме
+(38) Собрал книжицу, вроде всё влезло.
Прикрепленные файлы:
progit2.pdf
bkavto; BlizD; artbear; +3 Ответить
40. sssss_aaaaa_2011 11.01.18 16:17 Сейчас в теме
(39)Стесняюсь спросить "А в epub'е нету?" :)
41. zarucheisky 12.01.18 11:48 Сейчас в теме
(40) вроде читабельно собралось
Прикрепленные файлы:
progit2.epub
vesd; mbalyukin; sssss_aaaaa_2011; BlizD; artbear; +5 Ответить
42. sssss_aaaaa_2011 12.01.18 12:20 Сейчас в теме
(41)Бальшой-бальшой спасиб! :)
43. artbear 1090 12.01.18 13:08 Сейчас в теме
(42) Можно плюсиком поощрить (41) в дополнение к спасибо!
44. sssss_aaaaa_2011 13.01.18 15:08 Сейчас в теме
(41)К сожалению, обнаружились кое-какие огрехи. Но если огрехи в грамматике и орфографии больше относятся к переводчику, то вот кусок английского текста между вводным параграфом раздела Настройки Git и Заключением этого же раздела скорее всего ошибка сборки. На сайте этот кусок книги на русском.Для меня это не проблема и я благодарен и за то, что есть, но вот для кого-то это может стать большим обломом.

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

Опять забыл: в epub с оглавлением что-то не то. С него на любой раздел переход есть, а вот выйти на оглавление из любого места книги - нет. Хотя, может это моя читалка ерундит.
zarucheisky; +1 Ответить
45. zarucheisky 15.01.18 10:12 Сейчас в теме
(40)
(44)
Да, собственно, потому epub и не собирался asciidoctor выдавал ошибку структуры с разделами.
Сильно не стал заморачиваться, исходники на гитхабе, кому надо - может и сам потренироваться и собрать :)
46. sssss_aaaaa_2011 15.01.18 13:46 Сейчас в теме
(45)Да, собственно, там такая же лажа. :) Так что это там надо править.
13. anton448 35 27.10.17 10:49 Сейчас в теме
Очень полезная статья! Плюсую :)
16. DenisCh 27.10.17 11:57 Сейчас в теме
подскажите, сколько времени ERP будет выгружаться в файлы, а потом обратно собираться?
18. pumbaE 608 27.10.17 12:07 Сейчас в теме
(16) Первый раз 20 минут, потом быстрее (до минуты) если коммандный режим используете.
23. the1 321 27.10.17 14:58 Сейчас в теме
(18) На партнерском форуме разработчиками EDT была названа цифра 8 часов только на выгрузку
26. pumbaE 608 27.10.17 16:33 Сейчас в теме
(23) в EDT да, а просто выгрузка в исходники 20-35 минут, это полная выгрузка.
29. the1 321 27.10.17 20:04 Сейчас в теме
(26) Разве там не одинаковый принцип? выгрузить конфигурацию в файлы
30. iliabvf 01.11.17 10:11 Сейчас в теме
Спасибо за статью, но почему бы не дать инструкцию по работе с обычным Git? Или локальным?
Клиент это конечно хорошо, но поверхностные знания обычно как бумеранг всегда ударяют в затылок.

Для тех, кто хочет понять суть GIT или создать свой репозиторий, короткая шпаргалка (да еще и на русском!):
https://ru.stackoverflow.com/questions/431520
31. BlizD 558 01.11.17 10:15 Сейчас в теме
(30)
Добрый день, спасибо за отзыв.

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

* https://git-scm.com/book/ru/v1 - книга про Git на русском;
32. gradi 3 09.01.18 09:24 Сейчас в теме
Может кто-нибудь знает - при скачивании архива проекта с gitlab кириллические имена файлов "ломаются", т.е. символы заменяются на какой-то бред. Как с этим бороться?
33. BlizD 558 09.01.18 09:26 Сейчас в теме
(32)
Добрый день, Константин.

Ответа не знаю, но думаю Вам помогут вот тут: https://gitter.im/gitlab-russian/public
34. ADirks 180 09.01.18 12:18 Сейчас в теме
(32) наверное, потому что zip.
не надо архив скачивать, надо говорить "git clone ..."
47. RainyAugust22 228 21.02.18 06:36 Сейчас в теме
В п. Clone выходит ошибка - Failed to connect to github.com port 443: Timed out.
Настроил проксю в Git через ком. строку. Все равно никак.
Возможно что-то пропустил в разделе "Установка Git".
Генерация SSH-ключей
Регистрация на Bitbucket и все пункты что ниже также необходимо выполнить?
48. BlizD 558 21.02.18 17:56 Сейчас в теме
(47)
Добрый день, Михаил.

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

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

Генерацию SSH-ключей - не делал.
Регистрацию на Bitbucket не надо делать.
Гит можно установить через Далее - Далее.

Еще можете задать вопрос вот тут https://gitter.im/EvilBeaver/oscript-library
Они там быстрее и правильнее ответят.
Оставьте свое сообщение