mirror of
https://github.com/bia-technologies/bsl-parser.git
synced 2024-11-19 20:31:44 +02:00
Исправление ошибок чтения
- чтение модулей поддерживает какноническое описание возвращаемых значений - чтение подсистем учитывает мультиязычность синонима
This commit is contained in:
parent
bcc30767b8
commit
e9770a9d96
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2019-2021 BIA Technologies, LLC
|
||||
Copyright (c) 2019-2023 BIA Technologies, LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -15,7 +15,7 @@
|
||||
ПараметрыЧтения.Вставить("ОписаниеКонфигурации", Конфигурация.ОписаниеКонфигурации());
|
||||
ПараметрыЧтения.Вставить("СтруктураКаталогов", Конфигурация.СтруктураКаталогов());
|
||||
ПараметрыЧтения.Вставить("ТипКорневогоЭлемента", ТипКорневогоЭлемента);
|
||||
ПараметрыЧтения.Вставить("ФорматВыгрузки", ПараметрыЧтения.СтруктураКаталогов.ФорматВыгрузки());
|
||||
ПараметрыЧтения.Вставить("ФорматВыгрузки", ПараметрыЧтения.СтруктураКаталогов.ФорматВыгрузки());
|
||||
|
||||
Если ПараметрыЧтения.ФорматВыгрузки = ФорматыВыгрузки.EDT Тогда
|
||||
ЧитательОписаний = ЧтениеОписанийEDT;
|
||||
@ -44,12 +44,15 @@
|
||||
// Читает описание объекта конфигурации
|
||||
//
|
||||
// Параметры:
|
||||
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
|
||||
// ОбъектКонфигурации - СтрокаТаблицыЗначений - Описание объекта конфигурации.
|
||||
// См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
|
||||
//
|
||||
Процедура ПрочитатьОписание(ОбъектКонфигурации) Экспорт
|
||||
|
||||
ПараметрыЧтения = ОбъектКонфигурации.Конфигурация.ПараметрыЧтения();
|
||||
ОбъектКонфигурации.Описание = ПрочитатьФайлОписанияОбъекта(ПараметрыЧтения, ОбъектКонфигурации.ПутьКФайлу, ОбъектКонфигурации.Тип);
|
||||
ОбъектКонфигурации.Описание = ПрочитатьФайлОписанияОбъекта(
|
||||
ПараметрыЧтения, ОбъектКонфигурации.ПутьКФайлу, ОбъектКонфигурации.Тип
|
||||
);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -63,8 +66,8 @@
|
||||
ПараметрыЧтения.ОписаниеКонфигурации.ПодсистемыКонфигурации = ПодсистемыКонфигурации;
|
||||
|
||||
Для Каждого ОбъектКонфигурации Из ПараметрыЧтения.ОписаниеКонфигурации.ОбъектыКонфигурации Цикл
|
||||
|
||||
Подсистемы = ПодсистемыКонфигурации.НайтиСтроки(Новый Структура("ОбъектМетаданных", ОбъектКонфигурации.Тип + "." + ОбъектКонфигурации.Наименование));
|
||||
Отбор = Новый Структура("ОбъектМетаданных", ОбъектКонфигурации.Тип + "." + ОбъектКонфигурации.Наименование);
|
||||
Подсистемы = ПодсистемыКонфигурации.НайтиСтроки(Отбор);
|
||||
|
||||
Если Подсистемы.Количество() Тогда
|
||||
|
||||
@ -93,7 +96,7 @@
|
||||
|
||||
ПолучитьОписаниеМодуляПоИмениФайла(ИмяФайлаМодуля, ОбъектКонфигурации, ОписаниеКонфигурации);
|
||||
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@ -112,20 +115,17 @@
|
||||
СтрокаМодуль.Содержимое = СодержимоеМодуля.Содержимое;
|
||||
СтрокаМодуль.НаборБлоков = СодержимоеМодуля.БлокиМодуля;
|
||||
|
||||
Если СтрокаМодуль.ТипМодуля = ТипыМодуля.ОбщийМодуль Тогда
|
||||
|
||||
Если СтрокаМодуль.Родитель <> Неопределено Тогда
|
||||
Если СтрокаМодуль.ТипМодуля = ТипыМодуля.ОбщийМодуль
|
||||
И СтрокаМодуль.Родитель <> Неопределено Тогда
|
||||
|
||||
Если СтрокаМодуль.Родитель.Описание = Неопределено Тогда
|
||||
Если СтрокаМодуль.Родитель.Описание = Неопределено Тогда
|
||||
|
||||
ПрочитатьОписание(СтрокаМодуль.Родитель);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаМодуль.ОписаниеМодуля.Вставить("Глобальный", СтрокаМодуль.Родитель.Описание.Глобальный);
|
||||
ПрочитатьОписание(СтрокаМодуль.Родитель);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
СтрокаМодуль.ОписаниеМодуля.Вставить("Глобальный", СтрокаМодуль.Родитель.Описание.Глобальный);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -134,7 +134,7 @@
|
||||
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПрочитатьОписаниеКонфигурации(ПараметрыЧтения)
|
||||
Процедура ПрочитатьОписаниеКонфигурации(ПараметрыЧтения)
|
||||
|
||||
// Выполняет чтение объектов первого уровня, вложенные объекты не читаются
|
||||
|
||||
@ -149,10 +149,14 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеКонфигурации = ПрочитатьФайлОписанияОбъекта(ПараметрыЧтения, ФайлКонфигурации, ПараметрыЧтения.ТипКорневогоЭлемента);
|
||||
ДанныеКонфигурации = ПрочитатьФайлОписанияОбъекта(
|
||||
ПараметрыЧтения, ФайлКонфигурации, ПараметрыЧтения.ТипКорневогоЭлемента
|
||||
);
|
||||
|
||||
// добавим руками объект "Configuration" для модулей приложения
|
||||
НовСтрока = РедакторКонфигурации.ЗарегистрироватьОбъектКонфигурации(ОписаниеКонфигурации, ПараметрыЧтения.ТипКорневогоЭлемента, ДанныеКонфигурации);
|
||||
НовСтрока = РедакторКонфигурации.ЗарегистрироватьОбъектКонфигурации(
|
||||
ОписаниеКонфигурации, ПараметрыЧтения.ТипКорневогоЭлемента, ДанныеКонфигурации
|
||||
);
|
||||
НовСтрока.ПутьКФайлу = ФайлКонфигурации;
|
||||
|
||||
Для Каждого Подчиненный Из ДанныеКонфигурации.Подчиненные Цикл
|
||||
@ -167,7 +171,7 @@
|
||||
|
||||
ОписаниеКонфигурации.СвойстваКонфигурации = ДанныеКонфигурации;
|
||||
|
||||
КонецФункции
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПрочитатьФайлОписанияОбъекта(ПараметрыЧтения, ПутьКФайлу, ТипОбъекта)
|
||||
|
||||
@ -191,16 +195,15 @@
|
||||
|
||||
ФормаОбъекта = Неопределено;
|
||||
КомандаОбъекта = Неопределено;
|
||||
|
||||
Если ТипЭтогоМодуля = ТипыМодуля.МодульОбъекта
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульМенеджера
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.ОбщийМодуль
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульУправляемогоПриложения
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульСеанса
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульВнешнегоСоединения
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульОбычногоПриложения Тогда
|
||||
ПропускаемыйТип = ТипЭтогоМодуля = ТипыМодуля.МодульОбъекта
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульМенеджера
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.ОбщийМодуль
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульУправляемогоПриложения
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульСеанса
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульВнешнегоСоединения
|
||||
ИЛИ ТипЭтогоМодуля = ТипыМодуля.МодульОбычногоПриложения;
|
||||
|
||||
ИначеЕсли ТипыМодуля.ЭтоМодульФормы(ТипЭтогоМодуля) Тогда
|
||||
Если ТипыМодуля.ЭтоМодульФормы(ТипЭтогоМодуля) Тогда
|
||||
|
||||
ФормаОбъекта = ОписаниеКонфигурации.ФормыКонфигурации.Добавить();
|
||||
ФормаОбъекта.Родитель = ОбъектКонфигурации;
|
||||
@ -214,9 +217,9 @@
|
||||
КомандаОбъекта.Наименование = ПолучитьИмяКомандыИзИмениФайлаМодуля(ИмяФайлаМодуля);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Тип модуля: " + ТипЭтогоМодуля + " не имеет алгоритма разбора";
|
||||
|
||||
Если НЕ ПропускаемыйТип Тогда
|
||||
ВызватьИсключение "Тип модуля: " + ТипЭтогоМодуля + " не имеет алгоритма разбора";
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
НовыйМодульКонфигурации = ОписаниеКонфигурации.Модули.Добавить();
|
||||
@ -309,20 +312,35 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПрочитатьПодсистему(ПараметрыЧтения, ОписаниеПодсистем, ОбъектКонфигурации, Знач Визуальная, Знач Родитель, РодительскаяПодсистема)
|
||||
Процедура ПрочитатьПодсистему(ПараметрыЧтения, ОписаниеПодсистем, ОбъектКонфигурации, Знач Визуальная,
|
||||
Знач Родитель, РодительскаяПодсистема)
|
||||
|
||||
ТипПодсистема = ТипыОбъектовКонфигурации.ИмяТипаПодсистема();
|
||||
ИмяФайлаОписание = ПараметрыЧтения.СтруктураКаталогов.ИмяФайлаОписанияОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
|
||||
ИмяФайлаОписание = ПараметрыЧтения.СтруктураКаталогов.ИмяФайлаОписанияОбъекта(
|
||||
ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип
|
||||
);
|
||||
|
||||
СвойстваОписания = ПрочитатьФайлОписанияОбъекта(ПараметрыЧтения, ИмяФайлаОписание, ТипПодсистема);
|
||||
|
||||
ОбъектКонфигурации.Описание = СвойстваОписания;
|
||||
ОбъектКонфигурации.ПутьКФайлу = ИмяФайлаОписание;
|
||||
ОбъектКонфигурации.ПутьККаталогу = ПараметрыЧтения.СтруктураКаталогов.КаталогФайловОбъекта(ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
|
||||
ОбъектКонфигурации.ПутьККаталогу = ПараметрыЧтения.СтруктураКаталогов.КаталогФайловОбъекта(
|
||||
ОбъектКонфигурации.Наименование, ОбъектКонфигурации.Тип);
|
||||
|
||||
Визуальная = Визуальная И СвойстваОписания.ВключатьВКомандныйИнтерфейс;
|
||||
|
||||
ПредставлениеПодсистемы = ?(РодительскаяПодсистема = Неопределено, СвойстваОписания.Синоним, РодительскаяПодсистема.Представление + "/" + СвойстваОписания.Синоним);
|
||||
Если СвойстваОписания.Синоним.Свойство("ru") Тогда
|
||||
СинонимПодсистемы = СвойстваОписания.Синоним.ru;
|
||||
ИначеЕсли СвойстваОписания.Синоним.Свойство("en") Тогда
|
||||
СинонимПодсистемы = СвойстваОписания.Синоним.en;
|
||||
Иначе
|
||||
СинонимПодсистемы = СвойстваОписания.Имя;
|
||||
КонецЕсли;
|
||||
|
||||
ПредставлениеПодсистемы = ?(РодительскаяПодсистема = Неопределено,
|
||||
СинонимПодсистемы,
|
||||
РодительскаяПодсистема.Представление + "/" + СинонимПодсистемы
|
||||
);
|
||||
|
||||
Если СвойстваОписания.Состав.Количество() Тогда
|
||||
Состав = СвойстваОписания.Состав;
|
||||
@ -337,7 +355,7 @@
|
||||
ЭтаПодсистема.Имя = ОбъектКонфигурации.Наименование;
|
||||
ЭтаПодсистема.ИмяКратко = СвойстваОписания.Наименование;
|
||||
ЭтаПодсистема.Представление = ПредставлениеПодсистемы;
|
||||
ЭтаПодсистема.ПредставлениеКратко = СвойстваОписания.Синоним;
|
||||
ЭтаПодсистема.ПредставлениеКратко = СинонимПодсистемы;
|
||||
ЭтаПодсистема.ОбъектМетаданных = ОбъектМетаданных;
|
||||
ЭтаПодсистема.Визуальная = Визуальная;
|
||||
ЭтаПодсистема.Родитель = РодительскаяПодсистема;
|
||||
@ -368,7 +386,8 @@
|
||||
ВложеннаяПодсистема.ПолноеНаименование = СтрШаблон("%1.%2", ТипПодсистема, ИмяПодсистемы);
|
||||
ВложеннаяПодсистема.Родитель = ОбъектКонфигурации;
|
||||
|
||||
ПрочитатьПодсистему(ПараметрыЧтения, ОписаниеПодсистем, ВложеннаяПодсистема, Визуальная, ОбъектКонфигурации, ЭтаПодсистема)
|
||||
ПрочитатьПодсистему(ПараметрыЧтения, ОписаниеПодсистем, ВложеннаяПодсистема, Визуальная,
|
||||
ОбъектКонфигурации, ЭтаПодсистема);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -18,6 +18,36 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ЭтоБлокНачалоОбласти(СтрокаМодуля) Экспорт
|
||||
Возврат СтрНачинаетсяС(СтрокаМодуля, "#ОБЛАСТЬ")
|
||||
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "// #ОБЛАСТЬ");
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоБлокКонецОбласти(СтрокаМодуля) Экспорт
|
||||
Возврат СтрНачинаетсяС(СтрокаМодуля, "#КОНЕЦОБЛАСТИ")
|
||||
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "// #КОНЕЦОБЛАСТИ");
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоБлокНачалоФункции(СтрокаМодуля) Экспорт
|
||||
Возврат СтрНачинаетсяС(СтрокаМодуля, "ФУНКЦИЯ ")
|
||||
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "FUNCTION ");
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоБлокНачалоПроцедуры(СтрокаМодуля) Экспорт
|
||||
Возврат СтрНачинаетсяС(СтрокаМодуля, "ПРОЦЕДУРА ")
|
||||
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "PROCEDURE ");
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоБлокКонецФункции(СтрокаМодуля) Экспорт
|
||||
Возврат СтрНачинаетсяС(СтрокаМодуля, "КОНЕЦФУНКЦИИ")
|
||||
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "ENDFUNCTION");
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоБлокКонецПроцедуры(СтрокаМодуля) Экспорт
|
||||
Возврат СтрНачинаетсяС(СтрокаМодуля, "КОНЕЦПРОЦЕДУРЫ")
|
||||
ИЛИ СтрНачинаетсяС(СтрокаМодуля, "ENDPROCEDURE");
|
||||
КонецФункции
|
||||
|
||||
ОписаниеПеременной = "ОписаниеПеременной";
|
||||
|
||||
ЗаголовокПроцедуры = "ЗаголовокПроцедуры";
|
||||
|
Loading…
Reference in New Issue
Block a user