"Конвертация данных" + Git. Решение проблемы различий в файлах

07.11.19

Разработка - Инструментарий разработчика

Как известно, типовая конфигурация «Конвертация данных» обладает одним недостатком, мешающим работать с ней в Git-е. Если выгруженные из нее правила обмена загрузить в другую КД, а потом снова выгрузить, то полученные два файла будут очень сильно отличаться друг от друга, и при сравнении (diff) доработок будет невозможно провести код-ревью, равно как найти сами изменения, которые закоммитил разработчик.

Скачать файлы

Наименование Файл Версия Размер
Файл конфигурации "Conversion plus"
.cf 5,55Mb
56
.cf 1.1 5,55Mb 56 Скачать

В предлагаемой доработке реализованы инструменты, позволяющие получать идентичные файлы правил при их последовательной загрузке/выгрузке разными разработчиками, что позволяет работать в КД в группе с использованием Git-а.

Что было изменено и добавлено

1. Исправлена ошибка: Исчезающий Приемники в ПКС при отсутствии Источника

Если в ПКС необходимо указать только Приемник без Источника (Например, значение заполняется в коде обработчика), то при выгрузке и загрузке таких правил Приемник очищался (Рис. 1).

Эта же ошибка проявлялась и тогда, когда в настройках ПКС разработчику нужно, чтобы Источник и Приемник различались – при повторной загрузке правил Приемник приравнивался к источнику.

2. Установлено единообразие при выгрузке: Конечные пробелы в строках

При выгрузке правил не однозначно производилась выгрузка концовок строк XML для атрибутов и обработчиков конвертации, из-за чего правила, выгруженные сразу после разработки, и повторно выгруженные после загрузки их в КД, могли отличаться пробелами в конце строковых значений.

То же самое можно было наблюдать и при выгрузке кодов и наименований для ПВД, ПКО, ПКС, ПКЗ, ПОД, ПКГО, ПКГС и их групп.

Исправлено: при выгрузке все строки дополнительно обрезаются функцией СокрЛП().

3. Добавлен инструмент адаптации под Git: Порядок элементов и лишний коммит с датой

Стандартно, выгрузка объектов конвертации (ПКО, ПКС и т.д.) производится в порядке, отсортированном по реквизиту «Порядок выполнения», который можно найти на закладке «Дополнительно» любого объекта.

Проблема типовой «Конвертации данных» состоит в том, что при разработке правил обмена для новых элементов при некоторых обстоятельствах (каких именно, не стал выяснять) реквизит «Порядок» может быть заполнен одинаковым для двух соседних элементов, или не заполнен вовсе (остается нулевой).

При загрузке таких правил пустым значениям «Порядка» КД сама присваивает новые значения, а при последующей выгрузке правил, из-за одинаковых номеров, сортировка элементов дает совершенно иной результат. Как следствие, Git показывает много изменений целыми блоками, которых на самом деле нет с точки зрения функционала.

Для решения этой проблемы, в меню «Отладка обработчиков», после пункта «Настройка» добавлен новый – «Адаптация под Git-flow». Основное его предназначение – выполнение корректировки реквизитов «Порядок» у всех объектов текущей конвертации (Рис. 2).

Также, дополнительно можно указать необходимость округления даты обновления правил при каждой выгрузке в репозиторий. Это дополнительно поможет избежать самого часто встречающегося изменения при коммите (Рис. 3).

Порядок внедрения

1. В рабочей конфигурации включаем возможность внесения изменений;

2. Сравнением/объединением загружаем приложенный файл конфигурации, принимаем изменения. Если ваша конфигурация уже изменена, то необходимо перенести доработки только измененных и новых объектов (см. следующий раздел);

3. Таким же образом должны обновить свои конфигурации КД все разработчики вашей команды;

4. Запускаемся в пользовательском режиме, и для всех правил обмена выполняем корректировку нумерации порядка выгрузки;

5. Выполняем первый коммит откорректированных правил обмена, чтобы все разработчики группы работали с идентичными файлами (пункты 4 и 5 достаточно выполнить одному разработчику из команды, остальные получат изменения из Гита (pull)).

Техническая информация

Для тех, кто уже залез в конфигурацию КД или пользуется другими сторонними доработками.

Перечень доработанных и добавленных объектов:

- Новые общие модули bnГитфлоу и bnГитфлоуПовтИсп

- Изменена общая форма ПравилаОбмена

- Новая общая форма bnНастройкиГитфлоу

- Изменены обработки ВыгрузкаКонвертации и ЗагрузкаКонвертации

Изменения выполнены только в коде модулей, диалоги не затронуты.

Все измененные и добавленные объекты помещены в отдельную подсистему bnГитфлоу.

Предназначен для версии "Конвертации данных" 2.1.8.2

 

Новое в версии от 18.12.2018

1. Опция контроля необходимости корректировки порядков элементов вынесена в настройки;

2. В форме выгрузки правил обмена добавлен флажок "Сохранять оригиналы XML". Позволяет одновременно выгружать правила обмена/регистрации в виде исходных XML (например, для версионирования в Git), и в виде архива zip (для загрузки в рабочий контур).

3. В форме выгрузки правил теперь корректно сохраняются/восстанавливаются пути к файлам, в ходящим в комплект zip-поставки. Раньше, при выборе других правил конвертации, правила корреспондента и правила регистрации оставались прежними.

4. Реализована возможность редактирования кода обработчиков в VS Code с установленным плагином 1C:BSL. Возможность появилась во всех формах, где присутствуют настройки обработчиков событий. Перед первым использованием необходимо зарегистрировать VS Code как программу по умолчанию для файлов с расширением *.bsl.

 

Новое в версии от 07.11.2019

1. Оптимизирован алгоритм перенумерации "Порядка" элементов для единообразной выгрузки в Git. Раньше, если сбивался номер одного элемента (ПКО, ПКС, и т.д.), то корректировка правил обмена вызывала изменение реквизита "Порядок" у большинства элементов конвертации. Теперь изменения затрагивают только элементы с неуникальным и нулевым "Порядком", что приводит к минимальным изменениям в коммите.

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

3. Устранены выявленные мелкие недочеты в алгоритме выгрузки правил.

 

Конвертация данных КД+Гит КД+Гитфлоу + Гит Гитфлоу Gitflow Git-flow и правила обмена в КД

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119912    656    389    

701

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7007    20    6    

37

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    3246    10    1    

31

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177341    1070    0    

846

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99203    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    17912    6    8    

38

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    27945    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23489    15    15    

31
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1447 08.06.17 16:35 Сейчас в теме
+ за Гит и решение проблемы больших различий в файлах
MGraf; stas_ganiev; +2 Ответить
2. pbazeliuk 1954 08.06.17 19:55 Сейчас в теме
Функционала и описания применения методики Git-flow не увидел.
awk; artbear; +2 Ответить
3. stas_ganiev 1768 09.06.17 01:49 Сейчас в теме
(2) Я не ставил перед собой целью описание технологии Git-flow, я просто решил проблему невозможности применения КД в группе при использовании Гита, этим и поделился. Описание технологии - это тема отдельной статьи, на эту тему уже есть немало вебинаров и статей, в том числе ваша, Петр :)
Somebody1; abasovit; brr; Saint13; Vlade89; gulchitai; +6 Ответить
7. pbazeliuk 1954 09.06.17 09:57 Сейчас в теме
(3) При прочтении заголовка ожидал интеграцию с git, плюс, конечно, заработали. Надеюсь следующая статья будет об этом ;)
10. user757186 13.06.17 13:37 Сейчас в теме
(3) это вам, видимо, намекнули, что термин Gitflow в заголовке не относится к статье никак. Gitflow - это только методология работы с DVCS, она даже к Git не привязана.

Вы решили проблему неидемпотентного сохранения, результат этой работы может использоваться в любой VCS и с любой методологией.
awk; stas_ganiev; artbear; +3 Ответить
11. stas_ganiev 1768 15.06.17 10:49 Сейчас в теме
(10) Спасибо за конструктивное замечание. Заголовок поправил
12. user757186 15.06.17 11:31 Сейчас в теме
(11) А вам спасибо за разработку, очень нужную проблему решили
4. gulchitai 09.06.17 02:17 Сейчас в теме
Плюсую, молодец!
stas_ganiev; +1 Ответить
5. пользователь 09.06.17 03:06
Сообщение было скрыто модератором.
...
6. пользователь 09.06.17 03:08
Сообщение было скрыто модератором.
...
8. bforce 481 09.06.17 16:57 Сейчас в теме
Файл правил в итоге остается один большой или он разбивается на фрагменты?
9. stas_ganiev 1768 10.06.17 02:28 Сейчас в теме
(8)файл остаётся один, только уменьшается на несколько килобайт за счёт обрезания пробелов в конце строк
13. LexSeIch 210 08.09.17 04:48 Сейчас в теме
Спасибо за публикацию. Берем в копилку знаний.
stas_ganiev; +1 Ответить
14. Redinternational 86 08.09.17 10:29 Сейчас в теме
Полезное решение, спасибо!
15. d4rkmesa 19.12.18 15:47 Сейчас в теме
Какая крутотень. Попробую освоить. Спасибо, что довели это дело до конца, все-таки. Отсутствие даже примитивного синтаксического контроля в КД 2 и нюансы групповой разработки иногда из себя выводили - порой проще было в Notepad++ что-то поправить, если нужно было быстро. Сейчас наконец можно все привести к единому знаменателю.
16. fatman78 17 09.06.22 15:36 Сейчас в теме
17. fatman78 17 06.10.22 18:50 Сейчас в теме
Еще один вариант реализации разборки/сборки на файлы для версионирования Git в виде внешней обработки
Оставьте свое сообщение