Skip to content

Commit

Permalink
Добавил depricated (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
Segate-ekb authored Dec 2, 2024
1 parent 3736cdd commit 4efbef9
Show file tree
Hide file tree
Showing 8 changed files with 157 additions and 73 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@


Описание.Имя("1c_openApi_validation")
.Версия("0.0.2.0")
.Версия("0.0.3.0")
.Автор("Иванов Егор")
.АдресАвтора("https://github.com/Segate-ekb")
.Описание("Валидатор OpenApi")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@
// Спецификация - Строка - Спецификация OpenAPI 3.0 в формате JSON.
//
// Возвращаемое значение:
// Массив - Список ошибок.
// Структура - Структура результата валидации. см. Обработки.ВалидаторПакетов.КонструкторРезультатВалидации

//
Функция Валидировать(Знач МодельДанных, Знач ИмяСхемы, Знач Спецификация) Экспорт // BSLLS:Typo-off
Обработка = Обработки.ВалидаторПакетов.Создать();
Возврат Обработка.Валидировать(МодельДанных, ИмяСхемы, Спецификация);

РезультатВалидации = Обработка.Валидировать(МодельДанных, ИмяСхемы, Спецификация);
Возврат РезультатВалидации;
КонецФункции

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@

КомпонентыСпецификации = СпецификацияВФорматеOpenAPI.Получить("components");
Если Не ЗначениеЗаполнено(КомпонентыСпецификации) Тогда
ВызватьИсключение НСтр("ru='В спецификации отсутствует блок <components>'");
ВызватьИсключение "В спецификации отсутствует блок <components>";
КонецЕсли;

СхемыДанныхСпецификации = КомпонентыСпецификации.Получить("schemas");

Если Не ЗначениеЗаполнено(СхемыДанныхСпецификации) Тогда
ВызватьИсключение НСтр("ru='В спецификации отсутствует блок <schemas>'");
ВызватьИсключение "В спецификации отсутствует блок <schemas>";
КонецЕсли;

Возврат СхемыДанныхСпецификации;
Expand Down Expand Up @@ -53,7 +53,7 @@
Если СхемаПоСтроковомуПути = Неопределено Тогда
ТекстОшибки = СтрШаблон("Ошибка при разборе схемы! Не удается получить схему по пути <%1>",
СтроковыйПуть);
ЗаписьЖурналаРегистрации("ВалидаторПакетов",
ЗаписьЖурналаРегистрации("ВалидаторПакетов", // BSLLS:Typo-off
УровеньЖурналаРегистрации.Ошибка, , ,
ТекстОшибки);

Expand Down
2 changes: 1 addition & 1 deletion src/cf/Configuration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
<ScriptVariant>Russian</ScriptVariant>
<DefaultRoles/>
<Vendor/>
<Version>0.0.2.0</Version>
<Version>0.0.3.0</Version>
<UpdateCatalogAddress/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
Expand Down
32 changes: 32 additions & 0 deletions src/cf/DataProcessors/ВалидаторПакетов.xml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,38 @@
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
<Attribute uuid="f8883232-29b3-49b9-af87-641573ad047f">
<Properties>
<Name>Предупреждения</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предупреждения</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type/>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
</Attribute>
</ChildObjects>
</DataProcessor>
</MetaDataObject>
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
////////////////////////////////////////////////////////////////////////////////
// ВалидаторПакетов
////////////////////////////////////////////////////////////////////////////////
#Если ВнешнееСоединение Или Сервер Тогда
#Область ОписаниеПеременных
Перем ШаблонБазовойОшибки; // Базовый текст ошибки
Перем ШаблонПредупреждения; // Базовый текст предупреждения
#КонецОбласти

#Если ВнешнееСоединение Или Сервер Тогда
#Область ПрограммныйИнтерфейс

// Возвращает список ошибок модели данных.
Expand All @@ -18,19 +19,22 @@
// СпецификацияСтрокой - Строка - Спецификация OpenAPI 3.0 в формате JSON.
//
// Возвращаемое значение:
// Массив - Список ошибок.
// Структура - Структура результата валидации. см.КонструкторРезультатВалидации
//
Функция Валидировать(Знач МодельДанных, Знач ИмяСхемы, Знач СпецификацияСтрокой) Экспорт // BSLLS:Typo-off
Ошибки = Новый Массив;
Спецификация = СпецификацияСтрокой;

РезультатВалидации = КонструкторРезультатВалидации();
СхемыДанныхСпецификации = ВалидаторПакетовПовтИсп.СхемыДанныхСпецификации(Спецификация);

КлючИЗначение = Новый Структура("Ключ, Значение", ИмяСхемы, МодельДанных);

ПроверитьСвойствоПоСхеме(КлючИЗначение, СхемыДанныхСпецификации, Ложь);

Возврат Ошибки;

РезультатВалидации.Результат = Ошибки.Количество() = 0;
РезультатВалидации.Ошибки = Ошибки;
РезультатВалидации.Предупреждения = Предупреждения;

Возврат РезультатВалидации;

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

Expand All @@ -50,7 +54,7 @@
Возврат;
КонецЕсли;
КонецЕсли;

ВыполнитьВалидациюДанных(Данные, ПроверяемаяСхема);
КонецПроцедуры

Expand Down Expand Up @@ -81,7 +85,7 @@
КонецПроцедуры

Процедура ВалидироватьДанныеПоСхеме(Данные, ПроверяемаяСхема) // BSLLS:Typo-off
УстановитьШаблонБазовойОшибки(Данные.Ключ,
УстановитьШаблоныСообщений(Данные.Ключ,
ПроверяемаяСхема.Получить("description"));
Если Данные.Значение = Неопределено Или Данные.Значение = Null Тогда
Nullable = ПроверяемаяСхема.Получить("nullable");
Expand Down Expand Up @@ -176,6 +180,7 @@
Процедура ТипонезависимыеПроверки(Данные, ПроверяемаяСхема) // BSLLS:Typo-off
ЗначениеСвойства = Данные.Значение;
ПроверитьСоответствиеПеречислению(ЗначениеСвойства, ПроверяемаяСхема);
ОбработатьDepricated(ПроверяемаяСхема);
КонецПроцедуры

Процедура ПроверитьСоответствиеПеречислению(ЗначениеСвойства, ПроверяемаяСхема)
Expand All @@ -194,6 +199,19 @@
Ошибки.Добавить(ТекстОшибки);
КонецЕсли;
КонецПроцедуры

Процедура ОбработатьDepricated(ПроверяемаяСхема)
Если Не ПроверяемаяСхема.Получить("deprecated") = Истина Тогда
// Не depricated
Возврат;
КонецЕсли;

ТекстПредупреждения = СтрШаблон(
"%1 Свойство признано устаревшим! Необходимо отказаться от использования в кратчайшее время.",
ШаблонПредупреждения);
Предупреждения.Добавить(ТекстПредупреждения);
КонецПроцедуры

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

#Область РаботаСоСложнымиСхемами
Expand Down Expand Up @@ -711,14 +729,15 @@
ТипЗначенияСоответствуетОписанию(ЗначениеСвойства, ОписаниеТипа);
КонецПроцедуры

Процедура УстановитьШаблонБазовойОшибки(Имя, Описание)
Процедура УстановитьШаблоныСообщений(Имя, Описание)
Представление = СтрШаблон("<%1>", Имя);

Если ЗначениеЗаполнено(Описание) Тогда
Представление = СтрШаблон("<%1>(%2)", Имя, Описание);
КонецЕсли;

ШаблонБазовойОшибки = СтрШаблон("Ошибка валидации %1.", Представление);
ШаблонПредупреждения = СтрШаблон("Проблема валидации %1.", Представление);
КонецПроцедуры

Функция ТипЗначенияСоответствуетОписанию(ЗначениеСвойства, ОписаниеТипа)
Expand Down Expand Up @@ -876,5 +895,17 @@
Возврат Не ПроверяемаяСхема.Получить(ИмяСвойства) = Неопределено;
КонецФункции

// Возвращает список ошибок модели данных.
//
// Возвращаемое значение:
// Структура - Структура результата валидации.
Функция КонструкторРезультатВалидации()
Ошибки = Новый Массив;
Предупреждения = Новый Массив;

Возврат Новый Структура("Результат, Ошибки, Предупреждения", Истина, Ошибки, Предупреждения);

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

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

0 comments on commit 4efbef9

Please sign in to comment.