0. pumbaE 608 05.10.16 15:36 Сейчас в теме

Использование git для доработки типовых конфигураций 1С

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

Перейти к публикации

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. Makushimo 152 11.10.16 08:01 Сейчас в теме
Очень познавательно.
Я периодически натыкаюсь на статьи по TDD и BDD, но системного восприятия все равно нет и это мешает в полной мере оценить мощь этого подхода.

Автор, подскажите с чего по порядку можно начать изучение этой темы?
Например, как развернуть и настроить окружение (git+"черепаха"+Vanessa+1C) для разработки/доработки по описанной вами методике?
что такое Vanessa-behavior, feature файлы и как научиться с этим управляться?
может ссылки есть наготове?

Спасибо.
maxopik2; hulio; big_ooo; kasper076; +4 Ответить
2. amon_ra 2 11.10.16 09:00 Сейчас в теме
(1) Makushimo, ИМХО, начать лучше с изучения git и начала работы с ним. Так как это система версионирования, то она требует внимания. Затем начать курить мануалы по работе с docker и vagrant - они помогут быстро без особых усилий разворачивать рабочие пространства, которые будут требоваться в работе над разными проектами, дабы не засорять основную операционную систему.
После этого можно приступить к изучению методологий TDD и BDD.
Часто в личных разработках или на фрилансе методологии эти сложно применить, хорошо сработают работе в команде. ПОсле того как будет постигнут начальный уровень дзен разработки по промышленным стандартам можно начать изучать системы автосборок, скриптописания. Что касается Vanessa-behavior - это опенсорц фреймворк для автотестирования с написание БТ на языке геркин вот тут подробнее https://github.com/silverbulleters/vanessa-behavior

Женя, это шикарная статья)
Прикрепленные файлы:
teflon; pumbaE; Evil Beaver; Developer1C; +4 Ответить
3. pumbaE 608 11.10.16 09:10 Сейчас в теме
(1) Makushimo, извините, но я не смогу вам ответить в полной мере, т.к. ссылки не храню, а доверяю их гуглу.
Как минимум на infostart есть пару статей обзорных http://infostart.ru/public/all/?public-filter%5Bsearch%5D=bdd
Есть даже курсы по обучению, насколько я знаю Никита Грызлов как раз готовит такой по непрерывной интеграции и научит вас готовить jenkins.
Могу только посоветовать гуглить precommit1c, vanessa-behavior (посмотреть вебинары Леонида Паутова по использованию инструментария), учить базовые понятия git и присматриваться к jenkins - это тот стек, который я использую.
26. Fox-trot 91 25.11.16 14:10 Сейчас в теме
(1)
Очень познавательно.
и не более. все это перекрывается одним костылем, следовательно малопригодно для практического применения
4. kraynev-navi 378 11.10.16 09:19 Сейчас в теме
На скриншоте http://infostart.ru/upload/iblock/a6a/a6aa74bb9c366c17ce7c579f005f2a37.png
процедура ЯОткрываюФормуСоСвойствомИЗначениемИСохраняюВКонтекст. Хотя по предыдущему рисунку там только Дано: я открываю форму "...ФормаДокумента" и сохраняю в контекст
5. pumbaE 608 11.10.16 09:25 Сейчас в теме
(4) kraynev-navi, для уменьшения скрина я просто не включил эту процедуру, по факту она вызывает ЯОткрываюФормуСоСвойствомИЗначениемИСохраняюВКонтест, это можно посмотреть в самом файле patch https://github.com/pumbaEO/eprpatch/blob/master/patch/0004-optimize.patch#L775
6. kraynev-navi 378 11.10.16 09:38 Сейчас в теме
@updatetest

А где про него прочитать?

"Закупки (КоролевСВ)" и паролем ""

А как с точки зрения безопасности посмотреть на хранение данных к этой учетной записи?
Предположим нехороший человек внутри компании может узреть логин-пароль какой-нибудь "всевидящей" роли и просто похаживать под ней, посматривая на запрещенные для его статуса данные. Как-то ограничивать, наверное, надо? Какая здесь практика?
7. pumbaE 608 11.10.16 09:44 Сейчас в теме
(6) kraynev-navi, https://github.com/silverbulleters/vanessa-behavior/blob/develop/features/Core/FeatureLoad/%D0%97%D0%B0­%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0%D0%A4%D0%B8%D1%87%D0%9F­%D0%BE%D0%A2%D0%B5%D0%B3%D0%B0%D0%BC.feature
это просто теги, по которым в дальнейшем можно отфильтровать те feature которые хочешь запустить в определенный момент.

А как с точки зрения безопасности посмотреть на хранение данных к этой учетной записи?

Использовать не рабочую базу, а если хотите использовать копию рабочей, то сделать простейшую обработку, которая сбросит пароли пользователям после копирования, а для БСП конфигураций, вам еще необходимо установить прокси на несуществующий или mock (soapUI) адрес, установить признак, что это копия информационной базы и т.д.
9. kraynev-navi 378 11.10.16 10:06 Сейчас в теме
(7)(8) Да я ужо понял, что ерунду по утру спросил
8. nixel 525 11.10.16 09:45 Сейчас в теме
(6) kraynev-navi, фиче-файлы прогоняются на пустой минимально заполненной базы. Никакой пользы от демо-доступа в приемочную базу да ещё и на изолированном ci-контуре у злоумышленника не будет.
10. speshuric 1067 11.10.16 10:07 Сейчас в теме
(0)
1. Политика веток/меток чересчур упрощенная, если она точно такая же в боевой работе, то это не гуд.
2. Я правильно понимаю, что механизм поставки от 1С при этом выкидывается? Само по себе это нормально, пока итоговое решение на поставке одной конфы, но 2 конфигурации поставщика ваша схема без доработки не прожуёт. Про механизм расширений - не знаю, не могу сходу применимость оценить.
3. Самая вкусная тема механизма поставки - видеть одновременно старую конфигурацию поставщика, наши изменения относительно неё и новую конфигурацию. Собственно, задача "внести свои изменения в типовую, чтобы я всегда мог их видеть и идентифицировать" нормально решается и gitом, и поставкой - это лёгкий кейс. Кейс, который реально проверяет методику - "мы тут командой написали кучу кода для 1.2.3.4, а вчера 1С выпустила 1.2.4.5 и нам надо на неё быстро-быстро переезжать, потому что регуляторные требования". Сразу скажу, что "мега-черри-пик" хорошей идеей не выглядит :)
4. Еще одна печаль для git - сравнение табличных документов, графических схем и прочей подобной ерунды. Если формы еще как-то сравнибельны, то табличные документы....

В задаче "с 1.2.3.4 на 1.2.4.5" git тоже поможет, но совесем по-другому. Например, не надо будет выполнять трёхстороннее сравнение без права на промежуточные сохранения (ага, я протычивал тыщи галочек при обновлении УПП, еще помню, больше не хочу).
11. pumbaE 608 11.10.16 10:40 Сейчас в теме
(10) speshuric,
1. Политика веток/меток чересчур упрощенная, если она точно такая же в боевой работе, то это не гуд.

Да на практике, конечно их больше, но это уже зависит от моих "извращений", есть ветки висящие мертвым грузом. Но стараюсь придерживаться: master - то что в продакшине, develop - в разработке, ну и куча feature/* от hotfix пока профита не получил, чаще проще было на develop обновится, она более или менее стабильна всегда.
2. Я правильно понимаю, что механизм поставки от 1С при этом выкидывается? Само по себе это нормально, пока итоговое решение на поставке одной конфы, но 2 конфигурации поставщика ваша схема без доработки не прожуёт. Про механизм расширений - не знаю, не могу сходу применимость оценить.

Да, сознательно выкидываю и в репозиториях прописываю в gitignore *.cf и Parent*.bin, т.к. нет нормального механизма описания поставки и только лишнее место занимают. При этом для разработчика выдается обязательно *.dt файл, в котором как раз и есть актуальный срез конфигурации с конфигурацией поставщика, что-бы видеть замочки.
С расширениями тема пока вызывает вопросы, т.к. неизвестно как их сравнивать, как документировать и насколько может поменяться логика работы конфигурации после незначительного обновления, при этом забыли проверить расширение не переопределялся ли там модуль и т.д., пока проблем больше чем вариантов решений. И если с изменением конфигурации это можно выявить хоть примерно на этапе сравнения, то с расширением - беда.
3. Самая вкусная тема механизма поставки
не рассматривали не мега коммит "Обновление типовой на 1.2.4.5" от имени 1C, а несколько коммитов по подсистемам и потом merge в origin1c, тогда можно как черри-пик, так и мелкий merge сделать (имхо в таком варианте merge будет предпочтительней с включенным модулем rere)

сравнение табличных документов, графических схем и прочей подобной ерунды

просил у 1C xsd схемы для таких метаданных, но они сказали "в планах публикации такого нет", поэтому вскоре попробую сам создать пару примеров и попытаю счастья с merge EMF пакетов в Eclipse, возможно будет хорошее решение.
Для форм и предопредленных данных или метаданных помогает xmldiff консольная утилита, т.к. чаще всего это добавление в дерево нового узла.
12. kuntashov 364 11.10.16 11:41 Сейчас в теме
(0) Отличная практическая статья, давно такой не хватало! Подписываюсь на комментарии :)
13. JohnyDeath 290 11.10.16 23:27 Сейчас в теме
На такие статья нужно подписываться в обязательном порядке!
14. Evil Beaver 5336 12.10.16 15:24 Сейчас в теме
Переопубликовал где только мог. Фундаментально!
15. necropunk 5 12.10.16 18:05 Сейчас в теме
Хорошая статья, спасибо, заинтересовало.
16. pumbaE 608 12.10.16 18:08 Сейчас в теме
(15) necropunk, что именно git или тесты или и то и другое?
17. necropunk 5 13.10.16 11:01 Сейчас в теме
(16) с тестами вообще круть, но для меня пока недосягаемо. Работа с git впечатлило, тут пока папку разработки внешних обработок через OneScript к Git подключил - семь потов сошло, в статье вообще высший пилотаж, конечно...
18. the1 321 14.10.16 11:09 Сейчас в теме

А если серьезно, то давно пора взяться за изучение.
19. JohnyDeath 290 14.10.16 11:15 Сейчас в теме
pumbaE, ты все-таки добил 1С своими патчами: https://wonderland.v8.1c.ru/blog/inkrementalnaya-vygruzka-konfiguratsii-v-xml/
Осталось дождаться 8.3.11 (
20. lustin 992 14.10.16 13:13 Сейчас в теме
21. sashocq 191 18.10.16 09:52 Сейчас в теме
данную историю получил простой выгрузкой каждой версии 1с в файлы и коммитом в git

А мне вот интересно как вы поступали с переименованиями. К примеру, переименовали справочник из НенужныйСправочник в УдалитьНенужныйСправочник или форму или ещё что-нибудь. Как с этим быть?
Если в типовой конфигурации это в 90% будут переименования с добавлением приставки Удалить, то в моей разработке при рефакторинге бывают совершенно другие переименования. Я просто не знаю, что с ними делать, чтобы сохранялась их история. Вручную про них незабывать совершенно нереально.
И если в каком-нибудь старом коммите обнаружил, что переименование прошло как удаление и добавление, можно ли как-нибудь ручным приводом этот старый коммит исправить, чтобы всё встало на свои места?
22. pumbaE 608 18.10.16 09:58 Сейчас в теме
(21) sashocq, обычно git сам определяет, что это переименование файла или каталога, конечно если вы не будете сильно менять содержимое файлов, но есть и ручная команда git mv староеИмя новоеИмя.
Если вам необходимо исправить историю, то тут только checkout на этот коммит, исправление и потом последующий rebase.
23. alprk 23.11.16 13:06 Сейчас в теме
Не могли бы пояснить: как я понимаю для интеграции с репозиторием используется стандартный функционал конфигуратора по выгрузке (/загрузке) конфигурации в файлы xml.
А готов ли этот механизм для того чтобы заменить хранилище git-ом? Для примера, выгрузил cf из УТ11, потом выгрузил в файлы и собрал из них новый cf-ник (попутно получил предупреждения о каких-то картинках).
Итого:
1. Разница в размере cf - примерно 5Мб.
2. Если сравнить получившуюся конфу с cf, обнаруживаются различия в ряде обработок и нескольких документа (различия правда отображаются пустыми).
24. lustin 992 24.11.16 22:59 Сейчас в теме
(23) очень полезно:

* выгрузить УТ11 в git
* закомитить
* загрузить конфигурацию из git
* выгрузить после этого еще раз выгрузить конфигурацию в git
* сделать git diff
* офигеть ;-)
и пойти смотреть https://github.com/pumbaEO/undiff1c
25. alprk 25.11.16 12:32 Сейчас в теме
(24) Спасибо за наводку. Однако, если закоммитить, загрузить и выгрузить снова - "nothing to commit, working tree clean"
28. marochkin 13 27.06.17 20:06 Сейчас в теме
Евгений, а не поделитесь "простейшим скриптом" который помогает сделать необходимый нам mergeSetting из патча git? ;)
Спасибо за статью!
29. rtits 14.09.18 09:05 Сейчас в теме
(28) Нужен такой скрипт! Удалось найти?
30. marochkin 13 14.09.18 09:07 Сейчас в теме +200 $m
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день