Добавление картинок в 1С 8.3: от карточки до печатной формы
Содержание
Чтобы добавить картинку товара в 1С 8.3, откройте карточку номенклатуры, перейдите по ссылке Файлы (или Присоединённые файлы) в панели навигации формы и загрузите изображение с диска — одно из загруженных фото можно отметить как основное. Это рабочий путь для «Бухгалтерии» 3.0, «Управления торговлей» 11 и большинства конфигураций на управляемых формах.
Загрузить изображение в 1С Предприятие 8.3 можно четырьмя разными способами, и выбор зависит от того, зачем вам картинка: показать фото товара в списке, вывести логотип в счёт, прикрепить скан договора или загрузить сотни изображений разом через код. Ниже — каждый сценарий отдельно, с путями меню и рабочими примерами на встроенном языке.
Картинка товара в карточке номенклатуры
Самый частый запрос — прикрепить фотографию к товару, чтобы она отображалась в списке и в карточке.
В «Управлении торговлей» 11 и «Рознице» картинки номенклатуры хранятся в присоединённых файлах. Порядок действий:
- Откройте нужную позицию:
Нормативно-справочная информация → Номенклатура(в УТ) илиСправочники → Номенклатура(в БП). - В панели навигации карточки (ссылки слева или сверху формы) выберите
Файлы. - Нажмите
Добавить → Файл с диска, выберите изображение формата JPG или PNG. - Чтобы фото показывалось как основное, в списке файлов отметьте его командой установки основной картинки (команда в командной панели списка файлов).
Если ссылки Файлы в карточке нет, значит в настройках не включена работа с файлами. Включите её: Администрирование → Настройки работы с файлами (Органайзер) → флаг хранения файлов.
После загрузки картинка подтягивается в формы списка с показом эскизов. В «Бухгалтерии» 3.0 механизм тот же — присоединённые файлы, — но карточка номенклатуры там проще, и картинка используется в основном для печати.
| Конфигурация | Где лежит картинка | Путь к номенклатуре |
|---|---|---|
| Бухгалтерия 3.0 | Присоединённые файлы | Справочники → Номенклатура |
| Управление торговлей 11 | Присоединённые файлы (основная картинка) | НСИ → Номенклатура |
| Розница | Присоединённые файлы | Справочники → Номенклатура |
Перед массовой загрузкой фотографий проверьте, где физически хранятся файлы — в самой базе или в томах на диске. От этого зависит, не раздуется ли информационная база (об этом ниже, в разделе про производительность).
Логотип и печать организации для счёта и акта
Второй по частоте сценарий — вставить логотип, факсимиле подписи и печать, чтобы они автоматически выводились в счёт на оплату, акт и другие печатные формы.
В «Бухгалтерии» 3.0 для этого есть штатный механизм, код писать не нужно:
- Откройте
Главное → Организации(илиСправочники → Организации) и выберите свою организацию. - Перейдите по ссылке
Логотип и печать. - Загрузите три картинки: логотип, факсимильную подпись руководителя и изображение печати.
- Там же есть команда предпросмотра — она покажет, как счёт будет выглядеть с загруженными изображениями.
Требования к файлам печати и подписи:
- 🖼 Формат — PNG с прозрачным фоном, иначе под печатью будет белый прямоугольник.
- 📐 Рекомендуемый размер печати — примерно 300×300 пикселей, подписи — около 150×50.
- 🎨 Скан делайте на белом листе и обрезайте по краям, фон потом убирается в графическом редакторе.
После настройки в форме счёта на оплату включите флаг вывода логотипа и печати — он находится в самой печатной форме или в её настройках. Счёт сразу сформируется с картинками.
Как вывести изображение в печатную форму и макет
Если штатной печати мало и вы разрабатываете собственную печатную форму, картинка добавляется в макет табличного документа.
Порядок в конфигураторе (или в режиме «Предприятие» через расширение конфигурации ):
- Откройте макет печатной формы (объект типа «Табличный документ»).
- В меню
Таблица → Рисунки → Вставить картинкудобавьте объект-рисунок на нужную область. - В свойствах рисунка задайте тип:
Картинка— для статичного изображения (логотип прямо в макете) илиПараметр— чтобы подставлять картинку из данных. - Для параметра в коде печати заполните его значением типа
Картинка.
Пример кода, который кладёт логотип в параметр макета перед выводом области:
Макет = ПолучитьМакет("ПечатьСчёта");
Область = Макет.ПолучитьОбласть("Шапка");
// картинка хранится в реквизите организации как ХранилищеЗначения
ДвоичныеДанные = Организация.Логотип.Получить();
Если ДвоичныеДанные <> Неопределено Тогда
Область.Рисунки.Логотип.Картинка = Новый Картинка(ДвоичныеДанные);
КонецЕсли;
ТабДок.Вывести(Область);
Имя рисунка в области (Рисунки.Логотип) должно точно совпадать с тем, что вы задали в свойствах объекта в макете, иначе получите ошибку обращения к несуществующему полю.
Для статичной картинки, которая не меняется от документа к документу (например, подложка бланка), проще вставить её прямо в макет через Вставить картинку → Из файла — тогда код не нужен вовсе.
Если печатная форма типовая и менять её в конфигураторе нельзя (иначе слетит поддержка при обновлении), правьте макет через расширение конфигурации. Вы добавляете в расширение копию макета с рисунком, а типовой объект остаётся на поддержке и обновляется штатно. Расширения доступны с версии платформы 8.3.6 и выше; загрузка файла .cfe и команда обновления конфигурации базы данных — два отдельных шага.
Загрузка изображения через встроенный язык
Когда нужно залить картинки программно — например, импортировать фотографии товаров пачкой из папки — работают с двоичными данными и хранилищем значения.
Базовая цепочка: прочитать файл с диска → упаковать в ХранилищеЗначения → записать в реквизит объекта.
// на сервере
ДвоичныеДанные = Новый ДвоичныеДанные("C:\Фото\товар_001.png");
ОбъектНоменклатуры = Номенклатура.ПолучитьОбъект();
ОбъектНоменклатуры.ФайлКартинки = Новый ХранилищеЗначения(
ДвоичныеДанные, Новый СжатиеДанных());
ОбъектНоменклатуры.Записать();
Чтобы показать картинку на управляемой форме, двоичные данные кладут во временное хранилище и ссылаются на адрес:
&НаСервере
Процедура ЗагрузитьКартинкуНаСервере(АдресВоВременномХранилище)
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
КонецПроцедуры
Поле картинки на форме в свойстве Данные при этом указывает на реквизит с адресом. Для выбора файла пользователем на клиенте применяют НачатьПомещениеФайла — асинхронный метод, который открывает диалог и сам помещает файл во временное хранилище.
Несколько практических моментов:
СжатиеДанных()экономит место в базе для PNG и BMP; JPG уже сжат, разница будет небольшой.- Чтение файла (
Новый ДвоичныеДанные(путь)) выполняется на той стороне, где лежит файл: путьC:\...на сервере указывает на диск сервера, а не на компьютер пользователя. - Для массового импорта обходите файлы в цикле, но записывайте объекты порциями и не держите все двоичные данные в памяти сразу.
Типичная задача — связать фотографии из папки с товарами по артикулу в имени файла. Общая схема обработки:
// на сервере: имена файлов вида "АРТ-00123.jpg"
ФайлыНаДиске = НайтиФайлы("C:\Фото\", "*.jpg");
Для Каждого Файл Из ФайлыНаДиске Цикл
Артикул = Файл.ИмяБезРасширения;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура
|ГДЕ Артикул = &Артикул";
Запрос.УстановитьПараметр("Артикул", Артикул);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(Файл.ПолноеИмя);
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.ФайлКартинки = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
Объект.Записать();
КонецЕсли;
КонецЦикла;
Такой код удобно оформить внешней обработкой с полем выбора каталога — тогда импорт запускается в режиме «Предприятие» без изменения конфигурации.
Присоединённые файлы и сканы документов
Отдельная задача — прикрепить к документу или элементу справочника скан: договор, накладную поставщика, фото акта. Для этого в 1С есть подсистема присоединённых файлов, она же отвечает за сканирование.
Чтобы прикрепить готовый файл:
- Откройте документ или элемент справочника.
- Нажмите ссылку
Файлы(илиПрисоединённые файлы) в панели навигации. Добавить → Файл с диска— выберите скан или фотографию.
Чтобы отсканировать прямо из 1С:
- В том же списке файлов нажмите
Создать → Со сканера. - При первом запуске выберите TWAIN-драйвер вашего сканера.
- Задайте разрешение (для текстовых документов хватает 200–300 dpi) и формат — PNG для чёрно-белых, JPG для цветных.
Сканирование работает только в тонком и толстом клиенте с установленным расширением работы с файлами. В веб-клиенте нужен внешний компонент, браузер сам к сканеру не обращается.
Диагностика частых проблем при работе с изображениями:
ХранилищеЗначения реально лежат данные (метод Получить() вернул не Неопределено).Новый Картинка(...) передали не двоичные данные, а само хранилище значения. Сначала распакуйте: ХранилищеЗначения.Получить().Сервис → Установить расширение и проверьте драйвер сканера в Windows.Производительность: чтобы база не раздувалась от картинок
Изображения — тяжёлые данные. Тысяча фотографий товаров по 500 КБ — это уже 500 МБ в базе, и это напрямую влияет на скорость резервного копирования и обновления.
Главное решение — хранить файлы не внутри информационной базы, а в томах на диске:
- Откройте
Администрирование → Настройки работы с файлами(илиОрганайзер → Файлы). - Включите хранение в томах и укажите каталог на диске сервера.
- Старые файлы, уже лежащие в базе, можно перенести в тома регламентной обработкой из того же раздела настроек.
Ещё несколько приёмов, снижающих нагрузку:
- 📉 Уменьшайте размер картинок перед загрузкой: для карточки товара достаточно стороны 800–1000 пикселей, 4000-пиксельное фото со смартфона только занимает место.
- 🗜 Для PNG применяйте
СжатиеДанных()при записи вХранилищеЗначения. - 🖼 Если нужны эскизы в списках, храните отдельно уменьшенную копию, а не ресайзите оригинал на каждое открытие формы.
Перенос файлов в тома и очистка хранения — операции, меняющие структуру хранения данных. Планируйте их на время, когда в базе нет пользователей, и сделайте резервную копию перед запуском.
Хранение в томах почти всегда предпочтительнее хранения в базе: резервная копия базы становится в разы легче, а сами файлы бэкапятся отдельно средствами операционной системы.
Частые вопросы
В каком формате загружать картинки в 1С?
Почему путь `C:\...` в коде не находит мой файл?
Новый ДвоичныеДанные("C:\...") на сервере читает диск сервера, а не компьютера пользователя. Чтобы взять файл с машины клиента, используйте НачатьПомещениеФайла и временное хранилище.Можно ли вставить несколько картинок к одному товару?
Чем картинка в макете отличается от хранимой в реквизите?
Как удалить загруженное изображение?
Файлы у объекта и удалите ненужный файл обычной командой удаления. Если он лежал в базе, место освободится после удаления помеченных объектов; если в томе — файл уберётся при регламентной очистке тома.