а как быть если с сервера таблицу значений нельзя передавать на клиент но очень хочется ее там видеть? массив структур использовать или можно как-то попроще??

ругается что отсутствует отображение типов для ValueTable
---
задача стояла передать из формы в форму таблицу для заполнения табличной части
Зачем тогда ТЗ (или массив структур) передавать на клиент?
Используйте временное хранилище.

```1c
    &НаКлиенте
    Процедура ОткрытьНужнуюФорму()
    АдресТЗ = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
    ПолучитьАдресТЗ(АдресТЗ);
    // добавляете в передаваемые параметры АдресТЗ
    ....
    КонецПроцедуры

    &НаСервере
    Процедура ПолучитьАдресТЗ(Адрес)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НАЧАЛОПЕРИОДА(ВахтаУдержания.Дата, ДЕНЬ) КАК Дата,
    | ВахтаУдержания.Удержание,
    | ВахтаУдержания.Комментарий,
    | ВахтаУдержания.Кто
    |ИЗ
    | Документ.Вахта.Удержания КАК ВахтаУдержания
    |ГДЕ
    | ВахтаУдержания.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
    ТЗ = Запрос.Выполнить().Выгрузить();
    ПоместитьВоВременноеХранилище(ТЗ, Адрес)
    КонецПроцедуры
```

В открываемой форме получаете АдресТЗ и получаете ТЗ:

```1c
    ТЗ = ПолучитьИзВременногоХранилища(АдресТЗ);
```
---
На клиенте нет таблицы значений, передавай либо массив структур, либо через хранилще
---
Можно добавить как перемененную на форму и не париться.
---
Переменные на сервере и на клиенте не видят друг друга, а на сервере еще и обнуляется без повт. исп.
---
создаете реквизит формы типа "(ТаблицаЗначений)". Обратите внимание на скобки. На самом деле это ДанныеФормыКоллекция, а не тип ТаблицаЗначений. Хотя при выборе типа нужно выбирать именно ТаблицаЗначений. Вот такой каламбур.
На сервере в новый реквизит формы можно загрузить ТЗ. Имена и тип колонок должны соответствовать.
ИмяРеквизита.Загрузить(ТЗ)
---
На клиенте нет таблицы значений, передавай либо массив структур, либо через хранилще
---
Через хранилище ТЗ на клиент не передать, как и Объект коллекции на сервер. Тут однозначно массив структур рулит
---
модные пацаны вместо хранилища уже костылят через МВТ.
---
менеджера временных таблиц тоже нет на тонком
---
А каким образом вы заполняете свою табличную часть на клиенте? Данными с сервера?
Не проще создать у Объекта создать табличную часть вынести ее на форму и загружать в нее результаты запроса скажем и обрабатывать сразу на сервере?
---
а че не вэб-сервис замутили? ))))
---
Тоже иногда стоит такая задача.
А как через массив структур??? Можно пример.
---
задача стояла передать из формы в форму таблицу для заполнения табличной части - БСП нет, обработку заполнения табличной части не создать как в учебниках, поэтому таблица нужна была на клиенте и при создании на сервере второй формы сравнить ее с имеющейся табличной частью документа

 ПараметрыФормы = Новый Структура;
 Если ЗначениеЗаполнено(ДокументСобытий) Тогда
  //добавлять в существующий документ событий
  ПараметрыФормы.Вставить("Ключ", ДокументСобытий);
  ПараметрыФормы.Вставить("ДополнительныеПараметры", Новый Структура("ДобавляемыеУдержания", ПолучитьМассивСтруктурУдержаний()));

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

 Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
 РезультатЗапроса = Запрос.Выполнить();
 Выб = РезультатЗапроса.Выбрать();
 МассивКВозврату = Новый Массив;
 Пока Выб.Следующий() Цикл
  СтрокуТЗВСтруктуру = Новый Структура("Дата, Удержание, Комментарий, Кто");
  ЗаполнитьЗначенияСвойств(СтрокуТЗВСтруктуру, Выб);
  МассивКВозврату.Добавить(СтрокуТЗВСтруктуру);
 КонецЦикла;
 Возврат МассивКВозврату;
КонецФункции

удобно тем что обход идет так же как таблицы значений
для каждого эл из ТЗ цикл
Эл.Дата
и т.д.
конеццикла
---
задача стояла передать из формы в форму таблицу для заполнения табличной части
Зачем тогда ТЗ (или массив структур) передавать на клиент?
Используйте временное хранилище.

```1c
    &НаКлиенте
    Процедура ОткрытьНужнуюФорму()
    АдресТЗ = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
    ПолучитьАдресТЗ(АдресТЗ);
    // добавляете в передаваемые параметры АдресТЗ
    ....
    КонецПроцедуры

    &НаСервере
    Процедура ПолучитьАдресТЗ(Адрес)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | НАЧАЛОПЕРИОДА(ВахтаУдержания.Дата, ДЕНЬ) КАК Дата,
    | ВахтаУдержания.Удержание,
    | ВахтаУдержания.Комментарий,
    | ВахтаУдержания.Кто
    |ИЗ
    | Документ.Вахта.Удержания КАК ВахтаУдержания
    |ГДЕ
    | ВахтаУдержания.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
    ТЗ = Запрос.Выполнить().Выгрузить();
    ПоместитьВоВременноеХранилище(ТЗ, Адрес)
    КонецПроцедуры
```

В открываемой форме получаете АдресТЗ и получаете ТЗ:

```1c
    ТЗ = ПолучитьИзВременногоХранилища(АдресТЗ);
```
---
спасибо, попробую
---
Так будет работать только в режиме "Толстый клиент", "Тонкий клиент" выдаст ошибку
---
в каком месте и какую ошибку?
---
Ошибку выдаст "Ошибка отображения типов", в случае если в форме не добавлена эта таблица. В этом случае нужно использовать преобразование ТЗ в структуру, как описано в (13)
---
какое отображение типов? ТЗ не передается на клиент от слова совсем. Внимательно код посмотрите. Передается только адрес хранилища.
В открываемой форме, в обработчике ПриСозданииНаСервере, получается ТЗ из хранилища и заполняются данные ТЧ. Все на сервере. Никуда на клиент ТЗ не передается.
---
Я в курсе. Ниже в (23) я разместил код который использовал, думаю вы меня поймете
---
получили массив структур на клиент, дальше что? На клиенте в цикле заполнять ТЧ?
Смотрите (13) : "задача стояла передать из формы в форму таблицу для заполнения табличной части - БСП нет" И приведен запрос получения таблицы. Т.е. на первой форме никакой таблицы нет в реквизитах.
---
Короче видимо не под эту задачу... В моем случае: если нужно таблицу передать на клиент и там использовать для обработки, не создавая реквизит формы
---
Я в курсе.
Тогда про ошибку отображения типов не упоминали. И что не будет работать на тонком клиенте, тоже.
---
Вообще все зависит от того, что дальше хотите с этими данными делать. Зачем именно ТЗ ? В зависимости от задач может оказаться, что нужно преобразовать в строку, например. Если нужно пару колонок и с ними проводить операции сортировки, например, можно использовать СписокЗначений.
---
ответил в 13
---
Вообще не совсем понятно, нахрена это нужно. Правильные пацаны делают так:
1. Создают реквизит формы с таблицей - но лучше создать реквизит объекта, куда суют все эти колонки, которые надо потом с чем-нить сравнивать.
2. Открывают эту форму.
3. Загружают туда данные (в эту таблицу на форме или, что лучше, в реквизит объекта).
4. Открывают форму, указывая текущую форму в качестве владельца.
5. В открывшейся форме что на клиенте, что на сервере будет доступна форма-владелец и, соответственно, реквизит с таблицей.
---
Это делается для того чтобы не создавать реквизит формы, если таблица нужна только для обработки данных
---
Мой вариант такой, чтобы работало на "тонком клиенте":

На первой форме формируем массив из таблицы

```1c
    &НаКлиенте
    Процедура КакаяТоПроцедураНаПервойФорме()

    АдресТЗТовары = МассивИзТаблицыВХранилище("Товары");

    КонецПроцедуры

    &НаСервере
    Функция МассивИзТаблицыВХранилище(ИмяТаблицы)

    МассивИзТЗ = ТаблицаЗначенийВМассив(Объект[ИмяТаблицы].Выгрузить());

    ВозвращаемыйАдрес = ПоместитьВоВременноеХранилище(МассивИзТЗ, УникальныйИдентификатор);

    Возврат ВозвращаемыйАдрес;

    КонецФункции

    &НаСервере
    Функция ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт

    Массив = Новый Массив();

    СтруктураСтрокой = ";
    Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл
    СтруктураСтрокой = СтруктураСтрокой + ?(СтруктураСтрокой=", ",",") + Колонка.Имя;
    КонецЦикла;

    Для Каждого Строка Из ТаблицаЗначений Цикл
    НоваяСтрока = Новый Структура(СтруктураСтрокой);
    ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);

    Массив.Добавить(НоваяСтрока);
    КонецЦикла;

    Возврат Массив;

    КонецФункции
```

и ловим готовый массив из таблицы значений на другой форме

```1c
    &НаКлиенте
    Процедура ОбработатьТаблицуНаКлиенте(АдресТЗТовары)

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

    КонецПроцедуры
```

в переменной "Товары" будет сидеть массив из структур, каждая структура - это строка таблицы

Ну конечно еще часть кода нужно написать для передачи АдресаТЗ между первой и второй формой, это может быть передано в структуре с другими параметрами
---
А в чем смысл преобразования ТЗ в массив, при работе с временным хранилищем? Можно же саму ТЗ в хранилище сохранять..
---
Таблицу потом не получить из хранилища в тонком клиенте. Ну например если в клиентском общем модуле захотите таблицу обработать, или в другой форме без добавления таблицы в качестве реквизита формы
---
Как в вычисляемом поле СКД передать Таблицу значений, чтобы отчет работал в тонком клиенте? Пробовал ВнешниеОтчеты.ПреобразоватьТаблицуЗначенийВМассивСтруктур(ТаблицаЗначений(Номенклатура, НадписьКол, Количество, НадписьЦен, ВЫБОР КОГДА ЦЕНА = 0 ТОГДА "-" ИНАЧЕ Формат(Цена,"ЧДЦ=2") КОНЕЦ)) При формировании отчета выдает Попытка сравнения значений, для которых не поддерживается операция сравнения