Отчёт на разных листах (а-ля EXCEL), управляемые формы + выгрузка в Excel без COM

15.01.19

Интеграция - Загрузка и выгрузка в Excel

Столкнулся с задачей вывода отчёта на разных листах (а-ля Excel), предлагаю мини статью со своим скромным опытом по этому вопросу. Если есть решение лучше, напишите об этом в комментариях.

Скачать файлы

Наименование Файл Версия Размер
Отчёт на разных листах (а-ля EXCEL) управляемые формы:
.erf 11,83Kb
97
.erf 11,83Kb 97 Скачать

Для примера сделаем простейший отчёт, который будет выводить содержимое групп номенклатуры на разные листы.

1

Добавим на форму кнопку «сформировать» реквизит Список групп с типом значений «СправочникСсылка.Номенклатура»

(можно и без реквизита обойтись, но так проще) Листов у нас будет столько, сколько элементов списка. Всё остальное будем добавлять (и удалять) на форму программно.

Отчёту добавим схему СКД, в которой будем получать список номенклатуры переданной группы (через параметр «ГруппаТоваров».)

Создаём группу формы «листы» (для начала проверим, если она уже создана, то удалим её)

Если Элементы.Найти("Листы") <> Неопределено Тогда 
  Элементы.Удалить(Элементы.Листы);
КонецЕсли;
ЭлементЛисты = Элементы.Добавить("Листы",Тип("ГруппаФормы"));
ЭлементЛисты.Вид = ВидГруппыФормы.Страницы;
ЭлементЛисты.Заголовок = "Листы";
ЭлементЛисты.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСнизу; //По фэншую, как в Экселе

Дальше перебираем группы номенклатуры,  формируем отчёт из скд, создаём листы (удаляем, если нужно, старые),  создаём табличные документы на листах и выводим туда сформированные отчёты.

Для Каждого  ЭлСписка Из СписокГрупп Цикл
		массивДляУдаления = Новый Массив;  
		МассивДобавляемыхРеквизитов = Новый Массив; 
		НаимГруппы=ЭлСписка.Значение.Наименование;
		Если Не ЗначениеЗаполнено(НаимГруппы)  Тогда 
			Продолжить;   //Не люблю я группы без наименовния 
		КонецЕсли;
		НомерЛиста=(СписокГрупп.Индекс(ЭлСписка)+1);	
		ИДЛиста="Результат"+НомерЛиста;
		НовыйЭлемент = Элементы.Добавить("Лист"+НомерЛиста,Тип("ГруппаФормы"),ЭлементЛисты);
		НовыйЭлемент.Вид = ВидГруппыФормы.Страница;
		НовыйЭлемент.Заголовок = НаимГруппы;
		МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ИДЛиста,Новый ОписаниеТипов("ТабличныйДокумент"))); 
		//Проверяем, еть ли уже такой реквизит формы, если есть, добавим его в список для удаления
		РеквФормы= ПолучитьРеквизиты();	
		Для Каждого Рекв Из РеквФормы Цикл
			Если Рекв.Имя=ИДЛиста Тогда
				массивДляУдаления.Добавить(ИДЛиста);
				прервать;
			КонецЕсли;
		КонецЦикла;
		
		ИзменитьРеквизиты(МассивДобавляемыхРеквизитов,массивДляУдаления); //добавляем и удаляем
		ЭлементТД = Элементы.Добавить(ИДЛиста, Тип("ПолеФормы"),НовыйЭлемент); 
		ЭлементТД.ПутьКДанным = ИДЛиста; 
		//Формируем отчёт из СКД
		КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; 
		НастройкиКомп=Отчет.КомпоновщикНастроек.ПолучитьНастройки();
		//Находим и устанавливаем параметр СКД
		ГруппаТоваров=НастройкиКомп.ПараметрыДанных.Элементы.Найти("ГруппаТоваров");
		ГруппаТоваров.Значение= ЭлСписка.Значение;
		ГруппаТоваров.Использование=Истина;
		ДР = Новый ДанныеРасшифровкиКомпоновкиДанных;
		СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("СКД");
		МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,НастройкиКомп,ДР); 
		ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; 
		ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ,ДР); 
		ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
		ЭтаФорма[ИДЛиста].Очистить();
		//Выводим результат в созданный табличный документ (во вновь созданный лист)
		ПроцессорВывода.УстановитьДокумент(ЭтаФорма[ИДЛиста]); 
		ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); 	
КонецЦикла;

 Готовый отчёт  можно скачать ниже. В качестве бонуса туда я прикрутил кнопку, которая сохраняет результат в Excel так же на разные листы.

И добавил выгрузку в эксель без COM объекта с помощью объекта ПакетОтображаемыхДокументов   описанная в этой замечательной статье

2

Приветствуются комментарии. Доброй ночи и удачи.

СКД Листы EXCEL Отчёт

См. также

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 14.05.2023, версия 9.4 - 9.8)

6000 руб.

20.11.2015    144742    337    366    

473

SALE! 35%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить". Программа сама находит таблицу в файле, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает товарные документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, накладную, заказ клиента и т.д.). Содержит модуль работы с электронной почтой. Для поиска таблиц используются новейшие методы OCR-нейросети. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д.

5400 4968 руб.

04.06.2019    96006    276    169    

287

Загрузка данных о продажах WildBerries из API Статистики и Отчетов в формате *.xlsx в документ "Отчет комиссионера"

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Платные (руб)

Обработки предназначены для следующих конфигураций: Бухгалтерия предприятия, редакция 3.0; Управление нашей фирмой, редакция 1.6 - 3.0; Управление торговлей, редакция 10.3; Управление торговлей, редакция 11; Комплексная автоматизация 2; ERP Управление предприятием 2

3600 руб.

11.12.2019    50521    859    3    

164

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

Загрузка и выгрузка в Excel Оптовая торговля Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    208543    763    882    

919

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

9460 руб.

29.10.2014    204125    570    521    

405

Загрузка документов поступления в 1С из XML формата 820 (Контур.Диадок) для УТ10, УТ11, Бух3, КА2, КА2.5, УПП1.3 и обработка выгрузки УПД в Контур Диадок и СБИС для 1С:Бухгалтерии 3

ЭДО и ОФД Загрузка и выгрузка в Excel Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Кто получает документы через Контур.ДиаДок (XML файл формат 820) и набивает их вручную в 1С, тот наверняка хотел бы автоматизировать этот процесс. Поддержка конфигураций: Бухгалтерии 3, УПП 1.3, 1С:КА 2.4 и 1С:КА 2.5, УТ10, УТ11.4 и УТ11.5. Выгрузка XML в формате 820 для диадок из БУХ3

3600 руб.

11.02.2020    84902    259    155    

176

Загрузка данных о продажах Яндекс.Маркета из Отчетов в формате *.xlsx в документ "Отчет комиссионера"

Маркетплейсы Загрузка и выгрузка в Excel Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса Яндекс.Маркета «Беру» из Отчетов Excel для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Комплексная автоматизация 2; ERP 2 Управление предприятием и Управление нашей фирмой, редакция 1.6 - 3.0 в документ "Отчет комиссионера (агента) о продажах".

3600 руб.

09.12.2020    21243    192    1    

57
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Ibrogim 1297 07.04.17 13:47 Сейчас в теме
Жду комментариев и конструктивной критики )
12. Asmody 21.04.17 17:59 Сейчас в теме
Рекомендую при сохранении книги вставить нечто такое:

		win = book.Windows.item(1);
		win.TabRatio = 0.6;
		win.ScrollWorkbookTabs(, 0);
		book.Sheets(1).Select();
		book.SaveAs(ДиалогВыбораФайла.ПолноеИмяФайла,-4143);
		xlsApp.DisplayAlerts = 1;
		xlsApp.Workbooks.Close();
		xlsApp.Quit();
Показать

и "развернуть" вставку листов в книгу.

Тогда при открытии книги в Excel листы будут в "правильном" порядке и будут видны "ярлычки".
IvanR3S; Ibrogim; +2 Ответить
13. Ibrogim 1297 22.04.17 19:21 Сейчас в теме
(12) ок, спасибо, попробую
17. DoReMu 27.05.22 07:39 Сейчас в теме
(1) Скажите, а кнопка выгрузки в Эксель снова делает запрос к базе или есть способ обойти все листы и выгрузить информацию из них?
2. v3rter 07.04.17 14:00 Сейчас в теме
3. Ibrogim 1297 07.04.17 14:13 Сейчас в теме
(2)Это принцип (схема), будет работать на любых управляемых формах. А если вы про прикреплённый отчёт, то он будет в любой конфигурации на УФ работать, где есть иерархический справочник "номенклатура"
4. Dmitri93 11 10.04.17 09:39 Сейчас в теме
Круто) интересная задумка) а типового механизма подобного разве нет?
5. Ibrogim 1297 10.04.17 11:31 Сейчас в теме
(4),Типового не нашёл, если есть, расскажите о нём
6. necropunk 9 10.04.17 11:51 Сейчас в теме
Удобно. Типового такого тоже ничего подобного не припомню, интересный пример, спасибо.
7. rhtr 88 12.04.17 06:42 Сейчас в теме
Молодчик!
8. serega_new 12.04.17 10:33 Сейчас в теме
Тема!
9. Ibrogim 1297 12.04.17 12:16 Сейчас в теме
(8)(7) Спасибо )
10. RinGo 91 14.04.17 06:33 Сейчас в теме
Красиво! Сам думал над этой темой... Спасибо за сэкономленное время!
11. vlastapov 49 14.04.17 21:49 Сейчас в теме
Да, для пользователей будет привычнее, да еще и выгрузка в EXEL
14. jaroslav.h 177 13.02.20 13:25 Сейчас в теме
Решение скачал, работает, спасибо.

Вопрос, через ПакетОтображаемыхДокументов я могу и назад прочитать из разных листов екселя?

Мне нужно сформировать ексель файл с разными страницами.
Данный файл будет отредактирован (колонки).
И теперь нужно из отредактированного файла получить данные назад в 1С.
15. Ibrogim 1297 13.02.20 13:49 Сейчас в теме
(14)
ПакетОтображаемыхДокументов

Думаю, что через этот объект не получится.

С недавних пор листы при загрузке через ТабличныйДокумент являются областями, поэтому удобно загружать както так
ТабличныйДокумент.Прочитать(ФайлEXCEL);	
	Для Каждого ОбластьТД ИЗ ТабличныйДокумент.Области Цикл
		СписокЛистов.Добавить(ОбластьТД.Имя);
	КонецЦикла;
jaroslav.h; +1 Ответить
16. jaroslav.h 177 13.02.20 14:08 Сейчас в теме
(15) Спасибо за оперативность
18. aret99 5 12.05.23 16:53 Сейчас в теме
Отчет очень помог быстро решить задачу, поставленную руководством: Выгрузка телефонного справочника в эксель по подразделениям во вкладках. Отчет требует функций из общего модуля типовых конфигураций "СтандартныеПодсистемыКлиент", который успешно заработал после копирования из ЗУП в мою рукописную телефонную книгу. И пришлось немного подшаманить, чтобы при выгрузке в эксель вкладки наименовались по подразделениям, а не лист_2 Лист_3.
Оставьте свое сообщение