gifts2017

Мастер XML-обмена

Опубликовал Rom Shpakoff (Lancelot-2M) в раздел Обмен - Перенос данных из 1С7.7 в 1C8.X

Функциональный аналог конвертации данных в кармане - комплекс обработок предназначенный для быстрой и удобной разработки обмена данными между информационными базами 1С.

        Представляю вам Мастер XML-обмена - комплекс обработок для быстрой и удобной разработки обмена данными между информационными базами 1С.

 

Не вдаваясь в сравнения с конвертацией данных, перейду к требованиям заложенным и реализованным в разработке:

  • "человекочитаемый" хорошо документированный формат XML-файла с данными;
  • структура файла данных не меняется из-за настроек "правил конвертации";
  • обязательное наличие инструмента просмотра содержимого и структуры файла данных;
  • исходными данными для настроек обмена являются и файлы со структурой метаданных конфигураций ИБ-источника и ИБ-приемника, и файлы с данными - на случай выгрузки виртуальных объектов;
  • простые интуитивно-понятные визуальные настройки, которых хватает на 95% всех возможных ситуаций обмена;
  • абсолютная прозрачность контекста исполнения кода обработчиков событий;
  • результатом настроек является автоматически генерируемый код загрузки - понятный, простой в отладке и доработке "ручками";
  • никаких xsd и xdto - для чтения и записи используется DOMDocument - это требование проистекает из предыдущего;
 

Разработка обмена в общем случае сводится к следующим этапам:

  • выгрузка структуры метаданных конфигураций ИБ источника и приемника в XML обработкой АнализаторКонфигурации;
  • настройка и/или доработка обработки ШаблонВыгрузки, которая выгружает данные в XML;
  • анализ состава и структуры данных в обработке ПросмотрщикФайлаДанных (необязательно); 
  • настройка соответствия объектов, их свойств и значений визуальными средствами в обработке ГенераторКода;
  • генерация кода загрузки обработкой ГенераторКода;
  • вставка автоматически сгенерированного кода в обработку ШаблонЗагрузки;

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

 

И озвучу очевидные системные требования в связи с использованием DOMDocument :

 - выгрузка метаданных, выгрузка данных и загрузка данных выполняются на стороне сервера, значит сервер приложения 1С должен работать в Windows-системе.

- ПросмотрщикФайлаДанных и ГенераторКода работают с XML на стороне клиента - значит для их использования клиентская часть 1С Предприятия должна запускаться в Windows-системе.

 

 

Небольшой экскурс в инструментарий.

 

Обработка АнализаторКонфигурации -  выгружает в XML-файл структуру метаданных конфигурации:

ОФ

УФ

7.7

 

 

Обработка ШаблонВыгрузки - выгружает данные в XML-файл. 

Шаблон выгрузки умеет выгружать данные, выбранные введенным в форме запросом - со всеми возможными сложными условиями выборки, которые нам позволяет реализовать язык запросов. Предполагается что, если обработка выгрузки предоставляется пользователям, то из нее удаляется эта возможность, а текст запроса жестко вшивается в код.

Понятно, что в случае обмена между очень отличными по структуре базами (ну, например, ИТРП 7.7 - ЕРП 2.0) выгрузка из базы реальной структуры данных может быть не применима - строки документа спецификации визуальными средствами в подчиненные маршрутной карте элементы справочника операции, к сожалению, не превратить. Поэтому в модуле обработки ШаблонВыгрузки есть уже готовые процедуры для выгрузки виртуальных данных - ЗаписатьВиртуальныйРеквизит, ЗаписатьВиртуальныеТабличныеЧасти, ЗаписатьВиртуальныйОбъект.

В общем случае, я думаю, структура виртуальных данных должна быть максимально приближена к структуре данных в ИБ-приемнике - по крайней мере я делаю так.

Это достигается простыми, но, временами, объемными доработками ШаблонаВыгрузки, и под простотой доработок я понимаю именно простоту алгоритмов.

Зато код загрузки полученнный на выходе ГенератораКода доработок не потребует.

 

 ОФ

 

УФ

 

7.7 - лог выгрузки пишется в окно сообщений

 

При этом файл с данными весит на 30-40% меньше, чем те же данные в формате конвертации данных.

 

 

Обработка ПросмотрщикФайлаДанных - средство просмотра состава и структуры выгруженных данных:

 ОФ

 

УФ

 

 

Обработка ГенераторКода


 XML-файлы загружаются в обработку ГенераторКода.

В генераторе кода визуальными средствами настраивается соответствие объектов источника объектам приемника.

Что может ГенераторКода:

  • - поддерживается настройка (простым перетаскиванием, в основном) соответствий между любыми объектами и значениями: справочник в перечисление и наоборот, простой тип в справочник или перечисление и наоборот,  ну и между объектами одного вида само собой, перенос движений, записей регистров - легко и интуитивно-понятно.
  • - поддерживается настройка соответствия значений реквизитов простых типов (например кода в плане счетов - типовая ситуация при переносе остатков по счетам из баз 7.7).
  • - поддерживается загрузка реквизитов шапки из ТЧ/Движений/Периодических реквизитов и наоборот, реквизиты ТЧ могут одновременно грузиться в ТЧ и в шапку
  • - реквизиты шапки могут одновременно грузиться в шапку и в несколько ТЧ/Движений/Периодических реквизитов.  
  • - поддерживается слияние нескольких типов источника в один тип в приемнике и наоборот.


И все это(настройка соответствий) - визуальными средствами - без строчки кода. Чего генератор не умеет - так это грузить одну ТЧ в несколько и наоборот - сливать несколько ТЧ в одну... но всегда можно при выгрузке добавить виртуальную ТЧ объекту.


Но... у генератора кода есть только набор обычных форм. Если разработка будет востребована - задумаюсь над управляемыми...


Вот ниже ряд принтскринов генератора кода для интересных и простых случаев:

Начальная страница генератора кода

 

Настройка соответствий непосредственно выгружаемых объектов

 

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

Суть процесса заключается в настройке соответствия реквизитов объектов и их типов. И на основании соответствия типов генератор кода создает новые соответствия объектов - строки верхнего уровня в этом дереве - которые вы снова настраиваете покуда все строки в дереве не "позеленеют"

Пример настройки соответствия справочников. Справочники структурно одинаковы - просто хотел показать настройку типов в случае составного типа в источнике и приемнике

 

Пример настройки соответствия перечисления в источнике справочнику в приемнике

 

Пример настройки соответствия простого типа в источнике значению перечисления в приемнике (ВНИМАНИЕ: в пределах разработки тип Булево имеет представление 1 и 0, а не Истина и Ложь или Да и Нет - так логичнее с учетом работы и с 7.7 - там то флаги на форме - Число, да и лаконичнее...)

 

Пример настройки соответствия документов - демонстрация возможности переноса движений - они же ведь есть в форме настройки!)

Пример настройки соответствия значений реквизита простого типа

 

А вот скрин с автоматически сгенерированным кодом: 

 

И вот этот код вставляется в модуль обработки ШаблонЗагрузки (или в модуль формы - для 7.7).

 

 

Обработка Шаблон загрузки:

ОФ

 

 

УФ

 

7.7 - в этом случае лог загрузке выводится в окне сообщений

 

 Время загрузки на нагрузочных тестах на те же 30-40% меньше чем при загрузке по правилам конвертации - делаю вывод, что циклический перебор узлов DOMDocument работает примерно с той же скоростью, что и всякие XDTO, а меньшее время определяется меньшими размерами файла с данными.

 

Я подготовил несколько видеокейсов - вот вводный:

  

 Остальные в этом плей-листе

 

 Теперь пару слов о содержимом архива по ссылке внизу.

В бесплатных материалах вы найдете следующее:

 

это файлы обработок из состава Мастера XML-обмена (кроме генератора кода), файл описывающий структуры файлов XML, с которыми работает мастер, файл с лицензией, папку с примером из первого видеокейса - там файл с данными, cf-ка базы-приемника и обработка ШаблонЗагрузки в которую вставлен код загрузки.

 

И согласно п.13 правил размещения коммерческих публикаций - ответы на важные вопросы:

  1. Обработки для 7.7 тестировались и использовались на платформе 7.70.027. Все обработки кроме ГенераторКода.epf имеют и ОФ и УФ, ГенераторКода.epf имеет только ОФ. УФ и ОФ работают на всех версиях платформ 8.2 и 8.3;
  2. Коммерческая доработка Мастера XML-обмена по требованиям заказчика не предполагается;
  3. Код всех обработок открыт. Лицензия предоставляет вам полное право на произвольные доработки всего и вся;
  4. Обновления Мастера бесплатные, предполагается просто заменять дистрибутив на актуальный с соответствующей записью в этой теме;
  5. Техподдержка платная))) - 200 рублей за вопрос, ответ гарантирован в течение недели) А вот вопросы в этой теме или в личку, пожелания и предложения по доработке - принимаются совершенно бесплатно. Отвечаю, помогаю, советую - по мере слабых сил и возможностей;
  6. Лицензия под которой распространяется мастер пока расчитана только на физлиц и входит в состав бесплатных ознакомительных материалов;
  7. Установка программы происходит простым разархивированием, регистрация не требуется;

 

 П.С. 1 

Буду рад любым замечаниям и предложениям по развитию/доработке юзабилити и функциональности.

Особенно буду рад если посоветуете компоненту работающую с JSON в стиле DOMDocument - быстро сверстаю Мастер JSON-обмена)))

 

 П.С. 2

О ценообразовании: комплекс обработок стоит 1 трудодень хорошего 1Сника в провинции - в денежном эквиваленте - а сэкономить трудодней поможет значительно больше своей стоимости)

 

 11.09.15   Написал с помощью Мастера Перенос физических лиц ЗУП → ЗУП (УПП)  -  можно посмотреть как все внутри устроено для вполне рабочего и объемного (но простого) примера.

 

 

Причины купить

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

Достоинства

Преимущества разработки в целом: 

  • "человекочитаемый" хорошо документированный формат XML-файла с данными;
  • структура файла данных не меняется из-за настроек "правил конвертации";
  • из предыдущих пунктов проистекает возможность обмена данными с другими (не 1С) системами в предлагаемом формате - структура XML тривиальна и хорошо описана;
  • наличие инструмента просмотра содержимого и структуры файла данных;
  • - исходными данными для настроек обмена являются и файлы со структурой метаданных конфигураций ИБ-источника и ИБ-приемника, и файлы с данными - на случай выгрузки виртуальных объектов;
  • простые интуитивно-понятные визуальные настройки, которых хватает на 95% всех возможных ситуаций обмена;
  • абсолютная прозрачность контекста исполнения кода обработчиков событий;
  • результатом настроек является автоматически генерируемый код загрузки - понятный, простой в отладке и доработке "ручками";
  • никаких xsd и xdto - для чтения и записи используется DOMDocument - это требование проистекает из предыдущего;
Гибкость визуальных настроек загрузки:
  • поддерживается настройка (простым перетаскиванием, в основном) соответствий между любыми объектами и значениями: справочник в перечисление и наоборот, простой тип в справочник или перечисление и наоборот,  ну и между объектами одного вида само собой, перенос движений, записей регистров - легко и интуитивно-понятно;
  • поддерживается настройка соответствия значений реквизитов простых типов (например кода в плане счетов - типовая ситуация при переносе остатков по счетам из баз 7.7);
  • поддерживается загрузка реквизитов шапки из ТЧ/Движений/Периодических реквизитов и наоборот, реквизиты ТЧ могут одновременно грузиться в ТЧ и в шапку;
  • реквизиты шапки могут одновременно грузиться в шапку и в несколько ТЧ/Движений/Периодических реквизитов;  
  • поддерживается слияние нескольких типов источника в один тип в приемнике и наоборот;

Гарантия возврата денег

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

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

Наименование Файл Версия Размер
БесплатныеМатериалы.zip 67
.zip 540,15Kb
31.08.15
67
.zip 540,15Kb Бесплатно
Мастер XML-обмена
31.08.2015
3000 руб.

Моментальная
доставка

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Осипов Сергей (fixin) 03.09.15 16:35
если бы это было бесплатно, еще бы и взлетело, а так КД - стандарт в отрасли, не взлетит, имхо.
puzakov; AlexLM75; spy-83; +3 Ответить 1
2. Rom Shpakoff (Lancelot-2M) 03.09.15 16:49
(1) fixin, оч может быть и так... просмотров видео мало - особо втыкать народу не охота))) а может погода такая...
3. Anatolii Karasev (KapasMordorov) 03.09.15 17:12
DomDocument - трындец объемам выгрузки.
А 1С между тем уже деление на файлы в обмене сделало и заворачивает в Zip.
4. Rom Shpakoff (Lancelot-2M) 03.09.15 18:41
Ну больше 1.5 Гб у меня в практике не было, а с ними ДОМ справлялся... Для формата КД это были бы все 2.5 Гб... Нечастый случай по идее, да и дробить данные по файлам достаточно несложно...
5. Александр ШМ (ifilll) 04.09.15 15:40
Погода "повтыкать", самое то ))

Пользовался ранним вариантом, получается быстрей чем с использованием КД (не КД гуру)
ИМХО, как и КД не подходит для единоразового обмена большими данными,
например перекинуть большой справочник номенклатура из 7.7 с 120 реквизитами тысяч так в 180 позиций.

В таких случаях святой csv ))
6. Борис Балясников (bb1962) 06.11.15 18:26
(3) KapasMordorov, "А 1С между тем уже деление на файлы в обмене сделало"
А можно подробнее о чем речь?
7. Anatolii Karasev (KapasMordorov) 07.11.15 19:42
Конвертация данных 3.
Обмен через web-сервис.
Есть деление на файлы и архивирование.
AlexLM75; +1 Ответить
8. Александр Пузаков (puzakov) 04.01.16 11:55
(4) Lancelot-2M, ограничение DOM серьезная проблема при переносе данных между ИБ размера over 500-700 мегабайт. Приходится извращаться и разбивать данные на порции.

Судя по скриншотам и описанию, конфигурация сливает типовой КД по производительности...
9. Rom Shpakoff (Lancelot-2M) 04.01.16 16:49
(8) puzakov, 1) я лично грузил файлы 1,5 Гб без проблем
2) мои тесты на примитивной конфе из 5и иерархических справочников (с подчинением по цепочке) показали, что КД помедленнее будет - цифры озвучены в описании.

