gifts2017

Объединение однотипных конфигураций 1С 7.7

Опубликовал Алексей Лустин (lustin) в раздел Программирование - Практика программирования

Описание методики объединения нескольких конфигураций с помощью GCOMP и SVN

Преамбула

 

Очень часто приходится сталкиватся с ситуацией когда у нескольких клиентов имеются однотипные конфигурации на базе типовой конфигурации (к примеру Торговля и Склад).

В моем случае возникло 5 (пять) конфигураций ТиС 897, и переделанных сторонними программистами, причем программисты были разные и соответственно алгоритмы реализации тоже.

Задача же была поставлена: "Привести все изменения к единому функционалу для последующего перехода на единый конфигурационный файл (1C_Общий.md)"

ключевыми критериями выбора механизма слияния стали:

  1. Возможность хранения отчета об изменениях по каждой конфигурации.
  2. Возможность использовать более серьъеные механизмы слияния (Merge).
  3. Возможность "откатить" произведенные изменения по отдельному объекту.

Соотвественно мною было приянто решение об использовании http://1c.alterplast.ru/gcomp/gcomp.html и Системы контроля версий SVN (с клиентов TortoiseSVN).

Подготовка хранилища

Скачиваем http://1c.alterplast.ru/files/gcomp/gcomp_bin_2.2.15.zip, нам понадобится vgcomp.exe для более быстрого разбора конфигурации.

1. Создаем папку d:\SVN\STORAGE\, нажимаем на ней правой кнопкой и если вы не забыли установить TortoiseSVN у вас появится следующее окошко.

 

Создание хранилища

 

Итак хранилище для контроля версионности создано.

Теперь создаем еще парочку каталогов: d:\SVN\REALESE\ и d:\SVN\SOURSE\ для хранения соответственно Конфигурации и Исходников

Правой кнопкой на каталоге SOURSE и команда SVN Извлечь

Обращая внимание, что в данный момент хранилище пусто и путь к нему file:///D:/SVN/STORAGE


Извлечение хранилища

Последний этап - в каталог d:\SVN\REALESE\ закидываем первый из наших "md-шников", запускаем конфигуратор, открываем конфигурацию, создаем новый документ "Новый1", удалем его и сохраняем конфигурацию.

Теперь у нас есть подготовленное к работе хранилищие конфигураций, исходники, и релиз конфигурации.

Создание версий конфигураций

Для того чтобы создать последовательность версий конфигураций нам необходимо произвести несколько рутинных мероприятий для каждой версии конфигурации

  • Разборка конфигурации в каталог исходников

Разборка GCOMP
  • Фиксация изменений в хранилище (не забудьте номер ревизии для каждого из пяти конфигурации)

Фиксация
  • Объединений конфигураций со следующим файлов md с помощью Конфигуратора.

 

В идеале мы должны получить вот такой журнал хранилища:


Журнал версий

Я теперь точно знаю что первая конфигурация это файлы до ревизии №28

Вторая конфигурация - ревизия №29

Третья конфигурация - ревизия №30

Четвертая конфигурация - ревизия №31

Пятая конфигурация - ревизия №32

Все что больше ревизии №32 - это уже будут мои объединенные объекты

Теперь можно со спокойной душой делать объединение.

Объединение объектов

 

Основный принцип в том чтобы извлечь из хранилища все версии каждого объекта, но только тех у кого ревизия выше 28 (то есть они различны в какой-то из конфигураций)


Извлечение версий

 

Извлекая версии версию 28 - я уже знаю - это исходный код объекта Форма (на картинке это Справочник.Контрагенты.ДляВыбора) первой конфигурации и сравниваю с 31 версией из пятой базы.

Теперь необходимо слить эти изменения: воспользуемся программой TortoiseMerge


Слияние

 

Внимательно смотрим на изменение формы - принимаем решение на ОБЩИЙ механизм реализации, а дальше производим изменение либо в Конфигураторе (а затем очередным разбором md-шника), либо с помощью механизма слияния TortoiseMerge. (тут уж как кому удобно)

Фиксируем наши изменения и теперь в журнал версий под ревизией 33 попадет изменненная и единая Форма Справочника "Контрагенты" с идентификатором "ДляВыбора"

Преимущества такого подхода

 

Основными преимуществами описанной методики являются:

  1. Контроль внесенных изменений
  2. История изменения (какие объекты менялись, кем и когда и зачем)
  3. Возможность коллективной разработки
  4. Анализ измененний внутренних (бинарных) объектов.
  5. Красивый (интеллектуальны) механизм объединения (слияния)
  6. Собственное развитие: механизм SVN активно гуляет по странне, и его незнание для программиста - крест на развитии

 

PS: Предложенная статья - это основные наметки по описанию. Критика по теоритическим моментам принимается.

См. также

