Функция ПолучитьДанныеВТЗ()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Дата КАК Дата,
| Документ.Номер,
| Документ.СуммаОбщая
|ИЗ
| Документ.Документ КАК Документ
|ГДЕ
| Документ.Дата МЕЖДУ &ДатаНач И &ДатаКон
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Запрос.УстановитьПараметр("ДатаКон", КонецДня(Отчет.ДатаКон));
Запрос.УстановитьПараметр("ДатаНач", НачалоДня(Отчет.ДатаНач));
РезультатЗапроса = Запрос.Выполнить();
ВыгруженныеДанные = РезультатЗапроса.Выгрузить();
Возврат ВыгруженныеДанные;
КонецФункции
Показать
Но после выполнения на сервере и возврате ТЗ выдает ошибку:
{Отчет.МойОтчет.Форма.ФормаОтчета.Форма(100)}: Ошибка при вызове метода контекста (ПолучитьДанныеВТЗ)
ТаблицаЗначенийДанные = ПолучитьДанныеВТЗ();
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
(7) А зачем это делать на клиенте? Можно на сервере, если сервер виндовый. Тогда и таблицу не надо будет передавать.
Если упрешься в медленные поячеечные операции экселя, то есть возможность присваивать ячейки пакетно с помощью COMSafeArray (это безотносительно остального).
Хотя самый кошерный способ - редактировать xlsx напрямую, как xml. Сам не делал, но люди вроде делают и материала на эту тему на инфостарте тоже вроде есть.
(4) Уточните, пожалуйста, а что Вы планируете делать с полученной строкой дальше? Зачем она передается на клиент, если там обработка таблицы не планируется?
Избитая же уже тема. Здесь куча уже методов, которые преобразовывают таблицу для передачи с клиента на сервер) Обычно в массив преобразовывают и на клиенте обратно. Но ЗначениеИзСтрокиВнутр тоже не вариант, потому что на тонком клиенте отпадёт всё)
(15)
Где несколько-то переменных? Таблица преобразуется в массив, массив один возвращается на клиент в количестве одной штуки, судя Вашей формулировке. И Вы если попробуете до создания тем погуглить, то большинство методов как раз на таком способе и основаны)
и нафига такие извраты, в такой простой задаче.
На сервере, вывести в табличный документ построителем отчета эту таблицу значений, или сразу запрос в нем и выполнить,
на клиента вернуть табдок, который просто сохранить в формате экселя.
Никаких ком объектов, и экселей не нужно установленных, работать будет на любом клиенте, хоть в толстом хоть в тонком, да и количество кода меньше будет
(14) ничего не отпадает,
выгружаешь этот файл в формате экселя,
а дальше делаешь ЗапуститьПриложение(ПутькФайлу),
и все, откроется твой файл экселем или опен офисом, смотря что установлено на компе
(16)
Мне нужно изменять файл который прислали, тоесть заполнить ячейки. А сохранять в своем не вариант, там на некоторые поля пароль стоит, ЦБ требует этот же файл заполнять а не самописные, у них там скрытые макросы для выгрузки в Их базу
(18)не пойму в чем проблема выполнить это на сервере, передайте на сервер (при вызове функции ПолучитьДанныеВТЗ) параметром адрес с двоичными данными, сохраните его на сервере как временный файл, запускайте ком объект и делайте с ним что хотите, НО НА СЕРВЕРЕ, после опять в хранилище (возврат адреса результат функции) и сохраняйте его на место откуда взяли на клиенте!
Вообще смотрите как сделано в типовых УТ, по заполнению шаблонов, на основе WORD. Там идет запрос на сервер, получают структуру данных. таблицы передаются массивом структур. В БСП есть функция в обменданнымиСервер: ТаблицаВМассивСтруктур
Функция ТаблицаВМассивСтруктур(Знач ТаблицаЗначений)
Результат = Новый Массив;
ИменаКолонок = "";
Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл
ИменаКолонок = ИменаКолонок + "," + Колонка.Имя;
КонецЦикла;
ИменаКолонок = Сред(ИменаКолонок, 2);
Для Каждого Строка Из ТаблицаЗначений Цикл
СтруктураСтроки = Новый Структура(ИменаКолонок);
ЗаполнитьЗначенияСвойств(СтруктураСтроки, Строка);
Результат.Добавить(СтруктураСтроки);
КонецЦикла;
Возврат Результат;
КонецФункции