База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как подгрузить картинку из Excel в 1С:УТ в номенклатуру?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 часов, 47 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
6 апреля 2026 в 15:30 #36295
как в 1с УТ в номенклатуру подгрузить картинку из excel
-
6 апреля 2026 в 15:30 #36296
Николай, чтобы в 1С:Управление торговлей (УТ) подгрузить картинку из Excel в справочник Номенклатура, нужно использовать COM-объект Excel для извлечения картинок, так как Excel хранит изображения как объекты Shape, а не в ячейках напрямую. Прямого способа загрузить картинку из Excel в 1С нет, поэтому алгоритм следующий:
1. Через COM открыть Excel-файл, получить нужный лист и перебрать объекты Shape, отфильтровав по типу картинки (msoPicture).
2. Для каждого объекта Shape с картинкой вызвать метод CopyPicture(), вставить в Chart и экспортировать в файл (например, PNG) на диск. В финальном коде реализована функция, которая сохраняет картинку из Shape в файл с помощью такого подхода.
3. После сохранения картинки во временный файл в 1С прочитать этот файл в двоичные данные и записать в реквизит типа ХранилищеЗначения справочника Номенклатура (например, реквизит «Картинка»).
4. Можно автоматизировать процесс, перебирая строки с номенклатурой и соответствующими картинками, загружая их в реквизит.
5. Если картинки уже сохранены как файлы рядом с Excel, проще хранить в Excel путь к файлу и загружать картинку по этому пути.
Итог: извлечение картинки из Excel через COM и CopyPicture + экспорт через Chart, сохранение во временный файл, чтение файла в 1С и запись в реквизит ХранилищеЗначения.
Ниже пример функции для сохранения картинки из Shape в файл и пример загрузки файла в реквизит номенклатуры:
1С (Код)1234567891011121314151617Функция СохранитьКартинкуВФайл(Shape, ИмяФайла, Формат = "PNG")msoPicture = 13;Если Shape.Type <> msoPicture ТогдаВозврат Ложь;КонецЕсли;Книга = Shape.Application.Workbooks.Add(-4167); // xlWBATWorksheetДиаграмма = Книга.Worksheets.Item(1).Shapes.AddChart().Chart;Диаграмма.ChartArea.Height = Shape.Height;Диаграмма.ChartArea.Width = Shape.Width;Диаграмма.ChartArea.Border.LineStyle = -4142; // xlLineStyleNoneДиаграмма.ChartArea.Fill.Visible = 0; // msoFalseShape.CopyPicture();Диаграмма.Paste();Успех = Диаграмма.Export(ИмяФайла, Формат);Книга.Close(Ложь);Возврат Успех;КонецФункции1С (Код)123456789101112131415161718ФайлКартинки = ОбменДанными.СоздатьПутьВременногоФайла("картинка.png");Если Новый Файл(ФайлКартинки).Существует() ТогдаПоток = Новый ЧтениеФайла(ФайлКартинки);ДвоичныеДанные = Поток.Прочитать();Поток.Закрыть();Картинка = Новый ХранилищеЗначения;Картинка.Записать(ДвоичныеДанные);// Найти элемент номенклатуры и записать картинкуВыборка = Справочники.Номенклатура.Выбрать();Пока Выборка.Следующий() ЦиклЕсли Выборка.Наименование = "Имя номенклатуры" ТогдаНоменклатура = Выборка.ПолучитьОбъект();Номенклатура.Картинка = Картинка;Номенклатура.Записать();Прервать;КонецЕсли;КонецЦикла;КонецЕсли;
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.