Вывести результат запроса в таблицу значений на форме. 1С V8.3

С задачей вывода каких либо данных в Таблицу Значений (ТЗ) на форме сталкиваются наверное все программисты.  Если раньше до выхода Управляемого Интерфейса все решалось довольно просто, то теперь все немного изменилось.

Для обычных форм.

Результат = Запрос.Выполнить();

ТЗ = Результат.Выгрузить();

Стоит отметить, что предварительно нужно создать соответствующие РезультатуЗапроса колонки таблицы значений. Делается это также просто.  Добавить ТаблицуЗначений следует в реквизиты Формы. Еще раз акцентирую внимание — Названия колонок и типы данных колонок ТЗ должны совпадать и на форме и  в запросе. Можно вообще не создавать ТЗ на форме, а описать ее программно, примерно как то так:

Таб = НовыйТаблицаЗначений;

Таб.Колонки.Добавить("Фрукт");

Таб.Колонки.Добавить("Цвет");

Таб.Колонки.Добавить("Вкус");

Для управляемых форм все ровно  тоже самое кроме того что нужно на сервере получить значение данных ТЗ на форме, записать в них результат запроса и потом снова вернуть их на форму.

Ниже пример такого преобразования.

&НаСервере
Процедура ЗаполнитьОстаткиНаСервере()
	//Документ = РеквизитФормыВЗначение("Объект");
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ПартииНоменклатурыОстатки.Товар КАК Товар,
		|	ПартииНоменклатурыОстатки.Товар.Производитель КАК Производитель,
		|	МАКСИМУМ(Штрихкоды.Штрихкод) КАК Штрихкод,
		|	ПартииНоменклатурыОстатки.КоличествоОстаток КАК Остаток
		|ПОМЕСТИТЬ Остатки
		|ИЗ
		|	РегистрНакопления.ПартииНоменклатуры.Остатки КАК ПартииНоменклатурыОстатки
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды
		|		ПО ПартииНоменклатурыОстатки.Товар.Ссылка = Штрихкоды.Номенклатура.Ссылка
		|ГДЕ
		|	ПартииНоменклатурыОстатки.КоличествоОстаток > 0
		|
		|СГРУППИРОВАТЬ ПО
		|	ПартииНоменклатурыОстатки.Товар.Производитель,
		|	ПартииНоменклатурыОстатки.КоличествоОстаток,
		|	ПартииНоменклатурыОстатки.Товар
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	Остатки.Товар КАК Товар,
		|	Остатки.Производитель КАК Производитель,
		|	Остатки.Штрихкод КАК Штрихкод,
		|	Остатки.Остаток КАК Остаток,
		|	СохраненныеКартинки.КартинкаЗаполнена КАК Фото
		|ИЗ
		|	Остатки КАК Остатки
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СохраненныеКартинки КАК СохраненныеКартинки
		|		ПО Остатки.Товар = СохраненныеКартинки.Владелец
		|
		|УПОРЯДОЧИТЬ ПО
		|	Фото,
		|	Остатки.Товар.Наименование";
	
	РезультатЗапроса = Запрос.Выполнить();
		
	ТЗ = Запрос.Выполнить().Выгрузить();
	ЭтаФорма.Номенклатура.Очистить();
	ЭтаФорма.Номенклатура.Загрузить(ТЗ);

	//ЗначениеВРеквизитФормы(Документ, "Объект");	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьОстатки(Команда)
	ЗаполнитьОстаткиНаСервере();
	Элементы.Номенклатура.Обновить();	
КонецПроцедуры

Во всей этой истории следует обратить внимание на 2 строчки.

Первая

Документ = РеквизитФормыВЗначение("Объект");

Вторая

ЗначениеВРеквизитФормы(Документ, "Объект");

Первый из типа данных ДанныеФормыКоллекция преобразует данные в тип ТаблицаЗначений. Второй соответственно конвертирует в обратном направлении.

 

Вам также может понравиться

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Яндекс.Метрика