diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
index aa56287b..1ae9ab9b 100644
--- a/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl
@@ -54,6 +54,41 @@
 	
 КонецФункции
 
+// Возвращяет первую запись таблицы соответствующую условиям
+// 
+// Параметры:
+//  ИмяТаблицы - Строка - Имя таблицы базы
+//  Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
+//           - см. ЮТФабрика.ВыражениеПредиката
+//           - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
+//           - Неопределено - Проверит, что таблица не пустая 
+// Возвращаемое значение:
+//  Структура, Неопределено - Содержит все данные записи, включая табличный части
+Функция Запись(ИмяТаблицы, Предикат) Экспорт
+	
+	ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*");
+	//@skip-check constructor-function-return-section
+	Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Истина);
+	
+КонецФункции
+
+// Возвращяет записи таблицы соответствующую условиям
+// 
+// Параметры:
+//  ИмяТаблицы - Строка - Имя таблицы базы
+//  Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить
+//           - см. ЮТФабрика.ВыражениеПредиката
+//           - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат
+//           - Неопределено - Проверит, что таблица не пустая 
+// Возвращаемое значение:
+//  Массив из Структура - Найденные записи, включая табличный части
+Функция Записи(ИмяТаблицы, Предикат) Экспорт
+	
+	ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*");
+	Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Ложь);
+	
+КонецФункции
+
 // Вернет признак содержит ли таблица записи удовлетворяющие переданным условиям
 // 
 // Параметры:
@@ -107,9 +142,7 @@
 // Возвращаемое значение:
 //  Структура - Описание запроса:
 // * ИмяТаблицы - Строка -
-// * ВыбираемыеПоля - Структура - Выражения выбираемых полей:
-//                                * Ключ - Строка - Имя поля
-//                                * Значение - Строка - выражение поля
+// * ВыбираемыеПоля - Массив из Строка
 // * КоличествоЗаписей - Число, Неопределено - Ограничение количества выбираемых записей
 // * Условия - Массив из Строка - Коллекция выражений условий, которые будут объединены через `И`
 // * ЗначенияПараметров - Структура - Набор параметров запроса
@@ -117,7 +150,7 @@
 	
 	Описание = Новый Структура();
 	Описание.Вставить("ИмяТаблицы", "");
-	Описание.Вставить("ВыбираемыеПоля", Новый Структура);
+	Описание.Вставить("ВыбираемыеПоля", Новый Массив);
 	Описание.Вставить("КоличествоЗаписей", Неопределено);
 	Описание.Вставить("Условия", Новый Массив());
 	Описание.Вставить("ЗначенияПараметров", Новый Структура());
diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
index 931cadad..9a31a352 100644
--- a/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl
@@ -23,26 +23,7 @@
 	Запрос = Запрос(ОписаниеЗапроса);
 	РезультатЗапроса = Запрос.Выполнить();
 	
-	Если НЕ ДляКлиента Тогда
-		Возврат РезультатЗапроса.Выгрузить();
-	ИначеЕсли РезультатЗапроса.Пустой() Тогда
-		Возврат Новый Массив();
-	КонецЕсли;
-	
-	Ключи = СтрСоединить(ЮТОбщий.ВыгрузитьЗначения(РезультатЗапроса.Колонки, "Имя"), ",");
-	Результат = Новый Массив();
-	
-	Выборка = РезультатЗапроса.Выбрать();
-	
-	Пока Выборка.Следующий() Цикл
-		
-		Запись = Новый Структура(Ключи);
-		ЗаполнитьЗначенияСвойств(Запись, Выборка);
-		Результат.Добавить(Запись);
-		
-	КонецЦикла;
-	
-	Возврат Результат;
+	Возврат ВыгрузитьРезультатЗапроса(РезультатЗапроса, ДляКлиента);
 	
 КонецФункции
 
@@ -88,6 +69,35 @@
 	
 КонецФункции
 
+// Возвращяет записи результат запроса
+// 
+// Параметры:
+//  ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
+//  ОднаЗапись - Булево - Вернуть первую запись
+// 
+// Возвращаемое значение:
+//  Массив из Структура, Структура, Неопределено - Записи
+Функция Записи(ОписаниеЗапроса, ОднаЗапись) Экспорт
+	
+	Если ОднаЗапись Тогда
+		ОписаниеЗапроса.КоличествоЗаписей = 1;
+	КонецЕсли;
+	
+	Запрос = Запрос(ОписаниеЗапроса);
+	РезультатЗапроса = Запрос.Выполнить();
+	
+	Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина);
+	
+	Если НЕ ОднаЗапись Тогда
+		Возврат Записи;
+	ИначеЕсли Записи.Количество() Тогда
+		Возврат Записи[0];
+	Иначе
+		Возврат Неопределено;
+	КонецЕсли;
+	
+КонецФункции
+
 #КонецОбласти
 
 #Область СлужебныеПроцедурыИФункции
@@ -108,14 +118,10 @@
 		Строки.Добавить("ПЕРВЫЕ " + ЮТОбщий.ЧислоВСтроку(ОписаниеЗапроса.КоличествоЗаписей));
 	КонецЕсли;
 	
-	ВыбираемыеПоля = Новый Массив();
-	Для Каждого Выражение Из ОписаниеЗапроса.ВыбираемыеПоля Цикл
-		Поле = СтрШаблон("	%1 КАК %2", ?(Выражение.Значение = Неопределено, Выражение.Ключ, Выражение.Значение), Выражение.Ключ);
-		ВыбираемыеПоля.Добавить(Поле);
-	КонецЦикла;
-	
-	Если НЕ ВыбираемыеПоля.Количество() Тогда
-		ВыбираемыеПоля.Добавить("1 КАК Поле");
+	Если ОписаниеЗапроса.ВыбираемыеПоля.Количество() Тогда
+		ВыбираемыеПоля = ОписаниеЗапроса.ВыбираемыеПоля;
+	Иначе
+		ВыбираемыеПоля = ЮТОбщий.ЗначениеВМассиве("1 КАК Поле");
 	КонецЕсли;
 	
 	Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС));
@@ -159,4 +165,51 @@
 	
 КонецФункции
 
+Функция ВыгрузитьРезультатЗапроса(РезультатЗапроса, ВМассив)
+	
+	Если НЕ ВМассив Тогда
+		Возврат РезультатЗапроса.Выгрузить();
+	Иначе
+		Результат = Новый Массив();
+	КонецЕсли;
+	
+	Если РезультатЗапроса.Пустой() Тогда
+		Возврат Результат;
+	КонецЕсли;
+	
+	Реквизиты = Новый Массив();
+	ТабличныеЧасти = Новый Массив();
+	
+	ТипРезультатЗапроса = Тип("РезультатЗапроса");
+	Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
+		
+		Реквизиты.Добавить(Колонка.Имя);
+		
+		Если Колонка.ТипЗначения.СодержитТип(ТипРезультатЗапроса) Тогда
+			ТабличныеЧасти.Добавить(Колонка.Имя);
+		КонецЕсли;
+		
+	КонецЦикла;
+	
+	ПараметрыКонструктора = СтрСоединить(Реквизиты, ",");
+	
+	Выборка = РезультатЗапроса.Выбрать();
+	
+	Пока Выборка.Следующий() Цикл
+		
+		Запись = Новый Структура(ПараметрыКонструктора);
+		ЗаполнитьЗначенияСвойств(Запись, Выборка);
+		
+		Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл
+			Запись[ТабличнаяЧасть] = ВыгрузитьРезультатЗапроса(Выборка[ТабличнаяЧасть], ВМассив);
+		КонецЦикла;
+		
+		Результат.Добавить(Запись);
+		
+	КонецЦикла;
+	
+	Возврат Результат;
+	
+КонецФункции
+
 #КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl
index 9ee6615b..a039e9e2 100644
--- a/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl
@@ -22,7 +22,11 @@
 	
 	Описание = ЮТЗапросы.ОписаниеЗапроса();
 	Описание.ИмяТаблицы = ИмяТаблицы;
-	Описание.ВыбираемыеПоля.Вставить("Проверка", "1");
+	Если ВыбираемыеПоля = Неопределено Тогда
+		Описание.ВыбираемыеПоля.Добавить("1 КАК Проверка");
+	Иначе
+		ЗаполнитьВыбираемыеПоля(Описание, ВыбираемыеПоля)
+	КонецЕсли;
 	
 	СформироватьУсловия(ПредикатыУсловия, Описание.Условия, Описание.ЗначенияПараметров);
 	
@@ -93,4 +97,32 @@
 	
 КонецФункции
 
+Процедура ЗаполнитьВыбираемыеПоля(ОписаниеЗапроса, Знач ВыбираемыеПоля)
+	
+	ТипПараметра = ТипЗнч(ВыбираемыеПоля);
+	
+	Если ТипПараметра = Тип("Строка") Тогда
+		ВыбираемыеПоля = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ВыбираемыеПоля, ",", Истина);
+		ТипПараметра = Тип("Массив");
+	КонецЕсли;
+	
+	Если ТипПараметра = Тип("Массив") Тогда
+		
+		ОписаниеЗапроса.ВыбираемыеПоля = ВыбираемыеПоля;
+		
+	ИначеЕсли ТипПараметра = Тип("Структура") Тогда
+		
+		Для Каждого Поле Из ВыбираемыеПоля Цикл
+			Выражение = СтрШаблон("%1 КАК %2", Поле.Значение, Поле.Ключ);
+			ОписаниеЗапроса.ВыбираемыеПоля.Добавить(Выражение);
+		КонецЦикла;
+		
+	Иначе
+		
+		ВызватьИсключение ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТЗапросыКлиентСервер.ЗаполнитьВыбираемыеПоля", ВыбираемыеПоля);
+		
+	КонецЕсли;
+	
+КонецПроцедуры
+
 #КонецОбласти
diff --git a/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl b/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl
index a5384258..afcf8ac8 100644
--- a/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl
+++ b/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl
@@ -26,6 +26,8 @@
 		.ДобавитьТест("ТаблицаСодержитЗаписи")
 		.ДобавитьТест("РезультатЗапроса")
 		.ДобавитьТест("РезультатПустой")
+		.ДобавитьТест("Запись")
+		.ДобавитьТест("Записи")
 	;
 	
 КонецПроцедуры
@@ -123,8 +125,8 @@
 	ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка");
 	ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления");
 	ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка);
-	ОписаниеЗапроса.ВыбираемыеПоля.Вставить("Наименование");
-	ОписаниеЗапроса.ВыбираемыеПоля.Вставить("Число", "1+1");
+	ОписаниеЗапроса.ВыбираемыеПоля.Добавить("Наименование");
+	ОписаниеЗапроса.ВыбираемыеПоля.Добавить("1+1 КАК Число");
 	
 	ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса))
 		.ИмеетДлину(1)
@@ -153,4 +155,110 @@
 	
 КонецПроцедуры
 
+Процедура Запись() Экспорт
+	
+	// Справочник
+	Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+		.Фикция("Наименование")
+		.Фикция("Поставщик");
+	Ссылка = Конструктор.Записать();
+	ДанныеОбъекта = Конструктор.ДанныеОбъекта();
+	
+	ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат()
+		.Реквизит("Ссылка").Равно(Ссылка));
+	
+	ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат()
+		.Реквизит("Поставщик").Равно(ДанныеОбъекта.Поставщик));
+	
+	ЮТест.ОжидаетЧто(ДанныеЗаписи)
+		.ИмеетТип("Структура")
+		.Заполнено()
+		.Свойство("Ссылка").Равно(Ссылка)
+		.Свойство("Наименование").Равно(ДанныеОбъекта.Наименование)
+		.Свойство("Поставщик").Равно(ДанныеОбъекта.Поставщик);
+	
+	// Справочник поиск по реквизиту
+	ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат()
+		.Реквизит("Поставщик").Равно(ДанныеОбъекта.Поставщик));
+	
+	ЮТест.ОжидаетЧто(ДанныеЗаписи)
+		.Свойство("Ссылка").Равно(Ссылка);
+	
+	// Документ, тест на табличную часть
+	Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара")
+		.Фикция("Склад")
+		.Фикция("Организация")
+		.Фикция("Поставщик")
+		.ТабличнаяЧасть("Товары")
+			.ДобавитьСтроку()
+			.Фикция("Товар")
+			.Фикция("Цена");
+	
+	Ссылка = Конструктор.Записать();
+	ДанныеОбъекта = Конструктор.ДанныеОбъекта();
+	
+	ДанныеЗаписи = ЮТЗапросы.Запись("Документ.ПриходТовара", ЮТест.Предикат()
+		.Реквизит("Ссылка").Равно(Ссылка));
+	
+	ЮТест.ОжидаетЧто(ДанныеЗаписи)
+		.Свойство("Ссылка").Равно(Ссылка)
+		.Свойство("Поставщик").Равно(ДанныеОбъекта.Поставщик)
+		.Свойство("Товары")
+			.ИмеетТип("Массив")
+			.ИмеетДлину(1)
+			.Свойство("Товары[0].НомерСтроки").Равно(1)
+			.Свойство("Товары[0].Товар").Равно(ДанныеОбъекта.Товары[0].Товар);
+	
+	ДанныеЗаписи = ЮТЗапросы.Запись("Документ.ПриходТовара.Товары", ЮТест.Предикат()
+		.Реквизит("Товар").Равно(ДанныеОбъекта.Товары[0].Товар));
+	ЮТест.ОжидаетЧто(ДанныеЗаписи)
+		.Свойство("Ссылка").Равно(Ссылка)
+		.Свойство("Товар").Равно(ДанныеОбъекта.Товары[0].Товар);
+	
+	// Регистры
+	Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют")
+		.Фикция("Период")
+		.Фикция("Валюта")
+		.Фикция("Курс");
+	Конструктор.Записать();
+	ДанныеОбъекта = Конструктор.ДанныеОбъекта();
+	
+	ДанныеЗаписи = ЮТЗапросы.Запись("РегистрСведений.КурсыВалют", ЮТест.Предикат()
+		.Реквизит("Валюта").Равно(ДанныеОбъекта.Валюта));
+	
+	ЮТест.ОжидаетЧто(ДанныеЗаписи)
+		.Свойство("Валюта").Равно(ДанныеОбъекта.Валюта)
+		.Свойство("Курс").Равно(ДанныеОбъекта.Курс);
+	
+КонецПроцедуры
+
+Процедура Записи() Экспорт
+	
+	ТоварыПоставщика = Новый Соответствие();
+	Поставщик = ЮТест.Данные().СоздатьЭлемент("Справочники.Контрагенты");
+	
+	Для Инд = 1 По 5 Цикл
+		Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары")
+			.Фикция("Наименование")
+			.Установить("Поставщик", Поставщик);
+		ТоварыПоставщика.Вставить(Конструктор.Записать(), Конструктор.ДанныеОбъекта());
+	КонецЦикла;
+	
+	Записи = ЮТЗапросы.Записи("Справочник.Товары", ЮТест.Предикат()
+		.Реквизит("Поставщик").Равно(Поставщик));
+	
+	ЮТест.ОжидаетЧто(Записи)
+		.ИмеетТип("Массив")
+		.ИмеетДлину(5);
+	
+	Для Каждого Запись Из Записи Цикл
+		ЮТест.ОжидаетЧто(Запись)
+			.ИмеетТип("Структура")
+			.Свойство("Ссылка")
+			.Свойство("Поставщик").Равно(Поставщик)
+			.Свойство("Код");
+	КонецЦикла;
+	
+КонецПроцедуры
+
 #КонецОбласти