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

474 / Исправлена ошибка инициализации логирования при указании недоступного файла вывода #475

Merged
merged 3 commits into from
Dec 24, 2024
Merged
Show file tree
Hide file tree
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
139 changes: 22 additions & 117 deletions exts/smoke/src/CommonModules/ДТОткрытиеФорм/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -61,82 +61,6 @@

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

//Процедура ЗарегистрироватьТестыФормы(ОписаниеОбъекта, ТипТеста)
//
//
// ТипыТестов = ДТОткрытиеФормСлужебныйКлиентСервер.ТипыТестов();
//
// Если ОписаниеФормы.ЭтоФормаОбъекта И ОписаниеФормы.ЭтоФормаГруппы Тогда
//
// ОписаниеФормы.ТипФормы = "ФормаГруппы";
//
// Если ОписаниеОбъектаМетаданных.ИнтерактивноеДобавление Тогда
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Новый, "новой группы");
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Скопированный, "скопированной группы");
// КонецЕсли;
// Если ОписаниеОбъектаМетаданных.Редактирование Тогда
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Существующий, "редактирование существующей группы");
// Иначе
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Существующий, "просмотр существующей группы");
// КонецЕсли;
//
// ИначеЕсли ОписаниеФормы.ЭтоФормаОбъекта Тогда
//
// ОписаниеФормы.ТипФормы = "ФормаОбъекта";
// Если ОписаниеОбъектаМетаданных.ИнтерактивноеДобавление Тогда
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Новый, "нового объекта");
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Скопированный, "скопированного объекта");
// КонецЕсли;
// Если ОписаниеОбъектаМетаданных.Редактирование Тогда
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Существующий, "редактирование существующего объекта");
// Иначе
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Существующий, "просмотр существующего объекта");
// КонецЕсли;
//
// ИначеЕсли ОписаниеФормы.ЭтоФормаВыбора И ОписаниеФормы.ЭтоФормаГруппы Тогда
//
// ОписаниеФормы.ТипФормы = "ФормаВыбораГруппы";
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Выбор, "выбора группы");
//
// ИначеЕсли ОписаниеФормы.ЭтоФормаВыбора Тогда
//
// ОписаниеФормы.ТипФормы = "ФормаВыбора";
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Выбор, "выбора");
//
// ИначеЕсли ОписаниеФормы.ЭтоФормаСписка Тогда
//
// ОписаниеФормы.ТипФормы = "ФормаСписка";
// ЗарегистрироватьТест(Настройки, ОписаниеФормы, ТипыТестов.Список, "списка");
//
// КонецЕсли;
//
//КонецПроцедуры
//
//Функция ИсключитьТипТеста(Настройки, ТипМетаданного, ТипТеста)
//
// НастройкаТипаТеста = Неопределено;
// НастройкаТипаМетаданных = Неопределено;
//
// Возврат (Настройки.Свойство(ТипТеста, НастройкаТипаТеста) И НЕ НастройкаТипаТеста.Использовать)
// Или (Настройки.Свойство(ТипМетаданного, НастройкаТипаМетаданных)
// И НастройкаТипаМетаданных.Свойство(ТипТеста, НастройкаТипаТеста)
// И НЕ НастройкаТипаТеста.Использовать);
//
//КонецФункции
//
//Функция ТестПодходитПодИсключения(Настройки, ОписаниеФормы, ТипТеста)
//
// НастройкаТипаМетаданных = Неопределено;
// НастройкаТипаТеста = Неопределено;
// Если Настройки.Свойство(ОписаниеФормы.Владелец.Тип, НастройкаТипаМетаданных) Тогда
// НастройкаТипаМетаданных.Свойство(ТипТеста, НастройкаТипаТеста);
// КонецЕсли;
//
// Возврат НастройкаТипаТеста <> Неопределено И
// ЮТДымовыеТестыСлужебныйКлиентСервер.ПодходитПодИсключения(ОписаниеФормы.Владелец.Имя, НастройкаТипаТеста.Исключения);
//
//КонецФункции
//
Процедура ЗарегистрироватьТест(ОписаниеОбъекта, ТипТеста, Представление)

ИмяМетода = СтрШаблон("ОткрытьФорму_%1", ТипТеста);
Expand All @@ -147,28 +71,6 @@

КонецПроцедуры

//Функция ОтборМетаданных(Настройки)
//
// Отбор = ЮТДымовыеТесты.БазовоеОписаниеЭлементаНастройки();
// ТипыМетаданных = ЮТМетаданные.ТипыМетаданных();
// Отбор.Исключения = Настройки.Исключения;
//
// Для Каждого Элемент Из Настройки Цикл
//
// Если ТипыМетаданных.Свойство(Элемент.Ключ) Тогда
// ОтборТипаМетаданных = ЮТДымовыеТесты.БазовоеОписаниеЭлементаНастройки();
// ОтборТипаМетаданных.Использовать = Элемент.Значение.Использовать;
// ОтборТипаМетаданных.Исключения = Элемент.Значение.Исключения;
//
// Отбор.Вставить(Элемент.Ключ, ОтборТипаМетаданных);
// КонецЕсли;
//
// КонецЦикла;
//
// Возврат Отбор;
//
//КонецФункции
//
#Область Тесты

Процедура ОткрытьФорму_Новый(ОписаниеОбъекта) Экспорт
Expand Down Expand Up @@ -280,47 +182,50 @@
Параметры = Новый Структура("Ключ", Ключ);

Попытка
//@skip-check use-non-recommended-method
Форма = ПолучитьФорму(ПолноеИмяФормы, Параметры, , Новый УникальныйИдентификатор); // BSLLS:GetFormMethod-off
//@skip-check use-non-recommended-method
Форма = ПолучитьФорму(ПолноеИмяФормы, Параметры, , Новый УникальныйИдентификатор); // BSLLS:GetFormMethod-off
Исключение
ЮТЛогирование.Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка получения (создания) формы");
ВызватьИсключение
КонецПопытки;

