Skip to content

Commit

Permalink
Обязательные поля (required) списком для объекта в целом
Browse files Browse the repository at this point in the history
  • Loading branch information
zerobig committed Nov 30, 2024
1 parent f5fff21 commit 198c289
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@

Объекты = Swag_Описание
.Объект("TestObject3")
.ОбязательныеПоля("test_property_1, test_property_2")
.Свойство("test_property_1")
.Описание("Это описание для тестового свойства объекта")
.ТипЗначения("boolean")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
TestPostObjectМассивСвойств.Добавить(Swag_ФормированиеОписаний.ОписаниеРеквизитаОбъекта("test_post_property", "string"));

Объекты = Новый Массив;
Объекты.Добавить(Swag_ФормированиеОписаний.ОписаниеОбъекта("TestObject", "object", TestObjectМассивСвойств));
Объекты.Добавить(Swag_ФормированиеОписаний.ОписаниеОбъекта("TestObject", "object", TestObjectМассивСвойств, "test_property_1, test_property_2"));
Объекты.Добавить(Swag_ФормированиеОписаний.ОписаниеОбъекта("AnotherTestObject", "object"));
Объекты.Добавить(Swag_ФормированиеОписаний.ОписаниеОбъекта("TestPostObject", "object", TestPostObjectМассивСвойств));

Expand Down
16 changes: 16 additions & 0 deletions swagger/CommonModules/Swag_Запросы/Ext/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,22 @@
ЗаписьJSON.ЗаписатьИмяСвойства("type");
ЗаписьJSON.ЗаписатьЗначение(ОбъектСервиса.Тип);

Если ТипЗнч(ОбъектСервиса.ОбязательныеПоля) = Тип("Строка") И Не ПустаяСтрока(ОбъектСервиса.ОбязательныеПоля) Тогда
МассивПолей = СтрРазделить(ОбъектСервиса.ОбязательныеПоля, ",", Ложь);
Если МассивПолей.Количество() > 0 Тогда

ЗаписьJSON.ЗаписатьИмяСвойства("required");
ЗаписьJSON.ЗаписатьНачалоМассива(); // required

Для каждого ОбязательноеПоле Из МассивПолей Цикл
ЗаписьJSON.ЗаписатьЗначение(СокрЛП(ОбязательноеПоле));
КонецЦикла;

ЗаписьJSON.ЗаписатьКонецМассива(); // required

КонецЕсли;
КонецЕсли;

Если ТипЗнч(ОбъектСервиса.МассивСвойств) = Тип("Массив") И ОбъектСервиса.МассивСвойств.Количество() > 0 Тогда
ЗаписьJSON.ЗаписатьИмяСвойства("properties");
ЗаписьJSON.ЗаписатьНачалоОбъекта(); // properties
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,16 +81,18 @@
// Возвращает структуру с описанием объекта (модели)
//
// Параметры:
// Имя - Строка - наименование объекта (модели)
// Тип - Строка - допустимые значения:
// МассивСвойств - Массив из см. Swag_ФормированиеОписаний.ОписаниеОбъекта
// Имя - Строка - наименование объекта (модели)
// Тип - Строка - допустимые значения
// МассивСвойств - Массив из см. Swag_ФормированиеОписаний.ОписаниеОбъекта
// ОбязательныеПоля - Строка - наименования полей, разделенные запятыми
//
// Возвращаемое значение:
// Структура - описание объекта (модели)
//
Функция ОписаниеОбъекта(Имя, Тип, МассивСвойств = Неопределено) Экспорт
Функция ОписаниеОбъекта(Имя, Тип, МассивСвойств = Неопределено, ОбязательныеПоля = Неопределено) Экспорт

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

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,34 @@

// Новый текущий объект
СтруктураОписания.Вставить("ТекущийОбъект",
Новый Структура("Имя, Свойства", ИмяОбъекта));
Новый Структура("Имя, Свойства, ОбязательныеПоля", ИмяОбъекта));

// Новый локальный массив свойств
СтруктураОписания.Вставить("МассивСвойств", Новый Массив);

// Новый массив обязательных полей
СтруктураОписания.Вставить("ОбязательныеПоля", Неопределено);

Возврат ЭтотОбъект;

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

//
//
Функция ОбязательныеПоля(Поля) Экспорт

Если СтруктураОписания = Неопределено Или
Не СтруктураОписания.Свойство("ИмяОбъекта") Или
ПустаяСтрока(СтруктураОписания.ИмяОбъекта) Тогда

ВызватьИсключение "ОбязательныеПоля: нельзя задавать обязательные поля для неопределенного объекта";
КонецЕсли;
Если Не ТипЗнч(Поля) = Тип("Строка") Тогда
ВызватьИсключение "ОбязательныеПоля: обязательные поля должны быть переданы строкой, в которой перечислены наименования полей, разделенные запятыми";
КонецЕсли;

СтруктураОписания.Вставить("ОбязательныеПоля", Поля);

Возврат ЭтотОбъект;

КонецФункции
Expand Down Expand Up @@ -340,8 +363,9 @@
ТипЗнч(СтруктураОписания.МассивОбъектов) = Тип("Массив") Тогда

Для каждого Объект Из СтруктураОписания.МассивОбъектов Цикл
МассивОписанийОбъектов.Добавить(
Swag_ФормированиеОписаний.ОписаниеОбъекта(Объект.Имя, "object", Объект.Свойства));
ОписаниеОбъекта = Swag_ФормированиеОписаний.ОписаниеОбъекта(Объект.Имя,
"object", Объект.Свойства, Объект.ОбязательныеПоля);
МассивОписанийОбъектов.Добавить(ОписаниеОбъекта);
КонецЦикла;
КонецЕсли;

Expand Down Expand Up @@ -387,6 +411,7 @@
И Не СтруктураОписания.ТекущийОбъект.Количество() = 0 Тогда

ДобавитьСвойстваВОбъект(СтруктураОписания.ТекущийОбъект);
СтруктураОписания.ТекущийОбъект.ОбязательныеПоля = СтруктураОписания.ОбязательныеПоля;

МассивОбъектов = Новый Массив;
Если СтруктураОписания.Свойство("МассивОбъектов") И
Expand Down

0 comments on commit 198c289

Please sign in to comment.