Зная как работают потроха мастера, я могу допустить, что в некоторых случаях (а именно при загрузке объектов одного типа в объекты двух различных типов) без ручной оптимизации кода загрузки производительность на больших выборках снизится на 30-40 процентов - что будет сравнимо или чуть медленнее чем КД...
10. Александр Пузаков (puzakov) 05.01.16 08:04
(9) Lancelot-2M, у DOM ограничение 2 гигабайта, а чтобы размер xml-файла вырос до указанного размера, достаточно выгрузить мегабайт 500 данных (ИБ среднего предприятия за год больше вырастает), формат xml он некомпактный сам по себе.
11. Rom Shpakoff (Lancelot-2M) 05.01.16 13:29
(10) puzakov, у вас крутые требования к системе обмена))) Годовыми данными кидаться)
А в практике - постоянные обмены малыми объемами или миграция с одной конфы на другую - и тогда перенос справочников и остатков, данные в котором чисто методически дробятся на несколько файлов.
Я только один раз столкнулся с ограничением в 2гб - но код выгрузки-загрузки настолько прост и прямолинеен... что завести создание и инициализацию DOMов в цикл дело 15ти минут - и вот уже будет 10гб ограничение для пяти переменных. Все очень решаемо, конечно и железо должно соответствовать - оперативка нужна) но это ведь логично, правда?
12. Александр Пузаков (puzakov) 07.01.16 10:45
(11) ладно, фиг с ними, ограничениями, во многих случаях до них может дело не дойти. Но как вы планируете продвигать свой продукт? Вот типовая конвертация данных бесплатная, к ней есть подробная документация, но многие 1Сники стали её осваивать только когда "припёрло": надо было подправить типовые правила, перенести данные данные между различными конфами и т.п. А что должно побудить использовать ваш продукт? Ведь это же те же яйца, только в профиль и за деньги. Надо было сначала как-то популяризовать свой продукт, а потом тихонько прикрутить новых бантиков и выставить ценник, так бы может и взлетело.
13. Rom Shpakoff (Lancelot-2M) 09.01.16 22:39
(12) puzakov, а вот тут я с вами согласен - маркетинговая стратегия отсутствует))) признаюсь, продажи не были самоцелью. Эта разработка - мое многолетнее хобби, она прошла долгий путь с 8.1.15) менял интерфейсную парадигму, сменил технологию чтения xml c ЧтенияXML на DOM, прикручивал бантики и фичи по мере своего желания, чаще при написании очередного обмена и пары -тройки дней после того.
Только концептуальная законченность функционала и одобрение коллег побудили меня к монетизации) Сейчас по паре часов в неделю пишу вторую версию - с еще более компактным форматом (165мб против текущих 220 против 750мб КД на нагрузочном тесте, а это база на 122000 элементов 5ти по цепочке подчиненных справочников, 1Cv8.1CD 109мб) с еще более простым и наглядным алгоритмом загрузки, разбиением по файлам из коробки и еще парой фич...

Можете помочь конструктивным советом? - чтобы такое отрезать в бесплатной версии, чтобы популяризовать мастер обмена? - ну на ваш взгляд?
14. Александр Пузаков (puzakov) 11.01.16 11:58
(13)
чтобы такое отрезать в бесплатной версии, чтобы популяризовать мастер обмена? - ну на ваш взгляд?

Трудно сказать, я не щупал вашу разработку. Попробуйте разработать небольшую стратегию продвижения продукта. Сначала сформулируйте четкие конкретные цели (чего хотите добиться), желательно по принципу SMART, сделайте SWOT-анализ. В качестве конкурента можно рассматривать типовую конфигурацию "Конвертация данных". Чтобы вашей разработкой пользовались (тем более за деньги), должны быть преимущества по сравнению с КД.

Ладно, это всё лирика. Нужно смоделировать несколько ситуаций по переносу данных между не идентичными конфигурациями (от простой до сложной), и должно получиться что-то вроде этого:


Разумеется, преимущества по скорости/простоте разработки должны быть реальными, а не надуманными.
В бесплатной версии всюду должны быть "развешены" ярлыки, подсказывающие, что в платной версии вот это и вот это делать удобнее / быстрее.
15. Rom Shpakoff (Lancelot-2M) 11.01.16 12:29
(14) puzakov, спасибо, буду думать на досуге)
16. Антон Назаров (Smilegm) 18.01.16 07:44
Запускаю на базе Камин 2.0 на движке 1С 8.3.7.1845 без запроса, в начале зависает потом через 5-10 сек просто закрывается база без ошибок, базу протестировал все перепроверил. И на 1С Бухгалтерия предприятия, редакция 3.0.43.51 не запускается Обработка ГенераторКода просто пустое окно открываеться
17. Rom Shpakoff (Lancelot-2M) 18.01.16 09:03
(16) Smilegm, именно генератор кода не имеет пока управляемых форм - только комплект обычных, поэтому для его использования придется сделать пустую конфу, запускаемую в режиме обычного приложения - это про генератор. А в камине запускаете шаблон выгрузки? - признаюсь не пытался запускать его без запроса... в файл-то ничего не попадет....попробовал сейчас без запроса - ругается однако, что текст запроса не тот, требует слово ВЫБРАТЬ. И вэлкам в личку) - давайте подробнее выяснять почему у вас не работает.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа