|
Выгрузка таблицы значений в шаблон 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) спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |