Giter Club home page Giter Club logo

v8reader's Introduction

v8Reader

Исходный адрес публикации

Обработка, позволяющая анализировать и сравнивать файлы отчетов, обработок, конфигураций и обновлений.

Имеет мощные инструменты по анализу форм, ролей и ограничений доступа.

Логическое продолжение публикаций http://infostart.ru/public/97194/ и http://infostart.ru/public/69976/

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

Декомпиляция и анализ форм с генерацией кода формы от MRAK

Сравнение объектов и форм метаданных (очередная декомпиляция и анализ форм) от alexer

Деструктивный анализ формы от asady

Декомпилятор форм от Sverkalov

И, наконец, их обобщенным и логичноструктурированным продолжением -

Декомпиляция элементов формы для 8.2 для обычных форм (не управляемых) от Istur -

всем рекомендую (только ошибки исправить надо - письмо о них было написано - никакой реакции)

Для более тщательного анализа форм был использован материал, предложенный brix8x в этом комментарии, а также развитие этой идеи, предложенное tormozit в публикации http://infostart.ru/public/57431/

Для придания "рюшечек" использовалась идея, предложенная Шепотом теней в публикации http://infostart.ru/public/59581/

Ну, и, как обычно... использовалась программа V8Unpack от disa_da

v8Reader

v8reader's People

Contributors

artbear avatar bambr1975 avatar testuser346 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

v8reader's Issues

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

В заголовки форм выводить удобные представления сравниваемых объектов при сравнении файлов.
Сейчас неудобно ориентироваться, когда открыто несколько окон для выполнения анализа кода обработки.
Нужно:

  • в заголовок формы "Структурное сравнение модулей" добавить имя/путь модуля.
    Например, удобно видеть "Структурное сравнение модулей <МодульОбъекта>"
  • в заголовок формы "Разбор элементов формы" добавить имя формы и тип формы (кратко, ОФ или УФ). Например, удобно видеть "Разбор элементов формы <Управляемая форма> УФ"
  • в заголовке окон сравнения процедур/функций выводить наименования этих методов
    Для этого к имени временных файлов добавлять префикс в виде имени метода.
    Например, вместо v8_912B_b3.txt для примера ниже будет имя `ПростоеСравнение-v8_912B_b3.txt'
    image
  • аналогично для простого сравнения модулей к имени временных файлов добавлять префикс в виде имени/пути модуля.
    Например, вместо v8_912B_b3.txt для примеры выше будет имя `МодульОбъекта-v8_912B_b3.txt'

При попытке одновременного запуска двух разных сравнений получаем ошибку 1С

При попытке одновременного запуска двух разных сравнений, повезло :), получаем ошибку 1С

{Форма.Форма.Форма(4118)}: Ошибка при вызове метода контекста (Записать)
    ДвоичныеДанныеПрограммыРаспаковки.Записать(КаталогВременныхФайлов()+"UnpackV8.exe");
по причине:
Ошибка совместного доступа к файлу 'C:\Users\1\AppData\Local\Temp\UnpackV8.exe'

Проблема в коде

Процедура Инициализация()
    ДвоичныеДанныеПрограммыРаспаковки = ЭтотОбъект.ПолучитьМакет("UnpackV8");
    ДвоичныеДанныеПрограммыРаспаковки.Записать(КаталогВременныхФайлов()+"UnpackV8.exe");
    ФайлПрограммыРаспаковки = Новый Файл(КаталогВременныхФайлов()+"UnpackV8.exe");
КонецПроцедуры

В v83unpack я сталкивался с этой проблемой и решил ее использованием уникального имени для v8Unpack.exe -
ПримерКода

Гуид = Новый УникальныйИдентификатор();
ДвоичныеДанныеПрограммыРаспаковки.Записать(КаталогВременныхФайлов()+Гуид+"UnpackV8.exe");

Также нужно проверить все использования "Записать" и при необходимости сделать запись под уникальным именем файла.

Ошибка при вызове метода контекста (КопироватьФайл)

При запуске из командной строки падает на копировании файлов в целевой каталог.
В строке 4476 формы процедура КопироватьФайл() получает в качестве первого параметра значение типа Файл вместо ожидаемого пути к файлу типа Строка.
Параметры запуска: "decompile;pathtocf;C:\GitRepos\erp-main\lib\Diadoc1C_PRO.epf;pathout;c:\Temp\31lkasow.33h.tmp;convert-mxl2txt;ЗавершитьРаботуПосле;"

Текст ошибки:
Ошибка при вызове метода контекста (КопироватьФайл)
{ВнешняяОбработка.V8Reader.Форма.Форма.Форма(4476)}: КопироватьФайл(ЭлементМассиваПодкаталога, НовыйПуть + "" + ЭлементМассиваПодкаталога.Имя);
{ВнешняяОбработка.V8Reader.Форма.Форма.Форма(4373)}: РазложитьПоПапкамСогласноИерархииМетаданных(КаталогДляРаспаковкиОбновления, ДеревоМетаданных, КаталогВыгрузки)
{ВнешняяОбработка.V8Reader.Форма.Форма.Форма(78)}: ОбработатьПараметрыЗапуска("decompile;pathtocf;C:\GitRepos\erp-main\lib\Diadoc1C_PRO.epf;pathout;c:\Temp\31lkasow.33h.tmp;convert-mxl2txt;ЗавершитьРаботуПосле;");
по причине:
Ошибка копирования файлов
по причине:
Ошибка копирования файлов из 'Файл' в 'c:\Temp\31lkasow.33h.tmp\und\4858370c-3770-4b6f-b440-27e15bfddc40.0\form' : Файл не обнаружен

При сравнении обработок нужен выбор режима сравнения модулей обработки - простой или попроцедурно

При сравнении обработок нужен выбор режима сравнения модулей обработки - простой или попроцедурно
Сейчас сразу выбирается только простой, плоский режим.
Хотелось бы получить и выбор попроцедурного режима, например, как у модуля форм.
Ответ - Настройки - флажок "Использовать структурное сравнение модулей"

  1. А вот и баг небольшой - открываем сравнение форм.
    видим зеленое "различия в модуле формы" и нажимаем "Показать"
    независимо от флажка "Использовать структурное сравнение модулей" всегда откроется простое сравнение 😞

Не везде есть НРег() для расширения при поиске в СоответствиеВидовФайлов

На форме в строке 4228:
Если СоответствиеВидовФайлов.Получить(Сред(Файл.Расширение, 2)) = Неопределено Тогда
На форме в строке 4354:
Расширение = Сред(Файл1.Расширение, 2);

Из-за второй ошибки не работал precommit для файла с расширением EPF:

{ВнешняяОбработка.V8Reader.Форма.Форма.Форма(4362)}: Ошибка при вызове метода контекста (Прочитать)
ТабДокумент.Прочитать(Файл1.ПолноеИмя);
по причине:
Ошибка при выполнении файловой операции

При запуске из командной строки при закрытии v8Reader 1C:Предприятие также должно завершать работу

При запуске из командной строки при закрытии v8Reader 1C:Предприятие также должно завершать работу
Добавить ключ параметра запуска shutdownAfterClose или ЗавершитьРаботу1СПослеЗакрытия
Было реализовано в https://github.com/xDrivenDevelopment/v8Diff/issues/2

Вернуть проверку актуальной версии при открытии формы

Сейчас этот код проверки актуальной формы закомментирован.

    //из-за рестайлинга Инфостарта не работает - надо придумать что-то новое
    //Если ПроверятьАктуальнуюВерсиюПриОткрытии=Истина Тогда
    //  ПодключитьОбработчикОжидания("ПроверкаАктуальнойВерсии",10,Истина);
    //КонецЕсли;

Предлагаю свежую версию забирать из ветки master текущего репозитария https://github.com/xDrivenDevelopment/v8Reader, а не из Инфостарта.
Например, можно определять по дате последнего коммита в ветку мастер

Программный интерфейс v8Reader для открытия сравнения файлов из стороннего кода 1С

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

Баги в окне сравнения управляемых форм при попытке сравнения элементов форм

  1. Исключение при нажатии на стрелку
  2. Визуально в окне элементов формы нет различий, а показано, что есть!

Ошибка:

{Форма.РазборФормы.Форма(240)}: Поле объекта не обнаружено (Родитель)
    Пока СтрокаРодителя.Родитель <> Неопределено Цикл

Нажимаю на кнопки-стрелочки для показа различия в элементах формы (показано, что есть 1 изменение)
image

Ссылка на файлы https://www.dropbox.com/sh/337wil83pltyk63/AACuj-1N73i0xdGMSQ1ZLGdna?dl=0

