helpf.pro
Регистрация
 +3 
Распечатать

1С 8.2 УП : Как передать таблицу значений с сервера на клиент?

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

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

Код 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;
 
  КонецЦикла;   
 
  Возврат ТЗ;
 
КонецФункции 

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

Разместил:   Версии: | 8.2 УП | 8.3 |  Дата:   Прочитано: 160716
 +3 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ;
Посмотреть все результаты поиска похожих
Комментарии
Olivvver
10.11.2017 06:10Комментарий: 2
Olivvver

Для платформы 8.3 будет работать вариант с ЗначениеВРеквизитФормы() и ТЗ на форме

Raiser_ZX
28.05.2016 10:40Комментарий: 1
Raiser_ZX

Правильно ли я понимаю, что вернуть выборку на тонкий клиент вообще шансов нет никаких?

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

В итоге получается, что:

1. Обычный возврат не работает, выкидывает ошибку XDTO.

2. ЗначениеИзСтрокиВнутр - на тонком клиенте недоступно.

3. Табличная часть формы на сервере недоступна.

Платформа 8.3 (8.3.5.1383) в режиме 8.2.

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.