Выгрузка / загрузка правил Конвертации данных 2.1 в файлы / из файлов (для Git, SonarQube, VS Code и т.д.)

26.07.21

Интеграция - Обмен между базами 1C

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

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

Наименование Файл Версия Размер
ConversionRulesLoader
.epf 79,66Kb
80
.epf 1.0.1 79,66Kb 80 Скачать бесплатно

Проблематика (Как я до этого дошел)

Когда я начал вплотную заниматься разработкой правил обмена на проекте, мне захотелось версионировать правила, чтобы видеть историю изменений. На первых парах я выгружал в Git просто файлы правил целиком, как есть, даже без доработок, которые предлагал в своей статье Станислав Ганиев.

Однако это было несерьезное решение, версионировать и работать с одним огромным файлом такая себе затея. И тем более, когда к разработке подключился коллега, было решено делать декомпозицию правил на структуру папок и файлов, чтобы получился полноценный репозиторий проекта с файлами xml и bsl.

На ИнфоСтарте уже есть несколько разработок на эту тему, от:

Это все очень крутые инструменты, но они требуют изучения и установки дополнительных компонентов, по крайней мере OneScript. Хотелось взять инструмент для простого 1Сника, который сможет запустить его в любой базе КД 2.1, т. е. в виде внешней обработки.

Такого инструмента не нашел, поэтому решил сделать сам. Ну как, сам, взял за основу проект Никиты Коротаева, и превратил код OneScript в обычный 1С. Благо, языки почти идентичны, чтобы запустить обработку в первый раз, пришлось изменить несколько строк. Дальше уже пошла работа над удобством использования и разные усовершенствования. Что получилось в итоге расскажу дальше.

 

Интерфейс обработки

 

Интерфейс Обработки

Основное (и единственное) окно программы представляет собой таблицу с добавленными конвертациями. Настройки сохраняются, поэтому можно добавить нужные правила один раз и навсегда. Напротив каждой конвертации вы указываете путь, куда выгружать /откуда загружать разобранные правила.

Ну и тут же в строке есть кнопки Выгрузить в папку и Загрузить из папки. Кстати, не смог сделать, чтобы кнопки были активны всегда, а не только при нажатии, почти не работал с обычными формами. Может, кто-то подскажет, можно ли сделать как-то лучше?

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

 

Отличия от исходного инструмента

В исходных скриптах Никиты я сделал несколько доработок:

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

И последнее, что касается как раз галки из интерфейса обработки. Добавил возможность выгрузки в файлы bsl обработчиков описание параметров, чтобы было удобнее работать во внешних редакторах (VS Code, Sublime...), были подсказки, не надо было лезть в справку за пояснениями. Вот пример описания для обработчика перед выгрузкой объекта:

#Область Параметры
#Если Клиент И Сервер Тогда
    Отказ = Ложь; // Булево. Если установить значение Истина, то выгрузка объекта производится не будет
    Параметры = Новый Структура(); // Структура, в которой хранятся переменные доступные во всех обработчиках
    ИмяПКО = ""; // Строка. Имя правила конвертации объектов, указанное по умолчанию в правиле выгрузки данных. При
    // выгрузке конкретных объектов может быть изменено
    Правило = Неопределено; // ссылка на данное правило выгрузки данных
    ВходящиеДанные = Неопределено; // произвольные вспомогательные данные, инициализированные в обработчике «Перед
    // обработкой» правила выгрузки данных как ИсходящиеДанные.
    ИсходящиеДанные = Неопределено; // произвольные вспомогательные данные, передаваемые правилу конвертации объекта.
    // В обработчиках ПКО данная информация будет доступна как переменная ВходящиеДанные
    Объект = Неопределено; // Произвольный. Выгружаемый объект. Может быть переопределен или назначен непосредственно
    // в обработчике.
КонецЕсли;
#КонецОбласти

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

 

Работа с правилами в Sublime

 

Варианты использования

1. В первую очередь, конечно, этот инструмент делался для версионирования и совместной разработки через Git. Командная разработка с его применением выходит на новый уровень: не нужно постоянно договариваться о совместных доработках, заниматься сложным переносом и объединением, бояться потерять свои наработки. В качестве гит-клиента я использую SourceTree, мне нравится его графический интерфейс.

2. Можно выгружать тексты обработчиков в SonarQube или другие системы для контроля качества кода. 

3. Также можно открыть всю папку с правилами или отдельные файлы в таких редакторах как VS Code или Sublime Text, и производить, например, удобный поиск по всем правилам. А с установленным плагином BSL LS можно редактировать тексты с автодополнением, подсказками и проверками.

4. Еще отлично может помочь Консоль кода на основе Monaco от salexdv. Например, вы открываете файл обработчика после загрузки документа в этой консоли, запущенной в базе-приемнике. Тогда у вас работает не только подсказка ввода по ключевым словам, но и вы находитесь в контексте конфигурации: будут видны общие модули, реквизиты объектов, конструктор запросов и т.д.

 

Gitflow

Процесс совместной разработки

Расскажу кратко о процессе, который мы используем при командное работе с правилами. По сути, это почти классический Gitflow.

  • В базе КД2 есть, как минимум, следующие варианты правил: рабочие, а также отдельные для каждого разработчика.
  • В гите есть две постоянных ветки: master, где лежат полностью проверенные рабочие правила и develop с правилами, по которым закончена разработка.
  • Когда разработчик начинает делать новую задачу, он "отпочковывается" от ветки develop, создает свою feature-ветку с именем задачи.
  • В этот момент в его локальной папке репозитория лежат разобранные правила из ветки develop.
  • С помощью Обработки в КД2 разработчик загружает правила из файлов в свою копию правил конвертации.
  • Начинается сама работа над правилами. В процессе работы можно делать промежуточные коммиты в feature-ветку выгружая правила через Обработку. В гит-клиенте можно посмотреть изменения и сделать коммит с комментарием.
  • Когда разработка по задаче закончена, делается последний коммит и происходит слияние feature-ветки в develop. Лучше использовать классический merge, с коммитом, даже если возможен fast-forward, т. е. когда изменений в develop не было. Если происходят какие-то конфликты в доработках, надо будет их разрулить в этот момент, однако из-за разделения на множество отдельных файлов, их вероятность сильно падает.
  • Когда совместно разработанные правила проверены и пора обновлять рабочие, происходит слияние ветки develop в master, аналогично предыдущему пункту. Правила из ветки master через Обработку загружаются в рабочие правила в КД2 и вставляются в продуктивные базы.

 

Заключение и благодарности

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

Отдельное спасибо хочу сказать:

Репозиторий на GitHub: https://github.com/KonstantinHeinrich/ConversionRulesLoader

Конвертация Данных Git SonarQube VS Code

См. также

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

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

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 36520 руб.

04.08.2015    159731    364    267    

345

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134977    721    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68447    180    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34180    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46322    196    64    

158

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9217    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20266    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231440    124    327    

296
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. karpik666 3761 26.07.21 11:22 Сейчас в теме
Спасибо за реализацию. Правда, не совсем понятно, почему не сделать функционал не отдельной обработкой, а включить его в форму "сохранить правил обмена" в КД 2, сами используем запуск git rules при этом.
Прикрепленные файлы:
2. CyberCerber 853 26.07.21 12:58 Сейчас в теме
(1) Отдельной обработкой, чтобы каждый мог скачать и у себя открыть, поставить. Я очень давно работал с конфами в обычном приложении, там же расширение не сделаешь? А всю конфигурацию, думаю, я не имею права выкладывать.
Мы тоже встроили в свою конфу, но в другом месте, тут может каждый для себя решить.
3. karpik666 3761 26.07.21 12:59 Сейчас в теме
(2) понятно, ну можно сделать как файл обновления, КД 2, все равно практически не обновляется, файл обновления cfu можно выкладывать на сайте.
4. CyberCerber 853 26.07.21 13:03 Сейчас в теме
(3) Да, интересное решение, но вдруг у кого-то другая версия КД или уже измененная. Мне кажется, встроить обработку в конфу и вывести кнопку куда нужно проблемой быть не должно. Если еще будут пожелания, подумаю над вашим вариантом.
Fox-trot; +1 Ответить
5. tormozit 7138 28.07.21 16:52 Сейчас в теме
(2) Расширять обычные формы нельзя, но добавлять в расширении можно.
6. tormozit 7138 28.07.21 16:54 Сейчас в теме
Идея - открывать обработчик на редактирование через консоль кода (например из портативного ИР) в основной базе через для соответствующей конфигурации через OLE - очень здравая особенно для больших обработчиков. Когда то давно мы так делали для внутренних задач.
7. marv-ua 24.01.22 17:51 Сейчас в теме
Похоже что есть ограничение на максимальную длину имени файла.
Падает с ошибкой:
Ошибка при вызове метода контекста (save)
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(344)}: ЭлементыКоллекции.save(ИмяФайла);
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(275)}: ЗаписатьЭлементВФайл(ИсходныйЭлемент, ИсходныйКаталог + ИмяЭлементаКоллекции + ".xml");
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(257)}: РазобратьКоллекциюОбъектов(Элемент, КаталогКоллекции);
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(255)}: РазобратьКоллекциюОбъектов(Элемент, КаталогКоллекции + Элемент.nodeName + "\");
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(266)}: РазобратьКоллекциюОбъектов(Элемент, КаталогКоллекции);
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(255)}: РазобратьКоллекциюОбъектов(Элемент, КаталогКоллекции + Элемент.nodeName + "\");
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(255)}: РазобратьКоллекциюОбъектов(Элемент, КаталогКоллекции + Элемент.nodeName + "\");
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(174)}: РазобратьКоллекциюОбъектов(Элемент, КаталогИсходныхКодов);
{ВнешняяОбработка.ConversionRulesLoader.МодульОбъекта(24)}: ЗаписатьКлючевыеСвойстваПравилОбмена();
{ВнешняяОбработка.ConversionRulesLoader.Форма.Форма.Форма(40)}: ВыгрузитьПравила(ТД.Конвертация, ТД.Каталог);
по причине:
Произошла исключительная ситуация (msxml6.dll): Системе не удается найти указанный путь.
Показать


Пока думаю как можно обойти чтоб не ковырять сохранение.
8. CyberCerber 853 24.01.22 17:56 Сейчас в теме
(7) Ясно. Постараюсь найти время, чтобы посмотреть.
Чему равно ИмяФайла здесь?
10. tambu 65 04.03.23 23:07 Сейчас в теме
(7) Тоже сталкивался с ограничением на длину файла. Сделал через консольную команду subst, пути к папке присваивается виртуальная буква диска.
9. KilloN 56 23.06.22 13:37 Сейчас в теме
мне захотелось версионировать правила, чтобы видеть историю изменений


А не кто не пробовал снимать совместимость и включать историю данных?
Оставьте свое сообщение