1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-03-17 20:48:01 +02:00

Создание объекта из конструктора без записи

This commit is contained in:
alkoleft 2023-05-15 22:47:04 +03:00
parent 92245f47e8
commit f296aef9e0
2 changed files with 53 additions and 20 deletions

View File

@ -131,7 +131,7 @@
// Создает новый объект и возвращает его или ссылку.
//
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество объектов.
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
//
// Параметры:
@ -156,6 +156,19 @@
КонецФункции
// Создает и возвращяет новый объект (не записывая его).
//
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
// Если вы хотите создать полностью новый объект, необходимо по-новой инициировать конструктор.
//
// Возвращаемое значение:
// Произвольный - Созданный объект.
Функция НовыйОбъект() Экспорт
Контекст = Контекст();
Возврат ЮТТестовыеДанныеВызовСервера.НовыйОбъект(Контекст.Менеджер, Контекст.Данные, Контекст.ДополнительныеСвойства);
КонецФункции
// Создает и проводит новый документ. Возвращает объект или или ссылку на него.
//
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создать множество объектов.

View File

@ -65,8 +65,43 @@
Менеджер = ЮТОбщий.Менеджер(Менеджер);
Если ПараметрыЗаписи = Неопределено Тогда
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
Иначе
ПереданныеПараметрыЗаписи = ПараметрыЗаписи;
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
ЗаполнитьЗначенияСвойств(ПараметрыЗаписи, ПереданныеПараметрыЗаписи);
КонецЕсли;
Объект = НовыйОбъект(Менеджер, Данные, ПараметрыЗаписи.ДополнительныеСвойства);
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектМетаданных(ТипЗнч(Менеджер));
РежимЗаписи = ?(СтрСравнить(ОписаниеОбъектаМетаданных.ОписаниеТипа.Имя, "Документ") = 0, ПараметрыЗаписи.РежимЗаписи, Неопределено);
КлючЗаписи = ЗаписатьОбъект(Объект, ПараметрыЗаписи.ОбменДаннымиЗагрузка, РежимЗаписи);
Если ВернутьОбъект Тогда
Возврат Объект;
Иначе
Возврат КлючЗаписи;
КонецЕсли;
КонецФункции
// Создает новый объект и заполняет его данными
//
// Параметры:
// Менеджер - Произвольный
// Данные - Структура - Данные заполнения объекта
// ДополнительныеСвойства - Структура - Дополнительные свойства объекта
//
// Возвращаемое значение:
// Произвольный - Созданный объект
Функция НовыйОбъект(Знач Менеджер, Знач Данные, Знач ДополнительныеСвойства = Неопределено) Экспорт
Менеджер = ЮТОбщий.Менеджер(Менеджер);
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектМетаданных(ТипЗнч(Менеджер));
ЭтоСсылочный = ОписаниеОбъектаМетаданных.ОписаниеТипа.Ссылочный;
Объект = СоздатьОбъект(Менеджер, ОписаниеОбъектаМетаданных.ОписаниеТипа);
ЗаполнитьЗначенияСвойств(Объект, Данные);
@ -89,28 +124,13 @@
КонецЕсли;
Если ПараметрыЗаписи = Неопределено Тогда
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
Иначе
ПереданныеПараметрыЗаписи = ПараметрыЗаписи;
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
ЗаполнитьЗначенияСвойств(ПараметрыЗаписи, ПереданныеПараметрыЗаписи);
КонецЕсли;
ЗаполнитьБазовыеРеквизиты(Объект, ОписаниеОбъектаМетаданных);
Если ЭтоСсылочный Тогда
ЮТОбщий.ОбъединитьВСтруктуру(Объект.ДополнительныеСвойства, ПараметрыЗаписи.ДополнительныеСвойства);
Если ОписаниеОбъектаМетаданных.ОписаниеТипа.Ссылочный И ДополнительныеСвойства <> Неопределено Тогда
ЮТОбщий.ОбъединитьВСтруктуру(Объект.ДополнительныеСвойства, ДополнительныеСвойства);
КонецЕсли;
РежимЗаписи = ?(СтрСравнить(ОписаниеОбъектаМетаданных.ОписаниеТипа.Имя, "Документ") = 0, ПараметрыЗаписи.РежимЗаписи, Неопределено);
КлючЗаписи = ЗаписатьОбъект(Объект, ПараметрыЗаписи.ОбменДаннымиЗагрузка, РежимЗаписи);
Если ВернутьОбъект Тогда
Возврат Объект;
Иначе
Возврат КлючЗаписи;
КонецЕсли;
Возврат Объект;
КонецФункции