HelpF.pro

Как передать таблицу значений с сервера на клиент?

Многие спрашиваю, как передать тз с сервера на клиент - ниже несколько вариантов как это можно реализовать:

Через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр

Код 1C v 8.3
 &НаКлиенте
Процедура ПолучитьТаблицу НаСервер(Команд а)

ТЗВСтроке = ПолучитьТЗНаСер вере();
ТЗ = ЗначениеИзСтрокиВнутр(ТЗВСтрок е);
КонецПроцедуры

// Функция получает данные на сервере
&НаСервере
Функция ПолучитьТЗНаСер вере()
// Для примера сформируем ТЗ с данными
ТЗ = ЗаполнитьТЗДанными();
Возврат ЗначениеВСтрокуВнутр(ТЗ);
КонецФункции

Через реквизит Формы

Код 1C v 8.3
 // Создаем реквизит формы "ВремТабЗнач" с типом данных: Таблица значений
// Ревкизит будет использоваться для передачи данных с сервера на клиент.
&НаСервере
Функция ПолучитьТЧ(ОбъектСсылка,ИмяТЧ)
ЗначениеОбъекта = ОбъектСсылка.ПолучитьОбъект();

ТабРез = ЗначениеОбъекта[ИмяТЧ].выгрузить();

МассивДобавляемыхРеквизитов = Новый Массив;
МассивУдаляемыхРеквизитов = Новый Массив;
МассивКолонок = Новый Массив;
ИдКоллекции="ВремТабЗнач";

КоллФормы=РеквизитФормыВЗначение(ИдКоллекции);

Для каждого ТекКол из КоллФормы.Колонки Цикл
МассивУдаляемыхРеквизитов.Добавить(ИдКоллекции+"."+ТекКол.Имя);
КонецЦикла;

Для каждого ТекКол из ТабРез.Колонки Цикл
МассивДобавляемыхРеквизитов.Добавить(
Новый РеквизитФормы(ТекКол.Имя,ТекКол.ТипЗначения,ИдКоллекции));
МассивКолонок.Добавить(ТекКол.Имя);
КонецЦикла;

// Добавим новые, удалим старые колонки
ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,МассивУдаляемыхРеквизитов);
// Поместим значение в реквизит формы
ЗначениеВРеквизитФормы(ТабРез,ИдКоллекции);

// вернем массив колонок в обрабатываемой ТЗ, например для более простого перебора
Возврат МассивКолонок;
КонецФункции

Через Временное хранилище

Код 1C v 8.3
 
АдресХранилища = ПоместитьВоВременноеХранилище(МассивДанных,ЭтаФорма.УникальныйИдентификатор);

ПротоколПереноса = ПолучитьИзВременногоХранилища(АдресХранилища);

Через обычный возврат

Код 1C v 8.2 УП
 &НаКлиенте
Процедура ПолучитьТаблицуНаСервер(Команда)
 
  ТЗ = ЗаполнитьТЗДанными();
 
КонецПроцедуры

//Функция заполняет ТЗ
&НаСервере
Функция ЗаполнитьТЗДанными()
 
  ТЗ = Новый ТаблицаЗначений;
  ТЗ.Колонки.Добавить("Поле1");
  ТЗ.Колонки.Добавить("Поле2");
  ТЗ.Колонки.Добавить("Поле3");
  ТЗ.Колонки.Добавить("Поле4");
  ТЗ.Колонки.Добавить("Поле5");
 
  Для i = 1 По 3 Цикл 
 
    НоваяСтр = ТЗ.Добавить();
    НоваяСтр.Поле1 = i;
    НоваяСтр.Поле2 = 2*i;
    НоваяСтр.Поле3 = 3*i;
    НоваяСтр.Поле4 = 4*i;
    НоваяСтр.Поле5 = 5*i;
 
  КонецЦикла;   
 
  Возврат ТЗ;
 
КонецФункции 

Пробуйте и пишите в комментариях как делаете это Вы


Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq83/view/1605.html