Всем привет.
Статья для тех, у кого есть неудержимое желание программировать и хочется доработать какую-то конфигурацию (или проект на 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С, в этом репозитории требуется версия 8.3.9.1850 – версия платформы очень важна, т.к. она влияет на выгрузку/загрузку конфигурации в файлы. Периодически фирма 1С изменяет формат выгрузки и загрузки.
- Скачиваем и устанавливаем SourceTree — программа нужна для отправки изменений(коммитов) в Git (или любую другую, но в примере будет рассказываться именно SourceTree);
- Ссылка для скачивания https://www.sourcetreeapp.com
- При установке SourceTree если будут проблемы с авторизацией, тогда авторизируйтесь с помощью Google. И установка продолжится.
- Регистрируемся на https://github.com
- Для этого примера создал специального пользователя ForInfostart
- Скачиваем и устанавливаем GIT
- Заходим на официальный сайт Git и скачиваем последнюю версию git для windows. Официальный сайт Git http://git-scm.com/
- При установке используем Далее – Далее
- Пошаговая инструкция как установить 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» (ветка с нашего форка).
Все, теперь остается ждать, когда владелец, того репозитория, примет Ваш пул реквест.
Как только он примет, то код будет влит в основную ветку проекта.
Поздравляю, теперь Вы, стали участником OpenSource сообщества=).
Если все равно остались вопросы или что то пошло не так в процессе, тогда можно смело, не боясь, писать в чат https://gitter.im/Tasks_/Lobby (или сюда https://gitter.im/EvilBeaver/oscript-library) там попробуем все разрулить.
Некоторый список 1С проектов, которые выложены на Github:
- https://github.com/BlizD/Tasks — Управление задачами: Канбан доска;
- https://github.com/BlizD/BPS — Подсистема для Согласования;
- https://github.com/Stepa86/1C-Gitter — Конфигурация для выгрузки из хранилища изменений в Git
- https://github.com/tormozit/1C-Runtime-Developer-Tools — Инструменты разработчика
- https://github.com/silverbulleters/vanessa-behavior — BDD for 1С:Enterprise
- https://github.com/xDrivenDevelopment/xUnitFor1C — Набор инструментов для выполнения тестирования (модульного/юнит, приемочного, сценарного для 1С 8.3, интеграционного) в 1С:Предприятие 8
- и еще много каких проектов.
Ссылки на замечательные статьи про Git:
- //infostart.ru/public/343317/ — Альтернативные системы контроля версий и их применение для хранения версий продуктов, разработанных на платформе 1С;
- //infostart.ru/public/310640/ — Git-flow В 1С (Система контроля версий);
- //infostart.ru/public/118207/ — Системы контроля версии и 1С;
- //infostart.ru/public/553119/ — Использование git для доработки типовых конфигураций 1С.
- https://git-scm.com/book/ru/v1 — книга про Git на русском;
Спасибо, что Вы дочитали до этого места.
При выгрузке в файлы не выгружаются объекты со слишком длинным идентификатором (более 80 символов). Может быть в этом дело?
Я думал тут сейчас про EDT будет
Никогда гитом не пользовался плюсую! Если понадобится воспользоваться вернусь к вашей статье! Хранилище намного удобнее! Но это конечно не опенсурс, но удобнее!!
Начало статьи заманчивое, но тема начала статьи не раскрыта. Зачем мне все это нужно ? И непонятные слова, так и не расшифровали. И при чем тут кабан с доской?
(3) Хранилище не позволяет организовать полноценную командную работу. И падения хранилища, как и баз 1С происходят гораздо чаще. В хранилище каждый сам себе хозяин.
(2)
https://gitter.im/artbear/EDT-ext
Нет про EDT тут не рассказывается, но можно почитать, что пишут и задать свои вопросы вот тут:
(3)
Добрый день, Максим,
спасибо, за отзыв.
(4)
Добрый день, Алексей.
Вы, правы, статья не раскроет все аспекты возможного взаимодействия Github и 1с.
Основная цель статьи, это дать возможность взять инструкцию, и пропустить ее через свои руки.
(4)
На этот вопрос не могу ответить. Каждый сам для себя решает, что ему нужно, а что нет.
(4)
Так и есть, но дал возможность их «пощупать».
https://git-scm.com/book/ru/v1 (чуть позже добавлю это в статью).
Про Git можно почитать вот тут
Просто взят пример реальной задачи из этого репозитория.
Добавил в статью ссылки на замечательные статьи про 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 на русском;
*
*
*
*
(3) Можно пользоваться и хранилищем и gitом ( В помощь (Gitter )).
Очень полезная статья! Плюсую 🙂
(10)Нафига наезжать на (3) ?
Может быть, пора уже вылезти из своего домика и посмотреть вокруг ?
Ограничение по захвату объекта — это технология 2000 года, централизованные системы управления версиями — СУВ (cvs, svn)
мы их юзали еще в 77
У подобных систем проблемы известны, и в результате решения этих проблем появились децентрализованные СУВ, яркий представитель которых git.
Поработай в больших командах, увидишь, что работа в хранилище часто совершенно неудобна. Кто не попадал на захват корня челом, ушедшим с работы 🙂 ?
Хранилище — это вещь в себе, слабо расширяется.
А для гита очень много инструментов сделано, которые позволяют получать полезные фичи — связь с задачами из систем управлениям задачами/проектами, привязка тестов к конкретным изменениям от конкретного автора, авторство любой строки кода, понимание, какая строка кода связана с какой задачей и т.п. и т.д.
(11) Правильно пользоваться и хранилищем, и гитом.
https://github.com/oscript-library/gitsync
Только в помощь юзайте
подскажите, сколько времени ERP будет выгружаться в файлы, а потом обратно собираться?
(4) Полезное:
Привязка каждой строки кода к задаче в JIRA и автору в домене Windows.
Каждую строку кода я знаю кто написал и по какой задаче. И это за секунды. В то время, как с помощью хранилища 1С историю строки я буду получать часами.
Вы все еще комментируете старый код, чтобы было «для истории»? И как вам, нравятся портянки из зеленого тысячелетнего мусора, который всем страшно удалить?
Тогда мы идем к вам!
P.S. а еще вы, наверное, пишете в начале каждого изменения «Петров 2017-10-27 задача 8721 —>» а в конце «<—«. Ну и как, помогает? Авторские комментарии не устаревают и не врут, и у вас они всегда актуализированы? И можно увидеть, что было здесь ДО этого изменения? Конечно можно, рядом же закомментированный кусок того, что было, да?
(16) Первый раз 20 минут, потом быстрее (до минуты) если коммандный режим используете.
(10) Ну да, вы же эксперт, куда мне до вас. А теперь для «экспертов». Есть такой сервис в яндекс, wordstat называется, заходите туда и пишите «1с хранилище конфигурации повреждено», мне выдало 17 показов за месяц, то есть в течении месяца 17 уникальных человек искали решение данной проблемы. А так все красиво, ни одного падения за 3 года. У меня лично, за 17 лет работы с 1С, хранилище упало 1 раз, и потерялось 2 года изменений крупной отраслевой конфигурации. Но мы из разряда тех, кто уже делает бекапы. Так что удачи, а переходить на личности — это показатель вашего воспитания и компетенции.
(15) Можно и так. Каждому свое.
(12) Предлагаю написать статью о преимуществе хранилища перед гитом или напишите тут.
(18) На партнерском форуме разработчиками EDT была названа цифра 8 часов только на выгрузку
(22) т.к. я не пользуюсь гитом, то статью не имеет смысла писать. В чем для меня лично преимущество, уже я написал!
(1)
Александр,
возможно, но нужно пробовать и разбираться, пока это мне не мешает, не ищу.
(23) в EDT да, а просто выгрузка в исходники 20-35 минут, это полная выгрузка.
(20) У меня архивы то делались, я про то что хранилище «не падает».
(27) как я уже говорил, дайте мне случай который будет воспроизводиться! Если например на сервере нет резервного или жесткий диск полетит, тут никто не застрахован! Но пока мне ни одного аргумента не предоставили как можно положить хранилище и воспроизвести это на любом другом!
А минусовать стали, циркачи))
(26) Разве там не одинаковый принцип? выгрузить конфигурацию в файлы
Спасибо за статью, но почему бы не дать инструкцию по работе с обычным Git? Или локальным?
Клиент это конечно хорошо, но поверхностные знания обычно как бумеранг всегда ударяют в затылок.
Для тех, кто хочет понять суть GIT или создать свой репозиторий, короткая шпаргалка (да еще и на русском!):
https://ru.stackoverflow.com/questions/431520
(30)
Добрый день, спасибо за отзыв.
Думаю в качестве изучения самого GIT, хорошо подойдет книга про гит.,
*https://git-scm.com/book/ru/v1 — книга про Git на русском;
Может кто-нибудь знает — при скачивании архива проекта с gitlab кириллические имена файлов «ломаются», т.е. символы заменяются на какой-то бред. Как с этим бороться?
(32)
Добрый день, Константин.
Ответа не знаю, но думаю Вам помогут вот тут:https://gitter.im/gitlab-russian/public
(32) наверное, потому что zip.
не надо архив скачивать, надо говорить «git clone …»
(24) Не пользуетесь git’ом значит? А вас научат…
Только бы не вышло, как с временными таблицами :))
(10) Абсолютно согласен — тратить время на анализ (или не дай бог переработку) изменения объекта 2+ авторами — явно не плюс.
—
Но увы и минусы у хранилища есть — случаи есть , не часто и нет описания как воспроизвести, но после динамического обновления в хранилище может попасть старый кусок кода.
(36) в хранилище у меня старый кусок кода еще ни разу не попадал, а вот у коллег в локальной базе такое ловили, но об этом я уже раньше писал!
(9)
кому охота собирать — ruby-ями не выше 2.4
+(38) Собрал книжицу, вроде всё влезло.
(39)Стесняюсь спросить «А в epub’е нету?» 🙂
(40) вроде читабельно собралось
(41)Бальшой-бальшой спасиб! 🙂
(42) Можно плюсиком поощрить (41) в дополнение к спасибо!
(41)К сожалению, обнаружились кое-какие огрехи. Но если огрехи в грамматике и орфографии больше относятся к переводчику, то вот кусок английского текста между вводным параграфом раздела Настройки Git и Заключением этого же раздела скорее всего ошибка сборки. На сайте этот кусок книги на русском.Для меня это не проблема и я благодарен и за то, что есть, но вот для кого-то это может стать большим обломом.
Добавчик: в PDF такая же фигня.
Опять забыл: в epub с оглавлением что-то не то. С него на любой раздел переход есть, а вот выйти на оглавление из любого места книги — нет. Хотя, может это моя читалка ерундит.
(40)
(44)
Да, собственно, потому epub и не собирался asciidoctor выдавал ошибку структуры с разделами.
Сильно не стал заморачиваться, исходники на гитхабе, кому надо — может и сам потренироваться и собрать 🙂
(45)Да, собственно, там такая же лажа. 🙂 Так что это там надо править.
В п. Clone выходит ошибка — Failed to connect to github.com port 443: Timed out.
Настроил проксю в Git через ком. строку. Все равно никак.
Возможно что-то пропустил в разделе «Установка Git».
Генерация SSH-ключей
Регистрация на Bitbucket и все пункты что ниже также необходимо выполнить?
(47)
Добрый день, Михаил.
Похоже, что то то с интернетом и установкой соединения.
Регистрация на Bitbucket и все пункты что ниже также необходимо выполнить?
Генерацию SSH-ключей — не делал.
Регистрацию на Bitbucket не надо делать.
Гит можно установить через Далее — Далее.
Еще можете задать вопрос вот тутhttps://gitter.im/EvilBeaver/oscript-library
Они там быстрее и правильнее ответят.
Подскажите, есть ли возможность из GIT репозитория обновить хранилище 1С?
(49)
Добрый день, Иван.
Если конфигурация на управляемых формах, то обновить из GIT хранилище в принципе можно.
https://t.me/ssl1c
Но насколько мне известно, то лучше так не поступать.
Узнать о еще каких причинах проблемах, можно задав вопрос в телеграмме например вот тут
Привет! Нужен старый аккаунт github, если есть не нужный могу купить malikovone,gmail,com