Поиск данных
YAxUnit предоставляет набор функций для поиска данных в информационной базе. Он позволяет легко находить необходимые объекты для использования в тестах, используя различные критерии поиска. Доступ к нему осуществляется через ЮТест.Данные()
.
Основные возможности включают:
- Поиск по реквизиту: находит ссылку на объект по значению определенного реквизита.
- Поиск случайной ссылки: возвращает случайную ссылку на объект, удовлетворяющий заданным условиям.
- Универсальный поиск: ищет ссылку по стандартным реквизитам, таким как "Код" и "Наименование".
- Гибкая настройка отборов: поддерживает сложные условия отбора с помощью предикатов.
Примеры использования
Поиск контрагента по ИНН
// Поиск контрагента по ИНН
ИНН = "1234567890";
СсылкаНаКонтрагента = ЮТест.Данные().СсылкаПоРеквизиту("Справочник.Контрагенты", "ИНН", ИНН);
Если СсылкаНаКонтрагента <> Неопределено Тогда
Сообщить("Найден контрагент: " + СсылкаНаКонтрагента);
Иначе
Сообщить("Контрагент с ИНН " + ИНН + " не найден.");
КонецЕсли;
Поиск случайного договора
// Поиск случайного договора с видом "СПокупателем"
Отбор = Новый Структура;
Отбор.Вставить("ВидДоговора", Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
СлучайныйДоговор = ЮТест.Данные().СлучайнаяСсылка("Справочник.ДоговорыКонтрагентов", Отбор);
Если СлучайныйДоговор <> Неопределено Тогда
Сообщить("Найден случайный договор: " + СлучайныйДоговор);
КонецЕсли;
Поиск организации по наименованию
// Поиск организации по наименованию
ИмяОрганизации = "Главная организация";
СсылкаНаОрганизацию = ЮТест.Данные().Ссылка("Справочник.Организации", ИмяОрганизации);
Если СсылкаНаОрганизацию <> Неопределено Тогда
Сообщить("Найдена организация: " + СсылкаНаОрганизацию);
КонецЕсли;
Поиск пользователя по коду с дополнительным отбором
// Поиск пользователя по коду с дополнительным отбором
КодПользователя = "00-000001";
Отбор = Новый Структура("Недействителен", Ложь);
СсылкаНаПользователя = ЮТест.Данные().Ссылка(Справочники.Пользователи, КодПользователя, Отбор);
Если СсылкаНаПользователя <> Неопределено Тогда
Сообщить("Найден действующий пользователь: " + СсылкаНаПользователя);
КонецЕсли;
Предикаты для отбора
Предикаты позволяют задавать сложные условия отбора при поиске данных. Вы можете использовать их в методах СлучайнаяСсылка
и Ссылка
для фильтрации результатов.
Пример использования предиката
// Найти случайного контрагента, у которого наименование начинается с "Тест"
// и ИНН не заполнен.
Предикат = ЮТест.Предикат()
.Реквизит("Наименование").Подобно("Тест%")
.Реквизит("ИНН").Равно("");
СлучайныйКонтрагент = ЮТест.Данные().СлучайнаяСсылка("Справочник.Контрагенты", Предикат);
Вы можете найти больше информации о предикатах в соответствующем разделе.
Методы
СсылкаПоРеквизиту(МетаданныеОбъекта, ИмяРеквизита, ЗначениеРеквизита)
Ищет и возвращает ссылку на объект по значению его реквизита.
-
Параметры:
МетаданныеОбъекта
(ОбъектМетаданных, Произвольный, Строка, Тип, ОписаниеТипов): Указание на тип искомого объекта. Может быть:ОбъектМетаданных
- Явное указание объекта метаданных.Произвольный
- менеджер, например,Справочники.Номенклатура
.Строка
- Полное имя объекта метаданных или менеджера, например,"Справочник.Номенклатура"
.Тип
,ОписаниеТипов
- Тип искомого объекта.
ИмяРеквизита
(Строка): Имя реквизита, по которому выполняется поиск.ЗначениеРеквизита
(Произвольный): Значение реквизита для поиска.
-
Возвращаемое значение:
ЛюбаяСсылка
,Неопределено
: Ссылка на найденный объект илиНеопределено
, если объект не найден.
Примеры указания метаданных:
// 1. По строке
Ссылка = ЮТест.Данные().СсылкаПоРеквизиту("Справочник.Контрагенты", "ИНН", "123");
// 2. По менеджеру
Ссылка = ЮТест.Данные().СсылкаПоРеквизиту(Справочники.Контрагенты, "ИНН", "123");
// 3. По объекту метаданных
Ссылка = ЮТест.Данные().СсылкаПоРеквизиту(Метаданные.Справочники.Контрагенты, "ИНН", "123");
// 4. По типу
Ссылка = ЮТест.Данные().СсылкаПоРеквизиту(Тип("СправочникСсылка.Контрагенты"), "ИНН", "123");
СлучайнаяСсылка(МетаданныеОбъекта, Отборы)
Возвращает случайную ссылку на объект из информационной базы, удовлетворяющую заданным условиям отбора.
-
Параметры:
МетаданныеОбъекта
(ОбъектМетаданных, Произвольный, Строка, Тип, ОписаниеТипов): Указание на тип искомого объекта.Отборы
(Массив, Структура, Соответствие, Неопределено, Предикат): Набор условий отбора. Может быть:Предикат
- объект предиката, созданный с помощьюЮТест.Предикат()
.Структура
,Соответствие
- простой отбор по полям "ключ-значение".Массив
- массив выражений предиката.Неопределено
- отбор не используется.
-
Возвращаемое значение:
ЛюбаяСсылка
,Неопределено
: Случайная ссылка на найденный объект илиНеопределено
, если ничего не найдено.
Пример:
// Простой отбор по структуре
Отбор = Новый Структура("ВидДоговора", Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
СлучайныйДоговор = ЮТест.Данные().СлучайнаяСсылка("Справочник.ДоговорыКонтрагентов", Отбор);
// Отбор с использованием предиката
Предикат = ЮТест.Предикат().Реквизит("Наименование").Подобно("Тест%");
СлучайныйДоговор = ЮТест.Данные().СлучайнаяСсылка(Справочники.ДоговорыКонтрагентов, Предикат);
Ссылка(МетаданныеОбъекта, Значение, Отборы)
Ищет и возвращает ссылку на объект по значению, которое проверяется по стандартным реквизитам (Код, Наименование) и основному представлению.
-
Параметры:
МетаданныеОбъекта
(ОбъектМетаданных, Произвольный, Строка, Тип, ОписаниеТипов): Указание на тип искомого объекта.Значение
(Строка, Число, УникальныйИдентификатор): Значение для поиска.Отборы
(Массив, Структура, Соответствие, Неопределено, Предикат): Дополнительные условия отбора (аналогичноСлучайнаяСсылка
).
-
Возвращаемое значение:
ЛюбаяСсылка
,Неопределено
: Ссылка на найденный объект илиНеопределено
, если объект не найден.
Пример:
// Поиск организации по наименованию
СсылкаНаОрганизацию = ЮТест.Данные().Ссылка("Справочник.Организации", "Главная организация");
// Поиск пользователя по коду с дополнительным отбором
Отбор = Новый Структура("Недействителен", Ложь);
СсылкаНаПользователя = ЮТест.Данные().Ссылка(Справочники.Пользователи, "00-000001", Отбор);
// Поиск с использованием предиката
Предикат = ЮТест.Предикат()
.Реквизит("ПометкаУдаления").Равно(Ложь);
СсылкаНаПользователя = ЮТест.Данные().Ссылка(Справочники.Пользователи, "Иванов", Предикат);