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