Подписаться Добавить вознаграждение
Комментарии
1. evadm (evadm) 17.07.07 12:46
Автор сам ничего не написавший и не переработавший бездельник
интересно что нет ни одного предложения как в svn отразить изменения полей справочников и(или документов)
2. Доржи Цыденов (support) 17.07.07 13:12
Хорошая статья! По-больше бы таких.
3. desty (lustin) 17.07.07 13:49
для evadm:

Ваша критика неконструктивна, позволю себе на неё неатриагировать

В случае изменения полей документа (например) файл будет
D:\SVN\SOURSE\Документы\РасходнаяНакладная\Структура.mdp
(и он версионный)
команда TortoiseSVN:
- открыть журнал
- сравнить (слить) с рабочей копией (любую ревизию).

Статья по мере коректировки будет обновляться.
4. evadm (evadm) 17.07.07 14:04
Во первых: Вы пишете "Ваша критика неконструктивна, позволю себе на неё неатриагировать" а нужно "неотреагировать"
Во вторых: сравнить то сравните - а кто реструктурировать базу будет??? TortoiseSVN?
5. desty (lustin) 17.07.07 14:34
Реструктурировать говорите:

В корне каталога исходников есть версионные файлы:
1. ИдентификаторыКонфигурации.mdp
2. ОбъектыМетаданных.txt
единственное с чем возникнет вопрос - это файлы GUIDData, TagStream
Это раз

На данный момент все пять конфигураций слиты в единый md-шник, так что насчет реальности вы не правы
Это два

Подобная методика точно подходит для однотипных конфигураций клиентов, когда необходимо привести разработку к общему знаменателю
Это три

В тексте статьи написано "черным по белому":

Внимательно смотрим на изменение - принимаем решение на ОБЩИЙ механизм реализации, а дальше производим изменение либо в Конфигураторе (а затем очередным разбором md-шника), либо с помощью механизма слияния TortoiseMerge. (тут уж как кому удобно)

То есть: "Преобразование ДАННЫХ, если таковое понадобится, необходимо предусматривать программисту" в данном примере нам пришлось подобное делать
Это четыре

И еще - SVN интегрируется с trac, что позволяет вести еще и учет задач.
Это пять.

В репозитарии скриптов OpenConf существуют очень много примеров по интеграции 1С -> CVS (а последннее время и 1С -> SVN)

А теперь вопросы:
1. Каким хитрым образом вы вычислили что "Автор сам ничего не написавший и не переработавший бездельник"
2. Есть ли у Вас опыт использования SVN (CVS) для 1С 7.7 - и если он негативный - тогда все в прицнипе понятно

А критика неконструкти
6. evadm (evadm) 17.07.07 14:49
Снова "вода" льётся, опять нерешённые вопросы.
У Вас вопросы организации работы с базой стоят на первом месте а на втором вопросы организации работы самой базы. Отсюда вывод что Вы РЕАЛЬНУЮ работу которая нужна заказчику не делаете, а предпочитаете находить поводы ничего не делать (болтать в форумах например).
Каким образом конфа в svn будет соответствовать действительности после изменения в конфигураторе полей справочника например?
И как Вы объединили пять конфигураций в одну не переписав ни одной строчки?
Это не слияние и слипание.
7. desty (lustin) 17.07.07 15:03
>> И как Вы объединили пять конфигураций в одну не переписав ни одной строчки?
1. Где это написано, что строчки кода не переписаны

>> Каким образом конфа в svn будет соответствовать действительности после изменения в конфигураторе полей справочника например?

2. Не понял вопроса. Видимо Вы даже не пробовали разбирать/собирать конфигурацию

Короче будет что по делу - милости просим.
8. evadm (evadm) 17.07.07 15:06
Я то пробовал а вот вы похоже спите на работе, поэтому вопрос не понимаете.
Это по делу? Могу ещё добавить.
9. desty (lustin) 17.07.07 15:10
10. evadm (evadm) 17.07.07 15:15
Из за таких как вы настояших программистов не ценят.
Которые молча дело делают.
А вы только пыль в глаза пускаете яркими картинками.
Вы такой же "хороший программист" который здесь (на сайте) в одноименной статье описан.
В 1С 7.7 коллективная разработка невозможна и нечего в заблуждение людей вводить.
12. evadm (evadm) 17.07.07 15:35
И все в этой теме признают что глючит и надо дописывать.
13. Сhe Burashka (CheBurator) 17.07.07 16:12
автор, если можно - разверните немного
> SVN интегрируется с trac
14. Сhe Burashka (CheBurator) 17.07.07 16:13
+1 ибо почитал подробно написанное то, что давно интересовало...
15. desty (lustin) 17.07.07 16:26
2 Che:
>>автор, если можно - разверните немного
Это тема отдельной статьи.

Вечером назло всем врагам распишу установку trac (интегрированным с репозитарием разобранной конфигурации 1С) в рамках локальной сети.

А также свой опыт по использованию бесплатных серверов с установленным trac

16. desty (lustin) 17.07.07 16:27
если конечно support позволит.