mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-20 18:48:36 +02:00
Merge pull request #311 from alexandr-yang/issues/310
#310 Метод УстановитьСсылкуНового в конструкторе объекта
This commit is contained in:
commit
ec4cd376fb
@ -100,10 +100,25 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьСсылкуНового(Контекст, Значение) Экспорт
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("УникальныйИдентификатор") Тогда
|
||||
УникальныйИдентификаторСсылки = Значение;
|
||||
ИначеЕсли ЮТСтроки.ЭтоУникальныйИдентификаторСтрокой(Значение) Тогда
|
||||
УникальныйИдентификаторСсылки = Новый УникальныйИдентификатор(Значение);
|
||||
Иначе
|
||||
ВызватьИсключение "Неправильный тип значения для ссылки нового";
|
||||
КонецЕсли;
|
||||
|
||||
Контекст.УникальныйИдентификаторСсылки = УникальныйИдентификаторСсылки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция Записать(Контекст, ВернутьОбъект = Ложь, ОбменДаннымиЗагрузка = Ложь) Экспорт
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
|
||||
ПараметрыЗаписи.УникальныйИдентификаторСсылки = Контекст.УникальныйИдентификаторСсылки;
|
||||
ПараметрыЗаписи.ОбменДаннымиЗагрузка = ОбменДаннымиЗагрузка;
|
||||
|
||||
Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
|
||||
@ -116,7 +131,12 @@
|
||||
|
||||
Функция НовыйОбъект(Контекст) Экспорт
|
||||
|
||||
Возврат ЮТТестовыеДанныеСлужебныйВызовСервера.НовыйОбъект(Контекст.Менеджер, Контекст.Данные, Контекст.ДополнительныеСвойства);
|
||||
Возврат ЮТТестовыеДанныеСлужебныйВызовСервера.НовыйОбъект(
|
||||
Контекст.Менеджер,
|
||||
Контекст.Данные,
|
||||
Контекст.ДополнительныеСвойства,
|
||||
Контекст.УникальныйИдентификаторСсылки
|
||||
);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -124,6 +144,7 @@
|
||||
|
||||
ПараметрыЗаписи = ЮТОбщий.ПараметрыЗаписи();
|
||||
ПараметрыЗаписи.ДополнительныеСвойства = Контекст.ДополнительныеСвойства;
|
||||
ПараметрыЗаписи.УникальныйИдентификаторСсылки = Контекст.УникальныйИдентификаторСсылки;
|
||||
ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение;
|
||||
|
||||
Ссылка = ЮТТестовыеДанныеСлужебныйВызовСервера.СоздатьЗапись(Контекст.Менеджер, Контекст.Данные, ПараметрыЗаписи, ВернутьОбъект);
|
||||
@ -195,14 +216,17 @@
|
||||
// * Метаданные - см. ЮТМетаданные.СтруктураОписанияОбъектаМетаданных
|
||||
// * ТекущаяТабличнаяЧасть - Строка
|
||||
// * ДополнительныеСвойства - Структура
|
||||
// * УникальныйИдентификаторСсылки - УникальныйИдентификатор
|
||||
// - Неопределено
|
||||
Функция НовыйКонтекстКонструктора(Менеджер) Экспорт
|
||||
|
||||
Контекст = Новый Структура("Менеджер, Данные, Метаданные", Менеджер, Новый Структура());
|
||||
Контекст = Новый Структура();
|
||||
Контекст.Вставить("Менеджер", Менеджер);
|
||||
Контекст.Вставить("Данные", Новый Структура());
|
||||
Контекст.Вставить("Метаданные", ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер));
|
||||
Контекст.Вставить("ТекущаяТабличнаяЧасть", "");
|
||||
Контекст.Вставить("ДополнительныеСвойства", Новый Структура());
|
||||
Контекст.Вставить("УникальныйИдентификаторСсылки", Неопределено);
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Контекст;
|
||||
|
@ -265,11 +265,14 @@
|
||||
// * ДополнительныеСвойства - Структура
|
||||
// * РежимЗаписи - РежимЗаписиДокумента
|
||||
// - Неопределено
|
||||
// * УникальныйИдентификаторСсылки - УникальныйИдентификатор
|
||||
// - Неопределено
|
||||
Функция ПараметрыЗаписи() Экспорт
|
||||
|
||||
ПараметрыЗаписи = Новый Структура();
|
||||
ПараметрыЗаписи.Вставить("ОбменДаннымиЗагрузка", Ложь);
|
||||
ПараметрыЗаписи.Вставить("ДополнительныеСвойства", Новый Структура);
|
||||
ПараметрыЗаписи.Вставить("УникальныйИдентификаторСсылки", Неопределено);
|
||||
ПараметрыЗаписи.Вставить("РежимЗаписи", Неопределено);
|
||||
|
||||
Возврат ПараметрыЗаписи;
|
||||
|
@ -167,6 +167,42 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет, что переданое значение является строковым представлением уникального идентификатора
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево
|
||||
Функция ЭтоУникальныйИдентификаторСтрокой(Значение) Экспорт
|
||||
|
||||
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Шаблон = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";
|
||||
|
||||
Если СтрДлина(Шаблон) <> СтрДлина(Значение) Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Для Позиция = 1 По СтрДлина(Значение) Цикл
|
||||
КодСимволаШаблона = КодСимвола(Шаблон, Позиция);
|
||||
КодСимволаЗначения = КодСимвола(Значение, Позиция);
|
||||
|
||||
Если КодСимволаШаблона = 88 // X
|
||||
И ((КодСимволаЗначения < 48 ИЛИ КодСимволаЗначения > 57) // 0..9
|
||||
И (КодСимволаЗначения < 97 ИЛИ КодСимволаЗначения > 102) // a..f
|
||||
И (КодСимволаЗначения < 65 ИЛИ КодСимволаЗначения > 70)) // A..F
|
||||
ИЛИ КодСимволаШаблона = 45 И КодСимволаЗначения <> 45 Тогда // -
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -22,7 +22,8 @@
|
||||
|
||||
ПараметрыЗаписи = ПараметрыЗаписи(ПараметрыЗаписи);
|
||||
|
||||
Объект = НовыйОбъект(Менеджер, Данные, ПараметрыЗаписи.ДополнительныеСвойства);
|
||||
Объект = НовыйОбъект(Менеджер, Данные,
|
||||
ПараметрыЗаписи.ДополнительныеСвойства, ПараметрыЗаписи.УникальныйИдентификаторСсылки);
|
||||
|
||||
КлючЗаписи = ЗаписатьОбъект(Объект, ПараметрыЗаписи);
|
||||
|
||||
@ -40,10 +41,14 @@
|
||||
// Менеджер - Произвольный
|
||||
// Данные - Структура - Данные заполнения объекта
|
||||
// ДополнительныеСвойства - Структура - Дополнительные свойства объекта
|
||||
// УникальныйИдентификаторСсылки - УникальныйИдентификатор - Уникальный идентификатор, который будет установлен в качестве ссылки для объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Созданный объект
|
||||
Функция НовыйОбъект(Знач Менеджер, Знач Данные, Знач ДополнительныеСвойства = Неопределено) Экспорт
|
||||
Функция НовыйОбъект(Знач Менеджер,
|
||||
Знач Данные,
|
||||
Знач ДополнительныеСвойства = Неопределено,
|
||||
Знач УникальныйИдентификаторСсылки = Неопределено) Экспорт
|
||||
|
||||
ОписаниеОбъектаМетаданных = ЮТМетаданные.ОписаниеОбъектаМетаданных(Менеджер);
|
||||
Менеджер = ЮТОбщий.Менеджер(ОписаниеОбъектаМетаданных);
|
||||
@ -55,6 +60,11 @@
|
||||
Если ДополнительныеСвойства <> Неопределено Тогда
|
||||
ЮТКоллекции.ДополнитьСтруктуру(Объект.ДополнительныеСвойства, ДополнительныеСвойства);
|
||||
КонецЕсли;
|
||||
|
||||
Если УникальныйИдентификаторСсылки <> Неопределено И ОписаниеОбъектаМетаданных.ОписаниеТипа.Ссылочный Тогда
|
||||
Ссылка = Менеджер.ПолучитьСсылку(УникальныйИдентификаторСсылки);
|
||||
Объект.УстановитьСсылкуНового(Ссылка);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоРегистр Тогда
|
||||
|
||||
|
@ -170,6 +170,22 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает дополнительное свойство объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - УникальныйИдентификатор - Уникальный идентификатор ссылки нового объекта
|
||||
// - Строка - Строковое представление уникального идентификатора ссылки нового объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор
|
||||
&НаКлиенте
|
||||
Функция УстановитьСсылкуНового(Значение) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.УстановитьСсылкуНового(Контекст, Значение);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новый объект и возвращает его или ссылку.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
|
@ -161,6 +161,21 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает дополнительное свойство объекта.
|
||||
//
|
||||
// Параметры:
|
||||
// Значение - УникальныйИдентификатор - Уникальный идентификатор ссылки нового объекта
|
||||
// - Строка - Строковое представление уникального идентификатора ссылки нового объекта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТКонструкторТестовыхДанных - Конструктор
|
||||
Функция УстановитьСсылкуНового(Значение) Экспорт
|
||||
|
||||
ЮТКонструкторТестовыхДанныхСлужебный.УстановитьСсылкуНового(Контекст, Значение);
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает новый объект и возвращает его или ссылку.
|
||||
//
|
||||
// Важно, после создания данные не очищаются, поэтому многократный вызов метода создаст множество одинаковых объектов.
|
||||
|
@ -31,6 +31,7 @@
|
||||
.ДобавитьТест("ФикцияОбязательныхПолей")
|
||||
.ДобавитьТест("СоздатьГруппу")
|
||||
.ДобавитьТест("УстановитьРеквизиты")
|
||||
.ДобавитьТест("УстановитьСсылкуНового")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -321,4 +322,31 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьСсылкуНового() Экспорт
|
||||
|
||||
Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары");
|
||||
|
||||
УникальныйИдентификатор = Новый УникальныйИдентификатор();
|
||||
Ссылка = Конструктор.УстановитьСсылкуНового(УникальныйИдентификатор).Записать();
|
||||
ЮТест.ОжидаетЧто(Ссылка.УникальныйИдентификатор(), "Уникальный идентификатор")
|
||||
.Равно(УникальныйИдентификатор);
|
||||
|
||||
УникальныйИдентификатор = Новый УникальныйИдентификатор();
|
||||
УникальныйИдентификаторСтрокой = Строка(УникальныйИдентификатор);
|
||||
Ссылка = Конструктор.УстановитьСсылкуНового(УникальныйИдентификаторСтрокой).Записать();
|
||||
ЮТест.ОжидаетЧто(Ссылка.УникальныйИдентификатор(), "Уникальный идентификатор строкой")
|
||||
.Равно(УникальныйИдентификатор);
|
||||
|
||||
СлучайноеЧисло = ЮТест.Данные().СлучайноеЧисло();
|
||||
СлучайноеСтрока = ЮТест.Данные().СлучайнаяСтрока();
|
||||
ЮТест
|
||||
.ОжидаетЧто(Конструктор, "Число")
|
||||
.Метод("УстановитьСсылкуНового").Параметр(СлучайноеЧисло)
|
||||
.ВыбрасываетИсключение("Неправильный тип значения для ссылки нового")
|
||||
.Что(Конструктор, "Строка")
|
||||
.Метод("УстановитьСсылкуНового").Параметр(СлучайноеСтрока)
|
||||
.ВыбрасываетИсключение("Неправильный тип значения для ссылки нового");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user