Имя: Пароль:
1C
1С v8
ПоместитьВоВременноеХранилище() Есть ли ограничения?
,
0 Birmingem
 
14.08.17
15:41
Делаю выгрузку данных в Ексель.
В серверной процедуре собираю различные данные и помещаю все в структуру.
Среди этих данных есть и простые типы значений (число, строка), и еще парочка таблиц значений.

Пытаюсь передать эту структуру в процедуру на клиенте:

&НаСервере
Функция ПолучитьДанныеНаСервере()
    ДанныеОтчета = Новый Структура;
    //идет заполнение ДанныеОтчета
    Путь=ПоместитьВоВременноеХранилище(ДанныеОтчета,ЭтаФорма.УникальныйИдентификатор);
    Возврат Путь;
КонецФункции

&НаКлиенте
Процедура ЭлектроннаяФормаXLS()
    Путь=ПолучитьДанныеНаСервере();
    ДанныеОтчета = ПолучитьИзВременногоХранилища(Путь);
КонецПроцедуры

Пишет:
Ошибка получения значения из временного хранилища
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:

Вопрос:
Есть ли какие то ограничения на помещаемые во временное хранилище данные?
Можно ли туда поместить структуру, содержащую несколько таблиц значений?
Или я что то не так делаю?
1 Имитация работы
 
14.08.17
15:46
И как ты собираешься жить с таблицей значений на клиенте?
2 Birmingem
 
14.08.17
15:49
(1)В данном примере, что то вроде:
Тз1=ДанныеОтчета.Тз1;
СумИт=Тз1.Итог("Сум");
3 Buster007
 
14.08.17
15:51
в СП почитай про таблицу значений
4 dezss
 
14.08.17
15:52
ТЗ не живет на клиенте. Делай массив структур, тогда можно будет.
5 Birmingem
 
14.08.17
16:11
Блин... Точно. ТЗ на клиенте недоступна ...

Вариант - загонять каждую строку ТЗ в структуру, а эти структуры в массив?
6 drcrasher
 
14.08.17
16:15
(5) посмотри БСП на тему ТаблицаЗначенийВМассив() или как-то так
7 Ц_У
 
14.08.17
16:23
(0) храни отдельно ТЗ от всего остального
8 apokrit
 
14.08.17
16:36
(0) Если данные нужно просто передать на клиент, то почему просто их туда не передать (прямо вот через Возврат, например)?
Зачем предварительно помещать их во временное хранилище?
Продавцы оборудования вам доплачивают?
9 H A D G E H O G s
 
14.08.17
16:43
(8) Они могут понадобится не прямо сейчас, а могут и вообще не понадобится.
10 Вафель
 
14.08.17
16:51
(9) если могут не понадобиться то лучше вообще не получать такие данные
11 Birmingem
 
14.08.17
16:54
(6)Спасибо! Нашел эту функцию.
(7)Видимо так и придется. Простые значения отдельно, а каждую ТЗ в отдельный массив.
(8)Там есть несколько ТЗ, строки которых на клиенте надо перебирать и выгружать в Ексель.

Есть готовая процедура, которая собирала все нужные данные в одну большую структуру (в ней и ТЗ и пр.). Все так красиво аккуратно по полочкам разложено.
А теперь придется эту процедуру дробить на кучу мелких ... эх ...
12 Heckfy
 
14.08.17
16:56
(11) Ну так сформируй файл на сервере и передай двоичными данными на клиента.
13 X Leshiy
 
14.08.17
16:57
(11) Заполняй на сервере, делов то.
14 Birmingem
 
14.08.17
17:02
(12) (13) На сервере нет Ексель
15 dezss
 
14.08.17
17:03
(14) загони в табдок...
16 X Leshiy
 
14.08.17
17:04
(14) Вот тебе уже в (15) подсказали :)
17 Wirtuozzz
 
14.08.17
17:05
(0) главный вопрос: зачем передавать что то на клиент? Заполняй Ексель на сервере. Так не пойдет?
18 Birmingem
 
14.08.17
17:06
Выгружаемый файл Ексель состоит из нескольких листов.
"загони в табдок..."
Несколько листов можно сделать?
19 Birmingem
 
14.08.17
17:07
(17)На сервере нет Ексель. Да и с правами на серваке еще неизвестно как дела обстоят.
20 dezss
 
14.08.17
17:08
(18) вывестигоризонатльныйразделительстраниц()
21 X Leshiy
 
14.08.17
17:09
(18) Делаешь на сервере n табдоков, передаешь на клиент, сохраняешь в n временных эксельфайлов, делаешь файл n + 1? копируешь в него листы.

Ну иди красивую функцию на n некрасивых бей :)
22 Heckfy
 
14.08.17
17:10
Ну так MS ADODB тебе в помощь, раз Экселя на сервере нету. :)
23 H A D G E H O G s
 
14.08.17
17:14
(10) Да ты - капитан очевидность, пта. Но нет, Анатолий, иногда ВХ идет доп. данными, которое лучше сохранить и не получать еще раз, когда пользователь согласится на продолжение.
24 dezss
 
14.08.17
17:15
На те тему для слияния нескольких экселевских файлов
v8: сохранить несколько табличных документов в разные листы excel
25 Birmingem
 
15.08.17
16:52
(21) Спасибо! Делаю по твоему совету - для каждого будущего листа Ексель создаю ТабДок, чтобы потом на клиенте из них собрать многолистовый файл Ексель.
Теперь вопрос, какой вариант оптимальнее?
1. С сервера на клиента передавать ТабДоки и на клиенте их сохранять во временные файлы Ексель
2. На сервере каждый ТабДок сохранять во временный файл Ексель, помещать во временное хранилище, и потом на клиенте получать их из временного хранилища
26 Fragster
 
гуру
15.08.17
17:18
я помню интересную штуку, когда большой табдок помещали во временное хранилище и очищали перед серверным вызовом, в самом серверном вызове разворачивали из хранилища и имели нехилый профит по скорости вызова
27 X Leshiy
 
15.08.17
17:28
(25)

Лично я передаю табдоки с сервера на клиент и показываю на форме (сохранение в эксель как доп фича).

Я бы не заморачивался с ВХ, нормально все ходит в виде ТД.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой