Перейти к основному содержимому

Поиск данных

YAxUnit предоставляет набор функций для поиска данных в информационной базе. Он позволяет легко находить необходимые объекты для использования в тестах, используя различные критерии поиска. Доступ к нему осуществляется через ЮТест.Данные().

Основные возможности включают:

  • Поиск по реквизиту: находит ссылку на объект по значению определенного реквизита.
  • Поиск случайной ссылки: возвращает случайную ссылку на объект, удовлетворяющий заданным условиям.
  • Универсальный поиск: ищет ссылку по стандартным реквизитам, таким как "Код" и "Наименование".
  • Гибкая настройка отборов: поддерживает сложные условия отбора с помощью предикатов.

Примеры использования

Поиск контрагента по ИНН

// Поиск контрагента по ИНН
ИНН = "1234567890";
СсылкаНаКонтрагента = ЮТест.Данные().СсылкаПоРеквизиту("Справочник.Контрагенты", "ИНН", ИНН);

Если СсылкаНаКонтрагента <> Неопределено Тогда
    Сообщить("Найден контрагент: " + СсылкаНаКонтрагента);
Иначе
    Сообщить("Контрагент с ИНН " + ИНН + " не найден.");
КонецЕсли;

Поиск случайного договора

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

СлучайныйДоговор = ЮТест.Данные().СлучайнаяСсылка("Справочник.ДоговорыКонтрагентов", Отбор);

Если СлучайныйДоговор <> Неопределено Тогда
    Сообщить("Найден случайный договор: " + СлучайныйДоговор);
КонецЕсли;

Поиск организации по наименованию

// Поиск организации по наименованию
ИмяОрганизации = "Главная организация";
СсылкаНаОрганизацию = ЮТест.Данные().Ссылка("Справочник.Организации", ИмяОрганизации);

Если СсылкаНаОрганизацию <> Неопределено Тогда
    Сообщить("Найдена организация: " + СсылкаНаОрганизацию);
КонецЕсли;

Поиск пользователя по коду с дополнительным отбором

// Поиск пользователя по коду с дополнительным отбором
КодПользователя = "00-000001";
Отбор = Новый Структура("Недействителен", Ложь);
СсылкаНаПользователя = ЮТест.Данные().Ссылка(Справочники.Пользователи, КодПользователя, Отбор);

Если СсылкаНаПользователя <> Неопределено Тогда
    Сообщить("Найден действующий пользователь: " + СсылкаНаПользователя);
КонецЕсли;

Предикаты для отбора

Предикаты позволяют задавать сложные условия отбора при поиске данных. Вы можете использовать их в методах СлучайнаяСсылка и Ссылка для фильтрации результатов.

Пример использования предиката

// Найти случайного контрагента, у которого наименование начинается с "Тест"
// и ИНН не заполнен.
Предикат = ЮТест.Предикат()
    .Реквизит("Наименование").Подобно("Тест%")
    .Реквизит("ИНН").Равно("");

СлучайныйКонтрагент = ЮТест.Данные().СлучайнаяСсылка("Справочник.Контрагенты", Предикат);

Вы можете найти больше информации о предикатах в соответствующем разделе.


Методы

СсылкаПоРеквизиту(МетаданныеОбъекта, ИмяРеквизита, ЗначениеРеквизита)

Ищет и возвращает ссылку на объект по значению его реквизита.

  • Параметры:

    • МетаданныеОбъекта (ОбъектМетаданных, Произвольный, Строка, Тип, ОписаниеТипов): Указание на тип искомого объекта. Может быть:
      • ОбъектМетаданных - Явное указание объекта метаданных.
      • Произвольный - менеджер, например, Справочники.Номенклатура.
      • Строка - Полное имя объекта метаданных или менеджера, например, "Справочник.Номенклатура".
      • Тип, ОписаниеТипов - Тип искомого объекта.
    • ИмяРеквизита (Строка): Имя реквизита, по которому выполняется поиск.
    • ЗначениеРеквизита (Произвольный): Значение реквизита для поиска.
  • Возвращаемое значение:

    • ЛюбаяСсылка, Неопределено: Ссылка на найденный объект или Неопределено, если объект не найден.

Примеры указания метаданных:

// 1. По строке
Ссылка = ЮТест.Данные().СсылкаПоРеквизиту("Справочник.Контрагенты", "ИНН", "123");

// 2. По менеджеру
Ссылка = ЮТест.Данные().СсылкаПоРеквизиту(Справочники.Контрагенты, "ИНН", "123");

// 3. По объекту метаданных
Ссылка = ЮТест.Данные().СсылкаПоРеквизиту(Метаданные.Справочники.Контрагенты, "ИНН", "123");

// 4. По типу
Ссылка = ЮТест.Данные().СсылкаПоРеквизиту(Тип("СправочникСсылка.Контрагенты"), "ИНН", "123");

СлучайнаяСсылка(МетаданныеОбъекта, Отборы)

Возвращает случайную ссылку на объект из информационной базы, удовлетворяющую заданным условиям отбора.

  • Параметры:

    • МетаданныеОбъекта (ОбъектМетаданных, Произвольный, Строка, Тип, ОписаниеТипов): Указание на тип искомого объекта.
    • Отборы (Массив, Структура, Соответствие, Неопределено, Предикат): Набор условий отбора. Может быть:
      • Предикат - объект предиката, созданный с помощью ЮТест.Предикат().
      • Структура, Соответствие - простой отбор по полям "ключ-значение".
      • Массив - массив выражений предиката.
      • Неопределено - отбор не используется.
  • Возвращаемое значение:

    • ЛюбаяСсылка, Неопределено: Случайная ссылка на найденный объект или Неопределено, если ничего не найдено.

Пример:

// Простой отбор по структуре
Отбор = Новый Структура("ВидДоговора", Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
СлучайныйДоговор = ЮТест.Данные().СлучайнаяСсылка("Справочник.ДоговорыКонтрагентов", Отбор);

// Отбор с использованием предиката
Предикат = ЮТест.Предикат().Реквизит("Наименование").Подобно("Тест%");
СлучайныйДоговор = ЮТест.Данные().СлучайнаяСсылка(Справочники.ДоговорыКонтрагентов, Предикат);

Ссылка(МетаданныеОбъекта, Значение, Отборы)

Ищет и возвращает ссылку на объект по значению, которое проверяется по стандартным реквизитам (Код, Наименование) и основному представлению.

  • Параметры:

    • МетаданныеОбъекта (ОбъектМетаданных, Произвольный, Строка, Тип, ОписаниеТипов): Указание на тип искомого объекта.
    • Значение (Строка, Число, УникальныйИдентификатор): Значение для поиска.
    • Отборы (Массив, Структура, Соответствие, Неопределено, Предикат): Дополнительные условия отбора (аналогично СлучайнаяСсылка).
  • Возвращаемое значение:

    • ЛюбаяСсылка, Неопределено: Ссылка на найденный объект или Неопределено, если объект не найден.

Пример:

// Поиск организации по наименованию
СсылкаНаОрганизацию = ЮТест.Данные().Ссылка("Справочник.Организации", "Главная организация");

// Поиск пользователя по коду с дополнительным отбором
Отбор = Новый Структура("Недействителен", Ложь);
СсылкаНаПользователя = ЮТест.Данные().Ссылка(Справочники.Пользователи, "00-000001", Отбор);

// Поиск с использованием предиката
Предикат = ЮТест.Предикат()
    .Реквизит("ПометкаУдаления").Равно(Ложь);
СсылкаНаПользователя = ЮТест.Данные().Ссылка(Справочники.Пользователи, "Иванов", Предикат);