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

26.07.21

Интеграция - Перенос данных 1C

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
ConversionRulesLoader
.epf 79,66Kb ver:1.0.1
83
83 Скачать бесплатно

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

Когда я начал вплотную заниматься разработкой правил обмена на проекте, мне захотелось версионировать правила, чтобы видеть историю изменений. На первых парах я выгружал в 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! 10%

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

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

55778 50200 руб.

04.08.2015    166489    333    277    

373

SALE! 20%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141531    798    297    

419

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

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

35000 руб.

15.12.2021    24028    169    51    

128

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

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

35000 руб.

23.07.2020    51273    228    69    

185

SALE! 10%

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56210    59    105    

61

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171178    303    257    

378

SALE! 15%

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186886    589    509    

526

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    80677    311    250    

264
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. karpik666 3854 26.07.21 11:22 Сейчас в теме
Спасибо за реализацию. Правда, не совсем понятно, почему не сделать функционал не отдельной обработкой, а включить его в форму "сохранить правил обмена" в КД 2, сами используем запуск git rules при этом.
Прикрепленные файлы:
2. CyberCerber 872 26.07.21 12:58 Сейчас в теме
(1) Отдельной обработкой, чтобы каждый мог скачать и у себя открыть, поставить. Я очень давно работал с конфами в обычном приложении, там же расширение не сделаешь? А всю конфигурацию, думаю, я не имею права выкладывать.
Мы тоже встроили в свою конфу, но в другом месте, тут может каждый для себя решить.
3. karpik666 3854 26.07.21 12:59 Сейчас в теме
(2) понятно, ну можно сделать как файл обновления, КД 2, все равно практически не обновляется, файл обновления cfu можно выкладывать на сайте.
4. CyberCerber 872 26.07.21 13:03 Сейчас в теме
(3) Да, интересное решение, но вдруг у кого-то другая версия КД или уже измененная. Мне кажется, встроить обработку в конфу и вывести кнопку куда нужно проблемой быть не должно. Если еще будут пожелания, подумаю над вашим вариантом.
Fox-trot; +1 Ответить
5. tormozit 7231 28.07.21 16:52 Сейчас в теме
(2) Расширять обычные формы нельзя, но добавлять в расширении можно.
6. tormozit 7231 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 872 24.01.22 17:56 Сейчас в теме
(7) Ясно. Постараюсь найти время, чтобы посмотреть.
Чему равно ИмяФайла здесь?
10. tambu 70 04.03.23 23:07 Сейчас в теме
(7) Тоже сталкивался с ограничением на длину файла. Сделал через консольную команду subst, пути к папке присваивается виртуальная буква диска.
9. KilloN 59 23.06.22 13:37 Сейчас в теме
мне захотелось версионировать правила, чтобы видеть историю изменений


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