Функция Печать() Экспорт
Эксель = ПолучитьCOMОбъект("", "Excel.Application");
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ИНФО");
Область = Макет.ПолучитьОбласть("ПервыйЛист");
Область.Параметры.Организация = СсылкаНаОбъект.Организация;
Область.Параметры.ИНН = СсылкаНаОбъект.Организация.ИНН;
Область.Параметры.РС = СсылкаНаОбъект.Банк.ОсновнойБанковскийСчет.НомерСчета;
Область.Параметры.ДатаФайла = ДатаРеестра;
ТабДок.Вывести(Область);
ТабДок.Записать("C:\1c\1.xls","xls");
Эксель.DisplayAlerts = 0; //Не выводить предупреждения Excel
Книга = Эксель.WorkBooks.Open("C:\1c\1.xls");
Макет1 = ПолучитьМакет("Реестр");
Область = Макет1.ПолучитьОбласть("Шапка");
Область.Параметры.НомерРеестра = НомерРеестра;
Область.Параметры.Организация = СсылкаНаОбъект.Организация;
Область.Параметры.Номер = НомерПлатежногоПоручения;
Область.Параметры.Дата = Формат(ДатаРеестра,"ДЛФ=DD");
ТабДок.Вывести(Область);
Область = Макет1.ПолучитьОбласть("ЛицевыеСчета");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Наименование КАК Физлицо,
| ЗарплатаКВыплатеОрганизацийЗарплата.Сумма,
| ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.ДатаРождения КАК ДатаРождения,
| ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета
|ИЗ
| РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
| ПО (ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Ссылка = ЛицевыеСчетаРаботниковОрганизации.ФизЛицо.Ссылка)
|ГДЕ
| ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Ссылка = &Ссылка
| И ЛицевыеСчетаРаботниковОрганизации.Банк = &Банк
|
|СГРУППИРОВАТЬ ПО
| ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.ДатаРождения,
| ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета,
| ЗарплатаКВыплатеОрганизацийЗарплата.Сумма,
| ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Наименование
|
|УПОРЯДОЧИТЬ ПО
| Физлицо";
Запрос.УстановитьПараметр("Ссылка" , СсылкаНаОбъект);
Запрос.УстановитьПараметр("Банк", СсылкаНаОбъект.Банк);
ВЫборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ФИО = ОбщегоНазначенияЗК.РазложитьСтрокуВМассивПодстрок(Выборка.Физлицо, " ");
Область.Параметры.Фио = ФИО[0]+ " "+ФИО[1] +" "+ФИО[2];;
Область.Параметры.ЛицевСчет = Выборка.НомерЛицевогоСчета;
Область.Параметры.Сумма = Формат(Выборка.Сумма,"ЧДЦ=2");
ТабДок.Вывести(Область);
КонецЦикла;
ТабДок.Записать("C:\1c\2.xls","xls");
Книга1 = Эксель.WorkBooks.Open("C:\1c\2.xls");
Макет2 = ПолучитьМакет("Payments");
Область = Макет2.ПолучитьОбласть("ТретийЛист");
Пока Выборка.Следующий() Цикл
Область.Параметры.НомерСчета = Выборка.НомерЛицевогоСчета;
Область.Параметры.Сумма = Формат(Выборка.Сумма,"ЧДЦ=2");
ТабДок.Вывести(Область);
КонецЦикла;
ТабДок.Записать("C:\1c\3.xls","xls");
Книга2 = Эксель.WorkBooks.Open("C:\1c\3.xls");
Файл = Эксель.Workbooks.Add();
Лист = Файл.WorkSheets.Add();
Лист = Книга.Copy;
КонецФункции
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Добрый день!
А в один макет всё нельзя закинуть?
Если нет, тогда можно
ТабДок Новый ТабличныйДокумент;
ТабДок1 Новый ТабличныйДокумент;
ТабДок2 Новый ТабличныйДокумент;
ТабДок3 Новый ТабличныйДокумент;
<< что-то там строиттся >>
ТабДок = ТабДок1 + ТабДок2 + ТабДок3;
А в один макет всё нельзя закинуть?
Если нет, тогда можно
ТабДок Новый ТабличныйДокумент;
ТабДок1 Новый ТабличныйДокумент;
ТабДок2 Новый ТабличныйДокумент;
ТабДок3 Новый ТабличныйДокумент;
<< что-то там строиттся >>
ТабДок = ТабДок1 + ТабДок2 + ТабДок3;
что-то непонятно, что вы имели виду. Чтобы одно под другим в одной таблице расположено было? Так выводите в одну таблицу, зачем вам несколько и в них потом сохранять? Или на разные листы одной таблицы сделать? Тогда так, конечно, не получится. Тогда или сразу в эксель выводите. Или через seets экселя например так же, как в вашем примере было (после того, Как открыли книги). А временные файлы, в которые сохранили, потом можно и удалить.
(7) juvv873, во всех непонятных ситуациях с экселем смотри справку по VBA ;)
А так, вот пример:
Размеры областей (СтрокТаблица1, СтрокТаблица2, КолонокТаблица1, КолонокТаблица2) можете получить, например, предварительно из ваших же табличных документов в коде 1С (высота таблицы оно самое после формирования всего табличного документа, ширину и того проще заранее узнать).
А так, вот пример:
ИсходнаяКнига = Эксель.WorkBooks.Open(ДиалогОткрытия.ПолноеИмяФайла);
ИтоговаяКнига = Эксель.WorkBooks.Add();
ИтоговыйЛист = ИтоговаяКнига.Sheets(1);
ИсходныйЛист = ИсходнаяКнига1.Sheets(1);
ИсходныйЛист.Range(ИсходныйЛист.Cells(1, 1), ИсходныйЛист.Cells(СтрокТаблица1, КолонокТаблица1)).Copy(ИтоговыйЛист.Range(ИтоговыйЛист.Cells(1, 1), ИтоговыйЛист.Cells(СтрокТаблица1, КолонокТаблица1)));
ИсходныйЛист = ИсходнаяКнига2.Sheets(1);
ИсходныйЛист.Range(ИсходныйЛист.Cells(1, 1), ИсходныйЛист.Cells(СтрокТаблица2, КолонокТаблица2)).Copy(ИтоговыйЛист.Range(ИтоговыйЛист.Cells(1, 1), ИтоговыйЛист.Cells(СтрокТаблица2, КолонокТаблица2)));
Размеры областей (СтрокТаблица1, СтрокТаблица2, КолонокТаблица1, КолонокТаблица2) можете получить, например, предварительно из ваших же табличных документов в коде 1С (высота таблицы оно самое после формирования всего табличного документа, ширину и того проще заранее узнать).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот