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

26.07.21

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

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

Скачать файл

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

Наименование По подписке [?]
ConversionRulesLoader
.epf 79,66Kb
82
82 Скачать бесплатно

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

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

50722 45650 руб.

04.08.2015    165081    384    275    

369

Перенос данных 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). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    23109    159    48    

117

SALE! 10%

Перенос данных 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 руб.

12.06.2017    140126    782    295    

409

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

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

84000 руб.

19.08.2020    24362    23    1    

25

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 | Можно проверить на вашем сервере перед покупкой

50722 45650 руб.

15.04.2019    71494    180    148    

120

SALE! 10%

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    194143    149    242    

279

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 предприятий! |

50722 45650 руб.

31.10.2014    236014    99    333    

304

SALE! 10%

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

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

48278 43450 руб.

03.12.2020    36006    90    62    

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


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