Скрипт объединения правил регистрации (Python)

Публикация № 1121352

Разработка - Обмен данными 1С - Перенос данных из 1C8 в 1C8

правила регистрации сравнение объединение

12
Python скрипт для объединения правил регистрации. Написан, т.к. не удалось найти готовый инструмент.

UPD. 20190917 Доработан скрипт сравнения/объединения. Добавлен контроль уникальности кодов справочника "Правила регистрации объектов". В предыдущем варианте при загрузке правил в конфигурацию "Конвертация данных 2" из-за дублирующихся кодов возникали ошибки. Скрипт в статье обновлен.

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

 
 Скрипт

Реализованы три режима работы:

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

Пример объединения в этом режиме:

 
 Правила первого файла

 

 Правила второго файла
 
 Результат объединения в режиме soft

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

 
 Результат объединения в режиме hard

- manual, в этом режиме формируется заготовка для ручного объединения правил.

 
 Результат объединения в режиме manual

 

Приветствуется любая критика, кроме злословия. При обнаружении ошибок, если не затруднит, сообщите.

12

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. VmvLer 11.09.19 18:06 Сейчас в теме
В каких случаях это можно применить в реальной практической работе кроме реплики в баре:
"Я пишу обмены с 1С на питоне"?
2. milut 28 11.09.19 21:33 Сейчас в теме
(1)не надо писать обмены на питоне. Это просто сравнение двух xml файлов с учётом смысловой нагрузки узлов. Скрипт появился в результате задачи объединить две версии правил регистрации разработанные параллельно. У нас было так: одна задача на объёмную доработку плана обмена и пока она решалась в боевые правила подкинули ещё несколько объектов и изменили часть существующих. Правила конвертации слили обработкой в конфигурации КД2, а для правил регистрации такого инструмента не нашлось.
user614213_vluminous; VmvLer; zeegin; +3 Ответить
4. VmvLer 12.09.19 09:40 Сейчас в теме
(2) Спасибо, сейчас вкратце понятно где это можно применить.

Читать оргоменную статью чтобы докопаться до сути иногда лень.
3. bomba 12.09.19 07:13 Сейчас в теме
(1) к питону пора относиться как к cmd скриптам. Хотел сначала тоже съязвить, но вспомнил, что под питон есть километры готового кода, чем и воспользовался автор.

Автору респект за публикацию кода в теле публикации, а не за только за $m.
davdykin; Legavaz; +2 Ответить
5. user614213_vluminous 18.09.19 08:51 Сейчас в теме
Может не слишком внимательно всматривался, но по скрипту два вопроса:
- это какая версия питона использована?
- наверняка, что в какой-то среде скрипт записывался, собирался, проверялся... интересно в какой именно, просто для понимания, а в чем коллеги на практике пишут питон-скрипты (явно же, что не в блокноте и не в текстовом окне 1С-ки)?
6. milut 28 18.09.19 10:46 Сейчас в теме
(5)версия python 3.7
MS Visual Studio Community, но только потому, что она уже есть на компе и не хотелось добавлять еще одну IDE.
user614213_vluminous; +1 Ответить
Оставьте свое сообщение