|   |   | 
| 
 | ПоместитьВоВременноеХранилище() Есть ли ограничения? | ☑ | ||
|---|---|---|---|---|
| 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)
 Лично я передаю табдоки с сервера на клиент и показываю на форме (сохранение в эксель как доп фича). Я бы не заморачивался с ВХ, нормально все ходит в виде ТД. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |