gifts2017

Загрузка номенклатуры с картинками из прайс-листа документа Excel

Опубликовал Merab Nick (merabn) в раздел Обработки - Обработка справочников

Загрузка картинок (рисунков) номенклатуры из файла Excel с прайс-листом без использования внешних библиотек и компонентов.

Идея взята из комментария к теме:

http://infostart.ru/public/69412/

Идея состоит в копировании рисунка в буфер обмена методом com объекта Excel. Из буфера обмена картинка копируется в созданный объект Excel диаграмма, а из нее сохраняется в графический файл. Из графического файла картинку можно добавить к номенклатуре уже штатными средствами.

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

// В параметрах передаются объекты страницы документа Excel и картинки. 
// Функция возвращает номер строки документа, в котором находится рисунок
Функция ПолучитьНомерСтрокиОбъекта(СтраницаДокумента,Картинка)
	НомерСтроки = 0;
	ТекущаяПозиция = 0;
	ПозицияКартинки = Картинка.Top + 3; // на случай, если картинка выходит за границы строки документа добавляем 3 пикселя
	Пока ТекущаяПозиция < ПозицияКартинки Цикл
		НомерСтроки = НомерСтроки + 1;
		ВысотаСтроки = СтраницаДокумента.Rows(НомерСтроки).Height;
		ТекущаяПозиция = ТекущаяПозиция + ВысотаСтроки;
	КонецЦикла;
	Возврат НомерСтроки;
КонецФункции

.............

// Как загрузить номенклатуру из строк документа не привожу.
// Здесь только получение картинок и добавление к номенклатуре, раннее импортированной
// и указанной ссылками в таблице обработки, в которой номера строк соответствуют строкам документа 
	Excel     = Новый COMОбъект("Excel.Application");       
	WB         = Excel.Workbooks.Open(Объект.ФайлЗагрузки);       
	WS         = WB.Worksheets(1); 
	
	Если ЗагружатьКартинки Тогда
		WS1 = WB.Worksheets(2);  // Создаем диаграмму Excel    
		ДиаграммаXLS = WS1.ChartObjects().Add(0, 0, 100, 100);
		Для Н = 1 По WS.Pictures.Count() Цикл
			Картинка = WS.Pictures.Item(Н);
			НомерСтроки = ПолучитьНомерСтрокиОбъекта(WS, Картинка);
			Картинка.Copy(); // Копируем картинку в буфер обмена
			Ширина = Картинка.Width;
			Высота = Картинка.Height;
			ДиаграммаXLS.Width = Ширина * 1.01; // Устанавливаем размеры
			ДиаграммаXLS.Height = Высота * 1.01;
			ДиаграммаXLS.Chart.Paste(); 
			ДиаграммаXLS.Chart.Export("c:\TEMP\picture.jpg"); // Сохраняем картинку во временный файл
			
			Если НомерСтроки > 0 И НомерСтроки <= ТаблицаЦенИОстатков.Количество() Тогда
				ДвоичныеДанныеКартинки = Новый ДвоичныеДанные("c:\TEMP\picture.jpg");
				ДанныеКартинки = Новый Картинка(ДвоичныеДанныеКартинки);
				АдресДвоичныхДанныхКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанныеКартинки);
				Номенклатура = ТаблицаЦенИОстатков[НомерСтроки - 1].Номенклатура;
				ЗаписатьКартинкуНоменклатуры(АдресДвоичныхДанныхКартинки, Номенклатура, ДанныеКартинки.Формат());
			КонецЕсли;
				
		КонецЦикла;
	КонецЕсли;

Приложенная обработка не претендует на универсальность, в ней реализован импорт номенклатуры из прайса с жестко заданной структурой. Импортируется в конфигурацию Управление торговлей 11.2, используется определенный вид номенклатуры ("ТоварСКартинками", опционально с дополнительными свойствами "Состав" и "Произведено"). Графический файл сохраняется в каталоге C:\TEMP. В первой строке документа на первом листе Excel должны быть заголовки столбцов (не используется). Стобцы:

  • 1 - не используется
  • 2 - Наименование (обязательно)
  • 3 - не используется
  • 4 - Артикул
  • 5 - Производитель
  • 6 - Картинка (положение в строке не имеет значения) 
  • 7 - Состав (опционально)
  • 8 - Описание
  • 9 - Страна (опционально)
  • 10 - Цена
  • 11 - Количество

Обработку можно использовать в качестве шаблона для реализации импорта номенклатуры под собственные нужды.

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

Наименование Файл Версия Размер Кол. Скачив.
ЗагрузкаИзЭксельСКартинками
.epf 10,41Kb
25.03.16
14
.epf 1.0 10,41Kb 14 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа