Преамбула.
Описанная в статье методика не претендует на звание полноценной системы контроля версий. При написании статьи преследовались две цели:
- анализ существующих методов контроля изменений внешних обработок, описание их особенностей;
- описание альтернативного способа контроля изменений.
Существующие инструменты контроля версий внешних обработок.
Я классифицировал существующие системы контроля версий внешних обработок по двум признакам - место хранения версий (т.е. сам инструмент контроля) и вид хранения внешних обработок - бинарный/текстовый:
Место хранения версий | Тип хранения | Примечание | Примеры инструментов |
1. Под одной из существующих систем контроля версий (git, mercurial, svn и т.д.). |
Бинарный |
Т.к. данные хранятся в бинарном виде, то для сравнения используется внешний инструмент сравнения. Из минусов подобного подхода можно отметить хранение данных в бинарном виде, в результате чего часть преимуществ системы контроля версий теряется. |
|
2. Под одной из существующих систем контроля версий (git, mercurial, svn и т.д.). |
Бинарный и текстовый |
Для хранения используются те же системы контроля версий, что и в пункте 1, но перед сохранением изменений (коммитом) происходит парсинг и конвертация бинарного файла обработки в обычные текстовые файлы. Таким путем идут авторы публикации V8Commit. Плюсы - полноценное использование git'а из-за хранения исходников в текстовом виде. Минусы - отсутствие обратной "сборки" обработки (как следствие - нельзя внести изменения в модуль объекта сторонними средствами, смержить изменения с помощью утилиты сравнения и т.д.), много зависимостей (используется V8Reader + отдельная служебная база 1С + обвязка всего этого в виде скриптов). По-моему мнению этот инструмент наиболее приближен к полноценному контролю версий внешних обработок из всех. |
|
3. В отдельном типовом хранилище конфигураций. |
Бинарный (внутренний формат хранилища конфигурации 1С) |
Создается новое пустое хранилище конфигурации, каждая новая обработка добавляется как встроенная в соответствующую ветвь конфигурации. Плюсы: привычный инструмент разработчика 1С. Минусы: если в конфигурации, где хранятся внешние обработки, нет справочников, которые используются в реквизитах обработки, то тип данных реквизитов будет выставлен по-умолчанию, т.е. "Строка" (фактически это означает, что если в ваших обработках есть ссылочные типы, то данный способ не подходит). Также, можно отметить, что для добавления новой обработки необходим исключительный захват корня конфигурации (как следствие - невозможность одновременного добавления новых обработок различными пользователями). |
Альтернативный способ контроля версий.
Ниже речь пойдет об альтернативном варианте хранения версий внешних обработок, а именно о хранении версий обработок в самой информационной базе.
Практически во всех типовых конфигурациях существует подсистема версионирования объектов. Если включить данный механизм для справочника внешних обработок, то мы получим историю изменений каждой обработки во времени (в разрезе даты изменения, номера и автора). Также, в блоке версионирования будет храниться сам бинарный файл внешней обработки. Это означает, что при необходимости мы можем провести сравнение двух версий внешней обработки.
Приложенная к публикации обработка написана на обычных формах и протестирована на конфигурации УПП 1.3.56.1, но данную методику можно реализовать на любой конфигурации, содержащей в себе подсистему версионирования. Для сравнение двух версий обработок использовалась программа V8Viewer.
Плюсами данного подхода являются простота внедрения и использования (достаточно включить механизм версионирования для справочника внешних обработок). Из минусов - все тоже бинарное хранение данных и отсутствие инструментов для параллельной разработки (одновременное редактирование одного объекта, ветвление и т.д.).
Как этим пользоваться.
Перед использованием обработки следует произвести следующие настройки:
- Для сравнения внешних обработок используется утилита V8 Viewer, поэтому для корректного сравнения версий дополнительных обработок следует установить и настроить данный инструмент (подробности данной операции описаны в публикации v8Viewer).
- Включить версионирование для справочника внешних обработок:
- Указать путь к обработке сравнения (по нажатию кнопки "Настройки"):
Принципиально на этом этапе у нас уже готова система контроля версий - теперь любое изменение внешней обработки в информационной базе будет сохраняться в разрезе версии обработки, даты изменения и автора. Чтобы сравнить две версии внешней обработки следует выбрать в основном окне внешнюю обработку из одноименного справочника, указать две версии и нажать "Сравнить версии":
В результате будет выведено окно программы V8Viewer, где будет возможность сравнить две версии:
Альтернативным вариантом использования является выгрузка версии в файл (это может потребоваться для восстановления старой версии обработки). Для выполнения данной операции нужно выбрать версию и нажать "Выгрузить версию".
Как это может помочь.
- Предложенная методика даст ответы на вопросы когда, кто и что именно менял в каждой версии внешней обработки (с возможностью сравнить код обработок, макеты и т.д.).
- Обработка позволит выгрузить произвольную версию обработки. Это позволит при необходимости "откатиться" на старую версию, если новая содержит ошибки или оказалась битой (такое бывает, когда по ошибке обработка затирается совершенно другой).