Имя: Пароль:
1C
 
Выгрузка таблицы значений в шаблон Excel
0 Natali15
 
08.08.22
13:46
Создала обработку, где получаю определенные данные по документу в таблицу значений по кнопке "Заполнить". Но эти данные по кнопке "Выгрузить" нужно перенести в Excel. Создала шаблон Excel с одинаковым количеством колонок как на форме в таблице значений. Потом пишу такой код
Попытка
        Excel = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Не удалось инициализировать Excel");
    КонецПопытки;
    Попытка
    Excel.Workbooks.Open("C:\Users\Nat\Desktop\ТабДок.xlsx");

Подскажите куда двигаться дальше?  Как передать эту таблицу значений в шаблон excel?

Вот код по заполнению ТЗ

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

    

    Запрос1.УстановитьПараметр("НачалоПериода", Объект.НачалоПериода);
    Запрос1.УстановитьПараметр("КонецПериода", Объект.КонецПериода);
    Запрос1.УстановитьПараметр("ксДоговорСубподряда", Объект.ДоговорСубподрядчика);
    Запрос1.УстановитьПараметр("ксСубподрядчикКонтрагент", Объект.Субподрядчик);
    Запрос1.УстановитьПараметр("Проведен", Истина);

    РезультатЗапроса = Запрос1.Выполнить();
    Таблица = РезультатЗапроса.Выгрузить();
    ТЗ.Очистить();
    Ном = 0;
    Для каждого стр из Таблица Цикл
        НоваяСтрока = ТЗ.Добавить();
        НоваяСтрока.Номер = Ном + 1;
        НоваяСтрока.НаименованиеОбъекта = стр.НаправлениеДеятельности;
        НоваяСтрока.ПолноеНаименованиеОбъекта = стр.НаправлениеДеятельностиКомментарий;
        НоваяСтрока.ЗаказКлиента = стр.Ссылка;
        НоваяСтрока.ВидРабот = стр.ЗаказКлиентаксВидРабот;
        НоваяСтрока.Содержание = стр.Номенклатура;
        Ном = Ном + 1;
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура Заполнить(Команда)
    ЗаполнитьНаСервере();
КонецПроцедуры
1 mistеr
 
08.08.22
13:48
(0) ТабличныйДокумент.Записать()

COMОбъект не нужен.
2 6awkup_true
 
08.08.22
13:50
ТабДок = Новый ТабличныйДокумент;
    
    Построитель = Новый ПостроительОтчета();

    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТвояТаблицаИзЗапроса);
    Построитель.ВыводитьЗаголовокОтчета = Ложь;
    Построитель.Вывести(ТабДок );

    ИмяФайла = "C:\Users\professional1ass\Desktop\test.xls";
    
    ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLSX);
3 Natali15
 
08.08.22
13:55
(1) (2) делаю через COMОбъект, чтобы в Excel сохранялись формулы и заблокированные ячейки, через табдок такое не получится ведь?
4 6awkup_true
 
08.08.22
13:57
(3) можно записать файл как указано выше, а потом открыть и проставить формулы
5 mistеr
 
08.08.22
13:57
(3) Не получится.

Но в целом это тупиковый путь. Какой смысл в 1С, если пользователи все равно работают в Экселе? :)
6 Natali15
 
08.08.22
14:03
(4) попробую, а как сделать чтобы ячейка итого рассчитывалась, так как строк каждый раз разное количество будет?
7 6awkup_true
 
08.08.22
14:13
(6) 1) количество строк в тз же ведь известно?
    2) у листа книги есть реквизит UsedRange, который хранит количество строк и колонок
8 Natali15
 
08.08.22
14:15
(7) спасибо
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.