From a027643e99be649957b5b672052eca6fbc572e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=D0=BE=D0=B2=20=D0=92?= =?UTF-8?q?=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=92=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D1=80=D1=8C=D0=B5=D0=B2=D0=B8=D1=87=20=28000044217=29?= Date: Mon, 11 Mar 2024 21:10:26 +0300 Subject: [PATCH] =?UTF-8?q?ORAIS-1367.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BE=D0=BA=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B7=D0=B0=D0=B8=D0=BC=D1=81=D1=82=D0=B2=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B8=D0=B7=20=D1=80?= =?UTF-8?q?=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../НастройкаСценарияСортировкиСостава.os | 93 ++++ src/Классы/НастройкиРепозитория.os | 13 +- src/Классы/НастройкиСортировкиСостава.os | 75 +++ src/Модули/ТипыОбъектовДляСортировки.os | 51 ++ src/Модули/ТипыФайлов.os | 19 + src/СценарииОбработки/СортировкаСостава.os | 492 ++++++++---------- .../Configuration/Ext/До/Configuration.mdo | 58 +++ .../Configuration/Ext/До/Configuration.xml | 85 +++ .../Configuration/Ext/После/Configuration.mdo | 58 +++ .../Configuration/Ext/После/Configuration.xml | 85 +++ .../DefinedTypes/Ext/До/РасчетныйСчет.mdo | 28 + .../DefinedTypes/Ext/До/РасчетныйСчет.xml | 34 ++ .../DefinedTypes/Ext/До/РасчетныйСчет2.xml | 27 + .../DefinedTypes/Ext/После/РасчетныйСчет.mdo | 28 + .../DefinedTypes/Ext/После/РасчетныйСчет.xml | 34 ++ .../DefinedTypes/Ext/После/РасчетныйСчет2.xml | 27 + .../DefinedTypes/После/ДоговорыКлиентов.mdo | 14 + .../DefinedTypes/После/ДоговорыКлиентов.xml | 24 + .../ExchangePlans/Ext/До/Content.xml | 53 ++ .../ExchangePlans/Ext/До/Мобильные.mdo | 78 +++ .../ExchangePlans/Ext/После/Content.xml | 53 ++ .../ExchangePlans/Ext/После/Мобильные.mdo | 78 +++ .../FunctionalOptions/Ext/До/ВалютныйУчет.mdo | 13 + .../FunctionalOptions/Ext/До/ВалютныйУчет.xml | 17 + .../FunctionalOptions/Ext/После/ВалютныйУчет.mdo | 13 + .../FunctionalOptions/Ext/После/ВалютныйУчет.xml | 17 + .../Subsystems/Ext/До/Финансы.mdo | 14 + .../Subsystems/Ext/До/Финансы.xml | 20 + .../Subsystems/Ext/После/Финансы.mdo | 14 + .../Subsystems/Ext/После/Финансы.xml | 20 + tests/ТестПроверкаСценариевОбработки.os | 5 + 31 files changed, 1353 insertions(+), 287 deletions(-) create mode 100644 src/Классы/НастройкаСценарияСортировкиСостава.os create mode 100644 src/Классы/НастройкиСортировкиСостава.os create mode 100644 src/Модули/ТипыОбъектовДляСортировки.os create mode 100644 tests/fixtures/СортировкаСостава/Configuration/Ext/До/Configuration.mdo create mode 100644 tests/fixtures/СортировкаСостава/Configuration/Ext/До/Configuration.xml create mode 100644 tests/fixtures/СортировкаСостава/Configuration/Ext/После/Configuration.mdo create mode 100644 tests/fixtures/СортировкаСостава/Configuration/Ext/После/Configuration.xml create mode 100644 tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет.mdo create mode 100644 tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет.xml create mode 100644 tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет2.xml create mode 100644 tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет.mdo create mode 100644 tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет.xml create mode 100644 tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет2.xml create mode 100644 tests/fixtures/СортировкаСостава/DefinedTypes/После/ДоговорыКлиентов.mdo create mode 100644 tests/fixtures/СортировкаСостава/DefinedTypes/После/ДоговорыКлиентов.xml create mode 100644 tests/fixtures/СортировкаСостава/ExchangePlans/Ext/До/Content.xml create mode 100644 tests/fixtures/СортировкаСостава/ExchangePlans/Ext/До/Мобильные.mdo create mode 100644 tests/fixtures/СортировкаСостава/ExchangePlans/Ext/После/Content.xml create mode 100644 tests/fixtures/СортировкаСостава/ExchangePlans/Ext/После/Мобильные.mdo create mode 100644 tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/До/ВалютныйУчет.mdo create mode 100644 tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/До/ВалютныйУчет.xml create mode 100644 tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/После/ВалютныйУчет.mdo create mode 100644 tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/После/ВалютныйУчет.xml create mode 100644 tests/fixtures/СортировкаСостава/Subsystems/Ext/До/Финансы.mdo create mode 100644 tests/fixtures/СортировкаСостава/Subsystems/Ext/До/Финансы.xml create mode 100644 tests/fixtures/СортировкаСостава/Subsystems/Ext/После/Финансы.mdo create mode 100644 tests/fixtures/СортировкаСостава/Subsystems/Ext/После/Финансы.xml diff --git a/src/Классы/НастройкаСценарияСортировкиСостава.os b/src/Классы/НастройкаСценарияСортировкиСостава.os new file mode 100644 index 0000000..683aa50 --- /dev/null +++ b/src/Классы/НастройкаСценарияСортировкиСостава.os @@ -0,0 +1,93 @@ +/////////////////////////////////////////////////////////////////// +// Содержит настройки сценария для сортировки блока состав +// конкретного файла +// +// (с) BIA Technologies, LLC +// +/////////////////////////////////////////////////////////////////// + +Перем ИмяЭлемента; // имя (или паттерн) для определения элемента +Перем РазделительЭлементов; // разделитель элементов между собой +Перем РодительскийЭлемент; // родительский элемент, внутри которого осуществляетсяя поиск +Перем РодительскийЭлементЗавершение; // Завершение родительского элемента, если отличается от начала +Перем ОтступРодительскогоЭлемента; // отступ родительского элемента от начала строки +Перем ШаблонПоискаСостава; // Шаблон (регулярное выражение) для поиска блока, содержащего состав + // для сортировки +Перем ШаблонПоискаЭлементов; // Шаблон (регулярное выражение) для поиска элементов внутри блока с составом +Перем ИмеетАтрибуты; // Признак-подсказка о наличии атрибутов у элемента +Перем ИмяВложенного; // Имя вложенного тега в теге элемента + +Процедура ПриСозданииОбъекта(ПараметрИмяЭлемента) + ИмяЭлемента = ПараметрИмяЭлемента; + РазделительЭлементов = Символы.ПС; + РодительскийЭлемент = ""; + ОтступРодительскогоЭлемента = ""; + ШаблонПоискаСостава = ""; + ШаблонПоискаЭлементов = ""; + ИмеетАтрибуты = Ложь; + ИмяВложенного = ""; +КонецПроцедуры + +Процедура УстановитьРазделительЭлементов(Разделитель) Экспорт + РазделительЭлементов = Символы.ПС + Разделитель; +КонецПроцедуры + +Процедура УстановитьРодительскийЭлемент(Имя, Отступ, ИмяЗавершение = "") Экспорт + РодительскийЭлемент = Имя; + ОтступРодительскогоЭлемента = Отступ; + Если ПустаяСтрока(ИмяЗавершение) Тогда + РодительскийЭлементЗавершение = РодительскийЭлемент; + Иначе + РодительскийЭлементЗавершение = ИмяЗавершение; + КонецЕсли; +КонецПроцедуры + +Процедура УставитьШаблоныПоиска(ШаблонСостава, ШаблонЭлементов) Экспорт + ШаблонПоискаСостава = ШаблонСостава; + ШаблонПоискаЭлементов = ШаблонЭлементов; +КонецПроцедуры + +Функция ШаблонПоискаСостава() Экспорт + Возврат РегулярныеВыражения.Создать(ШаблонПоискаСостава); +КонецФункции + +Функция ШаблонПоискаЭлементов() Экспорт + Возврат ШаблонПоискаЭлементов; +КонецФункции + +Функция ИмяЭлемента() Экспорт + Возврат ИмяЭлемента; +КонецФункции + +Функция РазделительЭлементов() Экспорт + Возврат РазделительЭлементов; +КонецФункции + +Функция ЕстьРодительскийЭлемент() Экспорт + Возврат ЗначениеЗаполнено(РодительскийЭлемент); +КонецФункции + +Функция РодительскийЭлемент() Экспорт + Возврат Новый Структура("Отступ, Имя, Завершение", + ОтступРодительскогоЭлемента, РодительскийЭлемент, РодительскийЭлементЗавершение); +КонецФункции + +Процедура УстановитьЕстьАтрибуты() Экспорт + ИмеетАтрибуты = Истина; +КонецПроцедуры + +Функция САтрибутами() Экспорт + Возврат ИмеетАтрибуты; +КонецФункции + +Процедура УстановитьИмяВложенного(Имя) Экспорт + ИмяВложенного = Имя; +КонецПроцедуры + +Функция ЕстьВложенный() Экспорт + Возврат ЗначениеЗаполнено(ИмяВложенного); +КонецФункции + +Функция ИмяВложенного() Экспорт + Возврат ИмяВложенного; +КонецФункции diff --git a/src/Классы/НастройкиРепозитория.os b/src/Классы/НастройкиРепозитория.os index 22c5e24..51676bb 100644 --- a/src/Классы/НастройкиРепозитория.os +++ b/src/Классы/НастройкиРепозитория.os @@ -1,5 +1,4 @@ -// -/////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////// // Работает с настройками в конфигурационном файле репозитория 1С // в Git // @@ -171,9 +170,9 @@ ВызватьИсключение "Не указано имя приложения"; КонецЕсли; - тмп = Конфигурация.Получить(ИмяПриложения); - Тмп.Удалить(ИмяНастройки); - Конфигурация.Вставить(ИмяПриложения,Тмп); + Временный = Конфигурация.Получить(ИмяПриложения); + Временный.Удалить(ИмяНастройки); + Конфигурация.Вставить(ИмяПриложения, Временный); ОбновитьКонфигурационныйФайл(); КонецПроцедуры // УдалитьНастройкиПриложения() @@ -189,6 +188,8 @@ ВызватьИсключение "Необходимо выполнить инициализацию"; КонецЕсли; + + Возврат Истина; КонецФункции // ПроверкаИнициализации() @@ -279,4 +280,4 @@ Процедура ОбновитьКонфигурацию() Экспорт ОбновлятьКонфигурацию = Истина; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/src/Классы/НастройкиСортировкиСостава.os b/src/Классы/НастройкиСортировкиСостава.os new file mode 100644 index 0000000..7712d8d --- /dev/null +++ b/src/Классы/НастройкиСортировкиСостава.os @@ -0,0 +1,75 @@ +/////////////////////////////////////////////////////////////////// +// Содержит настройки для сортировки конкретного файла +// +// (с) BIA Technologies, LLC +// +/////////////////////////////////////////////////////////////////// + +// BSLLS:ExportVariables-off Геттер не создать +Перем Тип Экспорт; // Тип обрабатываемого файла +// BSLLS:ExportVariables-on +Перем ЕДТ; // Признак формата ЕДТ содержимого +Перем Заимствованный; // Признак отношения файла к расширению и заимствованности из основной конфигурации +Перем Сценарии; // Сценарии обработки файла +Перем Пустой; // Признак отсутствия настроек + +// Конструктор создания на основании анализируемого файла +Процедура ПриСозданииОбъекта(АнализируемыйФайл) + ОписаниеПоФайлу = ТипыОбъектовДляСортировки.ПоФайлу(АнализируемыйФайл); + Если ОписаниеПоФайлу.Тип = ТипыОбъектовДляСортировки.Неизвестный Тогда + Пустой = Истина; + Возврат; + КонецЕсли; + + Пустой = Ложь; + Тип = ОписаниеПоФайлу.Тип; + ЕДТ = ОписаниеПоФайлу.ЕДТ; + Заимствованный = ОписаниеПоФайлу.Заимствованный; + Сценарии = Новый Массив; +КонецПроцедуры + +Функция Пустой() Экспорт + Возврат Пустой; +КонецФункции + +Функция ЕДТ() Экспорт + Возврат ЕДТ; +КонецФункции + +Функция Заимствованный() Экспорт + Возврат Заимствованный; +КонецФункции + +Процедура ДобавитьСценарий(НастройкиСценария) Экспорт + + // 1-я группа: состав объектов + ШаблонПоискаСостава = ""; + Если Тип = ТипыОбъектовДляСортировки.Конфигурация И ЕДТ Тогда + // 2-я группа: завершающий блок ЕДТ + ШаблонПоискаСостава = "\s*()[ \t]*\n*"; + ИначеЕсли НастройкиСценария.ЕстьРодительскийЭлемент() Тогда + РодительскийЭлемент = НастройкиСценария.РодительскийЭлемент(); + ШаблонПоискаСостава = СтрШаблон("\s*<%1>([\w\W]*?)<\/%2>[ \t]*\n*", + РодительскийЭлемент.Имя, РодительскийЭлемент.Завершение); + Иначе + ШаблонПоискаСостава = СтрШаблон("\s*(<%1>[\w\W]*<\/%1>)[ \t]*\n*", НастройкиСценария.ИмяЭлемента()); + КонецЕсли; + + // 1-я группа: имя объекта состава + ШаблонПоискаЭлементов = ""; + ТекстАтрибутов = ?(НастройкиСценария.САтрибутами(), "\s+[^>]+", ""); + Если НастройкиСценария.ЕстьВложенный() Тогда + ШаблонПоискаЭлементов = СтрШаблон( // BSLLS:NestedFunctionInParameters-off используются геттеры + "<%1%2>[\w\W]*?<%3>([^<]*?)<\/%3>[\w\W]*?<\/%1>", + НастройкиСценария.ИмяЭлемента(), ТекстАтрибутов, НастройкиСценария.ИмяВложенного()); + Иначе + ШаблонПоискаЭлементов = СтрШаблон("<%1%2>([^<]*?)<\/%1>", НастройкиСценария.ИмяЭлемента(), ТекстАтрибутов); + КонецЕсли; + + НастройкиСценария.УставитьШаблоныПоиска(ШаблонПоискаСостава, ШаблонПоискаЭлементов); + Сценарии.Добавить(НастройкиСценария); +КонецПроцедуры + +Функция Сценарии() Экспорт + Возврат Сценарии; +КонецФункции diff --git a/src/Модули/ТипыОбъектовДляСортировки.os b/src/Модули/ТипыОбъектовДляСортировки.os new file mode 100644 index 0000000..50ea2c3 --- /dev/null +++ b/src/Модули/ТипыОбъектовДляСортировки.os @@ -0,0 +1,51 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Служебный модуль-перечисление с типама объектов для сортировки +// +// (с) BIA Technologies, LLC +// +/////////////////////////////////////////////////////////////////////////////// + +// BSLLS:ExportVariables-off + +Перем Конфигурация Экспорт; +Перем ОпределяемыйТип Экспорт; +Перем ПланОбмена Экспорт; +Перем ФункциональнаяОпция Экспорт; +Перем Подсистема Экспорт; +Перем Неизвестный Экспорт; + +// BSLLS:ExportVariables-on + +// По файлу определеяет тип сорируемого объекта и некоторые дополнительные данные +Функция ПоФайлу(АнализируемыйФайл) Экспорт + Описание = Новый Структура("Тип, Заимствованный, ЕДТ", Неизвестный, Ложь, Ложь); + Описание.Заимствованный = ТипыФайлов.ЭтоФайлЗаимствованногоОбъектаРасширения(АнализируемыйФайл); + + ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл); + Если ЭтоЕДТ Или ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда + Описание.Тип = Конфигурация; + Описание.ЕДТ = ЭтоЕДТ; + ИначеЕсли ТипыФайлов.ЭтоФайлОписанияОпределяемогоТипа(АнализируемыйФайл) Тогда + Описание.Тип = ОпределяемыйТип; + Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияОпределяемогоТипаEDT(АнализируемыйФайл); + ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПланаОбмена(АнализируемыйФайл) Тогда + Описание.Тип = ПланОбмена; + Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияПланаОбменаEDT(АнализируемыйФайл); + ИначеЕсли ТипыФайлов.ЭтоФайлОписанияФункциональнойОпции(АнализируемыйФайл) Тогда + Описание.Тип = ФункциональнаяОпция; + Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияФункциональнойОпцииEDT(АнализируемыйФайл); + ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПодсистемы(АнализируемыйФайл) Тогда + Описание.Тип = Подсистема; + Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл); + КонецЕсли; + + Возврат Описание; +КонецФункции + +Конфигурация = "Конфигурация"; +ОпределяемыйТип = "ОпределяемыйТип"; +ПланОбмена = "ПланОбмена"; +ФункциональнаяОпция = "ФункциональнаяОпция"; +Подсистема = "Подсистема"; +Неизвестный = ""; \ No newline at end of file diff --git a/src/Модули/ТипыФайлов.os b/src/Модули/ТипыФайлов.os index 7f33bda..1b27382 100644 --- a/src/Модули/ТипыФайлов.os +++ b/src/Модули/ТипыФайлов.os @@ -247,6 +247,25 @@ Возврат СтрСравнить(Файл.Имя, "RecordSetModule.bsl") = 0; КонецФункции +// По косвенным признакам опрделеяет принадлежность анализируемого файла к заимствованному в расширение +Функция ЭтоФайлЗаимствованногоОбъектаРасширения(Файл) Экспорт + Результат = Ложь; + + Если НЕ (Файл.Существует() И Файл.ЭтоФайл())Тогда + Возврат Результат; + КонецЕсли; + + Если ЭтоФайлОписанияПланаОбменаКонфигуратора(Файл) Тогда + // для плана обмена анализируется файл состава, поэтому смотрим на другой тег + ОбязательныйТегРасширения = ВРег(""); + Иначе + ОбязательныйТегРасширения = ВРег(""); + КонецЕсли; + + ТекстФайла = ВРег(ФайловыеОперации.ПрочитатьТекстФайла(Файл.ПолноеИмя)); + Возврат СтрНайти(ТекстФайла, ОбязательныйТегРасширения) > 0; +КонецФункции + Функция ПолучитьОтносительныйПуть(Путь, Надкаталог) Результат = Путь; diff --git a/src/СценарииОбработки/СортировкаСостава.os b/src/СценарииОбработки/СортировкаСостава.os index 4eb84b3..910aac3 100644 --- a/src/СценарииОбработки/СортировкаСостава.os +++ b/src/СценарииОбработки/СортировкаСостава.os @@ -4,6 +4,9 @@ // /////////////////////////////////////////////////////////////////////////////// +Перем ПрефиксыСортировки; // перечень префиксов для сортировки объектов +Перем НесортируемыеТипыМетаданных; // перечень имен метаданных, пропускаемых при сортировке + // Возвращает имя сценария обработки файлов // // Возвращаемое значение: @@ -27,15 +30,16 @@ // Возвращаемое значение: // Булево - Признак выполненной обработки файла // -Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт - +// BSLLS:UnusedParameters-off API +Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт +// BSLLS:UnusedParameters-on ФайлОбработан = Ложь; Если АнализируемыйФайл.Существует() Тогда НастройкиСценария = ДополнительныеПараметры.Настройки.Получить(ИмяСценария()); ПараметрыСортировки = ПараметрыСортировки(АнализируемыйФайл, НастройкиСценария); - Если ЗначениеЗаполнено(ПараметрыСортировки) Тогда + Если НЕ (ПараметрыСортировки = Неопределено ИЛИ ПараметрыСортировки.Пустой()) Тогда ПолноеИмяФайла = АнализируемыйФайл.ПолноеИмя; ДополнительныеПараметры.Лог.Информация("Обработка файла '%1' по сценарию '%2'", ПолноеИмяФайла, ИмяСценария()); @@ -54,88 +58,136 @@ КонецФункции +#Область ПодготовкаСценариевОбработки + Функция ПараметрыСортировки(АнализируемыйФайл, НастройкиСценария) - - Результат = Новый Структура(); - - ОпределитьОбрабатываемыйОбъект(Результат, АнализируемыйФайл, НастройкиСценария); - - Если ЗначениеЗаполнено(Результат) Тогда - - ОпределитьСтруктуруСостава(Результат); - ОпределитьШаблоныПоиска(Результат); - + НастройкиСортировкиСостава = Новый НастройкиСортировкиСостава(АнализируемыйФайл); + Если Не НастройкиСортировкиСостава.Пустой() Тогда + ОтключенныеОбъекты = ОтключенныеОбъекты(НастройкиСценария); + Если ОтключенныеОбъекты.Найти(НРег(НастройкиСортировкиСостава.Тип)) <> Неопределено Тогда + // Пропускаем + Возврат Неопределено; + КонецЕсли; + + УстановитьУсловияОбработкиФайла(НастройкиСортировкиСостава); + ПрефиксыСортировки = ПрефиксыСортировки(НастройкиСценария); + НесортируемыеТипыМетаданных = НесортируемыеТипыМетаданных(); КонецЕсли; - - Возврат Результат; - + Возврат НастройкиСортировкиСостава; КонецФункции -Процедура ОпределитьОбрабатываемыйОбъект(ПараметрыСортировки, АнализируемыйФайл, НастройкиСценария) - - Объекты = ОбрабатываемыеОбъекты(); - - ОбрабатываемыйОбъект = ""; - - ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл); - Если ЭтоЕДТ Или ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда - - ОбрабатываемыйОбъект = Объекты.Конфигурация; - - ИначеЕсли ТипыФайлов.ЭтоФайлОписанияОпределяемогоТипа(АнализируемыйФайл) Тогда - - ОбрабатываемыйОбъект = Объекты.ОпределяемыйТип; - ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияОпределяемогоТипаEDT(АнализируемыйФайл); - - ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПланаОбмена(АнализируемыйФайл) Тогда - - ОбрабатываемыйОбъект = Объекты.ПланОбмена; - ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияПланаОбменаEDT(АнализируемыйФайл); - - ИначеЕсли ТипыФайлов.ЭтоФайлОписанияФункциональнойОпции(АнализируемыйФайл) Тогда - - ОбрабатываемыйОбъект = Объекты.ФункциональнаяОпция; - ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияФункциональнойОпцииEDT(АнализируемыйФайл); - - ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПодсистемы(АнализируемыйФайл) Тогда - - ОбрабатываемыйОбъект = Объекты.Подсистема; - ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл); - +Процедура УстановитьУсловияОбработкиФайла(НастройкиСортировки) + Если НастройкиСортировки.Тип = ТипыОбъектовДляСортировки.Конфигурация Тогда + УстановитьУсловияОбработкиФайлаКонфигурация(НастройкиСортировки); + ИначеЕсли НастройкиСортировки.Тип = ТипыОбъектовДляСортировки.Подсистема Тогда + УстановитьУсловияОбработкиФайлаПодсистема(НастройкиСортировки); + ИначеЕсли НастройкиСортировки.Тип = ТипыОбъектовДляСортировки.ФункциональнаяОпция Тогда + УстановитьУсловияОбработкиФайлаФункциональнаяОпция(НастройкиСортировки); + ИначеЕсли НастройкиСортировки.Тип = ТипыОбъектовДляСортировки.ОпределяемыйТип Тогда + УстановитьУсловияОбработкиФайлаОпределяемыйТип(НастройкиСортировки); + ИначеЕсли НастройкиСортировки.Тип = ТипыОбъектовДляСортировки.ПланОбмена Тогда + УстановитьУсловияОбработкиФайлаПланОбмена(НастройкиСортировки); + Иначе + ВызватьИсключение "Неизвестный тип для сортировки"; КонецЕсли; - - Если ЗначениеЗаполнено(ОбрабатываемыйОбъект) Тогда - - ОтключенныеОбъекты = ОтключенныеОбъекты(НастройкиСценария); - Если ОтключенныеОбъекты.Найти(НРег(ОбрабатываемыйОбъект)) = Неопределено Тогда - - ПараметрыСортировки.Вставить("ОбрабатываемыйОбъект", ОбрабатываемыйОбъект); - ПараметрыСортировки.Вставить("ЭтоЕДТ", ЭтоЕДТ); - ПараметрыСортировки.Вставить("ПрефиксыСортировки", ПрефиксыСортировки(НастройкиСценария)); - - КонецЕсли; - - КонецЕсли; - КонецПроцедуры -Функция ОбрабатываемыеОбъекты() +Процедура УстановитьУсловияОбработкиФайлаКонфигурация(НастройкиСортировки) + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("%1"); + Если НастройкиСортировки.ЕДТ() Тогда + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + Иначе + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьРодительскийЭлемент("ChildObjects", " "); + КонецЕсли; + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); +КонецПроцедуры - Результат = Новый Структура(); +Процедура УстановитьУсловияОбработкиФайлаПодсистема(НастройкиСортировки) + Если НастройкиСортировки.ЕДТ() Тогда + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("content"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + Иначе + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("xr:Item"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьРодительскийЭлемент("Content", " "); + НастройкаСценарияСортировкиСостава.УстановитьЕстьАтрибуты(); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + КонецЕсли; +КонецПроцедуры - Результат.Вставить("Конфигурация"); - Результат.Вставить("ОпределяемыйТип"); - Результат.Вставить("ПланОбмена"); - Результат.Вставить("ФункциональнаяОпция"); - Результат.Вставить("Подсистема"); +Процедура УстановитьУсловияОбработкиФайлаФункциональнаяОпция(НастройкиСортировки) + Если НастройкиСортировки.ЕДТ() Тогда + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("content"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + Иначе + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("xr:Object"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьРодительскийЭлемент("Content", " "); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + КонецЕсли; +КонецПроцедуры - Для каждого Элемент Из Результат Цикл - Результат[Элемент.Ключ] = Элемент.Ключ; - КонецЦикла; +Процедура УстановитьУсловияОбработкиФайлаОпределяемыйТип(НастройкиСортировки) + Если НастройкиСортировки.ЕДТ() Тогда + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("types"); + Если НастройкиСортировки.Заимствованный() Тогда + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьРодительскийЭлемент("typeExtension", " "); + НастройкаСценарияСортировкиСостава.УстановитьИмяВложенного("type"); + Иначе + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + КонецЕсли; + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + Иначе + Если НастройкиСортировки.Заимствованный() Тогда + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("v8:Type"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьРодительскийЭлемент("xr:CheckValue xsi:type=""v8:TypeDescription""", + " ", "xr:CheckValue"); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("v8:Type"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьРодительскийЭлемент("xr:ExtendValue xsi:type=""v8:TypeDescription""", + " ", "xr:ExtendValue"); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + КонецЕсли; + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("v8:Type"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + КонецЕсли; +КонецПроцедуры - Возврат Результат; - -КонецФункции +Процедура УстановитьУсловияОбработкиФайлаПланОбмена(НастройкиСортировки) + Если НастройкиСортировки.ЕДТ() Тогда + Если НастройкиСортировки.Заимствованный() Тогда + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("extendedConfigurationObject"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьРодительскийЭлемент( + "extension xsi:type=""mdclassExtension:ExchangePlanExtension""", " ", "extension"); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + КонецЕсли; + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("content"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьИмяВложенного("mdObject"); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + Иначе + Если НастройкиСортировки.Заимствованный() Тогда + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("Item"); + НастройкаСценарияСортировкиСостава.УстановитьРодительскийЭлемент("ExtensionProperty", " "); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьИмяВложенного("Metadata"); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + КонецЕсли; + + НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("Item"); + НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" "); + НастройкаСценарияСортировкиСостава.УстановитьИмяВложенного("Metadata"); + НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава); + КонецЕсли; +КонецПроцедуры Функция ОтключенныеОбъекты(НастройкиСценария) Возврат НормализованныйМассивИзНастроек(НастройкиСценария, "ОтключенныеОбъекты", Истина, Истина); @@ -180,215 +232,94 @@ КонецФункции -Процедура ОпределитьСтруктуруСостава(ПараметрыСортировки) - - Объекты = ОбрабатываемыеОбъекты(); - - ОбрабатываемыйОбъект = ПараметрыСортировки.ОбрабатываемыйОбъект; - ЭтоЕДТ = ПараметрыСортировки.ЭтоЕДТ; - - СтруктураСостава = Новый Структура(); - СтруктураСостава.Вставить("ИмяЭлемента"); - СтруктураСостава.Вставить("РазделительЭлементов"); - СтруктураСостава.Вставить("ЭлементИмеетАтрибуты", Ложь); - СтруктураСостава.Вставить("ИмяВложенногоЭлемента", ""); - СтруктураСостава.Вставить("ИмяРодительскогоЭлемента", ""); - СтруктураСостава.Вставить("ОтступРодительскогоЭлемента", ""); - - Если ЭтоЕДТ Тогда - - СтруктураСостава.ИмяЭлемента = "content"; - СтруктураСостава.РазделительЭлементов = Символы.ПС + " "; - - Если ОбрабатываемыйОбъект = Объекты.Конфигурация Тогда - - СтруктураСостава.ИмяЭлемента = "%1"; // будет подставляться для каждого типа объектов метаданных - - ИначеЕсли ОбрабатываемыйОбъект = Объекты.ОпределяемыйТип Тогда - - СтруктураСостава.ИмяЭлемента = "types"; - СтруктураСостава.РазделительЭлементов = Символы.ПС + " "; - - ИначеЕсли ОбрабатываемыйОбъект = Объекты.ПланОбмена Тогда - - СтруктураСостава.ИмяВложенногоЭлемента = "mdObject"; - - КонецЕсли; - - Иначе - - СтруктураСостава.РазделительЭлементов = Символы.ПС + " "; - - Если ОбрабатываемыйОбъект = Объекты.Конфигурация Тогда - - СтруктураСостава.ИмяЭлемента = "%1"; // будет подставляться для каждого типа объектов метаданных - СтруктураСостава.РазделительЭлементов = Символы.ПС + " "; - - СтруктураСостава.ИмяРодительскогоЭлемента = "ChildObjects"; - СтруктураСостава.ОтступРодительскогоЭлемента = " "; - - ИначеЕсли ОбрабатываемыйОбъект = Объекты.ОпределяемыйТип Тогда - - СтруктураСостава.ИмяЭлемента = "v8:Type"; - - ИначеЕсли ОбрабатываемыйОбъект = Объекты.ПланОбмена Тогда - - СтруктураСостава.ИмяЭлемента = "Item"; - СтруктураСостава.РазделительЭлементов = Символы.ПС + " "; - - СтруктураСостава.ИмяВложенногоЭлемента = "Metadata"; - - ИначеЕсли ОбрабатываемыйОбъект = Объекты.ФункциональнаяОпция Тогда - - СтруктураСостава.ИмяЭлемента = "xr:Object"; - - СтруктураСостава.ИмяРодительскогоЭлемента = "Content"; - СтруктураСостава.ОтступРодительскогоЭлемента = " "; - - ИначеЕсли ОбрабатываемыйОбъект = Объекты.Подсистема Тогда - - СтруктураСостава.ИмяЭлемента = "xr:Item"; - СтруктураСостава.ЭлементИмеетАтрибуты = Истина; - - СтруктураСостава.ИмяРодительскогоЭлемента = "Content"; - СтруктураСостава.ОтступРодительскогоЭлемента = " "; - - КонецЕсли; - - КонецЕсли; - - Если СтруктураСостава.ИмяЭлемента = Неопределено Или СтруктураСостава.РазделительЭлементов = Неопределено Тогда - ВызватьИсключение - СтрШаблон( - "Не задано имя или разделитель элементов состава для объекта [%1] (формат %2)", - ОбрабатываемыйОбъект, - Формат(ЭтоЕДТ, "БЛ=конфигуратора; БИ=ЕДТ")); - КонецЕсли; - - ПараметрыСортировки.Вставить("СтруктураСостава", СтруктураСостава); - -КонецПроцедуры - -Процедура ОпределитьШаблоныПоиска(ПараметрыСортировки) - - СтруктураСостава = ПараметрыСортировки.СтруктураСостава; - - // 1-я группа: состав объектов - ШаблонПоискаСостава = ""; - Если ПараметрыСортировки.ОбрабатываемыйОбъект = ОбрабатываемыеОбъекты().Конфигурация И ПараметрыСортировки.ЭтоЕДТ Тогда - ШаблонПоискаСостава = "\s*()[ \t]*\n*"; // 2-я группа: завершающий блок ЕДТ - ИначеЕсли ЗначениеЗаполнено(СтруктураСостава.ИмяРодительскогоЭлемента) Тогда - ШаблонПоискаСостава = СтрШаблон("\s*<%1>([\w\W]*)<\/%1>[ \t]*\n*", СтруктураСостава.ИмяРодительскогоЭлемента); - Иначе - ШаблонПоискаСостава = СтрШаблон("\s*(<%1>[\w\W]*<\/%1>)[ \t]*\n*", СтруктураСостава.ИмяЭлемента); - КонецЕсли; - - // 1-я группа: имя объекта состава - ШаблонПоискаЭлементов = ""; - ТекстАтрибутов = ?(СтруктураСостава.ЭлементИмеетАтрибуты, "\s+[^>]+", ""); - Если ЗначениеЗаполнено(СтруктураСостава.ИмяВложенногоЭлемента) Тогда - ШаблонПоискаЭлементов = СтрШаблон( - "<%1%2>[\w\W]*?<%3>([^<]*?)<\/%3>[\w\W]*?<\/%1>", - СтруктураСостава.ИмяЭлемента, ТекстАтрибутов, СтруктураСостава.ИмяВложенногоЭлемента); - Иначе - ШаблонПоискаЭлементов = СтрШаблон( - "<%1%2>([^<]*?)<\/%1>", - СтруктураСостава.ИмяЭлемента, ТекстАтрибутов); - КонецЕсли; - - ПараметрыСортировки.Вставить("ШаблонПоискаСостава", ШаблонПоискаСостава); - ПараметрыСортировки.Вставить("ШаблонПоискаЭлементов", ШаблонПоискаЭлементов); - -КонецПроцедуры - -Функция СортироватьСостав(ПолноеИмяФайла, ПараметрыСортировки) - - Результат = Ложь; - - СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ПолноеИмяФайла); - - ПоискСостава = РегулярныеВыражения.Создать(ПараметрыСортировки.ШаблонПоискаСостава); - СовпаденияСостава = ПоискСостава.НайтиСовпадения(СодержимоеФайла); - Если СовпаденияСостава.Количество() > 0 Тогда - - СовпадениеСостава = СовпаденияСостава[0]; - - СортированныйСостав = СортированныйСостав(СовпадениеСостава, ПараметрыСортировки) + Символы.ПС; - - ИсходныйСостав = СовпадениеСостава.Группы[0].Значение; - Если СтрСравнить(ИсходныйСостав, СортированныйСостав) <> 0 Тогда - - СодержимоеФайла = ПоискСостава.Заменить(СодержимоеФайла, СортированныйСостав); - ФайловыеОперации.ЗаписатьТекстФайла(ПолноеИмяФайла, СодержимоеФайла); - Результат = Истина; - - КонецЕсли; - - КонецЕсли; - +Функция НесортируемыеТипыМетаданных() + Результат = Новый Массив(); + Результат.Добавить("subsystems"); + Результат.Добавить("subsystem"); + Результат.Добавить("languages"); + Результат.Добавить("language"); Возврат Результат; - КонецФункции -Функция СортированныйСостав(СовпадениеСостава, ПараметрыСортировки) +#КонецОбласти +#Область СортировкаСостава + +Функция СортироватьСостав(ПолноеИмяФайла, ПараметрыСортировки) + ФайлИзменился = Ложь; + СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ПолноеИмяФайла); + + Замены = Новый Массив; + Для каждого Сценарий Из ПараметрыСортировки.Сценарии() Цикл + ПоискСостава = Сценарий.ШаблонПоискаСостава(); + СовпаденияСостава = ПоискСостава.НайтиСовпадения(СодержимоеФайла); + Если СовпаденияСостава.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + СовпадениеСостава = СовпаденияСостава[0]; + СортированныйСостав = СортироватьСоставПоСценарию(СовпадениеСостава, ПараметрыСортировки, Сценарий) + Символы.ПС; + СодержимоеФайла = ПоискСостава.Заменить(СодержимоеФайла, "_____ЗАМЕНА____" + Замены.Количество()); + Замены.Добавить(СортированныйСостав); + КонецЦикла; + НовыйТекст = СодержимоеФайла; + Для Ит = 0 По Замены.Количество() - 1 Цикл + НовыйТекст = СтрЗаменить(НовыйТекст, "_____ЗАМЕНА____" + Ит, Замены.Получить(Ит)); + КонецЦикла; + НовыйТекст = СтрЗаменить(НовыйТекст, Символы.ПС + Символы.ПС, Символы.ПС); + + Если СтрСравнить(НовыйТекст, СодержимоеФайла) <> 0 Тогда + СодержимоеФайла = НовыйТекст; + ФайловыеОперации.ЗаписатьТекстФайла(ПолноеИмяФайла, СодержимоеФайла); + ФайлИзменился = Истина; + КонецЕсли; + + Возврат ФайлИзменился; +КонецФункции + +Функция СортироватьСоставПоСценарию(СовпадениеСостава, ПараметрыСортировки, Сценарий) Результат = ""; - - ПрефиксыСортировки = ПараметрыСортировки.ПрефиксыСортировки; - СтруктураСостава = ПараметрыСортировки.СтруктураСостава; - СоставОбъектов = СовпадениеСостава.Группы[1].Значение; - Если ПараметрыСортировки.ОбрабатываемыйОбъект = ОбрабатываемыеОбъекты().Конфигурация Тогда + Если ПараметрыСортировки.Тип = ТипыОбъектовДляСортировки.Конфигурация Тогда - СортированныеОбъекты = Новый Массив; - НесортируемыеТипыМетаданных = НесортируемыеТипыМетаданных(); + СортированныеОбъекты = Новый Массив; Для каждого ТипМетаданных Из ИменаВсехЭлементовПоПорядку(СоставОбъектов) Цикл - СоставТипа = ВырезатьЭлемент(СоставОбъектов, ТипМетаданных, СтруктураСостава.РазделительЭлементов); - + СоставТипа = ВырезатьЭлемент(СоставОбъектов, ТипМетаданных, Сценарий.РазделительЭлементов()); Если НесортируемыеТипыМетаданных.Найти(НРег(ТипМетаданных)) = Неопределено Тогда - ШаблонПоискаЭлементов = СтрШаблон(ПараметрыСортировки.ШаблонПоискаЭлементов, ТипМетаданных); + ШаблонПоискаЭлементов = СтрШаблон(Сценарий.ШаблонПоискаЭлементов(), ТипМетаданных); - СоставТипа = СортированныеЭлементыСостава( - СоставТипа, - ШаблонПоискаЭлементов, - СтруктураСостава.РазделительЭлементов, - ПрефиксыСортировки); + СоставТипа = СортированныеЭлементы(СоставТипа, ШаблонПоискаЭлементов, Сценарий.РазделительЭлементов()); КонецЕсли; СортированныеОбъекты.Добавить(СоставТипа); - КонецЦикла; Результат = СтрСоединить(СортированныеОбъекты) - + ?(ПараметрыСортировки.ЭтоЕДТ, Символы.ПС + СовпадениеСостава.Группы[2].Значение, ""); // Завершающий блок ЕДТ + + ?(ПараметрыСортировки.ЕДТ(), Символы.ПС + СовпадениеСостава.Группы[2].Значение, ""); // Завершающий блок ЕДТ Иначе - - Результат = СортированныеЭлементыСостава( - СоставОбъектов, - ПараметрыСортировки.ШаблонПоискаЭлементов, - СтруктураСостава.РазделительЭлементов, - ПрефиксыСортировки); - + Результат = СортированныеЭлементы(СоставОбъектов, Сценарий.ШаблонПоискаЭлементов(), Сценарий.РазделительЭлементов()); КонецЕсли; - Если ЗначениеЗаполнено(СтруктураСостава.ИмяРодительскогоЭлемента) Тогда + Если Сценарий.ЕстьРодительскийЭлемент() Тогда + РодительскийЭлемент = Сценарий.РодительскийЭлемент(); Если ЗначениеЗаполнено(Результат) Тогда Результат = СтрШаблон( " - |%1<%2>%3 - |%1", - СтруктураСостава.ОтступРодительскогоЭлемента, - СтруктураСостава.ИмяРодительскогоЭлемента, + |%1<%2>%4 + |%1", + РодительскийЭлемент.Отступ, + РодительскийЭлемент.Имя, + РодительскийЭлемент.Завершение, Результат); Иначе Результат = СтрШаблон( " |%1<%2/>", - СтруктураСостава.ОтступРодительскогоЭлемента, - СтруктураСостава.ИмяРодительскогоЭлемента); + РодительскийЭлемент.Отступ, + РодительскийЭлемент.Имя); КонецЕсли; КонецЕсли; @@ -397,7 +328,6 @@ КонецФункции Функция ИменаВсехЭлементовПоПорядку(ТекстХМЛ) - ПоискЭлементов = РегулярныеВыражения.Создать("<(?[^>]+)[^>]*>[\w\W]*?<\/\k>"); // стиль .NET Элементы = Новый ТаблицаЗначений; @@ -408,11 +338,9 @@ Элементы.Свернуть("ИмяЭлемента"); Возврат Элементы.ВыгрузитьКолонку("ИмяЭлемента"); - КонецФункции Функция ВырезатьЭлемент(ТекстХМЛ, ИмяЭлемента, РазделительЭлементов = "") - Результат = ""; ПоискЭлемента = РегулярныеВыражения.Создать(СтрШаблон("\s*(<%1[^>]*>[\w\W]*?<\/%1>)[ \t]*", ИмяЭлемента)); @@ -430,39 +358,24 @@ КонецЕсли; Возврат Результат; - КонецФункции -Функция НесортируемыеТипыМетаданных() - - Результат = Новый Массив(); - Результат.Добавить("subsystems"); - Результат.Добавить("subsystem"); - Результат.Добавить("languages"); - Результат.Добавить("language"); - Возврат Результат; - -КонецФункции - -Функция СортированныеЭлементыСостава(СтрокаСостава, ШаблонПоискаЭлементов, РазделительЭлементов, ПрефиксыСортировки) Экспорт - - ТаблицыПоПрефиксам = ТаблицыПоПрефиксам(ПрефиксыСортировки); - +Функция СортированныеЭлементы(Знач СтрокаСостава, ШаблонПоискаЭлементов, РазделительЭлементов) Экспорт + ТаблицыПоПрефиксам = ТаблицыПоПрефиксам(); ПоискЭлементов = РегулярныеВыражения.Создать(ШаблонПоискаЭлементов); - Для Каждого СовпадениеЭлемента Из ПоискЭлементов.НайтиСовпадения(СтрокаСостава) Цикл - + Для Каждого СовпадениеЭлемента Из ПоискЭлементов.НайтиСовпадения(СтрокаСостава) Цикл ЗначениеЭлемента = СовпадениеЭлемента.Группы[1].Значение; + СтрокаСостава = СтрЗаменить(СтрокаСостава, СовпадениеЭлемента.Группы[0].Значение, ""); Если СтрНайти(ЗначениеЭлемента, "-") > 0 Тогда // Вероятно это UID (битая ссылка) Продолжить; КонецЕсли; ИмяОбъекта = ИмяОбъекта(ЗначениеЭлемента); СтрокаЭлемента = СовпадениеЭлемента.Группы[0].Значение; - ИндексТаблицы = ИндексТаблицыПоПрефиксу(ИмяОбъекта, ПрефиксыСортировки); + ИндексТаблицы = ИндексТаблицыПоПрефиксу(ИмяОбъекта); СтрокаТаблицы = ТаблицыПоПрефиксам[ИндексТаблицы].Добавить(); СтрокаТаблицы.СтрокаЭлемента = СтрокаЭлемента; СтрокаТаблицы.СтрокаСортировки = ЗначениеЭлемента; - КонецЦикла; СортированныеЭлементыПоПрефиксами = Новый Массив(); @@ -472,19 +385,34 @@ КонецЕсли; ТаблицаПрефикса.Сортировать("СтрокаСортировки"); ТаблицаПрефикса.Свернуть("СтрокаЭлемента"); - СортированныеЭлементыПоПрефиксами.Добавить(СтрСоединить(ТаблицаПрефикса.ВыгрузитьКолонку("СтрокаЭлемента"), РазделительЭлементов)); + ОбработанныйБлок = СтрСоединить(ТаблицаПрефикса.ВыгрузитьКолонку("СтрокаЭлемента"), РазделительЭлементов); + СортированныеЭлементыПоПрефиксами.Добавить(ОбработанныйБлок); КонецЦикла; Результат = СтрСоединить(СортированныеЭлементыПоПрефиксами, РазделительЭлементов); + Если НЕ ПустаяСтрока(СтрокаСостава) Тогда + ОчиститьОстатокБлокаОтПустыхСтрок(СтрокаСостава); + Результат = Результат + Символы.ПС + СтрокаСостава; + КонецЕсли; Если ЗначениеЗаполнено(Результат) Тогда Результат = РазделительЭлементов + Результат; КонецЕсли; Возврат Результат; - КонецФункции -Функция ТаблицыПоПрефиксам(ПрефиксыСортировки) +Процедура ОчиститьОстатокБлокаОтПустыхСтрок(СтрокаСостава) + Строки = СтрРазделить(СтрокаСостава, Символы.ПС, Ложь); + СтрокиНовые = Новый Массив; + Для Каждого Строка Из Строки Цикл + Если НЕ ПустаяСтрока(Строка) Тогда + СтрокиНовые.Добавить(Строка); + КонецЕсли; + КонецЦикла; + СтрокаСостава = СтрСоединить(СтрокиНовые, Символы.ПС); +КонецПроцедуры + +Функция ТаблицыПоПрефиксам() ТаблицыПоПрефиксам = Новый Массив(); @@ -494,7 +422,7 @@ ТаблицыПоПрефиксам.Добавить(ТаблицаСортировки); Если ЗначениеЗаполнено(ПрефиксыСортировки) Тогда - Для каждого Префикс Из ПрефиксыСортировки Цикл + Для каждого Префикс Из ПрефиксыСортировки Цикл // BSLLS:UseLessForEach-off служебный итератор ТаблицыПоПрефиксам.Добавить(ТаблицаСортировки.СкопироватьКолонки()); КонецЦикла; КонецЕсли; @@ -516,7 +444,7 @@ КонецФункции -Функция ИндексТаблицыПоПрефиксу(ИмяОбъекта, ПрефиксыСортировки) +Функция ИндексТаблицыПоПрефиксу(ИмяОбъекта) ИндексТаблицы = 0; @@ -530,3 +458,5 @@ Возврат ИндексТаблицы; КонецФункции + +#КонецОбласти diff --git a/tests/fixtures/СортировкаСостава/Configuration/Ext/До/Configuration.mdo b/tests/fixtures/СортировкаСостава/Configuration/Ext/До/Configuration.mdo new file mode 100644 index 0000000..244e42e --- /dev/null +++ b/tests/fixtures/СортировкаСостава/Configuration/Ext/До/Configuration.mdo @@ -0,0 +1,58 @@ + + + Extension + + ru + Extension + + Adopted + + Checked + Checked + Extended + Extended + Checked + Checked + Checked + Extended + Extended + + + + + + + + + true + Расш2_ + 8.3.21 + Customization + ManagedApplication + PersonalComputer + Russian + Role.Расш2_ОсновнаяРоль + Language.Русский + 8.3.21 + + Русский + Adopted + + Checked + + ru + + Subsystem.Финансы + Role.Расш2_ОсновнаяРоль + ExchangePlan.Мобильные + FunctionalOption.ВалютныйУчет + DefinedType.РасчетныйСчет + Catalog.Валюты + Catalog.Банки + Catalog.Организации + Catalog.РасчетныеСчетаКонтрагентов + Catalog.РасчетныеСчета + Document.КорректировкаРасчетов + Document.Оплата + InformationRegister.КурсыВалют + diff --git a/tests/fixtures/СортировкаСостава/Configuration/Ext/До/Configuration.xml b/tests/fixtures/СортировкаСостава/Configuration/Ext/До/Configuration.xml new file mode 100644 index 0000000..c94361e --- /dev/null +++ b/tests/fixtures/СортировкаСостава/Configuration/Ext/До/Configuration.xml @@ -0,0 +1,85 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 5c16a0ad-3aca-4316-bb17-774d157aeb1b + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + f3b28286-dbec-4c9c-be2a-c65e27629e8c + + + e3687481-0a87-462c-a166-9f34594f9bba + 557560a6-1a8e-4348-8e3a-1bb7e29e79fb + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + f2b63154-191f-4f73-8cee-2649d48326e9 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + e2829ec3-b2f9-4672-91f3-651599458321 + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 88447bcb-73c7-43b6-97bb-11a1337390e9 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 394ea472-9a08-4fc5-90ae-603049f76dc2 + + + + Extension + + + ru + Extension + + + + Customization + Adopted + true + Расш2_ + Version8_3_21 + ManagedApplication + + PlatformApplication + + Russian + + Role.Расш2_ОсновнаяРоль + + + + + Language.Русский + + + + + + Taxi + Version8_3_21 + + + Русский + Финансы + Расш2_ОсновнаяРоль + Мобильные + ВалютныйУчет + РасчетныйСчет + Валюты + Банки + Организации + РасчетныеСчетаКонтрагентов + РасчетныеСчета + КорректировкаРасчетов + Оплата + КурсыВалют + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/Configuration/Ext/После/Configuration.mdo b/tests/fixtures/СортировкаСостава/Configuration/Ext/После/Configuration.mdo new file mode 100644 index 0000000..784937a --- /dev/null +++ b/tests/fixtures/СортировкаСостава/Configuration/Ext/После/Configuration.mdo @@ -0,0 +1,58 @@ + + + Extension + + ru + Extension + + Adopted + + Checked + Checked + Extended + Extended + Checked + Checked + Checked + Extended + Extended + + + + + + + + + true + Расш2_ + 8.3.21 + Customization + ManagedApplication + PersonalComputer + Russian + Role.Расш2_ОсновнаяРоль + Language.Русский + 8.3.21 + + Русский + Adopted + + Checked + + ru + + Subsystem.Финансы + Role.Расш2_ОсновнаяРоль + ExchangePlan.Мобильные + FunctionalOption.ВалютныйУчет + DefinedType.РасчетныйСчет + Catalog.Банки + Catalog.Валюты + Catalog.Организации + Catalog.РасчетныеСчета + Catalog.РасчетныеСчетаКонтрагентов + Document.КорректировкаРасчетов + Document.Оплата + InformationRegister.КурсыВалют + diff --git a/tests/fixtures/СортировкаСостава/Configuration/Ext/После/Configuration.xml b/tests/fixtures/СортировкаСостава/Configuration/Ext/После/Configuration.xml new file mode 100644 index 0000000..da4d75d --- /dev/null +++ b/tests/fixtures/СортировкаСостава/Configuration/Ext/После/Configuration.xml @@ -0,0 +1,85 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 5c16a0ad-3aca-4316-bb17-774d157aeb1b + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + f3b28286-dbec-4c9c-be2a-c65e27629e8c + + + e3687481-0a87-462c-a166-9f34594f9bba + 557560a6-1a8e-4348-8e3a-1bb7e29e79fb + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + f2b63154-191f-4f73-8cee-2649d48326e9 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + e2829ec3-b2f9-4672-91f3-651599458321 + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 88447bcb-73c7-43b6-97bb-11a1337390e9 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 394ea472-9a08-4fc5-90ae-603049f76dc2 + + + + Extension + + + ru + Extension + + + + Customization + Adopted + true + Расш2_ + Version8_3_21 + ManagedApplication + + PlatformApplication + + Russian + + Role.Расш2_ОсновнаяРоль + + + + + Language.Русский + + + + + + Taxi + Version8_3_21 + + + Русский + Финансы + Расш2_ОсновнаяРоль + Мобильные + ВалютныйУчет + РасчетныйСчет + Банки + Валюты + Организации + РасчетныеСчета + РасчетныеСчетаКонтрагентов + КорректировкаРасчетов + Оплата + КурсыВалют + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет.mdo b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет.mdo new file mode 100644 index 0000000..15289fa --- /dev/null +++ b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет.mdo @@ -0,0 +1,28 @@ + + + + + + РасчетныйСчет + Adopted + + Checked + + + Checked + CatalogRef.РасчетныеСчета + + + Extended + String + + + Extended + CatalogRef.РасчетныеСчетаКонтрагентов + + + 12 + + + + diff --git a/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет.xml b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет.xml new file mode 100644 index 0000000..2f54974 --- /dev/null +++ b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет.xml @@ -0,0 +1,34 @@ + + + + + + 8df943bf-bcf8-4fc1-951d-eb0ca3422f99 + b4042d7d-7c89-46bd-a2e6-7c07c175e08c + + + Type + MultiState + + + + РасчетныйСчет + + Adopted + 8a01012d-a773-47ff-80a3-fbe494caa861 + + + cfg:CatalogRef.РасчетныеСчета + + + xs:string + cfg:CatalogRef.РасчетныеСчетаКонтрагентов + + 12 + Variable + + + + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет2.xml b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет2.xml new file mode 100644 index 0000000..05f1b90 --- /dev/null +++ b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/До/РасчетныйСчет2.xml @@ -0,0 +1,27 @@ + + + + + + 8df943bf-bcf8-4fc1-951d-eb0ca3422f99 + b4042d7d-7c89-46bd-a2e6-7c07c175e08c + + + Type + MultiState + + + + РасчетныйСчет2 + Adopted + + + cfg:CatalogRef.ШтатноеРасписание + cfg:CatalogRef.ФизическиеЛица + cfg:CatalogRef.ПодразделенияОрганизаций + cfg:CatalogRef.Должности + cfg:CatalogRef.Организации + + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет.mdo b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет.mdo new file mode 100644 index 0000000..f7ce3b2 --- /dev/null +++ b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет.mdo @@ -0,0 +1,28 @@ + + + + + + РасчетныйСчет + Adopted + + Checked + + + Checked + CatalogRef.РасчетныеСчета + + + Extended + CatalogRef.РасчетныеСчетаКонтрагентов + + + Extended + String + + + 12 + + + + diff --git a/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет.xml b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет.xml new file mode 100644 index 0000000..847c6ba --- /dev/null +++ b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет.xml @@ -0,0 +1,34 @@ + + + + + + 8df943bf-bcf8-4fc1-951d-eb0ca3422f99 + b4042d7d-7c89-46bd-a2e6-7c07c175e08c + + + Type + MultiState + + + + РасчетныйСчет + + Adopted + 8a01012d-a773-47ff-80a3-fbe494caa861 + + + cfg:CatalogRef.РасчетныеСчета + + + cfg:CatalogRef.РасчетныеСчетаКонтрагентов + xs:string + + 12 + Variable + + + + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет2.xml b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет2.xml new file mode 100644 index 0000000..c1e73ca --- /dev/null +++ b/tests/fixtures/СортировкаСостава/DefinedTypes/Ext/После/РасчетныйСчет2.xml @@ -0,0 +1,27 @@ + + + + + + 8df943bf-bcf8-4fc1-951d-eb0ca3422f99 + b4042d7d-7c89-46bd-a2e6-7c07c175e08c + + + Type + MultiState + + + + РасчетныйСчет2 + Adopted + + + cfg:CatalogRef.Должности + cfg:CatalogRef.Организации + cfg:CatalogRef.ПодразделенияОрганизаций + cfg:CatalogRef.ФизическиеЛица + cfg:CatalogRef.ШтатноеРасписание + + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/DefinedTypes/После/ДоговорыКлиентов.mdo b/tests/fixtures/СортировкаСостава/DefinedTypes/После/ДоговорыКлиентов.mdo new file mode 100644 index 0000000..d79ffc0 --- /dev/null +++ b/tests/fixtures/СортировкаСостава/DefinedTypes/После/ДоговорыКлиентов.mdo @@ -0,0 +1,14 @@ + + + + + + ДоговорыКлиентов + + ru + Договоры клиентов + + + CatalogRef.ДоговорыКонтрагентов + + diff --git a/tests/fixtures/СортировкаСостава/DefinedTypes/После/ДоговорыКлиентов.xml b/tests/fixtures/СортировкаСостава/DefinedTypes/После/ДоговорыКлиентов.xml new file mode 100644 index 0000000..9dd3d2b --- /dev/null +++ b/tests/fixtures/СортировкаСостава/DefinedTypes/После/ДоговорыКлиентов.xml @@ -0,0 +1,24 @@ + + + + + + 5101544e-698b-4a59-a816-5499c60ed9d6 + a924fbae-e4a2-44e7-a182-615ff7613399 + + + + ДоговорыКлиентов + + + ru + Договоры клиентов + + + + + cfg:CatalogRef.ДоговорыКонтрагентов + + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/До/Content.xml b/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/До/Content.xml new file mode 100644 index 0000000..778692c --- /dev/null +++ b/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/До/Content.xml @@ -0,0 +1,53 @@ + + + + Catalog.РасчетныеСчетаКонтрагентов + Deny + + + Document.КорректировкаРасчетов + Deny + + + Catalog.РасчетныеСчета + Deny + + + Document.Оплата + Deny + + + InformationRegister.КурсыВалют + Allow + + + Catalog.Банки + Deny + + + + InformationRegister.КурсыВалют + Modify + + + Catalog.РасчетныеСчета + Modify + + + Catalog.Банки + Modify + + + Document.КорректировкаРасчетов + Modify + + + Document.Оплата + Modify + + + Catalog.РасчетныеСчетаКонтрагентов + Modify + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/До/Мобильные.mdo b/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/До/Мобильные.mdo new file mode 100644 index 0000000..e733b26 --- /dev/null +++ b/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/До/Мобильные.mdo @@ -0,0 +1,78 @@ + + + + + + + + + + Мобильные + Adopted + + Checked + Checked + + + InformationRegister.КурсыВалют + Allow + + Extended + + + + Document.КорректировкаРасчетов + + Extended + + + + Document.Оплата + + Extended + + + + Catalog.РасчетныеСчетаКонтрагентов + + Extended + + + + Catalog.РасчетныеСчета + + Extended + + + + Catalog.Банки + + Extended + + + + + + + + Настройки + + ru + Настройки + + + РасчетныйСчет + + ru + Расчетный счет + + + CatalogRef.РасчетныеСчета + + + + Use + Use + + + diff --git a/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/После/Content.xml b/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/После/Content.xml new file mode 100644 index 0000000..aa6655a --- /dev/null +++ b/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/После/Content.xml @@ -0,0 +1,53 @@ + + + + Catalog.Банки + Deny + + + Catalog.РасчетныеСчета + Deny + + + Catalog.РасчетныеСчетаКонтрагентов + Deny + + + Document.КорректировкаРасчетов + Deny + + + Document.Оплата + Deny + + + InformationRegister.КурсыВалют + Allow + + + + Catalog.Банки + Modify + + + Catalog.РасчетныеСчета + Modify + + + Catalog.РасчетныеСчетаКонтрагентов + Modify + + + Document.КорректировкаРасчетов + Modify + + + Document.Оплата + Modify + + + InformationRegister.КурсыВалют + Modify + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/После/Мобильные.mdo b/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/После/Мобильные.mdo new file mode 100644 index 0000000..40d5eab --- /dev/null +++ b/tests/fixtures/СортировкаСостава/ExchangePlans/Ext/После/Мобильные.mdo @@ -0,0 +1,78 @@ + + + + + + + + + + Мобильные + Adopted + + Checked + Checked + + + Catalog.Банки + + Extended + + + + Catalog.РасчетныеСчета + + Extended + + + + Catalog.РасчетныеСчетаКонтрагентов + + Extended + + + + Document.КорректировкаРасчетов + + Extended + + + + Document.Оплата + + Extended + + + + InformationRegister.КурсыВалют + Allow + + Extended + + + + + + + + Настройки + + ru + Настройки + + + РасчетныйСчет + + ru + Расчетный счет + + + CatalogRef.РасчетныеСчета + + + + Use + Use + + + diff --git a/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/До/ВалютныйУчет.mdo b/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/До/ВалютныйУчет.mdo new file mode 100644 index 0000000..e11250e --- /dev/null +++ b/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/До/ВалютныйУчет.mdo @@ -0,0 +1,13 @@ + + + ВалютныйУчет + Adopted + + Checked + Checked + + Catalog.Организации.Attribute.ВалютныйУчет + Document.Оплата + Catalog.Валюты + Document.КорректировкаРасчетов + diff --git a/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/До/ВалютныйУчет.xml b/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/До/ВалютныйУчет.xml new file mode 100644 index 0000000..4385338 --- /dev/null +++ b/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/До/ВалютныйУчет.xml @@ -0,0 +1,17 @@ + + + + + + ВалютныйУчет + + Adopted + 5ddb9715-14fa-4aec-9388-0d0778a6aed3 + Catalog.Организации.Attribute.ВалютныйУчет + + Document.Оплата.Attribute.Валюта + Document.КорректировкаРасчетов.Attribute.Валюта + + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/После/ВалютныйУчет.mdo b/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/После/ВалютныйУчет.mdo new file mode 100644 index 0000000..c70ca21 --- /dev/null +++ b/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/После/ВалютныйУчет.mdo @@ -0,0 +1,13 @@ + + + ВалютныйУчет + Adopted + + Checked + Checked + + Catalog.Организации.Attribute.ВалютныйУчет + Catalog.Валюты + Document.КорректировкаРасчетов + Document.Оплата + diff --git a/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/После/ВалютныйУчет.xml b/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/После/ВалютныйУчет.xml new file mode 100644 index 0000000..dcda5bc --- /dev/null +++ b/tests/fixtures/СортировкаСостава/FunctionalOptions/Ext/После/ВалютныйУчет.xml @@ -0,0 +1,17 @@ + + + + + + ВалютныйУчет + + Adopted + 5ddb9715-14fa-4aec-9388-0d0778a6aed3 + Catalog.Организации.Attribute.ВалютныйУчет + + Document.КорректировкаРасчетов.Attribute.Валюта + Document.Оплата.Attribute.Валюта + + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/Subsystems/Ext/До/Финансы.mdo b/tests/fixtures/СортировкаСостава/Subsystems/Ext/До/Финансы.mdo new file mode 100644 index 0000000..bca9cef --- /dev/null +++ b/tests/fixtures/СортировкаСостава/Subsystems/Ext/До/Финансы.mdo @@ -0,0 +1,14 @@ + + + Финансы + Adopted + + Checked + Extended + + Catalog.РасчетныеСчета + Catalog.РасчетныеСчетаКонтрагентов + Document.КорректировкаРасчетов + Document.Оплата + Catalog.Банки + diff --git a/tests/fixtures/СортировкаСостава/Subsystems/Ext/До/Финансы.xml b/tests/fixtures/СортировкаСостава/Subsystems/Ext/До/Финансы.xml new file mode 100644 index 0000000..3cab8fc --- /dev/null +++ b/tests/fixtures/СортировкаСостава/Subsystems/Ext/До/Финансы.xml @@ -0,0 +1,20 @@ + + + + + + Финансы + + Adopted + 02d4e175-d98d-4f48-89b8-61351535e9d4 + + Catalog.РасчетныеСчета + Catalog.РасчетныеСчетаКонтрагентов + Document.КорректировкаРасчетов + Document.Оплата + Catalog.Банки + + + + + \ No newline at end of file diff --git a/tests/fixtures/СортировкаСостава/Subsystems/Ext/После/Финансы.mdo b/tests/fixtures/СортировкаСостава/Subsystems/Ext/После/Финансы.mdo new file mode 100644 index 0000000..ceb4bd8 --- /dev/null +++ b/tests/fixtures/СортировкаСостава/Subsystems/Ext/После/Финансы.mdo @@ -0,0 +1,14 @@ + + + Финансы + Adopted + + Checked + Extended + + Catalog.Банки + Catalog.РасчетныеСчета + Catalog.РасчетныеСчетаКонтрагентов + Document.КорректировкаРасчетов + Document.Оплата + diff --git a/tests/fixtures/СортировкаСостава/Subsystems/Ext/После/Финансы.xml b/tests/fixtures/СортировкаСостава/Subsystems/Ext/После/Финансы.xml new file mode 100644 index 0000000..3ea2b4f --- /dev/null +++ b/tests/fixtures/СортировкаСостава/Subsystems/Ext/После/Финансы.xml @@ -0,0 +1,20 @@ + + + + + + Финансы + + Adopted + 02d4e175-d98d-4f48-89b8-61351535e9d4 + + Catalog.Банки + Catalog.РасчетныеСчета + Catalog.РасчетныеСчетаКонтрагентов + Document.КорректировкаРасчетов + Document.Оплата + + + + + \ No newline at end of file diff --git a/tests/ТестПроверкаСценариевОбработки.os b/tests/ТестПроверкаСценариевОбработки.os index f5df1a9..28d57db 100644 --- a/tests/ТестПроверкаСценариевОбработки.os +++ b/tests/ТестПроверкаСценариевОбработки.os @@ -67,22 +67,27 @@ Процедура СортировкаСостава_Configuration() Экспорт ПроверитьОбработкуФайлов("СортировкаСостава", "Configuration"); + ПроверитьОбработкуФайлов("СортировкаСостава", "Configuration\Ext"); КонецПроцедуры Процедура СортировкаСостава_DefinedTypes() Экспорт ПроверитьОбработкуФайлов("СортировкаСостава", "DefinedTypes"); + ПроверитьОбработкуФайлов("СортировкаСостава", "DefinedTypes\Ext"); КонецПроцедуры Процедура СортировкаСостава_ExchangePlans() Экспорт ПроверитьОбработкуФайлов("СортировкаСостава", "ExchangePlans"); + ПроверитьОбработкуФайлов("СортировкаСостава", "ExchangePlans\Ext"); КонецПроцедуры Процедура СортировкаСостава_FunctionalOptions() Экспорт ПроверитьОбработкуФайлов("СортировкаСостава", "FunctionalOptions"); + ПроверитьОбработкуФайлов("СортировкаСостава", "FunctionalOptions\Ext"); КонецПроцедуры Процедура СортировкаСостава_Subsystems() Экспорт ПроверитьОбработкуФайлов("СортировкаСостава", "Subsystems"); + ПроверитьОбработкуФайлов("СортировкаСостава", "Subsystems\Ext"); КонецПроцедуры Процедура ПроверитьОбработкуФайлов(ИмяСценария, ПодкаталогИсходников)