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

26.07.21

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

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

Бесплатные

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

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

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

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

418

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    78696    211    162    

150

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    177848    327    274    

396

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

27660 руб.

12.06.2017    152159    887    302    

461

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    41653    119    75    

112

SALE! 10%

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

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

55778 50200 руб.

31.10.2014    242583    111    350    

316

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

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

12000 руб.

25.09.2016    86126    370    257    

310

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    58954    67    120    

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


А не кто не пробовал снимать совместимость и включать историю данных?
Для отправки сообщения требуется регистрация/авторизация