Сравнение методов, у которых разные имена

Часто наименования методов изменяются и при сравнении эти методы показываются как 2 несвязанных метода (например, в левой части удален, в правой добавлен новый).
Удобно было бы в окне сравнения методов модуля выбрать (множественный выбор?) две строки с разными наименованиями и выполнить команду сравнения методов

При сравнении конфигураций не показываются отличия в свойствах конфигурации

При сравнении конфигураций не показываются отличия в свойствах конфигурации
Например, если изменить версию конфигурацию.
Или если для конфигурации 8.3 установить "Режим использования синхронных вызовов" в "использовать с предупреждениями", то разница при сравнении исходной и доработанной конфигурации не будет показана.
Дерево сравнения будет пустым.
image

Но если дважды щелкнуть на корне конфигурации в окне сравнения, будут показаны различия.
image
image

Определение версии конфигурации cf

Определение версии конфигурации на данный момент идет через код:
ТекстВерсия = Новый ТекстовыйДокумент;
ТекстВерсия.Прочитать(КаталогРаспаковки + "\version");
ВерсияСтрока = Сред(ТекстВерсия.ПолучитьТекст(), 4, 3);
Если ВерсияСтрока = "6,0" Тогда
Версия = "v8_0";
ИначеЕсли ВерсияСтрока = "106" Тогда
Версия = "v8_1";
Иначе
Версия = "v8_2";
КонецЕсли;

Определить версию и режим совместимости конфигурации можно более точно из файла в который распаковывается корневой объект

{2,
{6c2fbb6a-fc08-4d79-8d94-d1415c5f0223},6,
{9cd510cd-abfc-11d4-9434-004095e12fc7,
{1,
{50,
{0,
{1,
{0,0,9b7c0f45-d923-49d0-97b0-7f211dd1ef34},"Конфигурация",
{0},"",0,2,9dfcabbf-6a7a-48aa-8721-df5e78b367c6,3,7f676314-716a-4d54-8335-a71a3857b21c,3}
},"",1,
{0},
{0},
{0},
{0},
{0},00000000-0000-0000-0000-000000000000,436059d3-1d14-4eaa-be74-7377dd2c9c86,00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000,0,"","","",1,
{0,0},1,
{0,0},1,00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000,80307,
{0,0},0,0,00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000,
{1,
{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}
},00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000,2,00000000-0000-0000-0000-000000000000,3,
.....
.....
},
{
{"#",e4c53f94-e5f7-4a34-8c10-218bd811cae1,7},
{"B",0}
},
{
{"#",e4c53f94-e5f7-4a34-8c10-218bd811cae1,8},
{"B",0}
}
},2,"",80308},23,
{09736b02-9cac-4e3f-b4f7-d3e9576ab948,0},
{0c89c792-16c3-11d5-b96b-0050bae0a95d,0},
{0fe48980-252d-11d6-a3c7-0050bae0a776,0},
{0fffc09c-8f4c-47cc-b41c-8d5c5a221d79,0},
{11bdaf85-d5ad-4d91-bb24-aa0eee139052,0},
{15794563-ccec-41f6-a83c-ec5f7b9a5bc1,0},

Вверху выделено жирным 80307 - режим совместимости
Внизу выделено жирным 80308 - версия платформы, в которой создавалась конфигурация

При вставке пути файла для анализа из буфера обмена не устанавливается правильный режим выбора объектов

При вставке пути файла для анализа из буфера обмена не устанавливается правильный режим выбора объектов
При вставке пути файла для анализа из буфера обмена не выполняется проверка расширения файла.

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

Добавить преобразование текстов форм для упрощения сравнения текстов форм

Автор задачи и реализации @volodkindv

При сохранении внешней обработки в файл сильно меняется содержимое файлов описания форм (например, \src\V8Reader\Form\Форма\form). Опытным путем установлено, что причин несколько:

В тексте случайным образом меняются местами описания кнопок командных панелей.
Гуиды этих кнопок также генерируются случайным образом.
Также форма содержат в себе некий счетчик, который увеличивается после каждого сохранения.
Случайным образом генерируется еще один гуид (физический смысл установить не удалось).
Кроме того, случайным образом генерируются гуиды в файле versions, а иногда и порядок строк в этом файле тоже меняется.

В форке добавлены алгоритмы исправления такого безобразия. Обработка OrdinaryFormArrange.epf, подключенная к v8Reader, выполняет дополнительное преобразование распакованных исходников и приводит формы в порядок.

Удобно использовать в паре с precommit1c.

Нужно изучить реализацию и залить, если устраивает.

При закрытии окна "Разбор элементов формы" в режиме командной строки сравнения происходит неверное закрытие Предприятия

При закрытии окна "Разбор элементов формы" в режиме командной строки сравнения происходит неверное закрытие Предприятия.

Закрыться должно только это окно и управление должно вернуться в окно управления сравнением.
и только при закрытии окна управления сравнения должно закрываться и само 1С.

image

Получить список изменений файлов в одном результирующем текстовом файле

Получить список изменений файлов в одном результирующем текстовом файле
ИМХО 2 вида отчета нужны:

    1. простой/быстрый = те отличия, что показываются на верхнем уровне
    1. подробный/более медленный = подробное отличие всех метаданных

Например, в форме v8Reader, где метаданные (деревья), нажать "вывести список", выбрать вариант "текстовый документ".
Получаем результат:

Структура первой обработки  Структура второй обработки  Есть изменения Путь первого объекта  Путь второго объекта
xddDataFixtureGen   xddDataFixtureGen   1   d0ac533a-c210-47e2-94e1-6d5329bcc033    a764486e-0ec8-42b4-8434-355f1cc2c4d5
Модуль объекта Модуль объекта 1   54f1dec0-8f13-4065-9f45-0e74788142d2.0  2bea54fe-a179-43e6-9377-9255a9ca2e4a.0
Реквизиты  Реквизиты  
ЕстьВстроеннаяОбработка_юТест   ЕстьВстроеннаяОбработка_юТест   1   
Табличные части   Табличные части   
ТаблицаДанных  ТаблицаДанных  
Ссылка    Ссылка    1   
Метаданное    Метаданное    1   
ИмяПеременной  ИмяПеременной  1   
ВыгружатьКод    ВыгружатьКод    1   
РежимПоиска  РежимПоиска  1   
РежимСоздания  РежимСоздания  1   
Формы  Формы  
УправляемаяФорма    УправляемаяФорма    1   103ebd31-7643-4b1a-ba8b-4c789efcb71f    57f8e960-e897-4dab-8f8f-29103028a3e9
Форма  Форма  1   103ebd31-7643-4b1a-ba8b-4c789efcb71f.0  57f8e960-e897-4dab-8f8f-29103028a3e9.0
Макеты    Макеты    
СозданиеПростогоСправочника  СозданиеПростогоСправочника  1   efa2b5fc-de31-4695-a81b-8acc1a24d8f8    a8aa8b25-c3a6-4bee-8f5e-38f0b98b548f
СозданиеПростогоСправочника_ПредставлениеНеИдентификатор <Отсутствует>    3   
Макет  <Отсутствует>    3   

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

ЧтениеXML.Прочитать() - В 8.2 работает совсем не так, как в 8.3

обработка, в которой находится функция ЧтениеXML.Прочитать() во вложении. Проверяю на файлике внутреннего представления управляемой формы (его текст надо вставить в поле текстового документа обработки).
На самом деле, не работает только на 8.2.13

Файл с демонстрацией ошибки

Bug: при записи mxl2txt разложенный файл записывается в текущий каталог скрипта-запускатора

Вот в этой строке

ТабДокумент.Записать(Файл1.ИмяБезРасширения + "_mxl.txt", ТипФайлаТабличногоДокумента.TXT);
происходит запись файла по имени без расширения, т.е. полный путь к имени опускается и в итоге разложенный файл попадает в текущий каталог скрипта, вызвавшего v8Reader на исполнение.

Если в методе модуля исправлена регистр буквы, то различий в модулях не показываются

Если в методе модуля исправлена регистр буквы, то различий в модулях не показываются

Например, я поменял формат даты с yyyyMMddччммсс на yyyyMMddЧЧммсс (ЧЧ).
И v8reader не показывает это изменение.

В простом сравнении текста модуля вообще не видно этого изменения.
В сравнения по методам видно, что метод изменен, но при попытке сравнить и увидеть изменения этого метода v8reader сообщает, что Файлы идентичны

Если в макете (текстовом документе) внешней обработки есть небольшие отличия, v8Reader не показывает эти отличия в окне сравнения

Если в макете (текстовом документе) внешней обработки есть небольшие отличия, v8Reader не показывает эти отличия в окне сравнения.
А если открыть файлы из закладок (Первый файл, второй файл), то визуально отличия есть.

Например, внутри текста есть отличие в один пробел.

Добавить версию продукта

  • Добавить версию продукта - экспортный метод Версия() в модуле обработки, возвращающий версию в формате ХХ.ХХ.ХХ.ХХ или ХХ.ХХ
  • Добавить показ версии в заголовке основной формы

Падает при обработке ТЧ обработки

Платформа: 8.3.9.1818
Процедура: ПостроитьДеревоОбновляемойКонфигурацииНов
Строка: MatchesN = РегулярноеВыражениеN.Execute(ТекстФайлаСтрокой);
Патерн: 2bcef0d1-0981-11d6-b9b8-0050bae0a95d,[\d]+((,\n\{\n\{\d,\n\{[\d]+,\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\n\{0,\n\{\d,\n\{0,0,\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\},"\S+?",\n?\{(0|\d(,[^,]*,"(""|[^"]*)*")+)\},".*"(,0,0)?\}\n\}(\n\},?\d?\n?|,\d,\n\{(0|\d,\n\{\d,\d(,\n\{-[\d]+\},\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\n\{[\d]+,[\d]+(,\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\n\{("[DSNBU]".*|"#",\w{8}-\w{4}-\w{4}-\w{4}-\w{12},(\d|\n.*\n|\n.*\n.*\n|\n.*\n.*\n.*\n|\n.*\n.*\n.*\n.*\n|\n.*\n.*\n.*\n.*\n.*\n|\n.*\n.*\n.*\n.*\n.*\n\}\n))?\})+\n\})+\n)\},\n\{(0|\d(,[^,]*,"(""|[^"]*)*")+)\}\n\}[^\}]*)\},\d,\n\{5d24a9d1-098e-11d6-b9b8-0050bae0a95d,(0\}|[\d]+(,\n\{\n\{\d,\n\{[12]\d,\n\{2,\n\{\d,\n\{0,0,\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\},"\S+?",\n?\{(0|\d(,[^,]*,"(""|[^"]*)*")+)\},".*"(,0,0)?\},\n\{"Pattern"(,\n\{"[#DSNBU]".*\})*\n?\}\n\}(\n\}\n?|,\d,\n\{(0|\d(,[^,]*,"(""|[^"]*)*")+)\},\n\{(0|\d(,[^,]*,"(""|[^"]*)*")+)\},\d,".*",\d,\n\{"[#DSNBU]".*\},\n\{"[#DSNBU]".*\},\d,\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\d,\d,\n\{5004(,0|,\d+(,".*",\d(,\n\{(-\d+|0(,\w{8}-\w{4}-\w{4}-\w{4}-\w{12})?)\})+,\d)+)\},\n\{3,(0,0|\d(,\n\{.*\})*,\d)\},\n\{0,(0|\d(,".*",\n(\{"[DSNBU]".*|\{"#",\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\n.*\n|\{"#",\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\n\{\d+(,\n\{"[DSNBU]".*|,\n\{"#",\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\n.*\n\})+\n\}\n)\})+\n)\},\d,\n\{(0|\d(,[^,]*,"(""|[^"]*)*")+)\},\n(\{"[DSNBU]".*\}|\{"#",\w{8}-\w{4}-\w{4}-\w{4}-\w{12},\n.*\n\})(,\d)+\}[^\}]*)(,\d)*\},\d\})*)\n\}\n\})*)

ТекстФайлаСтрокой: {1, {5,a207f3cb-796e-4018-81e8-c61aeb2b6aa8,97379d60-c7c8-48b7-90ed-208aae4ef2ed, {0, {0, {0,0,ba442358-8d42-4bf2-a139-042783305dd9},"АвтоПолучениеОтправкаЭлектронныхПисем", {1,"ru","Авто получение/отправка электронных писем"},""} },08b1e33c-8258-409e-a548-fdd614cee0f4, {0,1, {"#",157fa490-4ce9-11d4-9415-008048da11f9, {1,f72a4df4-fe30-442a-b6f1-b12816144591} } },0,f13c756d-236b-4aa5-9a5a-b1cc6c614bb5,e7ced550-39c7-4044-bc80-a93f7bb78af4},4, {3daea016-69b7-4ed4-9453-127911372fe6,0}, {2bcef0d1-0981-11d6-b9b8-0050bae0a95d,1, { {0, {2,6faa5efc-b7f9-4ffa-9514-8169635450a4,e652d8d8-5233-44d4-98be-af301e0f9475,97b48090-da03-4b02-b001-c10b53a2b81b,16655d81-1b48-4dff-9624-b14e34f25dde, {0, {0, {0,0,4f35cf0f-077d-4375-907f-ac791b31e080},"УчетныеЗаписиАвтоматическогоТранспортаПисем", {1,"ru","Учетные записи автоматического транспорта писем"},""} } } },1, {5d24a9d1-098e-11d6-b9b8-0050bae0a95d,5, { {0, {2, {0, {0,0,b7459c13-884e-41ab-9592-0d1fdd7bee9b},"УчетнаяЗапись", {1,"ru","Учетная запись"},""}, {"Pattern", {"#",adfa05bd-794e-4a3c-a21a-2632e7b3500b} } } },0}, { {0, {2, {0, {0,0,6b851edc-d4fb-449d-b164-759a2228f25c},"ВремяПоследнегоПолучения", {1,"ru","Время последнего получения"},""}, {"Pattern", {"D"} } } },0}, { {0, {2, {0, {0,0,f50c8ff8-93b0-43f3-a0ae-eac64e333bfe},"ИнтервалОбновления", {1,"ru","Интервал обновления"},""}, {"Pattern", {"N",10,0,1} } } },0}, { {0, {2, {0, {0,0,6dff4288-f0be-4491-a7a4-803dc1e24087},"АдресЭлектроннойПочты", {1,"ru","Адрес электронной почты"},""}, {"Pattern", {"S",200,1} } } },0}, { {0, {2, {0, {0,0,597fd6ce-08e7-4014-a431-a6408bc1c2af},"Действие", {1,"ru","Действие"},""}, {"Pattern", {"#",b0011b47-4075-4dc0-bf73-f9e63f972fee} } } },0} } } }, {ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0}, {d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,08b1e33c-8258-409e-a548-fdd614cee0f4} }

Сравнение xml-представлений макетов из выгрузки конфигураций 1С с помощью платформы 8.3

Сравнение xml-представлений макетов из выгрузки конфигураций 1С с помощью платформы 8.3

Сейчас неудобно выполнять diff подобных хмл-файлов.

Например, при выгрузке конфигурации в 8.3 получаем файл общего макета CommonTemplate.Макет.Template.xml
xml-файл сравнивать не удобно.

Но можно преобразовать хмл-файл макета в обычный табличный документ или mxl-файл с помощью кода 1С

ЧтениеХМЛ =  Новый ЧтениеXML;
ЧтениеХМЛ.ОткрытьФайл(ПутьХМЛФайлаМакета);

ТабДок = СериализаторXDTO.ПрочитатьXML(ЧтениеХМЛ, Тип("ТабличныйДокумент"));
//ТабДок.Показать();
// сохранить в mxl

Предлагаю в v8reader для таких xml-файлов добавить код по получению mxl-файлов и потом открывать окно сравнения. Еще одна задача, пересекающаяся с проектом v8Diff.

@bambr1975 Что скажешь?

Показывать статус различия форм в основной форме сравнения, не открывая окно сравнения форм

Показывать статус различия форм в основной форме сравнения, не открывая окно сравнения форм
При сравнении версий файлов обработок очень часто показываются отличия в формах, т.е. в окне сравнения формы показываются как различные.
А при сравнении непосредственно форм (окно Разбор элементов формы) показывается, что различаются только представления форм.

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

Ошибка при попытке сравнения произвольного xml-файла

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

{Форма.Форма.Форма(4308)}: Ошибка при вызове метода контекста (ПрочитатьXML)
                ТабДок1 = СериализаторXDTO.ПрочитатьXML(ЧтениеХМЛ1, Тип("ТабличныйДокумент"));
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: template  Форма: Элемент  Тип: {http://v8.1c.ru/8.2/data/spreadsheet}SpreadsheetDocument
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: name  Форма: Элемент  Тип: {http://www.w3.org/2001/XMLSchema}anyType

Перенос функционал из v8Diff в v8Reader

Предлагаю перенести функционал из v8Diff в v8Reader
Фактически там нужны только
каталог ibService - сервисная база
и 2 файла
diff-1c-cf.bat
diff-1c-cf.js

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.