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

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

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

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

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

Стоит отметить, что предварительно нужно создать соответствующие РезультатуЗапроса колонки таблицы значений. Делается это также просто.

Таб = Новый ТаблицаЗначений;    
Таб.Колонки.Добавить("Фрукт");
Таб.Колонки.Добавить("Цвет");
Таб.Колонки.Добавить("Вкус");

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

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

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

РезультатЗапроса = Запрос.Выполнить();
 
ТЗ = Запрос.Выполнить().Выгрузить();
ЭтаФорма.Номенклатура.Загрузить(ТЗ);

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

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

Первая

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

Вторая

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

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

 

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

Ваш e-mail не будет опубликован.