Если Форма = Неопределено Тогда
ВызватьИсключение "Не удалось получить форму";
КонецЕсли;
ЮТест.ОжидаетЧто(Форма)
.НеРавно(Неопределено, "Не удалось получить форму");

ЭтоУправляемаяФорма = ЭтоУправляемаяФорма(Форма);
ЮТЛогирование.Отладка(" Тип формы: " + Формат(ЭтоУправляемаяФорма, "БЛ='Обычная форма'; БИ='Управляемая форма';"));

Попытка
Форма.Открыть();
Исключение
ЮТЛогирование.Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка открытия формы");
ВызватьИсключение
КонецПопытки;

Если Форма.Открыта() Тогда
Попытка
ЮТест.ОжидаетЧто(Форма.Открыта(), "Не удалось открыть форму")
.ЭтоИстина();

Попытка
Если ЭтоУправляемаяФорма Тогда
Форма.ОбновитьОтображениеДанных();
Иначе
Форма.Обновить();
КонецЕсли;
Исключение
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка обновления данных формы");
ВызватьИсключение;
КонецПопытки;

Форма.Модифицированность = Ложь;
КонецПопытки;

Форма.Модифицированность = Ложь;
Попытка
Форма.Закрыть();
Если Форма.Открыта() Тогда
ВызватьИсключение "Не удалось закрыть форму";
КонецЕсли;
Иначе
ВызватьИсключение "Не удалось открыть форму";
КонецЕсли;
Исключение
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка закрытия формы");
ВызватьИсключение;
КонецПопытки;

ЮТест.ОжидаетЧто(Форма.Открыта(), "Не удалось закрыть форму")
.ЭтоЛожь();

КонецПроцедуры

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,10 @@
// ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска
Процедура Инициализация(ПараметрыЗапуска) Экспорт

УровниЛога = ЮТЛогирование.УровниЛога();

ДанныеКонтекста = НовыйДанныеКонтекста();
ДанныеКонтекста.ФайлЛога = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "file");
ДанныеКонтекста.ВыводВКонсоль = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "console", Ложь);
ДанныеКонтекста.Включено = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "enable", Неопределено);
УровеньЛога = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "level", УровниЛога.Отладка);

Если ДанныеКонтекста.Включено = Неопределено Тогда
ДанныеКонтекста.Включено = ДанныеКонтекста.ВыводВКонсоль ИЛИ ЗначениеЗаполнено(ДанныеКонтекста.ФайлЛога);
Expand All @@ -99,23 +96,8 @@
Возврат;
КонецЕсли;

Если СтрСравнить(УровеньЛога, УровниЛога.Ошибка) = 0 Тогда
ДанныеКонтекста.УровеньЛога = 99;
ИначеЕсли СтрСравнить(УровеньЛога, УровниЛога.Информация) = 0 Тогда
ДанныеКонтекста.УровеньЛога = 10;
ИначеЕсли СтрСравнить(УровеньЛога, УровниЛога.Предупреждение) = 0 Тогда
ДанныеКонтекста.УровеньЛога = 20;
Иначе
ДанныеКонтекста.УровеньЛога = 0;
КонецЕсли;

ЗначениеПроверки = Строка(Новый УникальныйИдентификатор());
ЗаписатьСообщения(ДанныеКонтекста, ЮТКоллекции.ЗначениеВМассиве(ЗначениеПроверки), Ложь);

Если ЗначениеЗаполнено(ДанныеКонтекста.ФайлЛога) Тогда
ДанныеКонтекста.ФайлЛогаДоступенНаСервере = ЮТЛогированиеСлужебныйВызовСервера.ФайлЛогаДоступенНаСервере(ДанныеКонтекста.ФайлЛога,
ЗначениеПроверки);
КонецЕсли;
ОпределитьУровеньЛоги(ДанныеКонтекста, ПараметрыЗапуска);
ОпределитьДоступностьЛогированияВФайл(ДанныеКонтекста);

ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования(), ДанныеКонтекста, Истина);

Expand Down Expand Up @@ -407,4 +389,45 @@

#КонецОбласти

Процедура ОпределитьУровеньЛоги(ДанныеКонтекста, ПараметрыЗапуска)

УровниЛога = ЮТЛогирование.УровниЛога();
УровеньЛога = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "level", УровниЛога.Отладка);

Если СтрСравнить(УровеньЛога, УровниЛога.Ошибка) = 0 Тогда
ДанныеКонтекста.УровеньЛога = 99;
ИначеЕсли СтрСравнить(УровеньЛога, УровниЛога.Информация) = 0 Тогда
ДанныеКонтекста.УровеньЛога = 10;
ИначеЕсли СтрСравнить(УровеньЛога, УровниЛога.Предупреждение) = 0 Тогда
ДанныеКонтекста.УровеньЛога = 20;
Иначе
ДанныеКонтекста.УровеньЛога = 0;
КонецЕсли;

КонецПроцедуры

Процедура ОпределитьДоступностьЛогированияВФайл(ДанныеКонтекста)

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

Если ДанныеЗаписаны И ЗначениеЗаполнено(ДанныеКонтекста.ФайлЛога) Тогда
ДанныеКонтекста.ФайлЛогаДоступенНаСервере = ЮТЛогированиеСлужебныйВызовСервера.ФайлЛогаДоступенНаСервере(ДанныеКонтекста.ФайлЛога,
ЗначениеПроверки);
КонецЕсли;

КонецПроцедуры

#КонецОбласти
Loading