mirror of
https://github.com/bia-technologies/bsl-parser.git
synced 2024-11-24 08:12:17 +02:00
#ONECICD-165
Ошибка чтения подсистем большой вложенности Чтение подсистем вынесено в отдельный экспортный метод
This commit is contained in:
parent
40e873c025
commit
3ce22fd2a2
@ -57,7 +57,6 @@
|
||||
Для Каждого Часть Из СтрРазделить(ИмяОбъекта, ".") Цикл
|
||||
|
||||
Каталог = ОбъединитьПути(Каталог, ИмяКаталогВидаОбъекта(ВидОбъекта), Часть);
|
||||
ИмяОбъекта = Часть;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@ -189,6 +188,12 @@
|
||||
|
||||
КаталогОписаний = КаталогФайловОбъекта(ИмяОбъекта, ВидОбъекта);
|
||||
|
||||
Если СтрНайти(ИмяОбъекта, ".") Тогда // Составное имя
|
||||
|
||||
ИмяОбъекта = Сред(ИмяОбъекта, СтрНайти(ИмяОбъекта, ".", НаправлениеПоиска.СКонца) + 1);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ВидОбъекта = ТипыОбъектовКонфигурации.ИмяТипаПодсистема() И СтрНайти(ИмяОбъекта, ".") Тогда
|
||||
|
||||
КаталогОписаний = КаталогФайловОбъекта(ИмяОбъекта, ВидОбъекта);
|
||||
@ -288,7 +293,7 @@
|
||||
// Возвращаемое значение:
|
||||
// Массив - Коллекция имен файлов модулей
|
||||
//
|
||||
Функция НайтиМодулиОбъекта(ИмяОбъекта, ВидОбъекта, МодулиПодчиненныхОбъектов = Ложь) Экспорт
|
||||
Функция НайтиМодулиОбъекта(Знач ИмяОбъекта, ВидОбъекта, МодулиПодчиненныхОбъектов = Ложь) Экспорт
|
||||
|
||||
Результат = Новый Массив();
|
||||
|
||||
|
@ -30,8 +30,6 @@
|
||||
|
||||
ОписаниеКонфигурации = ПрочитатьОписаниеКонфигурации();
|
||||
|
||||
ЗаполнитьПодсистемыОбъектовКонфигурации();
|
||||
|
||||
ЗаполнитьИменаФайлов();
|
||||
|
||||
КонецПроцедуры
|
||||
@ -181,9 +179,9 @@
|
||||
// Возвращаемое значение:
|
||||
// Строка - Полное имя
|
||||
//
|
||||
Функция ПолноеИмяОбъекта(СтрокаОбъект, ДобавлятьПрефиксДляОбщихМодулей = Истина) Экспорт
|
||||
Функция ПолноеИмяОбъекта(СтрокаОбъект, ДобавлятьПрефиксДляОбщихМодулей = Истина, Разделитель = ".") Экспорт
|
||||
|
||||
Возврат ЧтениеОписанийБазовый.ПолноеИмяОбъекта(СтрокаОбъект, ДобавлятьПрефиксДляОбщихМодулей);
|
||||
Возврат ЧтениеОписанийБазовый.ПолноеИмяОбъекта(СтрокаОбъект, ДобавлятьПрефиксДляОбщихМодулей, Разделитель);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -232,6 +230,28 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаполнитьПодсистемыОбъектовКонфигурации() Экспорт
|
||||
|
||||
// дополним объекты информацией о подсистемах
|
||||
ПодсистемыКонфигурации = ПрочитатьПодсистемыКонфигурации();
|
||||
|
||||
ОписаниеКонфигурации.Вставить("ПодсистемыКонфигурации", ПодсистемыКонфигурации);
|
||||
|
||||
Для Каждого ОбъектКонфигурации Из ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
|
||||
|
||||
Подсистемы = ПодсистемыКонфигурации.НайтиСтроки(Новый Структура("ОбъектМетаданных", ОбъектКонфигурации.Тип + "." + ОбъектКонфигурации.Наименование));
|
||||
|
||||
Если Подсистемы.Количество() Тогда
|
||||
|
||||
// ставим первую
|
||||
ОбъектКонфигурации.Подсистемы = Подсистемы;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -294,28 +314,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьПодсистемыОбъектовКонфигурации()
|
||||
|
||||
// дополним объекты информацией о подсистемах
|
||||
ПодсистемыКонфигурации = ПрочитатьПодсистемыКонфигурации();
|
||||
|
||||
ОписаниеКонфигурации.Вставить("ПодсистемыКонфигурации", ПодсистемыКонфигурации);
|
||||
|
||||
Для Каждого ОбъектКонфигурации Из ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
|
||||
|
||||
Подсистемы = ПодсистемыКонфигурации.НайтиСтроки(Новый Структура("ОбъектМетаданных", ОбъектКонфигурации.Тип + "." + ОбъектКонфигурации.Наименование));
|
||||
|
||||
Если Подсистемы.Количество() Тогда
|
||||
|
||||
// ставим первую
|
||||
ОбъектКонфигурации.Подсистемы = Подсистемы;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьОписаниеМодуляПоИмениФайла(Знач ИмяФайлаМодуля, ОбъектКонфигурации, ОписаниеКонфигурации)
|
||||
|
||||
НовыйМодульКонфигурации = Неопределено;
|
||||
|
@ -19,20 +19,30 @@
|
||||
// Возвращаемое значение:
|
||||
// Строка - Полное имя
|
||||
//
|
||||
Функция ПолноеИмяОбъекта(СтрокаМодуль, ДобавлятьПрефиксДляОбщихМодулей = Истина) Экспорт
|
||||
Функция ПолноеИмяОбъекта(СтрокаМодуль, ДобавлятьПрефиксДляОбщихМодулей = Истина, Разделитель = ".") Экспорт
|
||||
|
||||
Если Утилиты.ПеременнаяСодержитСвойство(СтрокаМодуль, "ТипМодуля") Тогда // Передано описание модуля
|
||||
|
||||
Если СтрокаМодуль.ТипМодуля <> ТипыМодуля.ОбщийМодуль ИЛИ ДобавлятьПрефиксДляОбщихМодулей Тогда
|
||||
Если СтрокаМодуль.ТипМодуля = ТипыМодуля.ОбщийМодуль И НЕ ДобавлятьПрефиксДляОбщихМодулей Тогда
|
||||
|
||||
Возврат ТипыОбъектовКонфигурации.ПолучитьИмяТипаНаРусском(СтрокаМодуль.Родитель.Тип) + "." + СтрокаМодуль.Родитель.Наименование;
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат СтрокаМодуль.Родитель.Наименование;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПолноеИмя = ТипыОбъектовКонфигурации.ПолучитьИмяТипаНаРусском(СтрокаМодуль.Родитель.Тип) + Разделитель + СтрокаМодуль.Родитель.Наименование;
|
||||
|
||||
Если СтрокаМодуль.РодительФорма <> Неопределено Тогда
|
||||
|
||||
ПолноеИмя = ПолноеИмя + Разделитель + СтрокаМодуль.РодительФорма.Наименование;
|
||||
|
||||
ИначеЕсли СтрокаМодуль.РодительКоманда <> Неопределено Тогда
|
||||
|
||||
ПолноеИмя = ПолноеИмя + Разделитель + СтрокаМодуль.РодительКоманда.Наименование;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ПолноеИмя;
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат ТипыОбъектовКонфигурации.ПолучитьИмяТипаНаРусском(СтрокаМодуль.Тип) + "." + СтрокаМодуль.Наименование;
|
||||
|
@ -44,6 +44,7 @@
|
||||
|
||||
Парсер = ПарсерBSL.ПарсерКонфигурации(ОбъединитьПути(КаталогФикстур(), "configurations", "Demo_8_3_10"));
|
||||
Парсер.ПрочитатьСтруктуруКонфигурации();
|
||||
Парсер.ЗаполнитьПодсистемыОбъектовКонфигурации();
|
||||
Парсер.НайтиМодулиКонфигурации();
|
||||
|
||||
ПроверитьРезультатЧтенияВыгрузки(Парсер, 168, 89);
|
||||
@ -54,6 +55,7 @@
|
||||
|
||||
Парсер = ПарсерBSL.ПарсерКонфигурации(ОбъединитьПути(КаталогФикстур(), "edtconfigurations", "Demo_8_3_10", "src"));
|
||||
Парсер.ПрочитатьСтруктуруКонфигурации();
|
||||
Парсер.ЗаполнитьПодсистемыОбъектовКонфигурации();
|
||||
Парсер.НайтиМодулиКонфигурации();
|
||||
|
||||
ПроверитьРезультатЧтенияВыгрузки(Парсер, 167, 89);
|
||||
|
Loading…
Reference in New Issue
Block a user