gifts2017

Прайс-лист с картинками для УТ 10.3, КА, УПП и выгрузкой со сжатием в Excel

Опубликовал Олег Медведев (olgerd666) в раздел Обработки - Ценообразование, прайсы

Печать Прайс-листа с картинками для УТ10.3 КА УПП и выгрузкой со сжатием в Excel (без использования Excel, ADO, OpenOffice) при помощи компоненты GFLAX и возможностью регулирования настроек сжатия

Доработанный прайс-лист с картинками для УТ10.3 КА УПП.

Если сохранять стандартными средствами 1С большой прайс-лист в xlsx -то размер файла будет очень большой за счет того, что в нем используются несжатые png файлы.

Данная обработка использует то, что все xlsx - по сути архивы. Используется подмена PNG на JPG с возможностью настройки сжатия. За счет этого размер выходного файла Excel можно регулировать вручную

Пример выгрузки из обработки и стандартными средствами 1С:

  • из обработки 94 КБ
  • стандартными средствами 1С 981 КБ

Сравнение прайс листов из 1С и обработки

В обработке присутсвует возможность настройки параметров сжатия картинок с выбором качества и разрешения изображения, выбор пути по которому будет сохранен файл:

Настройка выгрузки

Используемый код выгрузки:

	Если Не ЗначениеЗаполнено(ПутьСохранения) Тогда
		Возврат	
	КонецЕсли; 
	//************** записаваем прайс лист в архив zip с xlsx ****************
	Файл = ПутьСохранения+"ПрайсЛист от "+Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy")+".xlsx";
	ЭлементыФормы.ДокументРезультат.Записать(Файл, ТипФайлаТабличногоДокумента.XLSX);   
	
	//************** разаархивируем полученный файл **********************
	Темп = ПутьСохранения+"temp\";
	ФайлАрхива = Новый ЧтениеZIPФайла(Файл); 
	ФайлАрхива.ИзвлечьВсе(Темп, РежимВосстановленияПутейФайловZIP.Восстанавливать); 
	ФайлАрхива.Закрыть(); 
	
	//******************** удалим файл архива *****************************
	УдалитьФайлы(Файл);
	
	//********************** если есть папка картинок, то обработаем, иначе просто сохраним
	ПапкаКартинок = Темп+"xl\media\";
	КаталогНаДиске = Новый Файл(ПапкаКартинок);
	Если КаталогНаДиске.Существует() Тогда
		
		//************************ переписываем  temp\xl\drawings\_rels\drawing1.xml.rels **********************
		
		drawing1 = Новый ЧтениеТекста(Темп+"xl\drawings\_rels\drawing1.xml.rels");
		ВесьФайлОднойСтрокой = drawing1.Прочитать();
		ВесьФайлОднойСтрокой = СтрЗаменить(ВесьФайлОднойСтрокой,"png","jpg");
		drawing1.Закрыть();
		
		УдалитьФайлы(drawing1);
		
		drawing1 = Новый ЗаписьТекста(Темп+"xl\drawings\_rels\drawing1.xml.rels", КодировкаТекста.ANSI);
		drawing1.ЗаписатьСтроку(ВесьФайлОднойСтрокой);
		drawing1.Закрыть(); 
		
		//*********************** преобразуем изображения ********************************************************
		Picture = Новый COMОбъект("GFLAx.GFLAx");
		
		МассивНайденныхФайлов = НайтиФайлы(ПапкаКартинок, "*.*");
		Для Каждого Картинка Из МассивНайденныхФайлов Цикл
			
			Picture.LoadBitmap(Картинка.ПолноеИмя);
			Picture.SaveJPEGQuality = Качество;
			Picture.Xdpi=ЗначениеДПИ;
			Picture.Ydpi=ЗначениеДПИ;
			Picture.SaveFormat = 1;
			УдалитьФайлы(Картинка.ПолноеИмя);
			Picture.SaveBitmap(Картинка.ПолноеИмя); 			
			
		КонецЦикла; 		
	КонецЕсли;
	
	//************** архивируем папку темп в архив zip с xlsx *********
	ЗаписьZIP =  Новый ЗаписьZipФайла(Файл);
	ЗаписьZIP.Записать();

	ЗаписьZIP.Открыть(Файл, , , , УровеньСжатияZIP.Максимальный,); 
	ЗаписьZIP.Добавить(Темп+"\*",РежимСохраненияПутейZIP.СохранятьОтносительныеПути,РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);

	ЗаписьZIP.Записать();
	
	УдалитьФайлы(Темп);
	
	Сообщить("Выгрузка "+Файл+" завершена!");

НЕ РАБОТАЕТ БЕЗ КОМПОНЕНТЫ GFLAX!

Не использует выгрузку Excel, ADO, OpenOffice.

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

Наименование Файл Версия Размер Кол. Скачив.
GflAxSetup.exe
.exe 836,02Kb
06.09.16
2
.exe 836,02Kb 2 Скачать
ПечатьПрайсЛистаСКартинками_УТ10_КА_УПП_СжатиеExcel.epf
.epf 53,14Kb
06.09.16
4
.epf 53,14Kb 4 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Порохнин (aipo) 24.11.16 20:04
При открытии сохраненного файла /xlsx в Excel пишет что обнаружено содержимое которое надо восстановить. Восстанавливаешь и потом пересохраняешь. И только тогда он нормально открывается.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа