Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Smart tags patch: исправление неверного чтение опций корня и падения. #74

Merged
merged 2 commits into from
Dec 18, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 20 additions & 36 deletions src/Классы/smartTags.os
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@

ПараметрыКонфигурации = ПолучитьПараметрыКонфигурацииИзИсходников(КаталогИсходныхФайлов);

Возврат ПараметрыКонфигурации.Version;
Возврат ПараметрыКонфигурации["Version"];

КонецФункции // ПрочитатьВерсиюИзИсходников()

Expand All @@ -226,7 +226,7 @@
ВызватьИсключение СтрШаблон("Файл <%1> не найден у указанном каталоге.", ФайлКонфигурации.ПолноеИмя);
КонецЕсли;

ПараметрыКонфигурации = Новый Структура;
ПараметрыКонфигурации = Новый Соответствие;

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ФайлКонфигурации.ПолноеИмя);
Expand All @@ -237,8 +237,6 @@
КонецЕсли;
КонецЦикла;

Чтение.Прочитать();

МассивДоступныхСвойств = Новый Массив;
МассивДоступныхСвойств.Добавить("Vendor");
МассивДоступныхСвойств.Добавить("Version");
Expand All @@ -247,48 +245,34 @@
МассивДоступныхСвойств.Добавить("Name");

Пока Не (Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента И Чтение.ЛокальноеИмя = "Properties") Цикл

КлючИЗначение = ПрочитатьОпцию(Чтение);

Если МассивДоступныхСвойств.Найти(КлючИЗначение.Ключ) = Неопределено Тогда

Ключ = Чтение.ЛокальноеИмя;
Если НЕ Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
Или МассивДоступныхСвойств.Найти(Ключ) = Неопределено Тогда
Чтение.Прочитать();
Продолжить;
Иначе
Чтение.Прочитать();
Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
Значение = Чтение.Значение;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
Значение = "";
Иначе
Продолжить;
КонецЕсли;
ПараметрыКонфигурации.Вставить(Ключ, Значение);
Лог.Отладка("Читаю опцию: %1
| Значение: %2", Ключ, Значение);
КонецЕсли;

ПараметрыКонфигурации.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);

КонецЦикла;

Чтение.Закрыть();

Возврат ПараметрыКонфигурации;

КонецФункции

// Функция читает опцию из ЧтениеXML
//
Функция ПрочитатьОпцию(Знач Чтение)

Перем Ключ;
Перем Значение;

Ключ = Чтение.ЛокальноеИмя;

Чтение.Прочитать();
Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
Значение = Чтение.Значение;
Чтение.Прочитать();
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
Значение = "";
КонецЕсли;

Лог.Отладка("Читаю опцию: %1
| Значение: %2", Ключ, Значение);

Чтение.Прочитать();

Возврат Новый Структура("Ключ,Значение", Ключ, Значение);

КонецФункции

Процедура Инициализация()

Лог = Логирование.ПолучитьЛог(ИмяЛога());
Expand Down