Имя: Пароль:
1C
 
Передача структуры структур с сервера на клиент
0 Tolstiy Beremenniy
 
13.12.18
07:26
С сервера на клиент нужно передать таблицу значений.
Знаю что нужно передавать её в структуре структур.
Делаю структуру. в которую помещаю структуру с таблицей значений.
но передача не осуществляется. Почему? Что я не так делаю?

      Структура_1 = Новый Структура;
    Структура_2 = Новый Структура;
    //
    Структура_2.Вставить("ТзВКом",      ТабВКом);    
    Структура_1.Вставить("Структура_1", Структура_2);
    //
    Возврат Структура_1;
КонецФункции
1 Dmitry1c
 
13.12.18
07:27
(0) таблицы значений на клиенте не существует
2 Tolstiy Beremenniy
 
13.12.18
07:30
Кажется я ощибся, передавать нужно массив структур, а
не структуру структур.
3 ink-nsk
 
13.12.18
07:54
А у меня реквизит на форме ТаблицаЗначений. Колонками управляю на клиенте, иногда передаю на сервер, там меняю данные, например Свернуть и возвращаю на клиент.
Я так понял нельзя на сервере менять структуру колонок.
работает.
4 applix
 
13.12.18
08:14
передавай через хранилище
5 Фрэнки
 
13.12.18
08:31
(2) необязательно массив структур. Массив можно передать чего угодно. Но придется дописать в обоих процедурах, что с данными массива нужно делать.
6 FIXXXL
 
13.12.18
08:34
(5) а передай массив таблиц значений :)
7 FIXXXL
 
13.12.18
08:35
(4) куда? НаКлиенте будет ошибка все одно
НЕТ НаКлиенте ТЗ, от слова совсем
8 FIXXXL
 
13.12.18
08:35
(3) не тормозит?
9 ink-nsk
 
13.12.18
08:41
(8) Разовые задачи, нужно взять остатки по COMу из бардака причесать по сложному алгоритму и загрузить в новую систему.

Честно приходится локально работать, временные затраты на обработку туда/сюда минимальны с общим временем.
10 FIXXXL
 
13.12.18
08:46
(9) а чего не ТЧ обработки?
11 ink-nsk
 
13.12.18
08:54
(10) А мне визуально она не нужна (если я тебя правильно понял). Поэтому довольствуюсь реквизитом.


Опыт кодирования на УФ - 1 месяц.
12 AllJoke
 
13.12.18
08:57
ЗначениеВРеквизитФормы.
13 dezss
 
13.12.18
09:04
(0) если что, в ОбщегоНазначения есть функция преобразования ТЗ в массив структур.
А обратно, почему-то, нету.
14 Фрэнки
 
13.12.18
09:07
(6) придется развернуть ТЗ в массив, а затем на другой стороне завернуть обратно в ТЗ
15 Фрэнки
 
13.12.18
09:41
Структура с именованными полями/значениями создается для каждой строки передаваемой ТЗ в цикле перебора строк ТЗ - это на сервере.

Затем при получении массива на клиенте перебираются, например так:

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

Здесь на стороне Сервера умышленно в Структуре были заданы имена Свойств, чтоб все совпадало на Клиенте и меньше нужно было кода писать для расшифровки
16 FIXXXL
 
13.12.18
10:33
(14) в том и дело, что "завернуть обратно в ТЗ" НаКлиенте не получится, только костылики типа (15)
17 Alexandr_U1982
 
13.12.18
10:57
(3)Если у тебя реквизит на форме, то там тип "ДанныеФормыКоллекция", а не "ТаблицаЗначений", хотя в конструкторе форм и написано "ТаблицаЗначений". Данные формы передается на сервер и обратно вместе с самой формой.
А вот отдельный объект таблица значений создать на клиенте уже не получится. "Новый ТаблицаЗначений" выдаст ошибку.
18 Alexandr_U1982
 
13.12.18
11:00
(0)(2) ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаЗначений)
// Преобразует таблицу значений в массив структур.
// Может использоваться для передачи на клиент данных в том случае, если таблица
// значений содержит только такие значения, которые могут
// быть переданы с сервера на клиент.
//
// Полученный массив содержит структуры, каждая из которых повторяет
// структуру колонок таблицы значений.
//
// Не рекомендуется использовать для преобразования таблиц значений
// с большим количеством строк.
//
// Параметры:
//  ТаблицаЗначений - ТаблицаЗначений - исходная таблица значений.
//
// Возвращаемое значение:
//  Массив - коллекция строк таблицы в виде структур.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан