1
0
mirror of https://github.com/bia-technologies/bsl-parser.git synced 2024-11-27 08:20:55 +02:00

#ONECICD-148

исправление ошибок под EDT
This commit is contained in:
aleksey.koryakin 2019-05-20 14:55:10 +03:00
parent b7d48b6b3b
commit b60278be6f
9 changed files with 124 additions and 40 deletions

View File

@ -134,6 +134,18 @@
КонецПроцедуры
Процедура Подчиненные(Запись, Значение) Экспорт
Для Каждого ПолноеИмяЭлемента Из Значение Цикл
ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, ".");
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ПолноеИмяЭлемента);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
// Создает xml запись описания объекта, прописывает базовые параметры

View File

@ -170,13 +170,13 @@
Запись.ЗаписатьНачалоЭлемента("ChildObjects");
// Для Каждого ПолноеИмяЭлемента Из Значение Цикл
Для Каждого ПолноеИмяЭлемента Из Значение Цикл
// ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, ".");
ЧастиИмени = СтрРазделить(ПолноеИмяЭлемента, ".");
// ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ЧастиИмени[1]);
ГенераторОписанийОбщий.ЗаписатьЗначениеXML(Запись, ЧастиИмени[0], ЧастиИмени[1]);
// КонецЦикла;
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();

View File

@ -81,15 +81,15 @@
## Реквизиты Subsystem
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования |
| --------------------------- | ------------------------- | ------------------------- | ------------------- |
| Наименование | name | Name | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока |
| Комментарий | comment | Comment | |
| ВключатьВКомандныйИнтерфейс | IncludeInCommandInterface | IncludeInCommandInterface | ЗначениеБулево |
| ВключатьВСодержимоеСправки | IncludeHelpInContents | IncludeHelpInContents | ЗначениеБулево |
| Пояснение | Explanation | Explanation | МногоязычнаяСтрока |
| Состав | Content | Content | СоставПодсистемы |
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования | ТипЗначения |
| --------------------------- | ------------------------- | ------------------------- | ------------------- | ----------- |
| Наименование | name | Name | | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока | |
| Комментарий | comment | Comment | | |
| ВключатьВКомандныйИнтерфейс | IncludeInCommandInterface | IncludeInCommandInterface | ЗначениеБулево | |
| ВключатьВСодержимоеСправки | IncludeHelpInContents | IncludeHelpInContents | ЗначениеБулево | |
| Пояснение | Explanation | Explanation | МногоязычнаяСтрока | |
| Состав | Content | Content | СоставПодсистемы | Массив |
## Реквизиты CommonModule
@ -109,11 +109,11 @@
## Реквизиты ExchangePlan
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования | ЗначениеПоУмолчанию |
| ----------------------- | ------------------------- | ------------------------- | ------------------- | ------------------- |
| Наименование | name | Name | | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока | |
| Комментарий | comment | Comment | | |
| Наименование | ЭлементEDT | ЭлементDesigner | МетодПреобразования | ЗначениеПоУмолчанию |
| ------------ | ---------- | --------------- | ------------------- | ------------------- |
| Наименование | name | Name | | |
| Синоним | synonym | Synonym | МногоязычнаяСтрока | |
| Комментарий | comment | Comment | | |
## Реквизиты Document

View File

@ -68,7 +68,6 @@
Лог = Логирование.ПолучитьЛог(ИмяЛогаСистемы());
Лог.УстановитьРаскладку(ЭтотОбъект);
Лог.УстановитьУровень(УровниЛога.Отладка);
КонецЕсли;

View File

@ -57,9 +57,10 @@
Для Каждого Часть Из СтрРазделить(ИмяОбъекта, ".") Цикл
Каталог = ОбъединитьПути(Каталог, ИмяКаталогВидаОбъекта(ВидОбъекта), Часть);
ИмяОбъекта = Часть;
КонецЦикла;
Иначе
Каталог = ОбъединитьПути(КаталогВидаОбъекта(ВидОбъекта), ИмяОбъекта);
@ -388,7 +389,8 @@
Если ПустаяСтрока(ФорматВыгрузки) ИЛИ СтрСравнить(ФорматВыгрузки, "Авто") = 0 Тогда
Если ФС.ФайлСуществует(ОбъединитьПути(КаталогИсходников, ТипыОбъектовКонфигурации.ИмяТипаКонфигурации(), "Configuration.mdo")) Тогда
ИмяФайла = ОбъединитьПути(КаталогИсходников, ТипыОбъектовКонфигурации.ИмяТипаКонфигурации(), "Configuration.mdo");
Если ФС.ФайлСуществует(ИмяФайла) Тогда
ФорматВыгрузки = "EDT";

View File

@ -16,7 +16,7 @@
ЗаполнитьЗначенияСвойств(ДанныеОписания, ОписаниеОбъекта, , "Свойства");
РеквизитыСвойства = "Наименование, МетодПреобразования, Поле";
РеквизитыСвойства = "Наименование, МетодПреобразования, Поле, ЭтоКоллекция";
РеквизитИмениПоля = ?(Формат = "EDT", "ЭлементEDT", "ЭлементDesigner");

View File

@ -83,18 +83,22 @@
Данные.Вставить(Описание.Наименование, Описание.ЗначениеПоУмолчанию);
ИначеЕсли ЗначениеЗаполнено(Описание.ТипЗначения) Тогда
Данные.Вставить(Описание.Наименование, Новый(Описание.ТипЗначения));
Иначе
Данные.Вставить(Описание.Наименование);
КонецЕсли;
КонецЦикла;
Если ОписаниеОбъекта.ЕстьПодчиненные Тогда
Данные.Вставить("Подчиненные", Новый Массив());
КонецЕсли;
Возврат Данные;
@ -106,7 +110,7 @@
ОписаниеОбъекта = ОписаниеСвойствОбъекта(ТипОбъекта);
Данные = Новый Структура("Наименование", "");
Если ОписаниеОбъекта.ЕстьПодчиненные Тогда
Данные.Вставить("Подчиненные", Новый Массив());
@ -114,7 +118,7 @@
КонецЕсли;
Возврат Данные;
КонецФункции
Функция ОписаниеСвойствОбъекта(ТипОбъекта) Экспорт
@ -126,7 +130,7 @@
КонецЕсли;
Свойства = СвойстваОбъектов[ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта)];
Если Свойства = Неопределено Тогда
Свойства = БазовоеОписаниеСвойствОбъекта();
@ -135,7 +139,25 @@
КонецЕсли;
ОписаниеОбъекта = Новый Структура("Тип, Свойства, ЕстьПодчиненные, ЕстьЗначенияПоУмолчанию", ТипОбъекта);
ОписаниеОбъекта.Свойства = Свойства;
НормализованнаяТаблицаСвойств = Новый ТаблицаЗначений();
НормализованнаяТаблицаСвойств.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ЭлементEDT", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ЭлементDesigner", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("МетодПреобразования", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ЗначениеПоУмолчанию", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("Строка"));
НормализованнаяТаблицаСвойств.Колонки.Добавить("ЭтоКоллекция", Новый ОписаниеТипов("Булево"));
Для Каждого ОписаниеСвойства Из Свойства Цикл
Свойство = НормализованнаяТаблицаСвойств.Добавить();
ЗаполнитьЗначенияСвойств(Свойство, ОписаниеСвойства);
Свойство.ЭтоКоллекция = Свойство.ТипЗначения = "Массив";
КонецЦикла;
ОписаниеОбъекта.Свойства = НормализованнаяТаблицаСвойств;
ОписаниеОбъекта.ЕстьПодчиненные = ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(ТипОбъекта).ЕстьПодчиненные = "true";
ОписаниеОбъекта.ЕстьЗначенияПоУмолчанию = Свойства.Колонки.Найти("ЗначениеПоУмолчанию") <> Неопределено;

View File

@ -151,9 +151,35 @@
СтруктураСырыхДанных = Новый Структура();
Коллекции = Новый Структура();
Для Каждого Свойство Из ПараметрыЧтения.Свойства Цикл
Если Свойство.Значение.ЭтоКоллекция Тогда
Коллекции.Вставить(Свойство.Значение.Поле);
КонецЕсли;
КонецЦикла;
Для Каждого Элемент Из СырыеДанные Цикл
СтруктураСырыхДанных.Вставить(Элемент.Значение, Элемент.Представление);
Если Коллекции.Свойство(Элемент.Значение) Тогда
Если НЕ СтруктураСырыхДанных.Свойство(Элемент.Значение) Тогда
СтруктураСырыхДанных.Вставить(Элемент.Значение, Новый Массив());
КонецЕсли;
СтруктураСырыхДанных[Элемент.Значение].Добавить(Элемент.Представление);
Иначе
СтруктураСырыхДанных.Вставить(Элемент.Значение, Элемент.Представление);
КонецЕсли;
КонецЦикла;
@ -167,12 +193,26 @@
Если НЕ ПараметрыЧтения.Свойства.Свойство(Элемент.Ключ, ОписаниеСвойства) ИЛИ НЕ ЗначениеЗаполнено(ОписаниеСвойства.МетодПреобразования) Тогда
Продолжить;
КонецЕсли;
Значение = Элемент.Значение;
ЗначениеВМассиве[0] = Элемент.Значение;
Если ПараметрыЧтения.Свойства[Элемент.Ключ].ЭтоКоллекция Тогда
Для Инд = 0 По Значение.ВГраница() Цикл
ЗначениеВМассиве[0] = Значение[Инд];
Значение[Инд] = Рефлектор.ВызватьМетод(ЭтотОбъект, ОписаниеСвойства.МетодПреобразования, ЗначениеВМассиве);
КонецЦикла;
Иначе
ЗначениеВМассиве[0] = Значение;
Значение = Рефлектор.ВызватьМетод(ЭтотОбъект, ОписаниеСвойства.МетодПреобразования, ЗначениеВМассиве);
КонецЕсли;
Значение = Рефлектор.ВызватьМетод(ЭтотОбъект, ОписаниеСвойства.МетодПреобразования, ЗначениеВМассиве);
ДанныеОбъекта.Вставить(Элемент.Ключ, Значение);
ДанныеОбъекта[Элемент.Ключ] = Значение;
КонецЦикла;
@ -182,7 +222,15 @@
Если Элемент.Значение <> "languages" И ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(Элемент.Значение) <> Неопределено Тогда
ДанныеОбъекта.Подчиненные.Добавить(Элемент.Представление);
Если СтрНайти(Элемент.Представление, ".") = 0 Тогда
ДанныеОбъекта.Подчиненные.Добавить(Элемент.Значение + "." + Элемент.Представление);
Иначе
ДанныеОбъекта.Подчиненные.Добавить(Элемент.Представление);
КонецЕсли;
КонецЕсли;

View File

@ -85,18 +85,19 @@
ДанныеОбъекта = СтруктурыОписаний.СоздатьСтруктураОбъекта(ПараметрыЧтения.Тип);
Для Каждого Параметр Из ПараметрыЧтения.Свойства Цикл
Для Каждого ЭлементПараметр Из ПараметрыЧтения.Свойства Цикл
Параметр = ЭлементПараметр.Значение;
Значение = Неопределено;
Если НЕ СырыеДанные.Свойство(Параметр.Значение.Поле, Значение) Тогда
Если НЕ СырыеДанные.Свойство(Параметр.Поле, Значение) Тогда
Значение = "";
КонецЕсли;
ДанныеОбъекта.Вставить(Параметр.Ключ, Значение);
ДанныеОбъекта[ЭлементПараметр.Ключ] = Значение;
КонецЦикла;
Возврат ДанныеОбъекта;