База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в УТ 11.5 выгрузить номенклатуру с картинками в Excel? › Ответ в теме: Как в УТ 11.5 выгрузить номенклатуру с картинками в Excel?
В УТ 11.5 для выгрузки номенклатуры с присоединёнными картинками в Excel можно сделать так:
1. Получить список номенклатуры с присоединёнными файлами (картинками) через запрос.
2. Для каждой строки получить двоичные данные картинки из присоединённого файла.
3. Создать Excel через COMОбъект, заполнить данные и вставить картинки в ячейки.
Пример кода (упрощённый, на клиенте):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
&НаКлиенте Процедура ВыгрузитьНоменклатуруСКартинкамиВExcel() // Создаём COM объект Excel Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.Visible = Истина; Книга = Excel.Workbooks.Add(); Лист = Книга.Worksheets(1); Исключение Сообщить("Не удалось создать объект Excel"); Возврат; КонецПопытки; // Заголовки Лист.Cells(1,1).Value = "Код"; Лист.Cells(1,2).Value = "Наименование"; Лист.Cells(1,3).Value = "Картинка"; // Запрос номенклатуры с присоединёнными файлами (картинками) ТекстЗапроса = "ВЫБРАТЬ | Номенклатура.Код КАК Код, | Номенклатура.Наименование КАК Наименование, | ПрисоединенныйФайл.Значение КАК ФайлКартинки |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныйФайл | ПО Номенклатура.Ссылка = ПрисоединенныйФайл.Ссылка |ГДЕ | ПрисоединенныйФайл.ТипФайла = &ТипФайла | И Номенклатура.ЭтоГруппа = ЛОЖЬ"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ТипФайла", "Изображение"); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Строка = 2; Пока Выборка.Следующий() Цикл Лист.Cells(Строка,1).Value = Выборка.Код; Лист.Cells(Строка,2).Value = Выборка.Наименование; Если ЗначениеЗаполнено(Выборка.ФайлКартинки) Тогда // Получаем двоичные данные файла ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.ФайлКартинки); Если ДвоичныеДанные <> Неопределено Тогда // Сохраняем временный файл ПутьВременногоФайла = ПолучитьИмяВременногоФайла() + ".tmp"; ДвоичныеДанные.Записать(ПутьВременногоФайла); // Вставляем картинку в Excel Левый = Лист.Cells(Строка,3).Left; Верх = Лист.Cells(Строка,3).Top; Ширина = Лист.Cells(Строка,3).Width; Высота = Лист.Cells(Строка,3).Height; Лист.Shapes.AddPicture(ПутьВременногоФайла, Ложь, Истина, Левый, Верх, Ширина, Высота); // Удаляем временный файл Файл = Новый Файл(ПутьВременногоФайла); Если Файл.Существует() Тогда Файл.Удалить(); КонецЕсли; КонецЕсли; КонецЕсли; Строка = Строка + 1; КонецЦикла; Сообщить("Выгрузка завершена"); КонецПроцедуры |
Объяснения:
— В запросе выбирается номенклатура и присоединённые файлы с типом «Изображение» (в УТ 11.5 именно так обычно хранят картинки).
— Для каждой записи сохраняется временный файл с картинкой.
— Через COM объект Excel вставляется картинка в ячейку.
— Временный файл удаляется после вставки.
Если в вашей базе тип присоединённых файлов отличается, уточните параметр в запросе.
https://infostart.ru/articles/1164624/ — вывод картинок в отчетах и выгрузках Excel
Это базовый пример, можно доработать под ваши требования (например, масштабирование картинок, обработка ошибок, выгрузка в файл без открытия Excel).