Home » 1С Предприятие 8.х » 1Cv8: Выгрузить конфигурацию в файлы + Git
google




1Cv8: Выгрузить конфигурацию в файлы + Git

Платформа 1С 8.3 начиная с версии 8.3.7 позволяет выгружать конфигурацию в файл в иерархическом виде, ранее можно было делать выгрузку в плоском виде, т.е. все файлы в один каталог, без разбития по подкаталогам. Старый механизм был медленным и очень не удобным, разработчики делали костыли в виде постобработки выгрузки — разбор по каталогам.

Ранее, для хранения версий конфигураций я использовал SVN, Git на тот момент был в зачаточном состоянии. Сейчас Git очень сильно развился, лишился детских болезней (например связанных с кириллицей в именах файлов), стал очень удобным продуктом. Одним из приятных моментов в git является возможность работы в пределах одного каталога. Если кто работал с SVN наверное помнят о необходимости создания репозитория, потом рабочей копии для разработчика, в Git это можно не делать, бывает очень удобно для небольших проектов, все лежит в одном каталоге. Так же порадовала скорость, SVN, если сравнивать с Git очень медленный, это связано с разными подходами в учете изменений, SVN работает с изменениями на уровне файловой системы, Git фиксирует только изменения в файлах, т.е. в SVN можно сделать фиксацию (commit) пустой папки, в Git нет, т.к. нет конечного файла. Помимо Git и SVN существует большое количество систем контроля версий, наиболее известные из них: Mercurial, Fosil и другие.

Для этого урока потребуется создать окружение с Git. Для удобства работы будем использовать оболочку TortoiseGit. Следует понимать что Tortoise лишь оболочка над системой контроля версий (Git, SVN, CVS …). Не раз встречал что люди считали черепашку системой контроля версий.

Установка инфраструктуры Git

  • Скачиваем и устанавливаем TortoiseGit
  • Скачиваем и устанавливаем Git

Важно: Сначала ставится TrotoiseGit (часто называют ее черепашка), потом Git.

Связка 1С 8.3.7 и Git

Создание репозитория Git

Создадим каталог для выгрузки конфигурации в файлы, в моем случае: c:\work\db\site\lessons\lessons\src\

Произведем инициализацию Git репозитория:

Вариант через GUI: правой кнопкой на каталоге src — Git create repository here

1cv8-git-create-repository-gui

Командной строкой:

cd c:\work\db\site\lessons\lessons\src\

git init

1cv8-git-create-repository-console

Выгрузка конфигурации в файлы

Выгрузка конфигурации в файлы производится из конфигуратора: Конфигурация — Выгрузить конфигурацию в файлы …

1cv8-git-unload-1

В окне выгрузки указываем каталог и вариант выгрузки — иерархический.

1cv8-git-unload-dlg

Фиксируем изменения в репозитории:

GUI: Контекстное меню каталога src — Git commit -> «master» …

1cv8-git-commit-1

Заполняем описание, выбираем все файлы в каталоге: Check — All. Желательно поставить галки Установить автора и Установить время (Set author, Set author date). Нажмем Ок.

1cv8-git-commit-dlg-1

console:

git add -A
git commit -m «Первоначальная выгрузка»

Модифицируем конфигурацию: добавим форму элемента для справочника Организации. Сохраним конфигурацию и выгрузим конфигурацию в файлы. Снова перейдем в окно фиксации изменений, и сравним файл с предыдущей версией: Catalogs\Организации.xml
1cv8-git-commit-dlg-2

Включим в фиксацию (commit) все изменения: check — all; добавим описание (Message): Добавили форму элемента спр.Организации. Нажмем Ок.

Посмотрим лог изменений репозитория: Контекстное меню на src — TortoiseGit — Show log

1cv8-git-show-log

Изменим форму элемента Организации

1cv8-git-change-ref-1

Сохраним конфигурацию и выгрузим ее в файлы. Открываем окно фиксации изменений, и решаем отменить изменение формы с дальнейшей загрузкой конфигурации из файлов.

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

1cv8-git-revert

Загружаем конфигурацию из файлов: Конфигурация — Загрузить конфигурацию из файлов. Открываем форму элемента организации и видим ее в изначальном виде:

1cv8-git-ref-after-revert

Ветки в Git

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

Предположим поступило пожелание рекомендовать заполнить поле ИНН если оно пусто. Сделаем это изменение в отдельной ветке git. Для этого выполняем действия

  1. Создаем новую ветку hotfix
  2. Переключаемся на hotfix
  3. Изменяем конфигурацию и выгружаем в файлы
  4. Фиксируем изменения в hotfix

По шагам это будет выглядеть так:

  1. Создание ветки hotfix
    1cv8-git-create-branch-hotfix 1cv8-git-create-branch-hotfix-dlg
  2. Переключение на hotfix: Контекстное меню TortoiseGit — Switch/Checkout
    1cv8-git-switch-branch-hotfix
  3. Добавляем обработчик события формы «ПриЗаписи», модифицируем процедуру и получаем

    Проверили как ведет себя система при пустом ИНН
    1cv8-message-inn

Слияние веток в  git

Предположим мы решили слить изменения из hotfix в основную ветку репозитория, для этого используется Merge. Функционал Merge весьма обширен, в этом материале я буду использовать необходимый минимум.

Последовательность действий при слиянии:

  1. Переключиться на ветку в которую необходимо слить hotfix, в нашем случае master
  2. Выполнить команду Merge.
  3. Удалим ветку hotfix

Рассмотрим каждое действие подробно:

  1. Переключаемся на ветку master: TortoiseGit -> Switch/Checkout -> master — ok
  2. Слияние веток:
    1. TortoiseGit -> Merge
    2. Указываем параметры слияния
      1cv8-git-merge
      Branch «hotfix» (ветка с которой будем делать слияние)
    3. Загружаем конфигурацию из файлов. Получаем модуль с рекомендацией заполнения ИНН
    4. Удаляем ветку hotfix: TortoiseGit -> Switch/Checkout
      1cv8-git-del-hotfix

Т.к. изменений в master не было при слиянии будет автоматический commit изменений, используя черепашку я не смог добиться слияния без фиксации, галка не срабатывала.

Рассмотрим более сложный вариант: После ответвления hotfix были изменения в master, на практике именно так часто и бывает.

  1. Создадим пустой обработчик события ПриСозданииНаСервере у формы элемента Организации;
  2. Выгрузим измененную конфигурацию в файлы
  3. Зафиксируем изменения
  4. Создадим ветку hotfix
  5. Переключимся на созданную ветку hotfix
  6. Изменим процедуру ПриСозданииНаСервере:
  7. Выгрузим и зафиксируем изменения в ветке hotfix
  8. Переключимся на ветку master
  9. Загрузим конфигурацию из файлов
  10. Создадим форму элемента справочника МестаХранения
  11. Выгрузим и зафиксируем изменения в ветке master
  12. Вызовем окно слияния, выберем ветку hotfix
    1. Окно слияния:
      1cv8-git-merge-2
    2. Результат слияния:
      1cv8-git-merge-2-result
  13. Зафиксируем изменения  в master
    1cv8-git-commit-after-merge
  14. Загрузим измененную конфигурацию из файлов, получим
    1cv8-git-result-2

В этой статье были описаны основные команды Git, на самом деле их намного больше. Более подробно по работе с Git можно почитать на официальном сайте.

Видео к уроку


Posted on by Ушаков Сергей
Categories: 1С Предприятие 8.х Метки: ,



Добавить комментарий

Войти с помощью: 

Социальные сети


Я в Twitter
Яндекс.Поиск
Поиск обычный
Счетчики
Рейтинг@Mail.ru Яндекс.Метрика